From 65362823a2cecacbd2a2380e94e199e07c6aa151 Mon Sep 17 00:00:00 2001 From: mattfidler Date: Mon, 2 Dec 2024 04:02:59 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20nlmixr2/?= =?UTF-8?q?rxode2@9d3106f9adfc0199e734c51f5142138f9c11b474=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ng-User-Defined-Functions-into-rxode2.html | 10 +- .../figure-html/benmchmark1-1.png | Bin 44018 -> 47164 bytes .../figure-html/convertC-1.png | Bin 37816 -> 38262 bytes articles/Modifying-Models.html | 2 +- articles/rxode2-cmt.html | 8 +- articles/rxode2-covariates.html | 2 +- articles/rxode2-data-frame.html | 2 +- articles/rxode2-datasets.html | 2 +- articles/rxode2-event-table.html | 2 +- articles/rxode2-event-types.html | 2 +- articles/rxode2-events-classic.html | 2 +- articles/rxode2-intro.html | 2 +- articles/rxode2-model-types.html | 2 +- articles/rxode2-nesting.html | 2 +- articles/rxode2-pipeline.html | 2 +- articles/rxode2-plot.html | 2 +- articles/rxode2-prior-data.html | 2 +- articles/rxode2-rxUse.html | 2 +- articles/rxode2-shiny.html | 2 +- articles/rxode2-sim-var.html | 2 +- articles/rxode2-single-subject.html | 2 +- articles/rxode2-speed.html | 42 +-- .../figure-html/unnamed-chunk-10-1.png | Bin 48821 -> 49288 bytes .../figure-html/unnamed-chunk-12-1.png | Bin 53299 -> 64611 bytes .../figure-html/unnamed-chunk-13-1.png | Bin 79335 -> 81482 bytes articles/rxode2-stiff.html | 6 +- articles/rxode2-syntax.html | 2 +- articles/rxode2-transit-compartments.html | 2 +- articles/rxode2-wt.html | 2 +- news/index.html | 3 +- pkgdown.yml | 2 +- reference/dot-rxWithWd.html | 2 +- reference/dot-rxode2ptrs.html | 98 +++--- .../0976fafc3eb24d0966bb88fbabfffc40.md5 | 1 + reference/myapp/mod1.d/mod1_.c | 294 +++++++++--------- reference/myapp/mod1.d/mod1_.o | Bin 132400 -> 132432 bytes reference/myapp/mod1.d/mod1_.so | Bin 103688 -> 103688 bytes reference/myapp/rx_shiny_data.rda | Bin 5955 -> 5956 bytes reference/rxCombineErrorLines.html | 2 +- reference/rxExpandGrid.html | 10 +- search.json | 2 +- 41 files changed, 261 insertions(+), 259 deletions(-) create mode 100644 reference/myapp/mod1.d/0976fafc3eb24d0966bb88fbabfffc40.md5 diff --git a/articles/Integrating-User-Defined-Functions-into-rxode2.html b/articles/Integrating-User-Defined-Functions-into-rxode2.html index 3e30c4190..e8b44e35b 100644 --- a/articles/Integrating-User-Defined-Functions-into-rxode2.html +++ b/articles/Integrating-User-Defined-Functions-into-rxode2.html @@ -209,9 +209,9 @@

R based user functions
 print(mb)
 #> Unit: milliseconds
-#>      expr      min       lq     mean   median       uq       max neval
-#>  withoutC 9.177344 9.278564 9.995587 9.332880 9.470347 19.631064   100
-#>     withC 2.884989 2.961889 3.276341 3.037014 3.542058  7.994735   100
+#> expr min lq mean median uq max neval +#> withoutC 9.136057 9.239820 9.883065 9.297273 9.40287 15.966970 100 +#> withC 2.885046 2.960412 3.269299 3.002866 3.56147 8.106835 100

The C version is almost twice as fast as the R version. You may have noticed the conversion also created C versions of the first derivative. This is done automatically and gives not just C versions of function, @@ -792,7 +792,7 @@

Using data for rxode #> iniDf = .iniDf) #> } #> } -#> <bytecode: 0x56537b42a848> +#> <bytecode: 0x556ae00d2c38> #> <environment: namespace:rxode2> # You can also print the s3 method that is used for this method @@ -802,7 +802,7 @@

Using data for rxode #> { #> eval(fun) #> } -#> <bytecode: 0x56537bfe8448> +#> <bytecode: 0x556ae0c90838> #> <environment: namespace:rxode2> #> attr(,"nargs") #> [1] 2 diff --git a/articles/Integrating-User-Defined-Functions-into-rxode2_files/figure-html/benmchmark1-1.png b/articles/Integrating-User-Defined-Functions-into-rxode2_files/figure-html/benmchmark1-1.png index e97d54e0b0bb75f91417f8debe0582681b87c999..d05178ea279d3d48df66503ac9dcc44ede499f26 100644 GIT binary patch literal 47164 zcmeFZcRbbc`#)?Hm5`Pd3Z+t%nXM2Kin8}ew#Xib6e%Ml*?VP^y$KPHy*D}bvG@30 zZ~AOKhUyFs4i2%Tgs2=2&Ph8Q z9DMCl1n`bJUWW$!BG8c%7lq&O+7>B6!LQR663SLMI5eKf53b+eWqll+t2mOP4`0}Y z&kxyuQMa{c+QTk%!ILzk2WZ65b=2cU9JL_sQ0?Z!1^&))}BO)UP_^JR&4opxSMkqB^^1 zCA+(tV%gOufQeik>=sb`Yc908{qjeb5$Dl5zsiWTojm%>!sbNj(I3~Zj~=~q^A;{E z@`kYFX**oxk0(zmiICsV^3HcnVIRPs7U9H8Iyth>wGr+!5bU-j9uZj!;?*6 z1y_kK-)Z{slH6ctZAS98fm6CcJM7LNQaQ{Z(*AZBm+9}eIB_=9{v`_rXVwpUHP?2*P-h31U%_^7!v z(DJeZA?tHd%`qZ`?D~zJchrmd71fp-n3bDFfp} zNnMuE#)5|xd%=ecK0f>VxoXWB>LoeaHN_^wrP-U2DGDVWog6IkiBBc1R=t}-*tv6G zH8-Rw=dxSR{^a1;5?}$vdd;oJKxLG^G_1Qi<+EK)E*O-N5$LB}Vq@K%p&k*!Zh+Ys zKnY#A@$_i`a(q#Tdr6jicJ-3==7WWTh*0-8QG8gJO|1TK=}Ci^=$R}0c2_rtHY-*p z17$l0QIo&NuJBksKnoqJ(K^l>NCpg;qclNgY{^u`#k^LS2+iNc*68q@Oa+xgJp@ds#vk28R)l9uR6cxTjNe4R)<2G-qAw6W2T`Qp@Uc1LS11h@GEr8msZl zvBIn(hlibDH)v_3v31gV)&njm+R39V4?|vI#}TzZ&m?;qZ^y{6FG$vDoMC2mw#kEd zZY4!_fB)7)VNDvE`jrM*m$k2l_k|RVyZ6{o`#q>Wa|`Yl#l^*|FkRxS-Z^iF$%hrC}tDf+svFgBq)4c9s?uZ2vOgsce%QlBIiKh$qcU2LM zY$7jTN_iN*J7=KUeJj$%!L)p*3q_T)8qwlT>cR~^iDGHlPhcb0X|rU6cWzE#t<`;d z*$?$#8soe_r%Ab#y}Pl{Fl37=8re@(6pA!=S*3Q*xW>~awl^b-Djms8iE2?SU#WdT z*c-b2>q5ov;WEdaA)x@Qe@t45kbV*OZhuL^_01t$tg?V@*5;6~N&nAl$hjFWI_?gP zMEqeX(UHhhByHR(x6h6#ttj7aHrK27UBEBj&=OR1Y(eFZNI(=FP0;@RnB(jR>$ynU z&Sh#Y{xAk{l1&%lEfX5vxA!!+8_9QvP&LHde{=q1{I+-%`rYps~< zGl-&ETX$IrWdD%PdV+Le!E~SCw$!&f%@z9v75-CGQ;b1iFX)1DYuRR!TC6j+T+MFm zI?v%ArTdS(BKya~8~FtW-Dx~2FK+W#L<_)v%p)CU8{~bRH~NxR2CW9zPzTk4v_jy? zD`M&zgUJ8-n3rDfNR0SSKGbLS&0g9g4Bv)&qj;Eus^|>P0X6xKfuwkUSN`G{C?j@GN7d;<7Yv^-|TwYln+3JiDw(d{5LB%Sq+_l7&2Q^k}Ordjn1;%j6>rTHMNmhLZLkK!7qLAc;jrR_?7 zL77$Mx(}VuHPjLzR>*KH<(7QnRQ|wl2&>arM_-oq&@J?K6)Ej+WUYa;yJMtu$$fWi z+r)w=k(ki&9=t z=xNQCszP(ox#czny)Ldz)eIfn5z27&>H~rWgHwJTmqzeT-S?J$! zbSmuHHP{h8Tf5&iVjRh1WdrLR!A1BzXMZ12?-Y|B^|0L1ngqWCX#KgqP+2hqNHQ~A2Mh=?l>gwBlXcrZ$k!J3S z?XRPYwNq%#?>trnbW^39WvH(`rBmx695baaZU?=%O&r2&t&&l3P&eE)SyIgFNIv6` z&0RKgmy?_}^~LR??J4dar3B5(`Xb(Y+PoymM5(0X%2Z-r|wFKi0Ix9dIEA0dvZ2(%nVTF z;G23v5B|Y)?)8HZ!E+*SP}a7#7%)Y#<_Tm4ooe4r=X(Gpy!&`zt6QggN(P zUfvFBimJF*Fu2l)l;X=^R?U#9sa08fr`k_1 zmCJTIYYkhhpGN`|buqZV;UwUYtp28!8C|I26!0@IZ@t8PanOE$F$@m>c92IXO%eoI zP?B)mt|F)H#tt=I1=w?Ql)9>_s=2MQ1y`H;)tr_S3~rb8 zNOKP%2r-FY(CXD;%>42M4JEgk6E^Czo!?opAp^O!GW$_sN5Ilfk}ERlMU|0hv0Q6 z1Rx5kXK86S*8^1B3)QZyCGT16ont*aKTEY&t?IlmP*5;6F;VY_E_{T7J8u0G(!lj*ZBm?@W{2f&oGq;z9(h<()6wmn`lsjO~oChw4BpnqeNpmcxVX%n_a zD70m;A6Zc`syEl&oRqTlV*kS}z^{jU8iOf{zZ~^$&I$&`E;d6jUhT>}kk2Xt4FBD zFH`f-q&pL}5no^DOA~g9S>bPh6w9B+AS6Q=t?L5_@JyygFjjkS>og}_=6=_q-p<-o zs2?d;DOIwsuP!HD6q~-5<~1Sej-;smW(6tK#6^Ph=hkeSmM8G(+ANCCZU5plVtxO1 zZ;Ob5N{0J zp~S!#*%N5{-{1qv_0pP25b<#*Ui4PA)t3EPeaEM z>yWe390}?{PqxOm@3VNkOjj^=q2X(gM9*M3JKf!EX2B8hM8wRF((GBI7luttO`C_y z@^qzedto+4VKFU9BnXhbo&EV#b$mnJFknD>%vxtur9k_>#-%+VGa(C zvjaCj=1|R`*Q_{OcT+3u|A_n1N-HWVR!q>60HRW`=H&8ifJ|1u>&NGS@GYBPV8T{Q zqi*wq+fEPx+Cn3iM-DcGFur_(779n3yfVu&N@KWx^1CF6gvV>(#qB9SrD+4(gwF%dbMRSauWkfKHe+If)|pqgQ{{ho^%> zvae;%NGrk)jFcBdStNyGoiJgXQMpE4weGWA`v;p9fh{d9p*@9%2l9LrfqH#8K}^op zMcHqjHfPO2;P~_HZWw`*B&XwM{^Y>O0p?-zIojLnd$hL#4<567Q_7cgWT&RGBS69< zH$HbGw5L=s6Scq2xjE#B?eTEBVUCJ>*|IjQy9Eb23Fs%Y2rKHjnG%JLh^V(Z+)p~t z8GT#6J7jLKxv0*G-qhLOXZw+x`#t+6*q66=uv29iBPfn@b0(QB7%T(b_T1iD66xR3 zD*Q4xBSl36Bn1r{*?TOw;$P7KiK%CLJ}>|x&GiMQ0|9{5*qtxaq)t`3ZGim-L#m$3 z8MW%cJ;;%4Ob4JG(kk(e_MBbC%(75-Lej}p%`$eN0ET4CxWiX^^Liq8lmeWl*rR?! z>c0;hfs|qo(L+mHTSXE&!LOLefp4C)4);*2+=q%s^E3GEy?wS$n&9B#_f-rP$AZ9b zV2SLou`h>)h7e>Tc(ClZ#zzoOJ7`hkQ?xVN&u&|>>{F5hbcKjbdb#?tb2{Wo(0SHDW)sH zNsLgv?df_J!e#0(yj91IDc@Zb&>z`ZM^B*+(1!-Xn4-mEZarWG+{+IZhxk^r{fJEn zW^?qJb1lZkk9ZZ8;k~Jmrm{_!g|E(sE36}bfHB)7Q16jQ#cWC_1B=8CNG+{MVzj5+ z#sK$HMCuc>^6inS-t0I|KAVb-JiZRVhM!qo`gk;F_EwEOCm`c2+cZdMZ{3ypIADIb ze@7{6Iz02wOmjF7bFjLNSaZc;o^g-fLO&;n4rm91t~QtLzlz_?NZ3Gm+~eFg6{PM$dG*G8g`P+Wwt}>3H2`C4e_t-34|loYuMDtY;rk~_olD0r zDNf2ALGS})fV(7U%TEtv*MX=kkW02qib4?Os)h1@DZB& z%bF?RS5OaIwA@|5&e@JNUhv51u$gK9yB#OABU}fpi5>=tBZ8D|OZ32iHCOD~9$pjo zz0y+WGnWhg3-QW`v2HEiCfoV(u z_6rolMAp$!wYVfTgiZg+RC8Dqz;(pmTOMq)TV}Xb0i(Lggj&JauQYTi7c7P#nLA9{ zur||?>$Lqt4Im~V4R6JqdPOkUw_c5hbsw-pHj7SzjvGJYb64#UW)HAp2*3T4M45ihhAc4X-Wt#=hv<0 z`rDh`zgma@?_RrEtl9`DPRqf5I^qZ*GY(NNv3YfP;B07Y{0D$AuuqMJZzkBC9jsn8 zhelkN`u1vjC5Q)G+EBBf1F$stLeP&cdmJrM{?#V=Z6K5fZ~3tTZF@K-v}cBU3GR4i z^OystQh62zLdY2!8iPeHA;_%}ND;c*!Z8l_;Oyv%;^Tz7(;Y0i0kz?7|Cd=4VNv*- zo7vf1_6iw;5YBD1${mhuW)O8)U`$Yjq-C%pr%56(46PUEmhdWheki2cPx?nq`ir}; zO@m7s!bvN%ZylN;C(e@03^n@5RHLzFGVyt&W<1w19TQFeZJRc)Tb zn;I5k7iW62-FfURGz0X;e;J0{(|%HQ>3MvOC+Sp(L8L^$(;E6(f3zz2|7CINeqzC)pd=)@@>^)HMu<_;tYUuy=#2EyPl%pB zP{h-)JKbC6Xghp(uxU`^K`a@ti>(j>Qj!o5hT% zBcSP`xr~xCDP(ZJs};lOhv&1Aj*BxxivwkJ+P8Om@NF`Y7^=Uipi@Xq@pct0T z*f7};XfQNgYj*kDR4}nc1N3*_bFD7QpzKoV8`J$ZA)> zW^Ze`Xg=pp0OP{Kg8j}+l6d@MCw24oc?;xOOuP)=iq0>?)K zZiSNpQVs=CPAd)9(oe%>*D>T+;>{~}bAroED$#S)OB(_Z+i`H#rI8Old%JYzc-Ib!6FJj+KN0-^fWnSwo@K0K zfn3Vj*=+%u3g~>06*?M8A`ewGn`t0yRRny3Vb_`P3cU>Waci-d_rLF&y zk`pr8+S?^A*k$Zz7OJ&X#dMV*5049Ur+JUp_Yl@sS?;_GwZ0a{22e%zH{-t^M(I|+ zKMgei`vAS340TXd?3eCS|DAUU_OfQC>9kyH;2cTBTAF3M3-uj=q+=Cv0kt^Uovzwb zQl?Y;DOV8P7{qKGc>!794kJh{+ME#k<7H~g4!<-0a5)030a+uOJk2LFrp9ZxE76LKZVH*7qz-KeBlyA}(z!<`3Yj#66(y1F0%5QIZEV>+hDPI~sF2-Zg@t-JtW=YLu zA_1{DAW-~HczPtuFi=t^y;)=7=p(T$ku5!HAnw{5Qo;O_Q2A-Qn8~BnI}+=P75D{Y3--T5{36KEIsRi(slVi6$&cVfXqwT2kS{yu1Nt(RLoRbsR^_;fCe3TA=@{`a3t^ z##u`A7e;b5i>fU3B+xQ&I35eU$nD|agub>y65~)n&Z@z0(lawaV*)T9*$1e^>2+c| z$IFkXNmemvS$TQ+fWZ1k$j6@1A?p;t#X^aKUAN9#y9DZ*BG^+Ofdl)QpHDJ?Fr_#Y z{4n@aAn%V{%je5?pNP~f4c9qimS)EhOr6Y%r*SjHp9-^ zb#G=5_h{F#R5W2WHt6|S7}6-UTh7u%|FeUm+Xt%n&f{Xib+WtcZ808oGPyc{bOI=6 zTnnJc1KWNWpm%t%-&bHhlBIcMZ*H(RFL1>M1No+s0jp>sp}-r`RQ_`tCrZ6oj+Wwp zC|X~Ul>s7O@28t)q{setHV_n3FCP4@Qt?|u>;|aV<7laAT z7$qS_1?T7Ila+8G!y{_twRWNuieGRTbZy3(7F8$92L7EoAxtC+G${fM7(;lhUSWT~ z_oqL~T#|)g0x!r26LNFeC3Cc@-jP+5f9OWWob`hx$0l!=2spf2y75nR*FbdB)JvD! zs!A-zsyR5qw|+xj26uNJP11&o?akJOmZVt5hL#9EtF5ImvP@*Nu7RM|jGsvC0t3la z21@O%t|6`$X9*9M_Wr1!%#|GWa2jG0Wcha`*`VqQ=}yrXUN8k}ZnHb_h;zfyxC(-Q z4g9e`gLuHjp0cp;D@!V`kq)qEJJ^Vu0|lru1k1%Cu2^K+fA5~QV*>C3*)kK)b9n;; z1MMRXgt6pcFDz<>S(Q(~ia@H+U;$-u^d%J}nX8nF00~5E@Y-F_rGo!)X1$RA%`5p( z2YYzT_A&0zh`8^8#c;Qu@FOsXI013NVXD~ zpbXF(F13fd9wo@lsJ~7xD-+n=#IhFB!#%FSEV!(lMKpXiYi2zngyuTOKBo*kO~f2n z!tt^n$`YCfnDpf&R6aol*60WO!Mr^>#8x`w^X0ha0!^dR$K8GFk1C0*GYmvUz`(&3 z5@k%i7yEoUK`w=n?C2vGCE9>UQNXopWpc8T_ zJw~w_p|cEk@r?SxaIiLI-Uidzh@wc^+HOkfG9qiC;DJr*BAeVHvICbhSW>3{=Nld~ za+G#6=a(MQ%neZT*)9&^G4pg)e;{%!C@>pR(YlU&_DDdw`ZJ@Kj@Jbc!a6OI&(86` z${P!U_646cm+lTj6hQ;o)AL77kHXJE1oaM&IXE~u6N-w8MvY{;fq4XCiBS>=lL!WJ z--~JpuB?;-o0#ofo~Q>xAd<0RzAv|<^%<(bc;r4YI1A>i^Kg@EaN>@Xw=1Khl#~?o zA_VAx98N0Ahw&W6np)UJ#E}Fx;L}8D@u*|Vf($xFW}!bX)wV=~@Bg-UL*!GpRS7dG zj|O3oh0XmqOH&GH^fy$x1E!DF>>aG`1tqT?bI=p$i1^M36pxgnqhl4q(%_W-g#F7P z`_FUdzMptx9ugpLc>xA0fC%AU7nm-qNgq0Zx*tiUQUVN;hSzD!g5=7BFY)Ciw#V-a z`-8MR8}FeC>H#r36r4O>5ya_? zh8Xy0n%SAr^cS~*nNz6h3J*E?A29K}_s`yV#mWqys!WJcd7X zBmP&!lLXil_;96^J4pU1CI0Z_Bxpi`IqN@7AVKD0^L;IGY)oQ^B?1knh_wmfwR3#T z!8moKtlk&lK1zloCqr=)`3wjFy2tKh1ys!pR52f&E(Im5f&l>Sk)=V_=1s$wKl+Kl z4D`#;#N?^YQDm-^KqSLsx1$|XEG2ctF?xl`wSn-7Bmzbjm-|r&sRsDq;d(lLV1^_)azK-j}e8F7;!D| zrYSvEV}FRcylkPoc0R9RC>)C8SxD_L=%|sB^dm&5wFRo~yQZ#}?v0BD=Fwqp7(gE& zM4}7?ENi_znto<90{C5Eku@zi4U%Aq;I?fR2bC?3;znE;ObpdMam&$4H^#s7!~enZ z{t(-F+uGaPOVp=aZO5uVlnop&Yz$f0^9_h*$FA;34Nf2H>RH4+i;j>CLymD-si6o& zUIIMevEQNC2X$w9EJcX5$3z4hb|hZsX{%CASNONuHN-NJ#2k*4&n}R>jstov83C&@ z7b3^$+J@Lgta+vC6v^1_ z_mCWc5CU-=gghR5lFZ}NM_@RNLf!V|c+?|psC<2;?dq|GiQqHJfEx=(RRAH9e__WM%h?!OaRoAwU+Y76BI~D4|QG>Jl;J1aJ|@0|LmI zpD^ig_Q^O?ei6TNTr8v$XVQ++?KRkv8(;*70)ytzms;0r#E%aiNx?8E3)t5~WM9yA3|i^}$|{K@ z5_+JnCl!yD;{eOK3a+p<;5e}5>9q(gMHmFuvTFCar8=g*|+>8;UpWC3Cr zKZ8U!3Nhs3w{PEu7lKtPjY$wUf3$~(P!8=c5io3zhe;`&@imUoJHnw*kR9iM9)Q;= z$N)*oB*;kym<$$Xk0Or@;5-JHdygKexoodum?RNI{adF=>PHx)d$D(ZA}$AErz$_rQZHqw7Gxa5 zzDCe^@0-W|56NJ?lOduU>xyar*NlveV_mrkY4g2tg$%V2#+m8q-;mH82ML5ps{B~8 zHU8PL0Jsj-V+{89#^}k%;YYAm>-8xR2Gg-8pu*G8`qdoD$qYs=5s;=@z(PYqb8Ifp zWbibi&k3lPLVuldfth+$7b51b;Gk}b0;+<}bG>5-@HH6TdVdU}Ffx@y7Xg^Uod`83 zd<}BeZ}zKG*N+q($O7`Cuq?a{Yp7PUY`8875097~pK=RG_GS~a#`34(g?d`Yw146N zS95Xd6LZG&kPAFPL3Ct~(cv(*HsrtGps|usvO7&V5FYaQCm3)B&%PsA;65>I<~WX@ z4S=ybp+}>y#PnF*Mqvey)S(DnHt_EjU*r~Ga@c?|Vr;k|%kK}}7XQX1g)x)s>gtAh zN};o*85#tSeO)v^EMzRBc=pHe0@4hA_ZVJS0tElyxL~X~P_o}DLV8IFA=!kBkWJrJ zFXlkB%8x5 z8G}x%&1D17yR3Pv2%Qi+o+)OOZS+6=e(##(3hX?gtgP(VN6&(mBr`)>!SD4R%_v45 zmpwaLyHU4)<7vWpi{K+H&;pwmkEP{&VF}L~Gn<;(0&qN#F;y|Mr9)Oo{W$4b2d(Ig zfCJgvFh8`xMpdi?WnNT5(oNxgcpA!jrd!p#8PdH#Mr3(FWI$;SE=C`~5fpPk41r!r z=zs>X?X3zOS{)l{CmpQ6!0d?d=EIh*adjwC`ZI?bt$+&(@# zV7E@rDkR7?EEJ3k?_$tUMuyfgmaL=9@91LxoaW(9npzQ?WRCS*w-eTJgc&|MdT4+x z$B!*;KX5}CRFa*Wc}e!{oG95>`gdoP=r=NwiF9J$ba7lz@8AlXFK^o{c%{p6L-|77 z^4^&upL66Y!>=Ot}zZA;&e|6UUJ?^Q{O zo{_zIQRi=CP)jci1(9lo7>NN8F=Q{oN(KcxOCEg>C<7{kgj-cw{j>-SMQKy@K_;BcB zyDi?lse-6xG2MEtv#VDu?m~%)yA- zQ@9Z;1By8g%`|*ZpFYLG;o;#?0?Gc;$qr{=03ifac#_iTERWav1e8EZD5j-#br^C5 zOm`0r07FPAeIT!B%s+YZ7ny@Wk(ciXjua6SI|(I)lY;O- zMqfT~e-rQ=jfk?ca!IWWGKDWP1=~|;>1FWW!i?u}abn}*ma7QqqDxEFTKo}RvQA4& zy8~Y1{9Jdsh`#=HoXW~doQi`T=5KeD+hflY;kn_ImzOIQn9+Og37wO$KBepFcEA0305*|9)K~u zrS|NC2V1&`YAgDLnbx`h|1@D32?B;CZJQ~ zl$-EUedFDFCifTHZBYY_2b8nXBry5@802o$}+IB zW;QH8ia7_+xyBJ&Mrdlfz~$3iS4RNYx++-H#S2(e92^~;@vOHqa>*$vRn^sa@EG#V zJ9kXD@`F=gNKw%fpv_q>`wnNRI8K?FnOWG_c=-4bzj*PYf6W1uk(Uo~D}QowbKNT{ zgcLG0d?qLLBpA;_Ed(DFNvXukW#SXQ!Y(@PL=M z8nyvZ_?e=jIP806b@dJOh9d3{fOt-Em0Ze22sd>=lP?dLS3JCVv3hXu%8eU0riV(n zA>)WnPbY?so!3T2k7Q*@0kTa)>vxGdA1pFf8~k-K2b3pFM#^ba^GzOt@#2iaqpVOq zql8xV&zr-J*dT>3H$XB*q%e_UhFTT)R0|+fF4M7IJOg3O?V&q?c5jxpg{>_%i!1}q zfQX#s7vw+|OQR3fir=1=l$3-$`RL?=-~t0Lc#zWhMhZA`IcC5-HO9TWhywA(ygudzfI=@aSDJ$nmdYyp(;Al3j^d14i2sD?eD;%;J~9}WAR?Td^tTc^H5wo>3OrNJ)E6;W+tnXv-357 z2{Cc!`mb@#_8iWMHAJ0^(+7ES6SQpb&1F zF54$T_}>McdErTw)6UNO-D)@B462csIZPoVBlEyw6bE=UPdG@CJC{Z1{jYLxT!c)z z{-Dooov5igtTj_n$m@@=Q(5n@Kh@IzIly_V)JghK7fa9}_U1_nQAc zIHmZ_1!e|5`72h%>)?H(#A#| zR5_y)6T6?sTp%OMBie5HdyPKe0$3DO+?gIYZQX-L}hbTQ60WsBksE%mC zN)R&zoJ^g!jfaPK&$#U3eB~OFvjmgaP zgZ#Rxs%ot0bKg0#=VhSUj7&@npqqZQ0`HXWJXTkySzBAv($jknCS29uPu19%USjd*XDjLg03rw0&v0KI)Nr*|KM^ zFOBN*^z+Mt+mq~T(=o&I%R+~xWMX1sN+lba;Nx@^emc`+T1umTWMn+Hw4`4gmVWf= z6~XP>zko=2RN-=&g5U1cQ|V@$n=(4y$vgxE1dz_NX1#8s-vdPVzV>ug#_o^rAr?GYmR}j*N5|1O_p2G z+{&1pHG1#q$-vKl1$Yg|F^o8LgWiX3A#XY%TIh6q_ds%1|M^2SJIjiuK9?uz;vxt^%_A%89-tY{z7c5GZ3^X7C-J|GvZ zA*df?K=G?hNyY%oqH%-OMMk;}a7wq#r0cCDbw9{QO7> zNUrp@wB^gZe0d4Dvrht!8&}!cSA%^0B^Yxm+_4phv>i#Z^-z)HQStsbtOOY4!Q1I` z@7}$mx~{I72(bhL000PA;j5L<<9i=!O1=I4)nH6OcAh));rE|EHT%1pWN;opAdWW# zGWoQ?H%V|fZH;+COfs62io2YXlT!^$sUD|4Jcn~8TgjW4nrjp^VrxDZt)Vm#Jj@Ta z(_3Ip2X&8kfaVo>6VuYp#>B*&A}0O-O#2i%$`3M(M=xLIMZ`HQ?A|k2*!?eH- zmnrf-ruQF(2crsI_IZ(90hXW()q{JSoTix9DXCIVo;(s3#sNG-efR73$fwVr`R@H_ zaXYPHl()2WPp$YOE{=tTg-7a~#B1X@#Q&W4I-#$xFCkgvzO*F&z;g1clhg1wt6!p- zEs(ud93Jq=MDlxqlOcnw;LDQ)#97Nk@P2^Osy0kJ4Uesq)INLp@&k~ISFc`;ZjgB4 zCX7Q(O?{Sz_aYE=t(~2srlxmSR#q%9Ei{9LZ$!H1G}P7a8Y>kS6=_2%Lc#m?bub0z z3kXeMYdWCH60)-9IU|jYXKZY2vT}0XflZyj!?m=u1cuauSurCzE9;!FbBa400?R2>wALt8wciJ`jy~Y>@W>PGtYW`2^ zFotD{o0!~zsC7N{4{Oj9eVX@~jV&!C#@%Vpdu4uc2R*y_3+m(dA=PyP(&d5e;uV~$ zf`YVyf`Z@K4M>2jt9!pk%>u6H;NSpGSVUcY!tEKjWC|`53KJ6(EghYAFnCN(&UsQ= zeqkLQdL11dy?Q-8JuR^A-ePNJP!v*gbMvBaL>E5So;rQH3b0z}Tf5WXm?+s!Y;0^y z4-~LMitGjw)YI1=16Nq+u>Kh4yc4Hk{~3J73*t_L0y zM2&*IN^gXPgjChmo&>1q=H_PkG0RHp-R7mO?J{QUxr;K7>qL|-ZQEiKrU!ar+gxIv zoem9E0W4no<(kY#KRY1lcq@>8spMM99PB9Sm+5`dMG(`$f1J`CZb`uYL$gf|b%I)PK zSe$b-G(OYQuh+06bU1baQKD+-k^rn;CDewwlFeYVVuU_ zOx}t?YSqPGLZS08m|AT);#}F===mJw5e6WLqo_@<5Xt zE@FWajHk|=sRr*oIyXmTZjR;tG1(O+11UT387>@qnuw4ph zC%$lnCgQ$fJIctOL(!d^kBgQ=T5!%p)y^?>_(#wcZ90%svdlZjeX>_(btm< zxZy>o*kD=MiR{8FV7FBt$!N2FI<>9Q-I9}Ar03nCVq@=sPz6SHhR{GA24PB(r(r0skA`?xrewZ1PYDG6tY4YpsKCUZI1Hc)mRCZP8}1<7Ac zyky|$^mOl!_bEzu>VlXRE%vtFK*p8QAUzE{6||So1KKFA^@)#-r9W}<kG^jr%EzGvL?TN zTdWu~j})lvp`NLzd>S3qIzd3dmBO6}Fb$d~bjE*qQE(*B7?`QvW@QC#;RF)-aaqCO?nu4jp6*B@g=(TVj1UV(lIctnp)4(Z{mhwJare|8 zM#55mlz@UPi!3ZOzR8k-Jw+|(boRxIiv}tdj<@dI`2{&185LE3{7-*~t&n~oEj0>$ zi9t^iBqSvts;PyWXy=3X2Je8-I*>$LynXvVEKD^i1uJuS?eb?NW7dWU=#xm8nw+c! zJ;2|&OsT+8e$T>Q-NZ6oW1hps(OS|nn4YEjIX4GtH3m5sU_Yh603|pDgl>pBSYraE zPZGnxw1w7lm!U@ZK`NMqvkyBx{SksLqRi^N=OMd5AQ!+PQ86*jkR3t2-{X zdv@ld)H5Y@%M+PCK6mLE&klyB{$;lk@4}&`qr;yl8|7m_e)vSHgw!jZ zrw`Zw{4X%t zNU8*BZlM*1#B8M82bkCxczC$MxLoE@rkk%X$v0L_5=dTw+SUP|k`q7**#e@A@O1%1 z`1ttVS9s1tfXm9u`{3o}rRF$Tt8*XW+}^)GF$lCDpokiP2VwkZAkm?vruripgUUW% zduwYY6f*DuQNmXYU4gg@sT$6+s6D9H3&CSXq%iVXI>9R>BqUkc*=|Ke+s6C85Ka68 z0^V(H*+EYV!;KpRz(x5)GF&`!|5XzOV1}x?y2P$bNPJm=1SbGxss*xy?BYenFqPnt z5U+IA0v+Hhkx;CruC8rh;OT}>SPkNeAwO{~mOJdlZLx>D55oECJU`4GhXj9H0#w9}9qZ zs1ZKQ!lE+zq5GD4pCmLSAbcDT4`p_CHiUnp+|N8vldT*WpazFwYMtaGeAU(69Uu6x zFR)ElSJ%hvL}tUKUcmD}CU_ds;16(leqjL!BwTg%q00qtsQbTz)N{CAS$(c5Dk-T! zqeM$&cZJ{*9uYA%J$(v#4!{yU zv0>c8fDhT&+5NwN|5#Y~0C9?aR9lc&BMj)*Tk?}^jycTJ0StERY_vL<7R~!cov&f% z8u^-oc5LtT3fedo5My>hbR4L^>vy1z~7VO6L8R$E#(+LdFm~0u_Opo6>#5zh8uf#gCY-b^!1y`e<%WHRlJkh z!;_wTQ|#qSXSB8-ZU1z)^xx~^zw0*^_}(mOox<@QT}TTE3?!qV_z23)O)0%I0>Jp| z*Z0Zk&f9n%@C@40%F4Tf0^5>1pKka|SO5_Np@dU)BH0bFj<>gWbZRP*e=_xncZVF6 zC-B_nr;2jqyy3yOQzu+QLwVmk=+8Lj>B00p)&Q5Djk2@r~C-APt%NgeSEO}S~-TL+0H+m+_n?S=i zXvlM_;V?%R7Kn8x^6A7>AY}me3hQe~Jj*4{c)qH)mx7lU*)t{D#v9M)@N#kW>l+}{ z;^LjnT;Z$l1LQEw+K<-KK7FzTuVs5>eY!2T&7dgOuFpVX0zK-1mb>-o(+_bnS=>br%aCOB26qnd=HkAOVNYCtSvY&a><;-pKjthNUj}&(n zO=Mrb3JhNm55UX4$(2MCC@3g=hvsL0|z!&ga)5M4V+ALQWBwma!gs*&xq|i;NQkH%p zk`YTk*7{%Uy?Hp6TlhBoNNFNzKqST1Bx9ivDnm03hGa}i#*hq|+EOw$Nu?-J$`r{w zk4X|4GS8W(%;WQ&>(T!0{eJHs-|_wR{_}S1y^l7}aNp}*>sse^UgveLMPs^FLPrOT zjg0gl=tj-~f~s4z170RkzJ-Tp5i_?8-U;d^^zB=TR1Yqe z`#kWl%tszA0;GZpg4Hed^v5U>H3RPC-{E%l0QhS~q&$4`r1|J`5QEZ=Pkiq%PifcG zJbm^o=f{t=@GrX+7G{{bwHZcG!}BwP22;N~k{qW*QCz$OE@LZSWsr362U&koheG1HNd2 z$^QH~T(xuiuCEXIZ0VYd9`Z=r|DN@I@GYmdHo9_oqhL)f%iWYiN=nRpeEH$;rEJDztS*v8aLJ z{d;2+l<6t;skVtl^W&$rwVR5k;_|n9G_FH{6PA#;^X}c1h__}NHf+fL`jzq0rAtCu z;jf}dbGVLr8BrTu=r3!lR2s_^B#NWnjGplORidJze`D(b3m|oEIQ6n_fJgYp-XCxM z`gZ#iX&du{+j;S(L_Vr|$i?*H#R~n`5&r)EhB0+ICR_H@n>=~;?0VOzEwDj`Mfh?I z;FG|>k0+ftd$A|c0dU^XO0#3#x35N6VsI(4j|-Oj6n#f;A!7Oai#>R_*6_zgjtB2B zlXa|qRo!Sb+O1kSoi8|_I)BOBe9q$on?P1oOfX-xj?cl9Ckw|M#CB<^gQ&aIi2~!D z`=??qO+Xuc;LJ$n$`WVKlX8CdT38zLPdd~WY`1Ln!i4aYX>m7h0P=L>Wb5laLNsn;r8{;GNM&{4Pit`H!AWdK;RGyZW7UALT?Ch@c*&6#J&pFrMz;@#G zTi=PkPWkhn_Ve)avH%NHC#dt>();&|*bZocM2gpbkdFEe;by_Uujb}%3NbkE@B&qN zRGo5>xags-h4j_{_Ei1iMuc34HYX2Q{@Jd9W7MSB}GZysyhe?Bxp2Ba*m5*&}7RR_NxRA$+N`iZ`y{xpuS!!@&Oz;xd zY4@K4jp=UNl#jj)3-hTNMT%U&ea$*vKgzouW%u`ped^#^^y##|{uWY&Z*FeB z)O#H~3^R-$6shxb`WG%N+P{B4b|w;MF&uW&qdUN<-2=cxWfKKPiJg0Zw4I>;V*!@- z7g+WqLVbj5vjB2lOO$yhXJ*<+h#cqNu_L>&anqsOj5njA1TYp}I_VDSqqp~ph%ih| z?W0h(y*(8(7Di)eu*43ZIFXMc7b!cVd4ncyXhVrM8$_xvn8)10!nY?B8TLe8O+(gC za-|wn8bzS#MkKoc4*o-Y{4MwfMJU!`Ci3jxpI*jef^u8j9PlH8XdYNF;mhAP+TFO3 zctkW6S;OUT&kxAS$vxchMs99r3)9Lako2#{4k;`wY-gaDU0HE9|tbVgO=kXQxN4FHkjb2|x$Iv;fxiY4&R&0EwFec*zG=*Ecow zM%RQM)br2X6=Om{z#(;GIQJss-{c`}-@fd?fdk-0Q6PUu2e`7f(YN-aK zcDHPqQTcc7Jw~fRH!w0YGqZDWBy^>rrj1ok>ds(01S4YjSiNE~n1t>{DF@ktyT592 zW<1JnmeZqG7B61B=iKp#S5!Nw-PYxODMyC@ZzE9HOT3Qs+kb=icB^Y1q`Z;Qc2e>1-V07c ziWKmduicteRP^pp@vYS?pB^JCOGpsk$i;>P`}A)?$dXuDSwDREkOfHR1BL=*91ma?-i3dVRg?102mM?U2*GRo z4m*;Bf!!!|oe>+E>7Ik^6rz2&F>XpoYzK!Z?Ys{L8#p*F%+F3ek#&(F86h@xpg>4h zSg}Z;kk3W)vfky(OHm!bew!B0a_;Qezh=1hJ5(f95TpuO!(Hr|iABqL0$7$UCQ&*p zj1Sj;8})E~zyUI-uG0n9Dk`f%#{-(Kkk~T#j}}0KTnIQ4A+t$ohtXxA$g{BoP!xZt zI0N08u*yii0y%?Gr4^44HZK|w(h zOab0&#hw~ox^x?b>}C)c2aX?S1SjN&OQtp*{Qe2KT|Qz15w>8v%FWO32pcBwAD|1h zmn)|;^007_CFeo|qH)=uqr2wgwzRag=8g_`Bo2U65-G|@u;qcMFMF%Zjn6Ou5Bt5s zG-d00u}Z_WX>xP%RD4-;PvtQvC9|?_x*5(OzmJSs%Cm3Za!t)K?!9v}iP8st+>-|1 zeb8@{nbhwn-OOnQc`Yr*MhBA%4@cBhRa^0P%DmKdy3sMF`@z9pv$N6&pJMw2;mVX8 zGxOVI4KiZ;pPx)PQ4(K*CDHYxb85d6HUv-~chb{yS4KZREYbkQWs}pyi@t&n*=XDQ zfG$jN-A6}}T%y8-y4>VYE;GyO)vovMtvrw$kK6LEZN@TgH zm>#mS5{=f)^i4`i+A4M*`WJdq|9vVNcE+!Kqp%)jempT#Ki_jb(QIIc+{{{CdL88> zB}YeT*5oKd$-n;Wm|+psM} z@B}ysRLBv>m9(@r5?JQpv5YeI;u55QWFqJr8?R7SRwkDQff~6qT6y>o1Ue|&xnoSw zX&R*vqYDWSDiRj}<48pW9SSv9BvqUC0LA@GFyq7rH-u{oqtNUKIe%AEX6DA%y!H@~ z-APQ8`1S3D7godtY>E(?QB;~vReTVX&vc$60$N6PVG5Mn;C4iJ^79*>DTl-p^hZ-y zJ*suMY|>n$DJC^&vuyFAn#el@(=T4!j7$?S@+JThxcQKfke9Dt(_@PzRIP5NGk&`i zw=#rH1Ok*c$P7;m_))TOgM>we&Oz#0wqDP3Mn=XDRvkyvM!rdrqIG6wrYWnzrAu3( zz;MyW8o)!yM?|Z=R&p=;@aF!Uh+xzo^=8IhiZ{h*O~pn!?^4mtXlc%tt7-dWl4+b! z0i{~q(2zcdTFg9#(&z23+js6j;Dpk{ zu&{Ze4{-k=>0M0N0xW8CxmXu9lhCC#|5c z%Q!B+&1CKV<_*{YzQbXs9|g$fqmvFeV>x*6w@1AD!#-9tH~jCVpvxVdoo#P}opaEM z%V`GN#_dGn$+&Uv&_1Pvbfj%0%|Z$lrBk1al?D0g(9n?4$Ss{470qVv@MJeiUL$bK zr{`w^QPx4!CW1>6e-~3#g^D;KSfS>Mcer2txGKS6Z7hS3jhJ>agM~@xn>Re0H&dV; zGmXo#JZ5y|3Mu0P@7+eAM?1u;(9m16vyPC~ZQi+a1)2Sib|F8^#S=%gJ?K6gWPb+t zvlcYeL!a`+Jr7A;I~&tu%4x^tepR=`Fr17K`FgvkXq@WGWAEO-zkm{_M$*+S$B)-q z^anrQxqW*U@GA<3< z=8ciuqeezQImN{f)yf`TQWbWdmC44AbI+p-Mniq!XOO1}L>sK6jF0;!UE2YzM(1i4 z%T;B*+60$(a()ARMQmiYbpJryCpCnhY; zau$F8zM9)(3H)@qd7f9^32HPh0;9zbv=ewe7K+>GbN|H)ACRAfBS1)o#B&lAex&is9mguwquy^&HhW9t@Cl~b2yBLR*mZ~?4~kMh zui;a?sM@H_cVGq+@dpx{AECcYtx*tY!PW*^XvbFvw$kz+KXM6M1toP0VlI|W9>4!9 zkv)6zKq82sT`u79`^^sPzkK=fL|A_j_Qlm~YxbJgaZJ&O=2Ud6|+Llj^a z&0`@G!+ykpQ|lqc*H;ilB_&kMz(6j2`m{Sdd^HqVYn^5^vl<)ee*JQy+iqTdYgu^k zGd2{|NzVl9MY^81wt^@RB1S%#389dZFTyXPnfpqMqQ=<8Q`A|5n0)>{w{k_`sQ*N-`0(s2Oa0zEtevInB< zyJpQA6%`fN2M^W|Y5;OXJaPghq06l7j=t{^o{q_r1yqcZF43!CBO}$e=g&9d%U&bh zMrMoQ&O@z;?Aq*{iKg-{kX?MZ-mf`1IoXUIRNl^R?}E-a%}#_!lVFKGwDpslSo{>J z`=ONgC1C=hTwSNJ^?iNoOte`~OGAjNk>R)xH9TMJI(d0{M7)V&GD7X@yYj*y;~>^X zPNJ{3IrvneKv+n~--M}0GQM3<5V8}Ae?^CK+t(dbQd$bS9TmA#li4g4_WSEz{f4_Q zFR~#dD4#K2D4;=Ge{toqa+hn}YnVnaUAW6&e3$6sZr#!Y9EQ}=DBc2S3zAVoFN?0m zJ)SBdH^ZYo$kW@1?J9e@m-L>X5owE*)cJ%GEO9tNEyva5${&&97ZAvY+~UKHi2+5k zjN9L4(K2J(GqyZsr^1dhInSGX99`$|ymplhc?<4`KDf)CNLV>IJdrOFse73W8yj01 zmJ*ldiq1(b`b+=J?w1hz{gt^TK z1aS%`oZcK_E713)7VZ#^pGIXvRGoebDJO|Nuxn|-;`JG4g76B$m^-guzkVJ9NDvZz z9AY>Uv`ADUcL|D&a<#Wg0IYl}l$FA$kkG?ZX|%6qgzxf=kE&{FJZKU?!4*$K5gmEZ zA>TvE8%VkhrOgwy4opP)fq9UXo&Cz~H5BK@+~{d4x!YFJG8{yNNP>nq5eH}XUz(C!ir+1-GNlc00rjHB_&HJM4OBHu84?;ko28r&v2m0 z7*^?W$VGu%p*fl7YK%soJ5hE5JCTJ1D0l#JVe}!n`uk)0_cgb-SA_gTbvUk`IUsvD%kYWf&7fqSV%Y22BWzbA5pRixWWilGYfKMr>ZU zqJy0aip2D8$Ra*qU;Y{>!Hm-h6tO5lmm<83mm8q;jp%znD99HQokbJ?@jKW*E?{mU zYMKlVS$3E65uGeen9~o%0y-%mQe{B7iH?GR1az|()nDPO&2kXxkdX(6^|`dP5S$VV zqBK!iA-^kiI)RoX!01=lAJO{n4$&%LG^D?DPEJmQILONjJro^`Rv;GAMy0KG{kk|o zJAfiz5`4I%Scx8)*!;0?z%89Jz+QkxggdFJQh%*kjsmbH1cHBBM_l6RNr{u^9<0G}S{q1)fCfi(gziu09Km;z zE*<3QhIQUPOtIIxMM*0H6eO(YPoG``Ro_)Sp}+X}4(#+7m#iLnkcy%PyO{Ah?Bvi3 z6y6eKVJTZl8`5vko}!iKC}1!h1=DjFf?xv}ODwctg`1&rgLzMf+#Gx4a_kNt%<9Co zlC74=&3QB;uO(Xni4AeTdm9$L2@4~FVkI4&O|H`y<6{Q3>~560-8|5CD;|>{%pWH6 zE$rujii?qtd)&QCnh($;0Wl858n>Y~B;+UzN}v`}#IB*ke-hzFVmWC(3W`U5MMC?gFI=#TB(hI5zQ| zZ+62)be#}KehAv=0%mQT*{fHtNbMQry@`7FZ@{`_h~OT5Bw;Ufe4IeNJCCtrKHr~3 zKEPt*KtwrMz;qQtqp|wA4A3Bb-nSDh3s3&5*RS1(wio2&BwC<-pap2}=+K9|Pgive zH}(a9uB9+kT8mCXQh^~lF~sAVeS|>5-Hv`@GbUS1LcYZ%o}LO)LqyerBzeheAX0s3 zfVeL&?|B4`PMCRsdwCc+TTFF23KDbxmD`=0-eM{VWlS!DJhLlY1!EDuL?h&;hh!9n zV7A}FWuem#sXIYe)}+-@-m?S=DZ2CWB$^!Qt*u8oWt4%fz<|l?>1}?PidU@g<|Tcl zurGRR+I}}9LndSD7w0nfzC?1{4jWJk0RONA3}g=WDgs4AL;nKTfC}d_L}{|%tM{N+ zwr4S|)3zIF3Uc+pzF~D;rzNPe?o%X}Q85K}3tK~0e!fEEE5wIW{FdRIEH;wZen^WV z%KsF-1s&$Yg$pO|;_@Ri>KYN%@s|MOxvEB}75%^aZb^9zoQuM^9U43l#{Y~YdH?TR zvc>HrG%O-0g#x(``+kS`=cK`t_U8dNt*4fh#{dZE2pk2g=PtMT-oF>I@F5&P{5R!! z=qQBHf++Ss9mH&85$_<-O;mIZh4gnMHaVaF&kMNmg3uv|Jzl$4HiD8vh3&J*KbOFh zpM{IuLHy7*Z`lG_o{`ZqaFPEuL5H%_`mYlW3RmH%B4=m7LM!jvnCj%uVN0?YRtPKr zJRD=Ht&MI0?SH>~$12?6;a6r&8QS9?QKf)pSFq5C_FnvF-AZz4AIM~c8jFqsXh;f= z|M_wa+LzljXVKM^A~m^*-kgoEQJts#IV}w=bN}EPul&6ZquVI}pkyokPxtjO?drP0 zOCph?P!{SF|LL60Cl6@HM$~agA8#9SxGy3c|BOt2KKbQyu)t`vprat6L*wPH&VR1m zW8GSE@mC>HxF}otM1&r>mv0%S7VQsd#=w08r?dj}P$*E-2?+`P=f;v~H)e%`-=jy5 z;N|z?1$v8w{`2YNv4*My36u(hir=SrkW48237w?95rLiH7K$q>U`R^ZIsf_M`+pk% z+OAUs?7@aip@5$U6>#U@Id|HW3|bDL(W5zOV6uNdx?&$~xLzUI2oTg>MA?o4WM!r5 ze;%d`xv4Ga#e0d2i~^PH=iiJAmxZ=qS1gv(%Ss<#X5VKOx{>#vhtwlYyWkwW(;UlC~zP$&b5`dY3Lb|#+U>89fa4h*G3i=buCK;&`5j>_9e7mvX>I03}NX-I-5n{8Q|!A ze!=&o1!fT!;2V0c2|DYDwKT($%`fmn9yF4yM;J%@I6wqC3s2|J{NF-hJ#;t^PANPA z#R~Fy$TZf_{Js|6w4!h~PNtI1rg;LE!?fzJ3lLaOnJqZ@2I2eTPWOV!c$P^-j_){ZWq&R z{SL#DRK@0U=b)m79x>L?+lyPMG;2&l>;`4p3WTk^;06V!twpLfplr}!p(ii@HCR>_ zZ5A&UoI1L3jPZM8Y!6fY$RxKdczaC4hvYrpg^zuNn-AZ);PyvcVct7*_^bc^#~TcH zr~0tCgH-(h3M(qs;gr^+3$7b*BU_|u4KTRZrsu5usO{h-(Wkd)HcGTB7b`%(z{eBY z5ssCS#CC}G_h&h-wy-N$u13CGSd@I@4n{lpd_G!m%Hf4!T(~EyYCmCyC@)VOP|$Dw z8(Hs?JN=$2Jiv$3#1h;@8n2=2po_-sB#{C6ENx^mwn-b25FAa^376hu|4Uugwx%6?l z`q_P~8ub7Cva9c)36`iO*XfmZN}=s})f6OQp|dbyy|L&HtLQJaK(6|?|JjrJS;TvCVcxRaW0+p%Y)C^j@%V=a zUl!aj&%)hjP3VHdSPO3dZ_piUfrmUj?n}AZqTVpo531=e+Vsr&46nLdFW^Q4j<>6? z?|2e?((AJ8px7)aDOp%z!g0&&w&=SXa42fB4MG9l3igYotSS9JgA5C;9O4w$wCM_+ zMT;H7h%K3f#NKH+XAxK0pJCmF;pyvRZ1lL#Hl#^gXfNY%10Ql+6Cqg1KKey@!3EK9 zIleF8iwDEPpm)Gb`j$_{s>X#`;KRvAjxt_Y8Ta8DwLEaIG!(4o@;2+3~=wvL1=eb7G4hoVDnBRULIK>Fp`Db2`7i1kie=+Ln zeDp9QE|%ht$HnozzW#aBrsWvvS?z`8P9C|j9LP)*XT^A?>B&%CRmgq4;C?L$3o_ns zzE`?>dOTqRbSq**P>!qm!dQ3U_7uHC-K$n8?O8DJ3@6@{9{1zF*Ve3R1j=My7EK-| zG2yE4$l1K7gl-UR79(7rqoSftsdrvsz%O5({!2)OSMiI-ZRB>p6923*Ja2rEXh`-V znq6ikxpsKxc+XycCS@n^fxJ;=KZb_IotFdM-cR5)cjo6GqsegEo6+{AfM_lsdPClg zW}oNUgQ@28`J(8QU?b^*8yGm56yjx_;FgHBjH6@x{|qgnyz$|dC%3@?ZPO^q?}jY_ z{nAzP@}zC=H7u7~Jn`ieMR8o=z4+1=V(NGCV~vM!5V_Tt92l@eE9e{dd~5kL3v4h+ zZj(up`J!M|BjPHu%Z0dl^$M04(}Fp6mOJ_Tj=n$kuS1&TbIKdDQ^7FKCM-DZ{w6;| zMPeNktG*tiOVVmg#fh|^g#}$KUg(Wk2<+@rTn_vPxluep!dc7A>Oa3RJA5ckg~Is5*Eh?NF6iFc)I z5Bx2Cj`SWh`Li@-$g4i`a)ivY&i|tY;3;4K$2vHC;n!Y~3ZeYX0)5S(#?2R|wicON z1}miOeu%nB1Qd7BHzGigy8c>P_-!tSzcI(d0);AACcZ}K0N~J^MSai*mf9HjWE_@&ieF(|8=-A0hpe_7f@avPYh*?t2vcvc#dQ+h~cE$ z3N}qC@LhlVGoH}TGGUxoEEE{lq`9?l4)9-%(x< zf$u3~z}f!>?W9q1F@~Z~9oZ}(=Ync|Yl|ntWtwrSoE7fib-C!BKR){HWOat=ud)yf z@B%Le%OtD@vc?zYub=={&nb60i>T{Eo20JqLZ2d77!+x}{wIb6uwtacb6A)@)n=P4 zJo}57%Zg#I+-yOg|G`#rV}E`&(Kp+$Y+*3hkV_$p;M&l)KnbA*P$qbSd?VKIUFd-@ zFF_jf1{CvYor=X~{qL?42G24vQ{=}$GH83m7%C?{yNSo?eE$>Pn1_K`*q@urNl+lx zi?icsgI*IEie{MeWK4LzHZ8$3J?x2r)X>i&4!w){cU+pM&3dwka=-Z+p$dZ4IFcPKX*dBto3n9A;j>HJi55c?iF{ei4NCA-5R$9Bo^1#2sVQADMY<&ZS3=qQty)}T8LxT1AWWyGMw>Vkg zm6}U21&VEl#KpuEVClR7Z?#fr@1Sqg>}oc%u<#=+i9FTr_P-CGSaByIraXa-EpX$| zFRNtv-W|^~O{59Vk&DCbyXbPNU1~~72t2&YG#AD^oC}cSCUE=gIBs!mt)N8&_Z4T6l~f~h~uG(+VCmZV*lvfKUiI9g#P$~5s66hRyES(q8^ zi4Pg=&_rnf2@*@0ESnuR;=7dunYy~NoqnYzX-8D`2!{WJh$ZBW&`vrg_JN~W8?k^H zaf0^dSV{89U4RAaVCvz83-$0oLT_~K`t_}+v2^jvmkGcud@Bm~z)(QqJ_n{T+F7@r zCU;Gdh3o30aQA&_?sR{wtcws0k78%omia(J9=B@Eo%N+)CeQ=_CNO2pMacql%WQN-T~x< zAbgd;oT!#&qMiAl?E#N_ivsrQ&zC+z0XhFZsBYmTfm*DSb+GU{>5T7hP?aLnVQCs_ zk$#Axs{Qrk#u(v9x#PjvtU9#!!_bd~g@~)LSE??Y5#ffr#K~b2LYe7k4}1S2@v3w# zW^Tmw1z%c#wH>F~hX!!+p>byej$3iQfldllDH1>_on)}Dn3?&Ys_5YXiIIBcx77b! z_H}aEK(y-t3RqYyk*WY}y#HdqlD-iw=&Bvh$%l|I9eNzQvhlTH%*0ub+t}ap(E!2k ze3JbBwjwU!Og{|`lKhcnu5AN$!2D8TDVg;hUttKxFoA$nWMwlMRZMJr6CnMTV_qR{HywSZuqXP zvTs0~@?y8*zaITRcoXIP^-^S7QP{{3pN(>_0{&k|#&`h-@4QaJ5=9WUqo>0)t?f!^ zu`ApRQ}`8jRURH4r?E=U7jJ>%7N+MoZpM8@ZdK0egnE#=&zf*-gk}CWGC#AB=N?>9 zf)&)$+spgMU~~tb-3pv{+>Xr+nJ0Qx-uHE4j!X^NAsHnhEDo*1SW7K<^HBjTl1%Np zf{pOVkVpCNPs;eeyhJm8J6;0ZSGap!5HT@zt;LS`Xs4DDT&K+pWizHy@k7cdGA)qh zsHM26({g^5K#bIBOd!||&0Dk_wf*Dvyzp}ns1WzpV?F-4O4C9a^!fjZsHH(%@W3*Z zq8%5}L1uJB#gp40Ud6CA$S;r#D#iHx3+}Ji;=E^_gf#5@EfL? zC*+l9;kSD_5-f6)ejUW~$RRh4i};}h6@JtRQ!ch(l5%CXl9!U??@=nsZ6kFZ>_1fY z2E7{kNq%0j3Da6je_1NA4CIa(VqY-(uEkdHh@Vk^WvYdcnm*fyKXD1UO$V%*9yAHs zF12WhC6g~4Aoy@H!MYHg$jcKZhMeUfQ*O0(rtK*RtKcY{%) zP2*r3+T>a+lqsE=j!@zydW+v9v%TY4&8qbW}-~+ zppa|=FR$YqpHCPS3?9*RUh%Y7&tN2SkQ&oz zr;$^sUM6a1Iy+(O1df3ta0n_;3+J7w$lzmdu22$qZgKn%JnzPoX6dRmiJ`6iK^$|d zC>X$RFSU?_5^7EHCBgrA^tf+`hwnlkm(nFp92Vh}1LoJ-+8QnzAKot<`{amkc-1)d z&GuJf=2(=)dZ$^mxcQliBN>7g!WZ-AQ!N>KLJ@hZSh&p88NgM$ zFP)e-ux+qWuc)-=AQy0$zi5^BRl-u@?BfOkJZ3YHDd!E&H4f&NQfEuIY0ze7uAw}= z)*=*FS#kP$K--z%X%x*I`wY0f2)xl+Pd+Ob8{#oykkY?sA^Dk#;sQ*gg#J0+ zaC6wgVGxuZ;4H~24)0h%r*cP^(`?--r;pOYJ>}kMS~#P)K3X6#|L;d&hW+2M_&+@_ zjL()YkxNDvjSQgFg5KZ1xPyo1%m=0`YLmP3dYeOasXu<#pl4C(jE;MzZSb7zqlZnq zceGnLtynK3d+}osjtBGJyLRiI!duHrjs(yJc%xXHk6mybsei=ogr4dV4znHR;3$BJ zrq@G3`Y)H}rkSvM`LTwrI!=gOH${;_(O^-xG<_! zkdYh%)ZvwsJXwI#1`tl&Elb3z^PlezE>v)RG&V8AxKj{;z&cve(b=l||d z&o2*C&#O-!fqLA@vdKx8tK3OBc)7gtq?16(ZLzn4t=2f%yc|Qn0I7_t)K7b4!1v)jn*40!cL)bu`Hz60RN6qWgJF7-y4J}RonfN@qB;v z48i%zOo#K%RG3E4hS{;_jLRD62|SR_`ut2Rq?|3sfJ=yr=ig`?aarGQVPxci8}S6F zDXh*I@30#!bGaKl_0%QIi!Iy(S9~r!qW9YDT$78GTD0S#NX;<@-~~#qy)(4Rb~qLt zl{&}K*O^?X8x*@lW;mZkscU!RSae;nx~b3bc}|MqqhhKR>}kyuxY5{en%2Tptt6j! zOekHY@(X2eCN@`CDS?Cg@m6YWG(+<&?ELG<@@kwPw^fke+HK`}YyWhY9}iFKuRx0p zs|R#;Vtajb0$>!@o;28Vtf&r{Pnw4Z5;u)cDHJ<10E|qtlaeaM$p6-m2cbKgKcR3a zw=1-mZp~v90vl2;V6c?uOlOWcPIS_xqTNn-uWMG2yRwX9lTY zVP|uMW-sJaQWytXd0gEbNA`0HrVvlCxK+Pl$ZBLyobZ|&%b7u?k z!hzv}<{49u?M4Edg3dl&4;1p!6thTIY=6`F8}QN{sY})pKfZF&VKu=39}DM^2oge~ zGw0tV^~EJ030SOBKF}aV`>5cVWLu>(KawzP#`4O_w(|1Nq4AmT4xSe@$6A55%d8CL zEQn8sTfKT)Q=6PNZ*rNvkH#>|U7GQKwRjen>Q>@mIXSu5-MGHWVn>asuCvs`VS{Cx zkKh>%WKuIA5IVL?*V! zJBF(gGj?-u2J-N%Wny~WhSMp$64SymttYaVW(Mem`L_v~P`+HMPZ|b0+UR`kd)+nL ziOdvDU0n-ldbz)?lC`ju6EEc6X2XZ^x3akm2k<$aK1x#6Z!!pThj-fGCOzb zx#sxJBM(S!H;c}2FqD@^N6BXDw;%WOz!`nHlymDYsF>Nw*aMxtK};@aK}@C}pfhf$ zxoQh(UhKu9@}xH3i5u!mRDK|LgrjlrOua6vQ>06uy1aUI_hg&wJQQk^W4hE#@SsmC z`BxuC26AKEqTJettL{nDKzBFjp!@6ZP7ADZjoTpW?C8x=Np<^;K)`45(S8J27zWn% zl|74^->%4QQ1E)3H`6##+<1yER8hQ6eN-2@!}Q*(-H;b~T=}61tr^05Q5|G^V$I{c zC7(Sb=niXa#WVkfZRAc{Y@zeILFWlBdYRe=r>#NG(}3|Bv8_FStyr8C+F_MEnVOj@ zgsjpXPxe&3edkj5RJomw?Y!KaqXuSXcUnh+sm1J4*G*>!2Io($k62`!Un0@8hC1mt zQFumqKUi~t?bDN3^4JnTUi$Rw^0@C`&VlqVBh6E;*dSf98_w@+Yq{gXo}NCpGWx|{ zOX-312`^F{$N5D*Sd3e>c4UQx3D-k$sGmli;|2qGe`4vXtKC!G$8|p1x12`u8RHjg zz}eOjPz|qaW<}eHrygCpFCjw>_Ji3|DiWK7#Pr=oqWoJQ@;eIAQ{>5fo(-V>rgl(Y z6dR6MIPo*mV|DpHc#(uV@w+iN*ZZI_NXF?>y-l@60W#oXEwQYymJ7kJnYqoqN}UFT zctT_u_ceWOXqxo#Q#e*UY89{wO3B^F_RY+S0}7DA(6?X7@cvR#DKpYE-_*f*Q|#k! z+J~D)-_Z6M|Ky%pJya+7n8Z^fuTu45SiS{k3d_t7D;Gf1xsk+eR89)|YNDW3{4_jW z9aApCAbdR6-dAQOR%^g<_s%g_ivRBVPGP-vj&CEm74J%hhy7ecgB*J9YGls48<|M0 zBRnR8Q~{Gjnx%ZE-NG4dl+9sZ|4$?*72%;PDXzzGyrV0? zEZ2uYU#S6a*z>FRJx7#*3UG&x^HdlNIxIHIHg2jhHP140?zENJaNb=5r zR`cS|sy!Ux@#rr}8c5;1&|h0PGBZCvn8_79nK!89zml-- z)6VmK12St1eLodK@&xsV_Ha)`9kzB}g~Zh9p6Ws&M0=gQ4OZZ$GYI6v&at1sNbvS( z=wCC^Dde5+6;RNce+*C~qrjI*MG8CNRbRlNxTTu|a=2Y99~F1Ba#M%r>1MznaR~_g zSo?mNodBSQgIrb}ibZg+KC5NhaKdoEGD822fhqnL!AI~vO>I4*Drr*aXEowD876qor^AlQH)+IKEQiV6^XO0a}5o4p^*{+5-6Zc|e z(q1#OrEP&tvvn&ontmw9_+0t%tZlm2;$-_z$|sVRcTQI7&iNdW1?|M?@_QRK)`*&S z_hD8I4WK^F<)hS#pNh#PuuTdD-%OerC|%`H zhZ2e%d^9g$D}poDO|*`k*0S%YL~h0D=?fwC`rfMjYlYHBFOW^Gz}Jj;dgO~$Yq5cP z=C+z+K@f)9+fh?^^ulWPp{}W6ZTuBjp5|y|%)TceVSV?b8?AQ>J;$~2v7PD40*+iJ z`b);W-oaIl9|COlx`gyKOPL4!3<_&WZ5=5edsLJ)&QK{fApc^2W;=TfhpGgcq3MrX20@6OHRIJjiI%UwPg%B?IXp;np_%6PuqOCO#D2w zaELG;#xpO+-3#Z(gdqoOv-ca()Sb{0W9*43YyF1^sl9xPvbm$-isaQ75`5 zGXW&0kvNcSH`Or~YdaW3wo9^?dahS5>V3 zzGaq%hW&%4cU4gFczHzrz*)7T#Nif{IAkd}dRKY2(N!)Q=ifk6xNhmHK0okY1+NY*g?PwdN-pl*6|MOAuO2lY z&$s<94p1=ZHDsHc6Dj|c@a=Buz;sE-T<+9VhCyLOS=IG$BWizQro>~xbRO#9$R+BV#XMk>V7Oph~(t_wY!eiyETkAXVVXd2{}2-ZL5cvwT&cO zync~)ZPRO^)b8K+($RI1Wz%vnYTGv{lq@n4)I&_xAcI zZJG+OYrikXC+pmtHNW?&o=c?mj2(_<+%b?gqJ9C`sB`}>cLI*_Aoa5{U~9KUAo}rW zbu6ozUgif5tKp$slU5~Jhw%2;+B!eQ8#86IZLxaUAxUFZ5`{?gE_`4+$g|Uy$?#(h zp5C^$rLvQq4}uMp3X4eIE@hj+;U^up^;fAbJNImJjK8!Ri6Ka9BDK%YUO1Si%+`4h z5Zl8eX}Cb5fIKC3vG=dq`%5Qm2J!xh`Vn;nYaWzWH^7F&Tg+sWH?vb0uZW3Sue~hw zg_N#OjAO^Kvg(N+BRCD95KTs8Q4&tTaWXf5OUab#FAe~$_jGg?@_9Ike0QX)M966M zq$9V`r_E=@xMxn6?msjo&2Yx2H&Ux96U8zSm?B>ov*xAfCGPB!OpF1IdBK*KtN70(WE^kA>FZJLv9b(xECN$a}W7fHbR z?%=5yHwMQr>ES$s;isju_SdclrM$F;q+LvAr$W?|b_F)K81rc>V94K~^pszSz9*pO}$Y zn^NtH6b3mWMrGoW#%8r84@eQvLj;*L0UicE*h zA=ZUtWQ>M~85XOp>+i)1fYwXBA3^&hq+y}o-I(V`?wR8lAl)7N{Nf&M3$oj#7LyUx zUXP@R6P$_eWKrECp|5ijF1w!vzAgOv^rPTpMrUn8zki4mo^nQ4o9YZk4>(79QqSJ4 z=cx7}l1>2}Sz;H^uYLkDfGu-!3RB!Zdt$%+Z+XY=W7OR;(`9~{m$uEGYnmINKa`>k zKZ)7NLcd3jb@SM+T1|9QZ4VcA_egS4XIz;3Eu-?pu2w=yMlzwm{v`8s zIto-e_o0pYhMRL_{Q=v3(I1aGQU!ILRUIc%U1ar|(65cE5ignPWtLE5oErVKLCp9p zcE9GoO*p>VW{iwY!m&)22CT1tePxI3r1jOE4Bdn_r)K(0&5sSAQ3B@E^^j_k5`zz$ zrWFHr_^xh|JNfa=rNzM{pnz;k{6h$;G23oR$Fo-dn6A8i35p^&ELG<8`mFr#A|r_1^H zp)bfp`DDgpl^Jgov{Xf%_Z%0KU>;=tVC>BGgM?cJm%sct#CFOI-An~7SY>3yz8((( z6-F+kMP#WD*IO$GOFVgBAvXGTxANn@K3|U{prpJn{uUm2}<C*8oEK++U1EU^35u zSQy+mI-WUO%spT9w}cIGpgO=dRFi6JTb7|Ec>cFpEm8?TW|zsPg3<2XJP+S_9e-o~ zJzs<13#joJr$+drWJ4vZ+l$zmhSf`A44#dSkF)ltcE34)VW57Bh)!6Ze!kcff{piU zVB%)yfzC#*;MsN;PusLMwxbzL38$-70JpI@?3&s~%O(X9({=z8O+HlFu@?DA>lc1q zw#>P@Oip#3sgw|d{j*nx&zBYgn2`TV zKf#g!itu*Lk2B;y`fYPR)^9^YgMygsRC^nr$-KYr)YucrPy3+2sHhxs(RS&tmXT~v z`QpU%JmRdx_)Ypw?tbC3VLFE;n|76iZkhq%N)JdPJMz$+dc30A&$Fs(A3=_{9lc+1 z4A`i>3#OB3xOS{819jB2F899yp?;=Kb%fOESeJZKn1QgOjh;J+Uxzwv5`v3Hm3w^K zmaAKNM9IKE5s%u}IP9y-{-LYt9NO0$%VfTE)(=r5VW6VhZc!0l?sNr;wustTI^!2e z&Q5m$o6jHl{QHcXO~#2Q!m&ofA%Fl+_IWfh^0mty-fZ5mPqD9}c&9Wxk0?i%Y)PWvd1%FloG&6Q@dTP~eWJ5F<;h zt4C7%TB<*P)9L_iaog{jy}e2V6ievoLNR0__~xXD!>Rxq+hA~EmL4maCNtMZZm zd5vp-er_ySulF&hbRtK^$*KEiNTO{sWAD*T|Ez*|y#vGCzuauXAN8nsdXQp07OF*7 zMq^{EtS`fj)S(cCV+>IiWXnf|fNtifk9yMT&g=d!#55*KRL+j{KH2Kya{{aLvfQ@c zAVS-esiVvW*?%h#)Qci&ypg&2UF1%$-@VJEw-okIxm{a(l-suQeQR_^wdl{-ZxV%Z z6=Q45xIM%qlwC@!SFt9n63^Th$n}$}wozx={nkh&j_Xm+Ls@9_*(d)Qj=j}CV|^56 z9`rmp)*73Mton|c)&|B2$%yt+bakcxepM>0Ox%z5z2T3tGtsk|)zJb2XEQq~?qLNyq7a1rmS z3pzGe<~V)rGJ08=y8G+G{LZB`j--!Ge--(PThB`G;mkg^XjZ*MW3DX8<*Z-d0YO#uCFw)>r65e25Pj_6_ZzG-H^=4 z*M~Ho6#X?JVDHPcMm^v#!qDsbEgw6eXrw|h^cniIMlI6Mo)rYtH#O{^Jov`V=10(s zZ{WXE=&Y`8k63NFi_fYA4m*9eANij<;!tJqpS2Kna&pT|pZUa?AUStc?RkuQj6oEK zggMN_+k(9j^g4BS3zIMefBvhpiPZ78f35R^|&rn_HC37 zKB_|>mQr8p6yaRHbLwY6k6!enquQ4{rZ))N|9%AfmS6i4dyD;!;-E)^GACLByyubg zN$0Lt+>HG7VR2iJZ=YNAeM*t@g|vN0`~15zff3h%S>J-1*c)@?;qAs@^&@U`B29I5 zH_EiLpEre{dfi%UV&QEPlP&_K`P%+|C8BRZGfLT?RP>$EsdqT8*rN4e@T@X@&Ir(z z8`lJO`$IiE0%zX`O7Vn%)WMTV;g9?{Qn9&^qp?$}LeKI;X)ONtr5GdYCB`>ecuq%4 zPM&;kAb7XXdGDa~_JCJaDn7w+qL$Fj1UZergN>Ur!0c;%mb!G8;$R(gIi zS7C-tAVr$gK=Rv*&Nz!&f1+BuOm}}GL`m+D>`i?K0H!Y-M_mAx92!}8kH9{|^Z1+S zF8em*XKwWdL#_$Q_Ik_C7a7o3NJ4*bRVR$~kf+CF-Zp2K??bQGF!T;c+4Nj2THn7T zhR7ihghsr+G+aAF{W9({%tkeo)2Idki_R|}FgYC)AiOwCMPh7vgCGjs$963;+Zgs5 zg)h15VqZ_1wXwMQjciW@Rr|O;)4J35ffrRl9$9^NNU6kglV+{3UyV>5rY-p>sK&uP zWBk6L)b;f4Z_p#Lk-g*;7XMH5WPN%pee&I@RV*yF^_G{5rh42;*rF4(1Z^9?b>9CA z`|^7JXir)iI1d*oX2}9*ssg;meE`7ToG^Ju_6%*aH0nx9_&HQ#`BE=)--t{)_MRMe zZuh&W@J?FFtR8m3ug~{I7*SO&>xffo6=N=lwGbf*s zJ9jzg94B&Y?om6uxGF{$+X1MX2SPlvT}sUUj_2)3X<>GV*=rnU&b={yp^H`n{tX(^ zzdt{FAZB~*IgYW?*;pQ1Ot#yKw%rDb!xOe*p~JB;Z;WRdffu=AZZy27n?Ys5vEO83 zUBmUUp7TrlWj6JtfJ&K{*=O^fm&}t9|C8>KT2r?l%t%-Wt~!sNmQz-J#n_(Ie@i0u zrK3@qdt*qX?08(~IUb`uqd`g?AyNI`T~~*~6pa8YPKk_lO_K#p1;KMQRL&+el^2)4 zh`(4A7vhASlxZeu-HpCj?) z3<*yNHQ$RQ<1|9WqT{V3oH)-~74#zwDVdb*Z)mc3sJgLmSUET$vXAWrBTn=)sTO5F zv|O0okW+Rm`g1Sd+k96mNqhTWn;BRHg|{}|m2kCXXIehH{DIsBp5=;icf<@#za^hb ztjxa0zWLNPZ--Y#o2twO&Zo*uI`gG=*`F-6POy&KHaGr!5PZmd=TNzadDFbY+mlY~ zK0)v`w!?yxQodma1WQ>-i*8CTaf^CwRr%@DlFBO9-!gfx+QMvVtXz&7I58_zcxR64%HIzo|%vi?WlL> zURz{LO$TRnx#YAszt}sRo#bShIudWJdSX#}Fl;p(v@>Qq!sS$5sLGPp`{s@$7hWv6 zsdW1ebyDKzxQG7Fj_b+|@5aSEuG_JgrPvZl2ePH#^J z&3->Cw8lPs_hp$4iOOSRoc>Rru5U9Itz&Q<9UFDZM{m~F7y9hR=FZyt_LVX79`!e} zS4~ZkTz@yu)@uI)i;gdH6_n#~zwVV>>O$*d;G?yrOu5mIA2%pJQr{ybr6eGb`r3Sn z^45UjFrfK-RomKl#wcCtg$Fm*-B=~PMqvLT!w%~+Dbtmn2Ej+)*)#k+dp`C0SB^IA z(&E5(o}OQl27X=de3vra&Gbe2vC`B{Zt7jW#uS`sfONd$*38F?MWU4zksCgqBv*V* zfk;vF`1twH&x~^&x9h!NKXp({B6E|N^5u}{C*NY;UEImJVMAGeUFel3$8YN!4K~ti zro``jHBng={iDD~C_gPIavxH(_{*ivWmK{)QWJe0)Jkwa2SA{y&=_V#@yk*dGwuNiGn|+11GqP?i++_5BMkyE9v#js${+>GjTw(3XkjS5VzP+goHcso= zUv)ok`|6dM?Z7fXFZ0j;&nI($NmLM&L>=zP@U>rCdwapv)vrakzP!*r6TACj{oP4j}pS@z9)3gaz^C@BXavc=CQ~y{qfdPgS+E?CTqs`JeZBkw2R!ZoPjy-`>Ru z8$yBgQm}=M!t%?C{l}Mgb$RJVZHZ`0l;3)^PUqwd=7}eqYk$8D4W0?~=+UF9{$Hy7 z&9wV!wN!sgPMA7%?WLgnE6wY})Z^9E(_T=90A6+Y z^z+$pSJ$OA`-=E3dI@h%vt9l7_x&&nn+502m9;wAXJx!-b90kB^|oyFmMhx(_s7)z zZ`yIpJ~WrvVb@028<#m47<7R5*}nMkaq+U4nSRerWbOW}<7qzY>0tHx?O(^`{`EOp z*%=u=8CP|HtB%h65CJaK)j68BIrH36=jBxy9yo}U(RknJh4Cu zXeh%BLD00|w8!74Ynzw1t$g$GfMCOyqVMlyzkdIpqP2SceU0|!HHAQh!j7Pn9?^F; zEjanHS#YGqo%4y=4pO^IUUFZ~2IjS=r&ljuVGdO2&(E|6SgcJtb*g4DUz%0>IzuB-q6 literal 44018 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 diff --git a/articles/Integrating-User-Defined-Functions-into-rxode2_files/figure-html/convertC-1.png b/articles/Integrating-User-Defined-Functions-into-rxode2_files/figure-html/convertC-1.png index 6f37b97880b2f3cfc2d03e4ccac6048e5e0d634e..5168b11655f763b53880d3664e313bd18fbe94fb 100644 GIT binary patch literal 38262 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 more comple #> cp <- center/v #> }) #> } -#> <environment: 0x55a4eb336c48> +#> <environment: 0x562025efd568>

Note that these functions do not modify the ini({}) block. You may have to modify the ini block first to make it a valid rxode2/nlmixr2 model.

diff --git a/articles/rxode2-cmt.html b/articles/rxode2-cmt.html index c4ee03222..6ecc82681 100644 --- a/articles/rxode2-cmt.html +++ b/articles/rxode2-cmt.html @@ -114,7 +114,7 @@
 autoplot(bench)

@@ -633,8 +633,8 @@

Increasing speed with compiler o print(bench) #> Unit: milliseconds #> expr min lq mean median uq max neval -#> standardCompile 345.9838 355.2424 412.0364 369.6037 487.0648 552.9638 100 -#> fastCompile 343.7996 354.6576 409.8407 377.0467 488.7956 561.7211 100 +#> standardCompile 351.7574 361.5485 416.0550 378.6938 491.8503 573.0399 100 +#> fastCompile 350.2260 365.6087 418.6013 391.9368 486.9704 576.9005 100 autoplot(bench)

@@ -728,7 +728,7 @@

A real life exampleStoplapply <- Sys.time() print(Stoplapply - Startlapply) -#> Time difference of 13.84886 secs +#> Time difference of 13.36731 secs

By applying some of the new parallel solving concepts you can simply run the same simulation both with less code and faster:

@@ -769,7 +769,7 @@ 

A real life exampleres <- rxSolve(rx, ev, omega=omega, returnType="data.table") endParallel <- Sys.time() print(endParallel - startParallel) -#> Time difference of 0.1162055 secs

+#> Time difference of 0.1182919 secs

You can see a striking time difference between the two methods; A few things to keep in mind:

    diff --git a/articles/rxode2-speed_files/figure-html/unnamed-chunk-10-1.png b/articles/rxode2-speed_files/figure-html/unnamed-chunk-10-1.png index 69198568d436fa784ae493b26e7033bb599dcab4..7a4789b1e45007e3b5ef7a0fbbb59a94846887a1 100644 GIT binary patch literal 49288 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

    {Ss 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 Vq8rcKITKBo2Niyc+<)fE{{U)W8+rf$ diff --git a/articles/rxode2-speed_files/figure-html/unnamed-chunk-12-1.png b/articles/rxode2-speed_files/figure-html/unnamed-chunk-12-1.png index 15c59d5e8f5d656a0f55c1cffc4e81757adf5894..32935a1a942e6719e2fb89a2e9d2715d93e6289e 100644 GIT binary patch literal 64611 zcmeFZXH-?$wk^EPSxPMxkWeZp2m(sZMsR}!$r%yJk~5OZM43RhAd*o*GN|MvDk@5p zB$7b{1SClk5O{rV>)dwR*S`1jz4zzZ>Rvgx!&-BWIYuA7_pz?4D$8$L&%B;Op=_d_ zI-y3Ptn#2xR+y|^jo%n9uQ$S9tIsLQpTOVvGkd(y4}Yz5IHl`Mp|A#!|63N+J8njy z{6(RjII7_h`MurUTf?knX?*mw*D>ZRTmQOBsf$bgi}mEPSKBuf++a0mTI9;(dVW7! z>cFGtB7Ydn>gs5pIS=V~L@7H2iSSHh{uqzz*s4}BXJQ=6+ z`(>Jfoz1IVN1WStlnQKIM!zHqr6{nm{y#rclCQ1g|M&ME+*^zO{jn?l)Y$UhKl_L7 zd9~r+UmM-{Kl$R16zS>Draxw8LQ6_Yv{H4t2OO;1$GS_a`b&J~-Bbe9?Z*l}$=G{W z72D4D*p8Fyv-I$mW~KPISmd^vWj1qAubFs=g|}E_Hdpos4VDh+%@>Ue&*TgT<-R4i z5Zi6?|GECyx_7sCS={IQIols2&AOS~rjQPY$KR{JrR8?eOc)PuJg#lvcr~GPS=ZGY zH*Z#L-4eoW*k#+wZhvzpUVEhU_$Bf;`BU`gI*qK=P+e8^PD_q$${KcW)k3%71KBaf7iR_s5@J5R-D#XEcbl2} zzyXCOql;-f_>Fi2O3#?E1W8XnU@E(@ou@5u>EpxW;Uc!-azSiq_YdkH`0KADXU?1% ztWOAH^By~T&>&AWK{+b9!P&ULC5g@Vr-|!e19kWA-B{oz+_mEH;~51qSWnIjV8`^sP&mE;T$el_wk3 zg1Gu5VMO7o8^8uv~g>61retC19tm>Y)2%I z9@6?kB}PWh&CM;}QR>%NsrkHF#eGdicPFRkha9?II)&>0s4>sf{Mp99E^{Hvx-q$- zEJHtcB(jX(An)VajT=)PnseLTBJM^+=qJr|zx;cJoQ8%*{z4#=;5#lZuEeoyCj~0? z(A@N}zDZGgN~D;H%lFUE+I;z6{5-dJ@7~g351TL2>FHua#%Sy1sPv$@Ob~+tfJxJ@im`7Mnu zg|zxE%uO*1TWe&$ovl}qO>!Ojq?c)~ls%Py{=-&7hgYj`$J|rCJ*juk`7O!xOBmrjnOxO1Pz=bX6m^j#xjj$f`6xD8wTvdIUsB;kl0;N?xN^YOfqdx1YH zd1Atz@tR$J?~dZhI>p{;v)oqKD&eMY#WNi#0xu>fU2v01Ru`MF*cZ` zyZ6^nXGzI3lhW0D`T1)QTXIK_{yjcXBU^Y&V`5@LkfgQ1jlaG<4!V_F>>^ZB7*j`G)7FhP2IN;@@s%WwqrsD*7DX871k?jOdS2EL_9p5!*H+#?AfVsa~4- z{QLK(dP*5&g#uY6&HvoFa~D4AeN~mPR)&$S%h0DPvq?iQuY%TbH~jo_yo|ldk}9$x_F+ z+Q$LSF^$&3b#-;+J`BkPc99F8>*U5pI*MD@ZrI>F`>SPm+NsB}$u_s$e0shoNVZ@h zFZtF#Q`d&glzbLt7bew1a}YTqpVIU#UaZEly?de*QO@$WaZA4iQbpgw!-o&wwdFhC z{`&R&ysJ{ihJT$NK4`B03to&MaecOHo zrDM?&uE`D4SOZ33>)_^Te!p48Fvq-mPw`27*OSRw;lzjd)h+dZ@0W4<`d;nc70&J3 zx90~d=Y4y0^Hxz&(c#vbNb!0zCdE)bSDyRTQIflGe$A%mzue?6$dYyXdMas{WphAn ziJxC6hqLE+%dnei<%2`!^C$rM+efjthIX`(ClPjsTLYPelPleX7udA5BVEmkb)TKP zI*#KP65$|xOK{ZY!`FU9ow40~a_X*l>FMt)M}PEI7;Y9h9U)ScCeyBYm|Ea9Wu42e z-FU^yu*2y74trPc#SI%a-2V7cHM9NmGt-Li^@z@yj*A)k>pDbiTOQ2VcfKgDWF!UD zW6jp0BL@$JQ7mg8oxDno%p8(WH!RF)o7T^@6K)l;s*9_18{yzpnCATOxxm%tt;$mt z&X~fOm>B&jS-)T7@}Z1~C#`N%xj+`HoYB@?`>W4RB?}}CIEWd@waP3^*2m|x7GHFa zk1;heidMAk{`KpZQ_t-iHxA#paie^A;`^C=GtRfxKcv&E=?Rjlxw)C|P-wz|Avvp{ zgJE4!!Z!CSY`W~EyUG)*R@xhO8b!0(yZS8p{p?;dv3Tds9kpBrvM)?Z;X+AIJ85gG z4-9U@Z5?Ts-(>XiIGf)u$Jx2L`>p2RK0fU0{pX*xQ^T#fZPWOFqWlR72`PDbdFA6i zzsAe@db>*lQV>F#BSRNv+MI)Me@hFaei5PeB@1rZSe@5pML)`U`g)E17BqErb$fHz zC0r7>ZrxgLYx+z_$aPR-V(u1`pn|Qa`-s8BkIuzu(cEZL)asGq8Ka3gL~@1g(wl86 z?`vu@+C)&9`I?-aofU1h?~OXTzSC7RG`5dK>OJq9uBNW8siX7lQ%{?rX!$wDYtbHG z)=da*XJkx7LLCaXNl$W$as4~DXjHjzYIdo{Z?UJ&;_TV8`95>Avjgl)Kjp8E8~V=n z_VqFenrkHG2$DlkaCs$v*KQoC^ruRh=2evyE7oidetV8P*9TWv;Tln;mEGlHPWvkX zH6cTDBtfV&fWbYby(QbGs={w^BBtHzbSR&pLAtgOcReDieJ~fbwXYY6ueZNHrr!MR zjqQECclXK{G-hxZdJV+)_1@TL=G5F&$3g=G0|f(5A}TL$sR|da?EE9*6=~C=HD6as#?)OVX>=4{uSe-&pz)TWoGL3apns-I=V(lY8!SwoRyK@uM?2 z%33L!tded*+v2ZZzdneJ6E>_E_=QKs!y~U^3dJKE@S`_p(=L$*q4+K*=Qj^ayB%iv zKbXCVM2+U(zi*$`fxzd%EWE`N$nae&#-?Zt3S zS@ZR4A3uJy9`5YyEU7yrWZm$7cril6*4n7LqJk$kt+1x*+_StlKGT+x0j1rv#DfP8 zsNo3z`0+zSRW%my5c?YDClXQhizn>oK>#9wz(LjeQAZ^oBkBAODV+R*(HHXvqT13n zx_`R;eC5iO4?@+|)q(zWS$8+CbM?Hat6m{{kyZNQ8%N!?g^gIl)7a`czyx9I2CmSR zo^o>6%&WrVEBFde<8;?vTD75#fd#j5ByI1j4P7i2`}aT3%#>z3e)4(?t**Yls^ZnF zSG_q^A3ivysFVsAY`ti)|BO_WYI1797~92rKJ(K9@u5bCGZ>hKPAT5!twpp3-@CWB zu$?cUbazkX*LZXyhJ|ivjf^F;eY<;1)VsZ`vH!bkR@QTY_@v5Z z|M>e;ZZiqW-Q3B4zsg)4kn+XCw0^tKO#6@V@w*&mW@ZBgL+SOc_9er5x!IMwMrKtTR=;6s0kzS9 z<}RiRbgc@m&1Rutp|Zcmjt9LFIQx<^@k86#r}vX-b#z?nqk@na zzr}q01-rJq+9DPvCf&h-I!=ox#>HOQ`U_rah8{u1CqK+M|M>c0d*J8l_wOB;s7Cs! zS}8J%KTX>&juz9ZZ}oj|&P=H2&)t`&F3S|sgt|HLgF*IJ*C$i0bOYUk71I+F^>40k zbFDqOGc31pvVScJg~mHwt5lOENAgOGepQKf=H0rHc92B9=j>$$83!H{Eho31NEzB< z&9x-o#KpxqwK86N_~G9Eh$bMFMYUG4X??x;MT~kvZhF#&(Pz0_;!d?u%nA0zQ(8*b z)cJ0{eH12WVGZ0tt3LgusnFdXa6efublcXg=Zw-%uiKtCO3FCS|Bs68cIxOkr@m*_ zXxVJUAr|D15p#T`H&3_=RcUnmT$(c@?S^jO12(fJ2L}i1-8SiZ`L}gl+;vZ%$#1p2 zpF)2D5l&4t8AmiJ?z>na=r#GxX}@TMj86gb*m)y%Szqs@Vf@nMzVsYTAVlBXU6+MV58Clfrqa-E|{1+TwI(fDRh0w zD=TX}(O)B)p{?2Yui2&nEf_I4DOJ&pyYG`?yAnUq+FVw`}Ks=Qb3)*Y99VRMy& zHQ&N4qLZ>2!D7S%)(#?ULOEEaJXBE(4$d5^t*zB7aIw1Ts>V5x-ydDSfxjsB&6^X3 zj&Ha3<_v#)c)0_y@6`I{&6{sc#(s_d%T}DvY!1GA_aTt-DF*3D)vM1uj*)PB_5SYO z#%vpH=hx5C45-_`m^BX@#_{n@Gb+}TbRS7g`=dh0@ym&;*RBm__${Px3;>m6B0E>G zTpvkCQ%UX!i3*t0#pN`6Xjf3+I^?W{9cv0jlT$+tpI+QU# zI~(O3%L8VKTv>X_qF3&H_AOf;B0ydZ3+^ES&>$l>wmeZ4#W~A!!hE=+Sl`%t{3;r^ zG~6k-sHnDyiHUV#;KX4ZX+TGK*YzfMcU&aw-1_Dpp?l&0Dt`@R?6~ zD?)9mBgH`}+y=&Zf+lNfw9^<@TZ`14`t6&gN`PK+g#8O$baw?fS)9}$nYlzKC#N>H zVcqaEkL9?LUkL9+itX^{XQgQ^>4_}Zonl}hudjFIg={|Y9yBV_K}c#iI6PgwnI#dZ ze(00Fz2?1rN(TFG^Xf_##PJyxe8Z}!>FI^v=hb}_uNXRr@YhsRqy0<0p-0dLS!MTh zND`~xrNj$XDS9&@L;LMX9vgqRi!+KT3CHyUgZxVTI`+w#M`)&E+0Z?DO*dOq4G}_d z&12GFsp`{tUJvn7fyuA;RIHoQ4QbWEu8dM1PXiv4&s5#Tm5fBH8lV(*_#^>3z@gjO z*)wpcKa`cpgVjT~(URx*nDhZ8V7)6V_)7?L=_z21_fxX3G80nS^)o8pBLtwVUG8X8 zMvPXP-rKL1_=h7aj$X$X_x{Zr`!Py5jypy%*m3Xd8Bt z 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 ZaSa{3(h5#!7QGOA?UpsEf9(AGe*hwnr&0g_ literal 53299 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 flDgv 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 LtDnm{r-UW|I>}kf literal 79335 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 diff --git a/articles/rxode2-stiff.html b/articles/rxode2-stiff.html index 224e335b3..fc6d63776 100644 --- a/articles/rxode2-stiff.html +++ b/articles/rxode2-stiff.html @@ -114,7 +114,7 @@

    diff --git a/search.json b/search.json index d7df7f94d..a5c705d18 100644 --- a/search.json +++ b/search.json @@ -1 +1 @@ -[{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"user-defined-functions","dir":"Articles","previous_headings":"","what":"User Defined Functions","title":"Integrating User Defined Functions into rxode2","text":"defining models may wished write small R function make function integrate rxode2 somehow. article discusses 4 ways : R-based user function can loaded simple function certain circumstances translated C run efficiently C function define integrate code user defined function changes rxode2 ui code replacing function rxode2 code. can presence absence data simulation estimation.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()`"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"r-based-user-functions","dir":"Articles","previous_headings":"","what":"R based user functions","title":"Integrating User Defined Functions into rxode2","text":"R-based user function convenient include ODE, slower done written C , C++ compiled language. requested github appropriate example; However, use simple example simply illustrate concepts. Now ODE compiled R functions called solving ODE. Since calling R, forces parallization turned since R single-threaded. also takes time solve since shuttling back forth R C. Lets see simple function performs: terribly bad, even though shuffling R C. can make better converting functions C: C version almost twice fast R version. may noticed conversion also created C versions first derivative. done automatically gives just C versions function, C versions derivatives registers rxode2. allows C versions work rxode2 nlmixr2 models. function setup advance allow type conversion. general derivatives calculated return() statement user defined function. means simply let R return last value instead explictly calling return(). Many people prefer method coding. Even return function, function converted C. github issue, used function convert derivatives: still helpful functions early returns, nlmixr2 models requiring derivatives calculated non-optimized finite differences occurs. gets internals rxode2 nlmixr2 can see easily calculating derivatives: Whereas originally defined function newAbs() use new derivatives calculated well: circumstances, conversion C possible, though can still use R function. requirements R functions integrated rxode2 system: function must set number arguments, variable arguments like f(…) currently allowed. function given argument single number, function return single number requirements met can use R function rxode2. Additional requirements conversion C include: functions use within R function must understood available rxode2. Practically speaking fun2() refers fun1(), fun1() must changed C code available rxode2 changing function fun2() C. functions can include /else assignments simple return statements (either returning value value line ). Special R control structures functions (like lapply) present. function refer package functions mentioned, return() statement present, derivative C functions rxode2’s derivative table updated.","code":"newAbs <- function(x) { if (x < 0) { -x } else { x } } f <- rxode2({ a <- newAbs(time) }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(-10, 10, length.out=40) mb1 <- microbenchmark::microbenchmark(withoutC=suppressWarnings(rxSolve(f,e))) library(ggplot2) autoplot(mb1) + rxTheme() # Create C functions automatically with `rxFun()` rxFun(newAbs) #> → finding duplicate expressions in d(newAbs)/d(x)... #> [====|====|====|====|====|====|====|====|====|====] 0:00:00 #> → optimizing duplicate expressions in d(newAbs)/d(x)... #> [====|====|====|====|====|====|====|====|====|====] 0:00:00 #> converted R function 'newAbs' to C (will now use in rxode2) #> converted R function 'rx_newAbs_d_x' to C (will now use in rxode2) #> Added derivative table for 'newAbs' # Recompile to use the C functions # Note it would recompile anyway if you didn't do this step, # it just makes sure that it doesn't recompile every step in # the benchmark f <- rxode2({ a <- newAbs(time) }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ mb2 <- microbenchmark::microbenchmark(withC=rxSolve(f,e, cores=1)) mb <- rbind(mb1, mb2) autoplot(mb) + rxTheme() + xgxr::xgx_scale_y_log10() #> Scale for y is already present. #> Adding another scale for y, which will replace the existing scale. print(mb) #> Unit: milliseconds #> expr min lq mean median uq max neval #> withoutC 9.177344 9.278564 9.995587 9.332880 9.470347 19.631064 100 #> withC 2.884989 2.961889 3.276341 3.037014 3.542058 7.994735 100 # Light f_R <- function(actRad, k_0, a_k) { photfac <- a_k * actRad + k_0 if (photfac > 1) { photfac = 1 } return(photfac) } rxFun(f_R) #> function contains return statement; derivatives not calculated #> converted R function 'f_R' to C (will now use in rxode2) rxFromSE(\"Derivative(f_R(actRad, k_0, a_k),k_0)\") #> [1] \"(f_R(actRad,(k_0)+6.05545445239334e-06,a_k)-f_R(actRad,k_0,a_k))/6.05545445239334e-06\" rxFromSE(\"Derivative(newAbs(x),x)\") #> [1] \"rx_newAbs_d_x(x)\""},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"c-based-functions","dir":"Articles","previous_headings":"","what":"C based functions","title":"Integrating User Defined Functions into rxode2","text":"can add C functions directly rxode2 well using rxFun(): wanted also use C functions expressions derivatives using rxD() function: Removing function rxRmFun() also remove derivative table:","code":"fun <- \" double fun(double a, double b, double c) { return a*a+b*a+c; } \" ## C-code for function rxFun(\"fun\", c(\"a\", \"b\", \"c\"), fun) rxD(\"fun\", list( function(a, b, c) { # derivative of arg1: a paste0(\"2*\", a, \"+\", b) }, function(a, b, c) { # derivative of arg2: b return(a) }, function(a, b, c) { # derivative of arg3: c return(\"0.0\") } )) rxRmFun(\"fun\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"functions-to-insert-rxode2-code-into-the-current-model","dir":"Articles","previous_headings":"","what":"Functions to insert rxode2 code into the current model","title":"Integrating User Defined Functions into rxode2","text":"replaces rxode2 code current model expansion. can allow R-like functions inside rxode2 ui models, well adding approximating functions like polynomials, splines neural networks. example allows R-like functions : accomplished combination two functions, highly commented: general list function needs return can : $replace – text replaced $– lines placed model current function found $– lines added model current function found $iniDf – initial estimates data.frame problem. calling function, can retrieve initial conditions currently used parsing can get prior value rxUdfUiIniDf() can modify inside function return new data.frame list element. allows add/delete initial estimates model well modify model lines . $uiUseData – TRUE, instructs rxode2 nlmixr2est re-parse function presence data, means bit function setup need done. $uiUseMv – TRUE instructs rxode2 re-parse function initial model variables calculated. addition rxUdfUiIniDf() can get information parser: rxUdfUiParsing() returns rxode2 ui function parsed currently (allows function overloaded udf calling rxode2 well function modifying model). rxUdfUiNum() parsing function calling (example rxpois() can called multiple times. gives number function model order (first give 1 second, 2, etc). can used create unique variables functions like rxIntToLetter() rxIntToBase(). rxUdfUiIniLhs() gives left-handed side equation function found. also R language object. rxUdfUiIniMv() gives model variables parsing (can used functions like linCmt()) rxUdfUiData() specifies data used simulate, estimate, etc. rxUdfUiEst() gives estimation/simulation method used model. example, simulation rxSolve.","code":"f <- function() { model({ a <- rxpois(lambda=lam) }) } # Which will evaluate into a standard rxode2 function that does not # support named arguments (since it is translated to C) f() # Which is still true in the standard rxode2: try(rxode2({ a <- rxpois(lambda=lam) })) rxUdfUi.rxpois <- function(fun) { # Fun is the language object (ie quoted R object) to be evaluated or # changed in the code .fun <- fun # Since the `rxpois` function is built into the rxode2 we need to # have a function with a different conflicts. In this case, I take # the function name (fun[[1]]), and prepend a \".\", which follows # `rxode2`'s naming convention of un-exported functions. # # This next evaluation changes the expression function to .rxpois() .fun[[1]] <- str2lang(paste0(\".\", deparse1(fun[[1]]))) # Since this is still a R expression, you can then evaluate the # function .rxpois to produce the proper code: eval(.fun) } # The above s3 method can be registered in a package or you can use # the following code to register it in your session: rxode2::.s3register(\"rxode2::rxUdfUi\", \"rxpois\") # This is the function that changes the code as needed .rxpois <- function(lambda) { # The first part of this code tries to change the value into a # character. This handles cases like rxpois(lambda=lam), # rxpois(lam), rxpois(\"lam\"). It also tries to evaluate the # argument supplied to lambda in case it comes from a different # location. .lam <- as.character(substitute(lambda)) .tmp <- try(force(lambda), silent=TRUE) if (!inherits(.tmp, \"try-error\")) { if (is.character(.tmp)) { .lam <- lambda } } # This part creates a list with the replacement text, in this case # it woulb be rxpois(lam) where there is no equals included, as # required by `rxode2`: list(replace=paste0(\"rxpois(\", .lam, \")\")) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"using-model-variables-in-rxode2-ui-models","dir":"Articles","previous_headings":"Functions to insert rxode2 code into the current model","what":"Using model variables in rxode2 ui models","title":"Integrating User Defined Functions into rxode2","text":"can also take change model take consideration rxode2 model variables full ui completed parsing. rxode2 model variables information might change variables make names variables. example left hand side equations ($lhs), input parameters ($params) ODE states ($state)). using approach, likely need following steps: data processed, need put function rxode2 acceptable form, named arguments, strings, numbers variables output. number arguments output needs declared S3 method adding attribute \"nargs\" method. example, built testMod1() ui modification function uses one argument parsed commented example model variables example:","code":"testMod1 <- function(val=1) { # This converts the val to a character if it is somthing like testMod1(b) .val <- as.character(substitute(val)) .tmp <- suppressWarnings(try(force(val), silent = TRUE)) if (!inherits(.tmp, \"try-error\")) { if (is.character(.tmp)) { .val <- val } } # This does the UI parsing if (rxUdfUiParsing()) { # See if the model variables are available .mv <- rxUdfUiMv() if (is.null(.mv)) { # Put this in a rxode2 low level acceptible form, no complex # expressions, no named arguments, something that is suitable # for C. # # The `uiUsMv` tells the parser this needs to be reparsed when # the model variables become avaialble during parsing. return(list(replace=paste0(\"testMod1(\", .val, \")\"), uiUseMv=TRUE)) } else { # Now that we have the model variables, we can then do something # about this .vars <- .mv$params if (length(.vars) > 0) { # If there is parameters available, this dummy function times # the first input function by the value specified return(list(replace=paste0(.vars[1], \"*\", .val))) } else { # If the value isn't availble, simply replace the function # with the value. return(list(replace=.val)) } } } stop(\"This function is only for use in rxode2 ui models\", call.=FALSE) } rxUdfUi.testMod1 <- function(fun) { eval(fun) } # To allow this to go to the next step, you need to declare how many # arguments this argument has, in this case 1. Bu adding the # attribute \"nargs\", rxode2 lower level parser knows how to handle # this new function. This allows rxode2 to generate the model # variables and send it to the next step. attr(rxUdfUi.testMod1, \"nargs\") <- 1L # If you are in a package, you can use the rxoygen tag @export to # register this as a rxode2 model definition. # # If you are using this in your own script, you need to register the s3 function # One way to do this is: rxode2::.s3register(\"rxode2::rxUdfUi\", \"testMod1\") ## These are some examples of this function in use: f <- function() { model({ a <- b + testMod1(3) }) } f <- f() print(f) #> ── rxode2-based Pred model ───────────────────────────────────────────────────── #> ── Model (Normalized Syntax): ── #> function() { #> model({ #> a <- b + (b * 3) #> }) #> } f <- function() { model({ a <- testMod1(c) }) } f <- f() print(f) #> ── rxode2-based Pred model ───────────────────────────────────────────────────── #> ── Model (Normalized Syntax): ── #> function() { #> model({ #> a <- (c * c) #> }) #> } f <- function() { model({ a <- testMod1(1) }) } f <- f() print(f) #> ── rxode2-based Pred model ───────────────────────────────────────────────────── #> ── Model (Normalized Syntax): ── #> function() { #> model({ #> a <- 1 #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"using-data-for-rxode2-ui-modification-models","dir":"Articles","previous_headings":"Functions to insert rxode2 code into the current model","what":"Using data for rxode2 ui modification models","title":"Integrating User Defined Functions into rxode2","text":"steps needed use data model replacement; can use data model replace values inside model. worked example linMod() included ability use: model variables, put lines model, add initial conditions use data initial estimates","code":"# You can print the code: linMod #> function (variable, power, dv = \"dv\", intercept = TRUE, type = c(\"replace\", #> \"before\", \"after\"), num = NULL, iniDf = NULL, data = FALSE, #> mv = FALSE) #> { #> .dv <- as.character(substitute(dv)) #> .tmp <- suppressWarnings(try(force(dv), silent = TRUE)) #> if (!inherits(.tmp, \"try-error\")) { #> if (is.character(.tmp)) { #> .dv <- dv #> } #> } #> .var <- as.character(substitute(variable)) #> .tmp <- try(force(variable), silent = TRUE) #> .doExp3 <- FALSE #> if (!inherits(.tmp, \"try-error\")) { #> if (is.character(.tmp)) { #> .var <- variable #> } #> else if (!inherits(.tmp, \"formula\")) { #> .dv <- as.character(substitute(dv)) #> .tmp <- suppressWarnings(try(force(dv), silent = TRUE)) #> if (!inherits(.tmp, \"try-error\")) { #> if (is.character(.tmp)) { #> .dv <- dv #> } #> } #> } #> else if (length(variable) == 2) { #> if (!identical(variable[[1]], quote(`~`))) { #> stop(\"unexpected formula, needs to be the form ~x^3\", #> call. = FALSE) #> } #> .doExp3 <- TRUE #> .exp3 <- variable[[2]] #> } #> else { #> if (length(variable) != 3) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> if (!identical(variable[[1]], quote(`~`))) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> .dv <- as.character(variable[[2]]) #> data <- TRUE #> .exp3 <- variable[[3]] #> .doExp3 <- TRUE #> } #> if (.doExp3) { #> if (length(.exp3) == 1) { #> .var <- variable <- as.character(.exp3) #> power <- 1 #> } #> else if (length(.exp3) == 3) { #> if (!identical(.exp3[[1]], quote(`^`))) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> if (!is.numeric(.exp3[[3]])) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> .var <- variable <- as.character(.exp3[[2]]) #> power <- .exp3[[3]] #> } #> else { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> } #> } #> checkmate::assertCharacter(.var, len = 1L, any.missing = FALSE, #> pattern = \"^[.]*[a-zA-Z]+[a-zA-Z0-9._]*$\", min.chars = 1L, #> .var.name = \"variable\") #> checkmate::assertCharacter(.dv, len = 1L, any.missing = FALSE, #> pattern = \"^[.]*[a-zA-Z]+[a-zA-Z0-9._]*$\", min.chars = 1L, #> .var.name = \"dv\") #> checkmate::assertLogical(intercept, len = 1L, any.missing = FALSE) #> checkmate::assertIntegerish(power, lower = ifelse(intercept, #> 0L, 1L), len = 1L) #> if (is.null(num)) { #> num <- rxUdfUiNum() #> } #> checkmate::assertIntegerish(num, lower = 1, any.missing = FALSE, #> len = 1) #> if (mv && is.null(rxUdfUiMv())) { #> if (intercept) { #> return(list(replace = paste0(\"linModM(\", .var, \", \", #> power, \")\"), uiUseMv = TRUE)) #> } #> else { #> return(list(replace = paste0(\"linModM0(\", .var, \", \", #> power, \")\"), uiUseMv = TRUE)) #> } #> } #> if (data && is.null(rxUdfUiData())) { #> if (intercept) { #> return(list(replace = paste0(\"linModD(\", .var, \", \", #> power, \", \", .dv, \")\"), uiUseData = TRUE)) #> } #> else { #> return(list(replace = paste0(\"linModD0(\", .var, \", \", #> power, \",\", .dv, \")\"), uiUseData = TRUE)) #> } #> } #> if (is.null(iniDf)) { #> iniDf <- rxUdfUiIniDf() #> } #> assertIniDf(iniDf, null.ok = TRUE) #> type <- match.arg(type) #> .mv <- rxUdfUiMv() #> if (!is.null(.mv)) { #> .varsMv <- c(.mv$lhs, .mv$params, .mv$state) #> .pre <- paste0(.var, num, rxIntToLetter(seq_len(power + #> ifelse(intercept, 1L, 0L)) - 1L)) #> .pre <- vapply(.pre, function(v) { #> if (v %in% .varsMv) { #> paste0(\"rx.linMod.\", v) #> } #> else { #> v #> } #> }, character(1), USE.NAMES = FALSE) #> } #> else { #> .pre <- paste0(\"rx.linMod.\", .var, num, rxIntToLetter(seq_len(power + #> ifelse(intercept, 1L, 0L)) - 1L)) #> } #> if (!is.null(iniDf)) { #> .theta <- iniDf[!is.na(iniDf$ntheta), , drop = FALSE] #> if (length(.theta$ntheta) > 0L) { #> .maxTheta <- max(.theta$ntheta) #> .theta1 <- .theta[1, ] #> } #> else { #> .maxTheta <- 0L #> .theta1 <- .rxBlankIni(\"theta\") #> } #> .theta1$lower <- -Inf #> .theta1$upper <- Inf #> .theta1$fix <- FALSE #> .theta1$label <- NA_character_ #> .theta1$backTransform <- NA_character_ #> .theta1$condition <- NA_character_ #> .theta1$err <- NA_character_ #> .est <- rep(0, length(.pre)) #> if (data) { #> .dat <- rxUdfUiData() #> .wdv <- which(tolower(names(.dat)) == tolower(.dv)) #> if (length(.wdv) == 0L) { #> warning(.dv, \"not found in data, so no initial estimates will be set to zero\") #> } #> else { #> names(.dat)[.wdv] <- .dv #> .model <- stats::lm(stats::as.formula(paste0(.dv, #> \" ~ stats::poly(\", .var, \",\", power, \")\", ifelse(intercept, #> \"\", \"+0\"))), data = rxUdfUiData()) #> .est <- coef(.model) #> } #> } #> .cur <- c(list(.theta), lapply(seq_along(.pre), function(i) { #> .cur <- .theta1 #> .cur$name <- .pre[i] #> .cur$est <- .est[i] #> .cur$ntheta <- .maxTheta + i #> .cur #> })) #> .theta <- do.call(rbind, .cur) #> .eta <- iniDf[is.na(iniDf$neta), , drop = FALSE] #> .iniDf <- rbind(.theta, .eta) #> } #> else { #> .iniDf <- NULL #> } #> .linMod <- paste(vapply(seq_along(.pre), function(i) { #> if (intercept) { #> if (i == 1) #> return(.pre[i]) #> if (i == 2) #> return(paste0(.pre[i], \"*\", .var)) #> paste0(.pre[i], \"*\", paste0(.var, \"^\", i - 1L)) #> } #> else { #> if (i == 1) #> return(paste0(.pre[i], \"*\", .var)) #> paste0(.pre[i], \"*\", paste0(.var, \"^\", i)) #> } #> }, character(1)), collapse = \"+\") #> if (type == \"replace\") { #> list(replace = .linMod, iniDf = .iniDf) #> } #> else if (type == \"before\") { #> .replace <- paste0(\"rx.linMod.\", .var, \".f\", num) #> list(before = paste0(.replace, \" <- \", .linMod), replace = .replace, #> iniDf = .iniDf) #> } #> else if (type == \"after\") { #> .replace <- paste0(\"rx.linMod.\", .var, \".f\", num) #> list(after = paste0(.replace, \" <- \", .linMod), replace = \"0\", #> iniDf = .iniDf) #> } #> } #> #> # You can also print the s3 method that is used for this method rxode2:::rxUdfUi.linMod #> function (fun) #> { #> eval(fun) #> } #> #> #> attr(,\"nargs\") #> [1] 2"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"modifying-model","dir":"Articles","previous_headings":"","what":"Modifying model","title":"Modifying Models","text":"tasks might want overall model: Change line model Add line model Rename parameters model Combine different models Create functions add certain model features model go model piping functions can use modify models even add functions modify models. cover model modification functions nlmixr2lib","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"modifying-a-model-line","dir":"Articles","previous_headings":"Modifying model","what":"Modifying a model line","title":"Modifying Models","text":"opinion, modifying lines model likely common task modifying model. may wish modify model subject variability add covariate effects. begin course need base model modify. Let’s start simple PK example, using single-dose theophylline dataset generously provided Dr. Robert . Upton University California, San Francisco: believed enough absorption support subject variability can change line drop subject modifying single line. simply type line want model piping expression: expected, line modified. Also can notice initial estimate subject variability dropped since longer part model. reason wanted add back model can modify model add back: modification, eta.ka automatically assumed subject variability parameter. Also since eta.ka mu-referenced rxode2 points . automatic detection eta.ka name follows convention. Parameters starting ending following names assumed subject variability parameters: eta (NONMEM convention) ppv (per patient variability) psv (per subject variability) iiv (inter-individual variability) bsv (subject variability) bpv (patient variability) functioning correctly can change covariate can add type initial estimate later: seen , eta.ka model assumed data-input parameter covariate instead estimated parameter. can also note WT automatically recognized covariate covWt automatically recognized covariate parameter. general covariates typical/population parameters automatically converted estimated parameters based parameter name starting (ending ): tv (typical value) t (also typical value) pop (population parameter) err (error parameter) eff (effect parameter) cov (covariate parameters) notable exceptions parameters like (wt, sex crcl) assumed covariates. don’t want automatic variable conversion, can also use auto=FALSE: case additional parameters (eta.ka, WT, covWt) assumed parameters dataset.","code":"one.compartment <- function() { ini({ tka <- 0.45; label(\"Ka\") tcl <- 1; label(\"Cl\") tv <- 3.45; label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } mod <- one.compartment |> model(ka <- exp(tka)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ! remove between subject variability `eta.ka` print(mod) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } mod2 <- mod |> model(ka <- tka * exp(eta.ka)) #> ℹ add between subject variability `eta.ka` and set estimate to 1 print(mod2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v eta.ka #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.ka 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.ka ~ 1 #> }) #> model({ #> ka <- tka * exp(eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } mod2 <- mod |> model(ka <- tka * exp(eta.ka) + WT * covWt, cov=\"eta.ka\") #> ℹ add covariate `eta.ka` (as requested by cov option) #> ℹ add covariate `WT` #> ℹ add population parameter `covWt` and set estimate to 1 print(mod2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd covWt #> 0.45 1.00 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> covWt <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- tka * exp(eta.ka) + WT * covWt #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } mod3 <- mod |> model(ka <- tka * exp(eta.ka) + WT * covWt, auto=FALSE) #> ℹ add covariate `eta.ka` #> ℹ add covariate `WT` #> ℹ add covariate `covWt` print(mod3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- tka * exp(eta.ka) + WT * covWt #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"note-on-automatic-detection-of-variables","dir":"Articles","previous_headings":"Modifying model","what":"Note on automatic detection of variables","title":"Modifying Models","text":"automatic detection variables convenient many models may suit style; like can always change using options(): option disabled, variables assumed covariates promote population parameters ini block last example option enabled none variables starting t added model course use turn back : can use withr::with_options(list(rxode2.autoVarPiping=FALSE), ...) turn option temporarily. don’t like defaults changing variables change well rxSetPipingAuto() example wanted variables starting ending te can change : requested population parameters starting te added ini block. want reset defaults simply call rxSetPipingAuto() without arguments:","code":"options(rxode2.autoVarPiping=FALSE) mod7 <- mod3 |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) print(mod7) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- tka * exp(eta.ka) + WT * covWt #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } options(rxode2.autoVarPiping=TRUE) mod8 <- mod |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 #> ℹ promote `tkin` to population parameter with initial estimate 1 #> ℹ promote `tkout` to population parameter with initial estimate 1 print(mod8) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } rxSetPipingAuto(thetamodelVars = rex::rex(\"te\")) mod9 <- mod |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 print(mod9) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 tec50 #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } rxSetPipingAuto() mod10 <- mod |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 #> ℹ promote `tkin` to population parameter with initial estimate 1 #> ℹ promote `tkout` to population parameter with initial estimate 1"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"adding-model-lines","dir":"Articles","previous_headings":"Modifying model","what":"Adding model lines","title":"Modifying Models","text":"three ways insert lines rxode2/nlmixr2 model. can add lines end model, expression beginning model controlled append option. Let’s assume two different assays run compound noticed different variability. can modify model adding lines end model using append=TRUE: Perhaps instead may want add indirect response model addition concentrations, can choose add : append=lhsVar lhsVar left handed variable want insert new lines: last type insertion may wish add lines beginning model using append=FALSE:","code":"mod4 <- mod |> model({ cp2 <- cp cp2 ~ lnorm(lnorm.sd) }, append=TRUE) #> ℹ add residual parameter `lnorm.sd` and set estimate to 1 print(mod4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd lnorm.sd #> 0.45 1.00 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 cp ~ … cmt='cp' or cmt=3 dvid='cp' or dvid=1 #> 2 cp2 ~ … cmt='cp2' or cmt=4 dvid='cp2' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> lnorm.sd <- c(0, 1) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> cp2 <- cp #> cp2 ~ lnorm(lnorm.sd) #> }) #> } mod5 <- mod |> model({ PD <- 1-emax*cp/(ec50+cp) ## effect(0) <- e0 kin <- e0*kout d/dt(effect) <- kin*PD -kout*effect }, append=d/dt(center)) mod6 <- mod5 |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 #> ℹ promote `tkin` to population parameter with initial estimate 1 #> ℹ promote `tkout` to population parameter with initial estimate 1 print(mod6) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 effect #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> PD <- 1 - emax * cp/(ec50 + cp) #> effect(0) <- e0 #> kin <- e0 * kout #> d/dt(effect) <- kin * PD - kout * effect #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"remove-lines-in-the-model","dir":"Articles","previous_headings":"Modifying model","what":"Remove lines in the model","title":"Modifying Models","text":"lines model can removed one 2 ways either use -param param <- NULL model piping:","code":"mod7 <- mod6 |> model(-emax) #> ! remove population parameter `temax` print(mod7) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 effect #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> PD <- 1 - emax * cp/(ec50 + cp) #> effect(0) <- e0 #> kin <- e0 * kout #> d/dt(effect) <- kin * PD - kout * effect #> cp = center/v #> cp ~ add(add.sd) #> }) #> } # Equivalently mod8 <- mod6 |> model(emax <- NULL) #> ! remove population parameter `temax` print(mod8) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 effect #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> PD <- 1 - emax * cp/(ec50 + cp) #> effect(0) <- e0 #> kin <- e0 * kout #> d/dt(effect) <- kin * PD - kout * effect #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"rename-parameters-in-a-model","dir":"Articles","previous_headings":"Modifying model","what":"Rename parameters in a model","title":"Modifying Models","text":"may want rename parameters model, easy rxRename(). dplyr loaded can even replace rename(). semantics similar two functions, assigning newVar=oldVar. example: can see every instance variable named model renamed inside model ini block. completeness can see dplyr verb (since S3 method):","code":"mod11 <- mod10 |> rxRename(drug1kout=kout, tv.drug1kout=tkout) print(mod11) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 #> 0.45 1.00 3.45 0.70 1.00 1.00 #> tec50 tkin tv.drug1kout #> 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tv.drug1kout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> drug1kout <- exp(tv.drug1kout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union mod12 <- mod10 |> rename(drug1kout=kout, tv.drug1kout=tkout) print(mod12) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 #> 0.45 1.00 3.45 0.70 1.00 1.00 #> tec50 tkin tv.drug1kout #> 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tv.drug1kout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> drug1kout <- exp(tv.drug1kout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"combine-different-models","dir":"Articles","previous_headings":"Modifying model","what":"Combine different models","title":"Modifying Models","text":"can also combine different models rxAppendModel(). general need variables common combine. generally want models link . example pk pd model done renaming cp first model ceff second model: get error try combine models without variables common: want combine models without respecting variables common, can use common=FALSE:","code":"ocmt <- function() { ini({ tka <- exp(0.45) # Ka tcl <- exp(1) # Cl tv <- exp(3.45); # log V ## the label(\"Label name\") works with all models add.sd <- 0.7 }) model({ ka <- tka cl <- tcl v <- tv d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.sd) }) } idr <- function() { ini({ tkin <- log(1) tkout <- log(1) tic50 <- log(10) gamma <- fix(1) idr.sd <- 1 }) model({ kin <- exp(tkin) kout <- exp(tkout) ic50 <- exp(tic50) d/dt(eff) <- kin - kout*(1-ceff^gamma/(ic50^gamma+ceff^gamma)) eff ~ add(idr.sd) }) } rxAppendModel(ocmt %>% rxRename(ceff=cp), idr) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd tkin tkout tic50 gamma #> 1.568312 2.718282 31.500392 0.700000 0.000000 0.000000 2.302585 1.000000 #> idr.sd #> 1.000000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 eff #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 ceff ~ … cmt='ceff' or cmt=4 dvid='ceff' or dvid=1 #> 2 eff ~ … cmt='eff' or cmt=3 dvid='eff' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> tkin <- 0 #> tkout <- 0 #> tic50 <- 2.30258509299405 #> gamma <- fix(1) #> idr.sd <- c(0, 1) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> ceff <- center/v #> ceff ~ add(add.sd) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ic50 <- exp(tic50) #> d/dt(eff) <- kin - kout * (1 - ceff^gamma/(ic50^gamma + #> ceff^gamma)) #> eff ~ add(idr.sd) #> }) #> } try(rxAppendModel(ocmt, idr)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> Error : not all the models have variables in common (use `common=FALSE` to allow this) mod2 <- rxAppendModel(ocmt, idr, common=FALSE) |> model(ceff=cp, append=ic50) # here we add the translation after the #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # ic50 line to make it reasonable print(mod2) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd tkin tkout tic50 gamma #> 1.568312 2.718282 31.500392 0.700000 0.000000 0.000000 2.302585 1.000000 #> idr.sd #> 1.000000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 eff #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 cp ~ … cmt='cp' or cmt=4 dvid='cp' or dvid=1 #> 2 eff ~ … cmt='eff' or cmt=3 dvid='eff' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> tkin <- 0 #> tkout <- 0 #> tic50 <- 2.30258509299405 #> gamma <- fix(1) #> idr.sd <- c(0, 1) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ic50 <- exp(tic50) #> ceff <- cp #> d/dt(eff) <- kin - kout * (1 - ceff^gamma/(ic50^gamma + #> ceff^gamma)) #> eff ~ add(idr.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"creating-more-complex-model-modification-functions","dir":"Articles","previous_headings":"Modifying model","what":"Creating more complex model modification functions","title":"Modifying Models","text":"pretty flexible, may want even , helper functions help create functions . discuss extract model function update . Lets start model: Lets assume moment want remove eta cl. First probably want get model lines. can modelExtract(): Now want worry cl line, can subset : Now wish change line “cl <- exp(tcl+eta.cl)” Note functions modify ini({}) block. may modify ini block first make valid rxode2/nlmixr2 model. particular case, using model piping easier, simply demonstrates two different way extract model information way add information final model. methods can tricky using model parsed correctly. means make sure parameters endpoints follow correct rules","code":"f <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 eta.ka ~ 0.6 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v }) } totLines <- modelExtract(f, endpoint=NA) # endpoints should be included #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(totLines) #> [1] \"ka <- exp(tka + eta.ka)\" #> [2] \"cl <- exp(tcl)\" #> [3] \"v <- exp(tv + eta.v)\" #> [4] \"d/dt(depot) <- -ka * depot\" #> [5] \"d/dt(center) <- ka * depot - cl/v * center\" #> [6] \"cp <- center/v\" clLine <- modelExtract(f, cl, lines=TRUE) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments line <- attr(clLine, \"lines\") totLines[line] <- \"cl <- exp(tcl+eta.cl)\" # For now lets remove the entire `ini` block (so you don't have to # worry about syncing parameters). # ini(f) <- NULL #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments model(f) <- totLines #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f) #> function () #> { #> ini({ #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> }) #> } #> "},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"modifying-initial-estimates","dir":"Articles","previous_headings":"","what":"Modifying initial estimates","title":"Modifying Models","text":"common items want initial estimates : Fix/Unfix parameter Change initial condition values bounds Change initial condition type Change labels transformations Reorder parameters Remove covariances parameters group parameters may wish create functions; discuss .","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"fixing-or-unfixing-a-parameter","dir":"Articles","previous_headings":"Modifying initial estimates","what":"Fixing or unfixing a parameter","title":"Modifying Models","text":"can fix model estimates two ways. first fix value whatever model function, done piping model parameter name (like tka) setting equal fix (%>% ini(tka=fix)). full example: can also fix parameter different value wish; similar can specify value fix inside fix pseudo-function follows: %>% ini(tka=fix(0.1)). fully worked example :","code":"f <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 add.sd <- c(0, 0.7) eta.ka ~ 0.6 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v cp ~ add(add.sd) }) } f2 <- f |> ini(tka=fix) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ fix `tka` to `0.45` print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.45) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 add.sd <- c(0, 0.7) eta.ka ~ 0.6 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v cp ~ add(add.sd) }) } f2 <- f |> ini(tka=fix(0.1)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ fix `tka` to `0.45` #> ℹ change initial estimate of `tka` to `0.1` print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"unfixing-parameters","dir":"Articles","previous_headings":"Modifying initial estimates","what":"Unfixing parameters","title":"Modifying Models","text":"unfix parameters similarly fixing. Instead using fix keyword, use unfix keyword. unfix parameter (keeping value) pipe model using (|> ini(tka=unfix)). Starting fixed model fully worked example : can also unfix change initial estimate ini(parameter=unfix(newEst)):","code":"print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f2 |> ini(tka=unfix) #> ℹ unfix `tka` keeping initial estimate `0.1` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f2 |> ini(tka=unfix(10)) #> ℹ unfix `tka` keeping initial estimate `0.1` #> ℹ change initial estimate of `tka` to `10` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 10.00 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 10 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"multiple-parameter-assignment","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Multiple parameter assignment","title":"Modifying Models","text":"can also assign multiple parameters providing : vector/list multiple lines piped ini() block Using covariance matrix case vector can specify pipe model. example: can also added multiple lines commas separating estimates: also use matrix specify covariance:","code":"ini1 <- c(tka=0.1, tcl=1, tv=3) f4 <- f |> ini(ini1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` #> ℹ change initial estimate of `tcl` to `1` #> ℹ change initial estimate of `tv` to `3` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.1 1.0 3.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # or equivalently ini1 <- list(tka=0.1, tcl=1, tv=3) f4a <- f |> ini(ini1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` #> ℹ change initial estimate of `tcl` to `1` #> ℹ change initial estimate of `tv` to `3` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.1 1.0 3.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # commas separating values: f4 <- f |> ini(tka=0.1, tcl=1, tv=3) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` #> ℹ change initial estimate of `tcl` to `1` #> ℹ change initial estimate of `tv` to `3` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.1 1.0 3.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # multiple lines in {} f4 <- f |> ini({ tka <- 0.2 tcl <- 2 tv <- 6 }) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.2` #> ℹ change initial estimate of `tcl` to `2` #> ℹ change initial estimate of `tv` to `6` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.2 2.0 6.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.2 #> tcl <- 2 #> tv <- 6 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } ome <- lotri(eta.ka + eta.v ~ c(0.6, 0.01, 10.1)) f4 <- f |> ini(ome) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `eta.ka` to `0.6` #> ℹ add covariance between `eta.v` and `eta.ka` with initial estimate `0.01` #> ℹ change initial estimate of `eta.v` to `10.1` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.60 0.01 #> eta.v 0.01 10.10 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ c(0.01, 10.1) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # or equavialtly use the lotri-type syntax for the omega: f4 <- f |> ini(eta.ka + eta.v ~ c(0.6, 0.01, 0.2)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `eta.ka` to `0.6` #> ℹ add covariance between `eta.v` and `eta.ka` with initial estimate `0.01` #> ℹ change initial estimate of `eta.v` to `0.2` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.60 0.01 #> eta.v 0.01 0.20 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ c(0.01, 0.2) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"single-parameter-assignment","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Single parameter assignment","title":"Modifying Models","text":"simplest way change initial parameter estimates simply use ini(parameter=newValue). can also use <- ~ change value: fully worked example showing three types initial value modification : can change bounds like model specification using numeric vector c(low, estimate) c(low, estimate, hi). worked example: Note changing parameters default values might show parameter printout:","code":"f3 <- f |> ini(tka <- 0.1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` f4 <- f |> ini(tka=0.1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` f5 <- f |> ini(tka ~ 0.1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` print(f5) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f |> ini(tka <- c(0, 0.1, 0.2)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate (0.1) and upper/lower bound (0 to 0.2) of `tka` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- c(0, 0.1, 0.2) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f |> ini(tka <- c(0, 0.1)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate (0.1) and lower bound (0) of `tka` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- c(0, 0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f |> ini(tka <- c(0, 0.1, 0.2)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate (0.1) and upper/lower bound (0 to 0.2) of `tka` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- c(0, 0.1, 0.2) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # Now reassign f4 <- f3 |> ini(tka <- c(-Inf, 0.1, Inf)) #> ℹ change initial estimate (0.1) and upper/lower bound (-Inf to Inf) of `tka` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"changing-parameter-types","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Changing parameter types","title":"Modifying Models","text":"can change parameter type two operators either using -par convert parameter covariate ~par toggle population individual parameters. example 3:","code":"# Switch population parameter to between subject variability parameter: f4 <- f |> ini( ~ tcl) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ convert 'tcl' from population parameter to between subject variability print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v tcl #> eta.ka 0.6 0.0 0 #> eta.v 0.0 0.1 0 #> tcl 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> tcl ~ 1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # Switch back to population parameter f5 <- f4 |> ini( ~ tcl) #> ℹ convert 'tcl' from between subject variability to population parameter print(f5) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd tcl #> 0.45 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> tcl <- 1 #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # Change the variable to a covariate parameter (ie it doesn't have an # initial estimate so remove it with the `-` operator): f6 <- f4 |> ini(-tcl) #> ℹ changing between subject variability parameter 'tcl' to covariate parameter print(f6) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # You can change the covariate or remove the parameter estimate by # `tcl <- NULL`: f6 <- f4 |> ini(tcl <- NULL) #> ℹ changing between subject variability parameter 'tcl' to covariate parameter print(f6) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # to add it back as a between subject variability or population # parameter you can pipe it as follows: f7 <- f6 |> ini(tcl=4) #> ℹ promote `tcl` to population parameter with initial estimate 4 #> ℹ change initial estimate of `tcl` to `4` print(f7) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd tcl #> 0.45 3.45 0.70 4.00 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> tcl <- 4 #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f8 <- f6 |> ini(tcl ~ 0.1) #> ℹ promote `tcl` to between subject variability with initial estimate 0.1 #> ℹ change initial estimate of `tcl` to `0.1` print(f8) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v tcl #> eta.ka 0.6 0.0 0.0 #> eta.v 0.0 0.1 0.0 #> tcl 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> tcl ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"changing-parameter-labels","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Changing parameter labels","title":"Modifying Models","text":"want change/add parameter label assign parameter label(\"label add\"). example: can also change order performing operations: want remove labels can remove ini(par=label(NULL)); example:","code":"f4 <- f |> ini(tka=label(\"Typical Ka (1/hr)\")) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Typical Ka (1/hr)\") #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f5 <- f |> ini(tka=label(\"Typical Ka (1/hr)\"), append=tcl) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f5) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tcl tka tv add.sd #> 1.00 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tcl <- 1 #> tka <- 0.45 #> label(\"Typical Ka (1/hr)\") #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f6 <- f |> ini(tka=label(NULL)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f6) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"changing-parameter-transformations","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Changing parameter transformations","title":"Modifying Models","text":"Back-transformations -ride back transformations nlmixr2 models. similar modification labels. use |> ini(tka=backTransform(exp)) add exponential back-transformation data: wish remove can also |> ini(tka=backTransform(NULL)):","code":"f7 <- f |> ini(tka=backTransform(exp)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f7) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> backTransform(\"exp\") #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f8 <- f |> ini(tka=backTransform(NULL)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f8) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"removing-covariances-between-between-subject-varaibilities","dir":"Articles","previous_headings":"Modifying initial estimates","what":"Removing covariances between between subject varaibilities","title":"Modifying Models","text":"two approaches removing covarinaces subject variabilities: diag() -cov(var1, var2) diag() removes either covariance elements (arguments) covariance elements included argument list:","code":"fd <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 add.sd <- c(0, 0.7) eta.ka ~ 0.6 eta.v ~ c(0.01, 0.1) eta.cl ~ c(0.01, 0.01, 1) }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v cp ~ add(add.sd) }) } # If you want to remove all covariances you can use diag() with no # arguments fd %>% ini(diag()) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ remove covariance `(eta.ka,eta.v)` #> ℹ remove covariance `(eta.ka,eta.cl)` #> ℹ remove covariance `(eta.v,eta.cl)` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v eta.cl #> eta.ka 0.6 0.0 0 #> eta.v 0.0 0.1 0 #> eta.cl 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> eta.cl ~ 1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # if you want to remove only covariances with eta.ka you can use: fd %>% ini(diag(eta.ka)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ remove covariance `(eta.ka,eta.v)` #> ℹ remove covariance `(eta.ka,eta.cl)` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v eta.ka #> eta.cl 1.00 0.01 0.0 #> eta.v 0.01 0.10 0.0 #> eta.ka 0.00 0.00 0.6 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.cl ~ 1 #> eta.v ~ c(0.01, 0.1) #> eta.ka ~ 0.6 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # if you want to remove only the covariances with eta.ka and eta.v you can use: fd %>% ini(-cov(eta.ka, eta.v)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ remove covariance `(eta.ka, eta.v)` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.v eta.cl eta.ka #> eta.v 0.10 0.01 0.00 #> eta.cl 0.01 1.00 0.01 #> eta.ka 0.00 0.01 0.60 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.v ~ 0.1 #> eta.cl ~ c(0.01, 1) #> eta.ka ~ c(0, 0.01, 0.6) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"more-granular-access-of-initial-conditions","dir":"Articles","previous_headings":"Modifying initial estimates","what":"More granular access of initial conditions","title":"Modifying Models","text":"Just like model() can modify underlying data frame represents ini() block. case simply change initial estimate first parameter (tka):","code":"f <- rxode2(f) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments ini <- f$iniDf print(ini) #> ntheta neta1 neta2 name lower est upper fix label backTransform #> 1 1 NA NA tka -Inf 0.45 Inf FALSE #> 2 2 NA NA tcl -Inf 1.00 Inf FALSE #> 3 3 NA NA tv -Inf 3.45 Inf FALSE #> 4 4 NA NA add.sd 0 0.70 Inf FALSE #> 5 NA 1 1 eta.ka -Inf 0.60 Inf FALSE #> 6 NA 2 2 eta.v -Inf 0.10 Inf FALSE #> condition err #> 1 #> 2 #> 3 #> 4 cp add #> 5 id #> 6 id ini$est[1] <- 7 ini(f) <- ini print(f) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 7.00 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 7 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-cmt.html","id":"how-rxode2-assigns-compartment-numbers","dir":"Articles","previous_headings":"","what":"How rxode2 assigns compartment numbers","title":"Changing rxode2 compartment numbers","text":"rxode2 automatically assigns compartment numbers parsing. example, Mavoglurant PBPK model following model may used: look printout, can see rxode2 assigned compartment number(s) can also see classic rxode2 model. case use summary() function: case, Venous_Blood assigned compartment 15. Figuring can inconvenient also lead re-numbering compartment simulation estimation datasets. easy probably clearer specify compartment name, tools support compartment numbers. Therefore, way number compartment easily can lead less data modification multiple tools.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` pbpk <- function() { model({ KbBR = exp(lKbBR) KbMU = exp(lKbMU) KbAD = exp(lKbAD) CLint= exp(lCLint + eta.LClint) KbBO = exp(lKbBO) KbRB = exp(lKbRB) ## Regional blood flows # Cardiac output (L/h) from White et al (1968) CO = (187.00*WT^0.81)*60/1000 QHT = 4.0 *CO/100 QBR = 12.0*CO/100 QMU = 17.0*CO/100 QAD = 5.0 *CO/100 QSK = 5.0 *CO/100 QSP = 3.0 *CO/100 QPA = 1.0 *CO/100 QLI = 25.5*CO/100 QST = 1.0 *CO/100 QGU = 14.0*CO/100 # Hepatic artery blood flow QHA = QLI - (QSP + QPA + QST + QGU) QBO = 5.0 *CO/100 QKI = 19.0*CO/100 QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI) QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + QRB ## Organs' volumes = organs' weights / organs' density VLU = (0.76 *WT/100)/1.051 VHT = (0.47 *WT/100)/1.030 VBR = (2.00 *WT/100)/1.036 VMU = (40.00*WT/100)/1.041 VAD = (21.42*WT/100)/0.916 VSK = (3.71 *WT/100)/1.116 VSP = (0.26 *WT/100)/1.054 VPA = (0.14 *WT/100)/1.045 VLI = (2.57 *WT/100)/1.040 VST = (0.21 *WT/100)/1.050 VGU = (1.44 *WT/100)/1.043 VBO = (14.29*WT/100)/1.990 VKI = (0.44 *WT/100)/1.050 VAB = (2.81 *WT/100)/1.040 VVB = (5.62 *WT/100)/1.040 VRB = (3.86 *WT/100)/1.040 ## Fixed parameters BP = 0.61 # Blood:plasma partition coefficient fup = 0.028 # Fraction unbound in plasma fub = fup/BP # Fraction unbound in blood KbLU = exp(0.8334) KbHT = exp(1.1205) KbSK = exp(-.5238) KbSP = exp(0.3224) KbPA = exp(0.3224) KbLI = exp(1.7604) KbST = exp(0.3224) KbGU = exp(1.2026) KbKI = exp(1.3171) ##----------------------------------------- S15 = VVB*BP/1000 C15 = Venous_Blood/S15 ##----------------------------------------- d/dt(Lungs) = QLU*(Venous_Blood/VVB - Lungs/KbLU/VLU) d/dt(Heart) = QHT*(Arterial_Blood/VAB - Heart/KbHT/VHT) d/dt(Brain) = QBR*(Arterial_Blood/VAB - Brain/KbBR/VBR) d/dt(Muscles) = QMU*(Arterial_Blood/VAB - Muscles/KbMU/VMU) d/dt(Adipose) = QAD*(Arterial_Blood/VAB - Adipose/KbAD/VAD) d/dt(Skin) = QSK*(Arterial_Blood/VAB - Skin/KbSK/VSK) d/dt(Spleen) = QSP*(Arterial_Blood/VAB - Spleen/KbSP/VSP) d/dt(Pancreas) = QPA*(Arterial_Blood/VAB - Pancreas/KbPA/VPA) d/dt(Liver) = QHA*Arterial_Blood/VAB + QSP*Spleen/KbSP/VSP + QPA*Pancreas/KbPA/VPA + QST*Stomach/KbST/VST + QGU*Gut/KbGU/VGU - CLint*fub*Liver/KbLI/VLI - QLI*Liver/KbLI/VLI d/dt(Stomach) = QST*(Arterial_Blood/VAB - Stomach/KbST/VST) d/dt(Gut) = QGU*(Arterial_Blood/VAB - Gut/KbGU/VGU) d/dt(Bones) = QBO*(Arterial_Blood/VAB - Bones/KbBO/VBO) d/dt(Kidneys) = QKI*(Arterial_Blood/VAB - Kidneys/KbKI/VKI) d/dt(Arterial_Blood) = QLU*(Lungs/KbLU/VLU - Arterial_Blood/VAB) d/dt(Venous_Blood) = QHT*Heart/KbHT/VHT + QBR*Brain/KbBR/VBR + QMU*Muscles/KbMU/VMU + QAD*Adipose/KbAD/VAD + QSK*Skin/KbSK/VSK + QLI*Liver/KbLI/VLI + QBO*Bones/KbBO/VBO + QKI*Kidneys/KbKI/VKI + QRB*Rest_of_Body/KbRB/VRB - QLU*Venous_Blood/VVB d/dt(Rest_of_Body) = QRB*(Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) }) } pbpk <- pbpk() print(pbpk) #> -- rxode2-based free-form 16-cmt ODE model ------------------------------------- #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 Lungs #> 2 2 Heart #> 3 3 Brain #> 4 4 Muscles #> 5 5 Adipose #> 6 6 Skin #> 7 7 Spleen #> 8 8 Pancreas #> 9 9 Liver #> 10 10 Stomach #> 11 11 Gut #> 12 12 Bones #> 13 13 Kidneys #> 14 14 Arterial_Blood #> 15 15 Venous_Blood #> 16 16 Rest_of_Body #> -- Model (Normalized Syntax): -- #> function() { #> model({ #> KbBR = exp(lKbBR) #> KbMU = exp(lKbMU) #> KbAD = exp(lKbAD) #> CLint = exp(lCLint + eta.LClint) #> KbBO = exp(lKbBO) #> KbRB = exp(lKbRB) #> CO = (187 * WT^0.81) * 60/1000 #> QHT = 4 * CO/100 #> QBR = 12 * CO/100 #> QMU = 17 * CO/100 #> QAD = 5 * CO/100 #> QSK = 5 * CO/100 #> QSP = 3 * CO/100 #> QPA = 1 * CO/100 #> QLI = 25.5 * CO/100 #> QST = 1 * CO/100 #> QGU = 14 * CO/100 #> QHA = QLI - (QSP + QPA + QST + QGU) #> QBO = 5 * CO/100 #> QKI = 19 * CO/100 #> QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + #> QKI) #> QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + #> QRB #> VLU = (0.76 * WT/100)/1.051 #> VHT = (0.47 * WT/100)/1.03 #> VBR = (2 * WT/100)/1.036 #> VMU = (40 * WT/100)/1.041 #> VAD = (21.42 * WT/100)/0.916 #> VSK = (3.71 * WT/100)/1.116 #> VSP = (0.26 * WT/100)/1.054 #> VPA = (0.14 * WT/100)/1.045 #> VLI = (2.57 * WT/100)/1.04 #> VST = (0.21 * WT/100)/1.05 #> VGU = (1.44 * WT/100)/1.043 #> VBO = (14.29 * WT/100)/1.99 #> VKI = (0.44 * WT/100)/1.05 #> VAB = (2.81 * WT/100)/1.04 #> VVB = (5.62 * WT/100)/1.04 #> VRB = (3.86 * WT/100)/1.04 #> BP = 0.61 #> fup = 0.028 #> fub = fup/BP #> KbLU = exp(0.8334) #> KbHT = exp(1.1205) #> KbSK = exp(-0.5238) #> KbSP = exp(0.3224) #> KbPA = exp(0.3224) #> KbLI = exp(1.7604) #> KbST = exp(0.3224) #> KbGU = exp(1.2026) #> KbKI = exp(1.3171) #> S15 = VVB * BP/1000 #> C15 = Venous_Blood/S15 #> d/dt(Lungs) = QLU * (Venous_Blood/VVB - Lungs/KbLU/VLU) #> d/dt(Heart) = QHT * (Arterial_Blood/VAB - Heart/KbHT/VHT) #> d/dt(Brain) = QBR * (Arterial_Blood/VAB - Brain/KbBR/VBR) #> d/dt(Muscles) = QMU * (Arterial_Blood/VAB - Muscles/KbMU/VMU) #> d/dt(Adipose) = QAD * (Arterial_Blood/VAB - Adipose/KbAD/VAD) #> d/dt(Skin) = QSK * (Arterial_Blood/VAB - Skin/KbSK/VSK) #> d/dt(Spleen) = QSP * (Arterial_Blood/VAB - Spleen/KbSP/VSP) #> d/dt(Pancreas) = QPA * (Arterial_Blood/VAB - Pancreas/KbPA/VPA) #> d/dt(Liver) = QHA * Arterial_Blood/VAB + QSP * Spleen/KbSP/VSP + #> QPA * Pancreas/KbPA/VPA + QST * Stomach/KbST/VST + #> QGU * Gut/KbGU/VGU - CLint * fub * Liver/KbLI/VLI - #> QLI * Liver/KbLI/VLI #> d/dt(Stomach) = QST * (Arterial_Blood/VAB - Stomach/KbST/VST) #> d/dt(Gut) = QGU * (Arterial_Blood/VAB - Gut/KbGU/VGU) #> d/dt(Bones) = QBO * (Arterial_Blood/VAB - Bones/KbBO/VBO) #> d/dt(Kidneys) = QKI * (Arterial_Blood/VAB - Kidneys/KbKI/VKI) #> d/dt(Arterial_Blood) = QLU * (Lungs/KbLU/VLU - Arterial_Blood/VAB) #> d/dt(Venous_Blood) = QHT * Heart/KbHT/VHT + QBR * Brain/KbBR/VBR + #> QMU * Muscles/KbMU/VMU + QAD * Adipose/KbAD/VAD + #> QSK * Skin/KbSK/VSK + QLI * Liver/KbLI/VLI + QBO * #> Bones/KbBO/VBO + QKI * Kidneys/KbKI/VKI + QRB * Rest_of_Body/KbRB/VRB - #> QLU * Venous_Blood/VVB #> d/dt(Rest_of_Body) = QRB * (Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) #> }) #> } pbpk <- pbpk$simulationModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ summary(pbpk) #> rxode2 3.0.2.9000 model named rx_7fb71909d87c418d472ff3aec00c7f3e model (ready). #> DLL: /tmp/RtmpmSWcH0/rxode2/rx_7fb71909d87c418d472ff3aec00c7f3e__.rxd/rx_7fb71909d87c418d472ff3aec00c7f3e_.so #> NULL #> #> Calculated Variables: #> [1] \"KbBR\" \"KbMU\" \"KbAD\" \"CLint\" \"KbBO\" \"KbRB\" \"CO\" \"QHT\" \"QBR\" #> [10] \"QMU\" \"QAD\" \"QSK\" \"QSP\" \"QPA\" \"QLI\" \"QST\" \"QGU\" \"QHA\" #> [19] \"QBO\" \"QKI\" \"QRB\" \"QLU\" \"VLU\" \"VHT\" \"VBR\" \"VMU\" \"VAD\" #> [28] \"VSK\" \"VSP\" \"VPA\" \"VLI\" \"VST\" \"VGU\" \"VBO\" \"VKI\" \"VAB\" #> [37] \"VVB\" \"VRB\" \"fub\" \"KbLU\" \"KbHT\" \"KbSK\" \"KbSP\" \"KbPA\" \"KbLI\" #> [46] \"KbST\" \"KbGU\" \"KbKI\" \"S15\" \"C15\" #> -- rxode2 Model Syntax -- #> rxode2({ #> param(lKbBR, lKbMU, lKbAD, lCLint, eta.LClint, lKbBO, lKbRB, #> WT) #> KbBR = exp(lKbBR) #> KbMU = exp(lKbMU) #> KbAD = exp(lKbAD) #> CLint = exp(lCLint + eta.LClint) #> KbBO = exp(lKbBO) #> KbRB = exp(lKbRB) #> CO = (187 * WT^0.81) * 60/1000 #> QHT = 4 * CO/100 #> QBR = 12 * CO/100 #> QMU = 17 * CO/100 #> QAD = 5 * CO/100 #> QSK = 5 * CO/100 #> QSP = 3 * CO/100 #> QPA = 1 * CO/100 #> QLI = 25.5 * CO/100 #> QST = 1 * CO/100 #> QGU = 14 * CO/100 #> QHA = QLI - (QSP + QPA + QST + QGU) #> QBO = 5 * CO/100 #> QKI = 19 * CO/100 #> QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI) #> QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + QRB #> VLU = (0.76 * WT/100)/1.051 #> VHT = (0.47 * WT/100)/1.03 #> VBR = (2 * WT/100)/1.036 #> VMU = (40 * WT/100)/1.041 #> VAD = (21.42 * WT/100)/0.916 #> VSK = (3.71 * WT/100)/1.116 #> VSP = (0.26 * WT/100)/1.054 #> VPA = (0.14 * WT/100)/1.045 #> VLI = (2.57 * WT/100)/1.04 #> VST = (0.21 * WT/100)/1.05 #> VGU = (1.44 * WT/100)/1.043 #> VBO = (14.29 * WT/100)/1.99 #> VKI = (0.44 * WT/100)/1.05 #> VAB = (2.81 * WT/100)/1.04 #> VVB = (5.62 * WT/100)/1.04 #> VRB = (3.86 * WT/100)/1.04 #> BP = 0.61 #> fup = 0.028 #> fub = fup/BP #> KbLU = exp(0.8334) #> KbHT = exp(1.1205) #> KbSK = exp(-0.5238) #> KbSP = exp(0.3224) #> KbPA = exp(0.3224) #> KbLI = exp(1.7604) #> KbST = exp(0.3224) #> KbGU = exp(1.2026) #> KbKI = exp(1.3171) #> S15 = VVB * BP/1000 #> C15 = Venous_Blood/S15 #> d/dt(Lungs) = QLU * (Venous_Blood/VVB - Lungs/KbLU/VLU) #> d/dt(Heart) = QHT * (Arterial_Blood/VAB - Heart/KbHT/VHT) #> d/dt(Brain) = QBR * (Arterial_Blood/VAB - Brain/KbBR/VBR) #> d/dt(Muscles) = QMU * (Arterial_Blood/VAB - Muscles/KbMU/VMU) #> d/dt(Adipose) = QAD * (Arterial_Blood/VAB - Adipose/KbAD/VAD) #> d/dt(Skin) = QSK * (Arterial_Blood/VAB - Skin/KbSK/VSK) #> d/dt(Spleen) = QSP * (Arterial_Blood/VAB - Spleen/KbSP/VSP) #> d/dt(Pancreas) = QPA * (Arterial_Blood/VAB - Pancreas/KbPA/VPA) #> d/dt(Liver) = QHA * Arterial_Blood/VAB + QSP * Spleen/KbSP/VSP + #> QPA * Pancreas/KbPA/VPA + QST * Stomach/KbST/VST + QGU * #> Gut/KbGU/VGU - CLint * fub * Liver/KbLI/VLI - QLI * Liver/KbLI/VLI #> d/dt(Stomach) = QST * (Arterial_Blood/VAB - Stomach/KbST/VST) #> d/dt(Gut) = QGU * (Arterial_Blood/VAB - Gut/KbGU/VGU) #> d/dt(Bones) = QBO * (Arterial_Blood/VAB - Bones/KbBO/VBO) #> d/dt(Kidneys) = QKI * (Arterial_Blood/VAB - Kidneys/KbKI/VKI) #> d/dt(Arterial_Blood) = QLU * (Lungs/KbLU/VLU - Arterial_Blood/VAB) #> d/dt(Venous_Blood) = QHT * Heart/KbHT/VHT + QBR * Brain/KbBR/VBR + #> QMU * Muscles/KbMU/VMU + QAD * Adipose/KbAD/VAD + QSK * #> Skin/KbSK/VSK + QLI * Liver/KbLI/VLI + QBO * Bones/KbBO/VBO + #> QKI * Kidneys/KbKI/VKI + QRB * Rest_of_Body/KbRB/VRB - #> QLU * Venous_Blood/VVB #> d/dt(Rest_of_Body) = QRB * (Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) #> })"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-cmt.html","id":"changing-compartment-numbers-by-pre-declaring-the-compartments","dir":"Articles","previous_headings":"","what":"Changing compartment numbers by pre-declaring the compartments","title":"Changing rxode2 compartment numbers","text":"add compartments rxode2 model order desire simply need pre-declare compartments cmt. example specifying Venous_Blood Skin 1st 2nd compartments, respectively, simple: can see change simple printout first two compartments Venous_Blood followed Skin.","code":"pbpk2 <- function() { model({ ## Now this is the first compartment, ie cmt=1 cmt(Venous_Blood) ## Skin may be a compartment you wish to dose to as well, ## so it is now cmt=2 cmt(Skin) KbBR = exp(lKbBR) KbMU = exp(lKbMU) KbAD = exp(lKbAD) CLint= exp(lCLint + eta.LClint) KbBO = exp(lKbBO) KbRB = exp(lKbRB) ## Regional blood flows # Cardiac output (L/h) from White et al (1968)m CO = (187.00*WT^0.81)*60/1000; QHT = 4.0 *CO/100; QBR = 12.0*CO/100; QMU = 17.0*CO/100; QAD = 5.0 *CO/100; QSK = 5.0 *CO/100; QSP = 3.0 *CO/100; QPA = 1.0 *CO/100; QLI = 25.5*CO/100; QST = 1.0 *CO/100; QGU = 14.0*CO/100; QHA = QLI - (QSP + QPA + QST + QGU); # Hepatic artery blood flow QBO = 5.0 *CO/100; QKI = 19.0*CO/100; QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI); QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + QRB; ## Organs' volumes = organs' weights / organs' density VLU = (0.76 *WT/100)/1.051; VHT = (0.47 *WT/100)/1.030; VBR = (2.00 *WT/100)/1.036; VMU = (40.00*WT/100)/1.041; VAD = (21.42*WT/100)/0.916; VSK = (3.71 *WT/100)/1.116; VSP = (0.26 *WT/100)/1.054; VPA = (0.14 *WT/100)/1.045; VLI = (2.57 *WT/100)/1.040; VST = (0.21 *WT/100)/1.050; VGU = (1.44 *WT/100)/1.043; VBO = (14.29*WT/100)/1.990; VKI = (0.44 *WT/100)/1.050; VAB = (2.81 *WT/100)/1.040; VVB = (5.62 *WT/100)/1.040; VRB = (3.86 *WT/100)/1.040; ## Fixed parameters BP = 0.61; # Blood:plasma partition coefficient fup = 0.028; # Fraction unbound in plasma fub = fup/BP; # Fraction unbound in blood KbLU = exp(0.8334); KbHT = exp(1.1205); KbSK = exp(-.5238); KbSP = exp(0.3224); KbPA = exp(0.3224); KbLI = exp(1.7604); KbST = exp(0.3224); KbGU = exp(1.2026); KbKI = exp(1.3171); ##----------------------------------------- S15 = VVB*BP/1000; C15 = Venous_Blood/S15 ##----------------------------------------- d/dt(Lungs) = QLU*(Venous_Blood/VVB - Lungs/KbLU/VLU); d/dt(Heart) = QHT*(Arterial_Blood/VAB - Heart/KbHT/VHT); d/dt(Brain) = QBR*(Arterial_Blood/VAB - Brain/KbBR/VBR); d/dt(Muscles) = QMU*(Arterial_Blood/VAB - Muscles/KbMU/VMU); d/dt(Adipose) = QAD*(Arterial_Blood/VAB - Adipose/KbAD/VAD); d/dt(Skin) = QSK*(Arterial_Blood/VAB - Skin/KbSK/VSK); d/dt(Spleen) = QSP*(Arterial_Blood/VAB - Spleen/KbSP/VSP); d/dt(Pancreas) = QPA*(Arterial_Blood/VAB - Pancreas/KbPA/VPA); d/dt(Liver) = QHA*Arterial_Blood/VAB + QSP*Spleen/KbSP/VSP + QPA*Pancreas/KbPA/VPA + QST*Stomach/KbST/VST + QGU*Gut/KbGU/VGU - CLint*fub*Liver/KbLI/VLI - QLI*Liver/KbLI/VLI; d/dt(Stomach) = QST*(Arterial_Blood/VAB - Stomach/KbST/VST); d/dt(Gut) = QGU*(Arterial_Blood/VAB - Gut/KbGU/VGU); d/dt(Bones) = QBO*(Arterial_Blood/VAB - Bones/KbBO/VBO); d/dt(Kidneys) = QKI*(Arterial_Blood/VAB - Kidneys/KbKI/VKI); d/dt(Arterial_Blood) = QLU*(Lungs/KbLU/VLU - Arterial_Blood/VAB); d/dt(Venous_Blood) = QHT*Heart/KbHT/VHT + QBR*Brain/KbBR/VBR + QMU*Muscles/KbMU/VMU + QAD*Adipose/KbAD/VAD + QSK*Skin/KbSK/VSK + QLI*Liver/KbLI/VLI + QBO*Bones/KbBO/VBO + QKI*Kidneys/KbKI/VKI + QRB*Rest_of_Body/KbRB/VRB - QLU*Venous_Blood/VVB; d/dt(Rest_of_Body) = QRB*(Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB); }) } pbpk2 <- pbpk2() pbpk2 #> -- rxode2-based free-form 16-cmt ODE model ------------------------------------- #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 Venous_Blood #> 2 2 Skin #> 3 3 Lungs #> 4 4 Heart #> 5 5 Brain #> 6 6 Muscles #> 7 7 Adipose #> 8 8 Spleen #> 9 9 Pancreas #> 10 10 Liver #> 11 11 Stomach #> 12 12 Gut #> 13 13 Bones #> 14 14 Kidneys #> 15 15 Arterial_Blood #> 16 16 Rest_of_Body #> -- Model (Normalized Syntax): -- #> function() { #> model({ #> cmt(Venous_Blood) #> cmt(Skin) #> KbBR = exp(lKbBR) #> KbMU = exp(lKbMU) #> KbAD = exp(lKbAD) #> CLint = exp(lCLint + eta.LClint) #> KbBO = exp(lKbBO) #> KbRB = exp(lKbRB) #> CO = (187 * WT^0.81) * 60/1000 #> QHT = 4 * CO/100 #> QBR = 12 * CO/100 #> QMU = 17 * CO/100 #> QAD = 5 * CO/100 #> QSK = 5 * CO/100 #> QSP = 3 * CO/100 #> QPA = 1 * CO/100 #> QLI = 25.5 * CO/100 #> QST = 1 * CO/100 #> QGU = 14 * CO/100 #> QHA = QLI - (QSP + QPA + QST + QGU) #> QBO = 5 * CO/100 #> QKI = 19 * CO/100 #> QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + #> QKI) #> QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + #> QRB #> VLU = (0.76 * WT/100)/1.051 #> VHT = (0.47 * WT/100)/1.03 #> VBR = (2 * WT/100)/1.036 #> VMU = (40 * WT/100)/1.041 #> VAD = (21.42 * WT/100)/0.916 #> VSK = (3.71 * WT/100)/1.116 #> VSP = (0.26 * WT/100)/1.054 #> VPA = (0.14 * WT/100)/1.045 #> VLI = (2.57 * WT/100)/1.04 #> VST = (0.21 * WT/100)/1.05 #> VGU = (1.44 * WT/100)/1.043 #> VBO = (14.29 * WT/100)/1.99 #> VKI = (0.44 * WT/100)/1.05 #> VAB = (2.81 * WT/100)/1.04 #> VVB = (5.62 * WT/100)/1.04 #> VRB = (3.86 * WT/100)/1.04 #> BP = 0.61 #> fup = 0.028 #> fub = fup/BP #> KbLU = exp(0.8334) #> KbHT = exp(1.1205) #> KbSK = exp(-0.5238) #> KbSP = exp(0.3224) #> KbPA = exp(0.3224) #> KbLI = exp(1.7604) #> KbST = exp(0.3224) #> KbGU = exp(1.2026) #> KbKI = exp(1.3171) #> S15 = VVB * BP/1000 #> C15 = Venous_Blood/S15 #> d/dt(Lungs) = QLU * (Venous_Blood/VVB - Lungs/KbLU/VLU) #> d/dt(Heart) = QHT * (Arterial_Blood/VAB - Heart/KbHT/VHT) #> d/dt(Brain) = QBR * (Arterial_Blood/VAB - Brain/KbBR/VBR) #> d/dt(Muscles) = QMU * (Arterial_Blood/VAB - Muscles/KbMU/VMU) #> d/dt(Adipose) = QAD * (Arterial_Blood/VAB - Adipose/KbAD/VAD) #> d/dt(Skin) = QSK * (Arterial_Blood/VAB - Skin/KbSK/VSK) #> d/dt(Spleen) = QSP * (Arterial_Blood/VAB - Spleen/KbSP/VSP) #> d/dt(Pancreas) = QPA * (Arterial_Blood/VAB - Pancreas/KbPA/VPA) #> d/dt(Liver) = QHA * Arterial_Blood/VAB + QSP * Spleen/KbSP/VSP + #> QPA * Pancreas/KbPA/VPA + QST * Stomach/KbST/VST + #> QGU * Gut/KbGU/VGU - CLint * fub * Liver/KbLI/VLI - #> QLI * Liver/KbLI/VLI #> d/dt(Stomach) = QST * (Arterial_Blood/VAB - Stomach/KbST/VST) #> d/dt(Gut) = QGU * (Arterial_Blood/VAB - Gut/KbGU/VGU) #> d/dt(Bones) = QBO * (Arterial_Blood/VAB - Bones/KbBO/VBO) #> d/dt(Kidneys) = QKI * (Arterial_Blood/VAB - Kidneys/KbKI/VKI) #> d/dt(Arterial_Blood) = QLU * (Lungs/KbLU/VLU - Arterial_Blood/VAB) #> d/dt(Venous_Blood) = QHT * Heart/KbHT/VHT + QBR * Brain/KbBR/VBR + #> QMU * Muscles/KbMU/VMU + QAD * Adipose/KbAD/VAD + #> QSK * Skin/KbSK/VSK + QLI * Liver/KbLI/VLI + QBO * #> Bones/KbBO/VBO + QKI * Kidneys/KbKI/VKI + QRB * Rest_of_Body/KbRB/VRB - #> QLU * Venous_Blood/VVB #> d/dt(Rest_of_Body) = QRB * (Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-cmt.html","id":"appending-compartments-to-the-model","dir":"Articles","previous_headings":"","what":"Appending compartments to the model","title":"Changing rxode2 compartment numbers","text":"can also append “compartments” model. ODE solving internals, add fake compartments model differential equations defined. example legal: can see clearly underlying classic rxode2 model: compartments defined differential equations supported; model : give error:","code":"ode.1c.ka <- function(){ model({ C2 = center/V d / dt(depot) = -KA * depot d/dt(center) = KA * depot - CL*C2 cmt(eff) }) } ode.1c.ka <- ode.1c.ka() print(ode.1c.ka) #> -- rxode2-based free-form 2-cmt ODE model -------------------------------------- #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> -- Model (Normalized Syntax): -- #> function() { #> model({ #> C2 = center/V #> d/dt(depot) = -KA * depot #> d/dt(center) = KA * depot - CL * C2 #> cmt(eff) #> }) #> } ode.1c.ka$simulationModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_4638b714daaf8fc0c7656a8d800b2020 model (ready). #> x$state: depot, center #> x$stateExtra: eff #> x$params: V, KA, CL #> x$lhs: C2 ode.1c.ka <- rxode2({ cmt(eff) C2 = center/V; d / dt(depot) = -KA * depot d/dt(center) = KA * depot - CL*C2 }) Error in rxModelVars_(obj) : Evaluation error: Compartment 'eff' needs differential equations defined."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-covariates.html","id":"individual-covariates","dir":"Articles","previous_headings":"","what":"Individual Covariates","title":"rxode2 Covariates","text":"individual covariate wish solve may specify iCov dataset:","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` library(units) ## udunits database from /usr/share/xml/udunits/udunits2.xml library(xgxr) mod3 <- function() { ini({ TKA <- 2.94E-01 ## Clearance with individuals TCL <- 1.86E+01 TV2 <-4.02E+01 TQ <-1.05E+01 TV3 <-2.97E+02 TKin <- 1 TKout <- 1 TEC50 <-200 }) model({ KA <- TKA CL <- TCL * (WT / 70) ^ 0.75 V2 <- TV2 Q <- TQ V3 <- TV3 Kin <- TKin Kout <- TKout EC50 <- TEC50 Tz <- 8 amp <- 0.1 C2 <- central/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(central) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 ## This specifies that the effect compartment starts at 1. }) } ev <- et(amount.units=\"mg\", time.units=\"hours\") %>% et(amt=10000, cmt=1) %>% et(0,48,length.out=100) %>% et(id=1:4) set.seed(10) rxSetSeed(10) ## Now use iCov to simulate a 4-id sample r1 <- solve(mod3, ev, # Create individual covariate data-frame iCov=data.frame(id=1:4, WT=rnorm(4, 70, 10))) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(r1) ## ── Solved rxode2 object ── ## ── Parameters ($params): ── ## TKA TCL TV2 TQ TV3 TKin TKout TEC50 Tz amp ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 8.000 0.100 ## ── Initial Conditions ($inits): ── ## depot central peri eff ## 0 0 0 1 ## ── First part of data (object): ── ## # A tibble: 400 × 17 ## id time KA CL V2 Q V3 Kin Kout EC50 C2 C3 depot ## [h] ## 1 1 0 0.294 18.6 40.2 10.5 297 1 1 200 0 0 10000 ## 2 1 0.485 0.294 18.6 40.2 10.5 297 1 1 200 27.8 0.257 8671. ## 3 1 0.970 0.294 18.6 40.2 10.5 297 1 1 200 43.7 0.873 7519. ## 4 1 1.45 0.294 18.6 40.2 10.5 297 1 1 200 51.7 1.68 6520. ## 5 1 1.94 0.294 18.6 40.2 10.5 297 1 1 200 54.7 2.56 5654. ## 6 1 2.42 0.294 18.6 40.2 10.5 297 1 1 200 54.5 3.45 4903. ## # ℹ 394 more rows ## # ℹ 4 more variables: central , peri , eff , WT plot(r1, C2, log=\"y\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-covariates.html","id":"time-varying-covariates","dir":"Articles","previous_headings":"","what":"Time Varying Covariates","title":"rxode2 Covariates","text":"Covariates easy specify rxode2, can specify variable. Time-varying covariates, like clock time circadian rhythm model, can also used. Extending indirect response model already discussed, : Now covariate present event dataset, system can solved combining dataset model: solving ODE equations, solver may sample times outside data. happens, ODE solver can use linear interpolation covariate values. equivalent R’s approxfun method=\"linear\". Note linear approximation case leads kinks solved system 24-hours covariate linear interpolation near 24 near 0. linear seems reasonable, cases like clock time make interpolation methods attractive. rxode2 default covariate interpolation last observation carried forward (locf), constant approximation. equivalent R’s approxfun method=\"constant\". gives following plots: case, plots seem smoother. can also use NONMEM’s preferred interpolation style next observation carried backward (NOCB): gives following plots:","code":"library(rxode2) library(units) mod4 <- mod3 %>% model(d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff) %>% model(-Kin) %>% model(Kin <- TKin + amp *cos(2*pi*(ctime-Tz)/24), append=C2, cov=\"ctime\") ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=1) %>% et(0,48,length.out=100) ## Create data frame of 8 am dosing for the first dose This is done ## with base R but it can be done with dplyr or data.table ev$ctime <- (ev$time+set_units(8,hr)) %% 24 ev$WT <- 70 r1 <- solve(mod4, ev, covsInterpolation=\"linear\") print(r1) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> TKA TCL TV2 TQ TV3 TKout TEC50 #> 0.294000 18.600000 40.200000 10.500000 297.000000 1.000000 200.000000 #> TKin Tz amp pi #> 1.000000 8.000000 0.100000 3.141593 #> ── Initial Conditions ($inits): ── #> depot central peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 100 × 17 #> time KA CL V2 Q V3 Kout EC50 C2 Kin C3 depot #> [h] #> 1 0 0.294 18.6 40.2 10.5 297 1 200 0 1.1 0 10000 #> 2 0.485 0.294 18.6 40.2 10.5 297 1 200 27.8 1.10 0.257 8671. #> 3 0.970 0.294 18.6 40.2 10.5 297 1 200 43.7 1.10 0.874 7519. #> 4 1.45 0.294 18.6 40.2 10.5 297 1 200 51.8 1.09 1.68 6520. #> 5 1.94 0.294 18.6 40.2 10.5 297 1 200 54.8 1.09 2.56 5654. #> 6 2.42 0.294 18.6 40.2 10.5 297 1 200 54.6 1.08 3.45 4903. #> # ℹ 94 more rows #> # ℹ 5 more variables: central , peri , eff , ctime [h], WT plot(r1,C2, ylab=\"Central Concentration\") plot(r1,eff) + ylab(\"Effect\") + xlab(\"Time\") r1 <- solve(mod4, ev,covsInterpolation=\"locf\") print(r1) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> TKA TCL TV2 TQ TV3 TKout TEC50 #> 0.294000 18.600000 40.200000 10.500000 297.000000 1.000000 200.000000 #> TKin Tz amp pi #> 1.000000 8.000000 0.100000 3.141593 #> ── Initial Conditions ($inits): ── #> depot central peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 100 × 17 #> time KA CL V2 Q V3 Kout EC50 C2 Kin C3 depot #> [h] #> 1 0 0.294 18.6 40.2 10.5 297 1 200 0 1.1 0 10000 #> 2 0.485 0.294 18.6 40.2 10.5 297 1 200 27.8 1.10 0.257 8671. #> 3 0.970 0.294 18.6 40.2 10.5 297 1 200 43.7 1.10 0.874 7519. #> 4 1.45 0.294 18.6 40.2 10.5 297 1 200 51.8 1.09 1.68 6520. #> 5 1.94 0.294 18.6 40.2 10.5 297 1 200 54.8 1.09 2.56 5654. #> 6 2.42 0.294 18.6 40.2 10.5 297 1 200 54.6 1.08 3.45 4903. #> # ℹ 94 more rows #> # ℹ 5 more variables: central , peri , eff , ctime [h], WT plot(r1,C2, ylab=\"Central Concentration\", xlab=\"Time\") plot(r1,eff, ylab=\"Effect\", xlab=\"Time\") r1 <- solve(mod4, ev,covsInterpolation=\"nocb\") print(r1) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> TKA TCL TV2 TQ TV3 TKout TEC50 #> 0.294000 18.600000 40.200000 10.500000 297.000000 1.000000 200.000000 #> TKin Tz amp pi #> 1.000000 8.000000 0.100000 3.141593 #> ── Initial Conditions ($inits): ── #> depot central peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 100 × 17 #> time KA CL V2 Q V3 Kout EC50 C2 Kin C3 depot #> [h] #> 1 0 0.294 18.6 40.2 10.5 297 1 200 0 1.1 0 10000 #> 2 0.485 0.294 18.6 40.2 10.5 297 1 200 27.8 1.10 0.257 8671. #> 3 0.970 0.294 18.6 40.2 10.5 297 1 200 43.7 1.10 0.874 7519. #> 4 1.45 0.294 18.6 40.2 10.5 297 1 200 51.8 1.09 1.68 6520. #> 5 1.94 0.294 18.6 40.2 10.5 297 1 200 54.8 1.09 2.56 5654. #> 6 2.42 0.294 18.6 40.2 10.5 297 1 200 54.6 1.08 3.45 4903. #> # ℹ 94 more rows #> # ℹ 5 more variables: central , peri , eff , ctime [h], WT plot(r1,C2, ylab=\"Central Concentration\", xlab=\"Time\") plot(r1,eff, ylab=\"Effect\", xlab=\"Time\")"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"creating-an-interactive-data-frame","dir":"Articles","previous_headings":"Using rxode2 data frames","what":"Creating an interactive data frame","title":"rxode2 Data Frames","text":"rxode2 supports returning solved object modified data-frame. done predict(), solve(), rxSolve() methods.","code":"library(rxode2) library(units) ## Setup example model mod1 <- function() { ini({ # central KA <- 2.94E-01 CL <- 1.86E+01 # peripheral V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 # effects Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) } ## Seup parameters and initial conditions ## Setup dosing event information ev <- et(amountUnits=\"mg\", timeUnits = \"hours\") %>% et(amt=10000, addl=9, ii=12) %>% et(amt=20000, addl=4, time=120, ii=24) %>% et(0:240) ## Now solve x <- predict(mod1, ev) x #> -- Solved rxode2 object -- #> -- Parameters (x$params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> -- Initial Conditions (x$inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 241 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # i 235 more rows"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"using-the-solved-object-as-a-simple-data-frame","dir":"Articles","previous_headings":"Using rxode2 data frames","what":"Using the solved object as a simple data frame","title":"rxode2 Data Frames","text":"solved object acts data.frame tbl can filtered dpylr. example filter easily.","code":"library(dplyr) ## You can drop units for comparisons and filtering x <- mod1 %>% solve(ev) %>% drop_units() %>% filter(time <= 3) %>% as_tibble() ## or keep them and compare with the proper units. x <- mod1 %>% solve(ev) %>% filter(time <= set_units(3, hr)) %>% as_tibble() x #> # A tibble: 4 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"updating-the-data-set-interactively","dir":"Articles","previous_headings":"","what":"Updating the data-set interactively","title":"rxode2 Data Frames","text":"However isn’t just simple data object. can use solved object update parameters fly, even change sampling time. First need recreate original solved system:","code":"x <- mod1 %>% solve(ev) print(x) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 241 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # i 235 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"modifying-observation-times-for-rxode2","dir":"Articles","previous_headings":"Updating the data-set interactively","what":"Modifying observation times for rxode2","title":"rxode2 Data Frames","text":"Notice initial effect now 2. can also change sampling times easily method changing t time. example:","code":"x$t <- seq(0,5,length.out=20) print(x) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 20 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 0.263 16.8 0.0817 9255. 677. 24.3 1.01 #> 3 0.526 29.5 0.299 8566. 1187. 88.7 1.03 #> 4 0.789 38.9 0.615 7929. 1562. 183. 1.06 #> 5 1.05 45.5 1.00 7338. 1830. 298. 1.09 #> 6 1.32 50.1 1.44 6792. 2013. 427. 1.12 #> # i 14 more rows plot(x)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"modifying-simulation-parameters","dir":"Articles","previous_headings":"Updating the data-set interactively","what":"Modifying simulation parameters","title":"rxode2 Data Frames","text":"can also access change parameters $ operator. example, accessing KA can done : may change assigning new value. can access/change parameters, initialization(s) events $params, $inits, $events accessor syntax, similar used . syntax makes easy update explore effect various parameters solved object.","code":"x$KA #> [1] 0.294 x$KA <- 1 print(x) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 1.0 18.6 40.2 10.5 297.0 1.0 1.0 200.0 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 20 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 0.263 52.2 0.261 7686. 2098. 77.6 1.03 #> 3 0.526 83.3 0.900 5908. 3348. 267. 1.09 #> 4 0.789 99.8 1.75 4541. 4010. 519. 1.15 #> 5 1.05 106. 2.69 3490. 4273. 800. 1.21 #> 6 1.32 106. 3.66 2683. 4272. 1086. 1.26 #> # i 14 more rows plot(x)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"datasets-for-rxode2-nlmixr","dir":"Articles","previous_headings":"","what":"Datasets for rxode2 & nlmixr","title":"rxode2 Event Types","text":"Data input nlmixr type data input rxode2, similar data NONMEM (NONMEM-ready datasets can used directly nlmixr).","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"subject-identification-columns","dir":"Articles","previous_headings":"Columns Described by Type of Use","what":"Subject Identification Columns","title":"rxode2 Event Types","text":"subject identification column separates subjects identification random effects. ID: subject identifier may integer, character, factor.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"observation-columns","dir":"Articles","previous_headings":"Columns Described by Type of Use","what":"Observation Columns","title":"rxode2 Event Types","text":"Observation columns used indicate dependent variable use measure . DV: numeric column measurement CENS: numeric column indication censoring, limit quantification assay. LIMIT: numeric column helping indicate type censoring, limit quantification assay. MDV: indicator missing DV values CMT: name number compartment DVID: dependent variable identifier EVID event identifier","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dosing-columns","dir":"Articles","previous_headings":"Columns Described by Type of Use","what":"Dosing Columns","title":"rxode2 Event Types","text":"AMT: amount dose CMT: name number compartment EVID: event identifier ADDL: number additional doses RATE DUR: rate duration dose","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"details-for-specific-dataset-columns","dir":"Articles","previous_headings":"","what":"Details for Specific Dataset Columns","title":"rxode2 Event Types","text":"details sorted alphabetically column name. grouping use, see documentation .","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"amt-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"AMT Column","title":"rxode2 Event Types","text":"AMT column defines amount dose. observation rows, 0 NA. dosing rows, amount dose administered CMT. dose zero-order rate (constant infusion), infusion may setup using RATE DUR column.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"censlimit-columns","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"CENS/LIMIT Columns","title":"rxode2 Event Types","text":"CENS column indicator column indicating censoring occurred. pharmacokinetic modeling, censoring typically sample limit quantification. Internally rxode2 saves values nlmixr can use likelihood calculations. CENS = 0 indicates value DV measured without censoring. CENS = 1 indicates value left censored (limit quantitation) value DV censoring/quantitation limit. CENS = -1 indicates value right censored (limit quantitation) value DV censoring/quantitation limit. LIMIT additional information censoring handled nlmixr stored rxode2’s data structure well. value left censored, like limit 1 may also believe value certain threshold, like zero. case, limit 0 indicates censored value 0 1. short : CENS = 0 LIMIT ignored observation censored CENS = 1 value censored (LIMIT, DV) CENS = -1 value censored (DV, LIMIT)","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"cmt-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"CMT Column","title":"rxode2 Event Types","text":"CMT column indicates compartment event occurs. given character string factor (preferred method), matched name model. given integer, matched order compartments appear model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dur-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"DUR Column","title":"rxode2 Event Types","text":"DUR column defines duration infusion. used set duration zero-order rate infusion.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dv-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"DV Column","title":"rxode2 Event Types","text":"DV column indicates current measurement current compartment (see CMT) current measurement identifier (see DVID) may missing (see MDV) censored (see CENS).","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dvid-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"DVID Column","title":"rxode2 Event Types","text":"TODO","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"evid-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"EVID Column","title":"rxode2 Event Types","text":"EVID column event identifier row data. observation records, 0. normal dosing records, 1. Many EVID values detailed rxode2 Event Types Classic rxode2 Events vignettes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"id-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"ID Column","title":"rxode2 Event Types","text":"ID column subject identifier. column used separate one individual (usually single person animal) another. model, ID column used separate individuals. numerical integrator re-initializes new individual, new values random effects selected.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"rate-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"RATE Column","title":"rxode2 Event Types","text":"TODO","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"creating-rxode2s-event-tables","dir":"Articles","previous_headings":"","what":"Creating rxode2’s event tables","title":"Easy rxode2 Event Tables","text":"event table rxode2 specialized data frame acts container rxode2’s events observation times. create rxode2 event table may use code eventTable(), et(), even create data frame right event information contained . closely related types events rxode2 supports. event table can add sampling/observations doses piping direct access. short table two main functions create dosing Sampling times can added add.sampling( sampling times ) et( sampling times ). Dosing intervals sampling windows also supported. documentation using et() syntax, though supported. models, can illustrate using model shared rxode2 tutorial:","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` library(units) #> udunits database from /usr/share/xml/udunits/udunits2.xml (ev <- et()) #> -- EventTable with 0 records -- #> 0 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) (ev <- et()) #> -- EventTable with 0 records -- #> 0 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) ## Model from rxode2 tutorial m1 <-function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff; eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"adding-doses-to-the-event-table","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Adding doses to the event table","title":"Easy rxode2 Event Tables","text":"created can add dosing event table add.dosing(), et() functions. Using add.dosing() function : Notice units specified table. specified, units use units package keep track units convert needed. Additionally, ggforce uses label ggplot axes. set_units drop_units useful set drop rxode2 event table units. example, can see time axes labeled: familiar NONMEM/rxode2 event records, can also specify dosing using et dose elements directly: gives: shows easy creating event tables can .","code":"ev <- eventTable(amount.units=\"mg\", time.units=\"hr\") ## The methods ar attached to the event table, so you can use ## them directly ev$add.dosing(dose=10000, nbr.doses = 3)# loading doses ## Starts at time 0; Default dosing interval is 24 ## You can also pipe the event tables to these methods. ev <- ev %>% add.dosing(dose=5000, nbr.doses=14, dosing.interval=12)# maintenance ev #> -- EventTable with 2 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 2 x 5 #> time amt ii addl evid #> [h] [mg] [h] #> 1 0 10000 24 2 1:Dose (Add) #> 2 0 5000 12 13 1:Dose (Add) rxSolve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ev <- et(timeUnits=\"hr\") %>% et(amt=10000, until = set_units(3, days), ii=12) # loading doses ev #> -- EventTable with 1 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 1 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 10000 12 6 1:Dose (Add) rxSolve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"adding-sampling-to-an-event-table","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Adding sampling to an event table","title":"Easy rxode2 Event Tables","text":"notice examples, rxode2 generated default sampling times since sampling times. wish control sampling time, add samples rxode2 event table add.sampling et gives: use et can simply add similar way add.sampling: gives following rxode2 solve: Note jagged nature plots since sample times.","code":"ev <- eventTable(amount.units=\"mg\", time.units=\"hr\") ## The methods ar attached to the event table, so you can use them ## directly ev$add.dosing(dose=10000, nbr.doses = 3)# loading doses ev$add.sampling(seq(0,24,by=4)) ev #> -- EventTable with 8 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 7 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 8 x 5 #> time amt ii addl evid #> [h] [mg] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 24 2 1:Dose (Add) #> 3 4 NA NA NA 0:Observation #> 4 8 NA NA NA 0:Observation #> 5 12 NA NA NA 0:Observation #> 6 16 NA NA NA 0:Observation #> 7 20 NA NA NA 0:Observation #> 8 24 NA NA NA 0:Observation solve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, until = set_units(3, days), ii=12) %>% # loading doses et(seq(0,24,by=4)) ev #> -- EventTable with 8 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 7 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 8 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 6 1:Dose (Add) #> 3 4 NA NA NA 0:Observation #> 4 8 NA NA NA 0:Observation #> 5 12 NA NA NA 0:Observation #> 6 16 NA NA NA 0:Observation #> 7 20 NA NA NA 0:Observation #> 8 24 NA NA NA 0:Observation solve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"expand-the-event-table-to-a-multi-subject-event-table-","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Expand the event table to a multi-subject event table.","title":"Easy rxode2 Event Tables","text":"thing needed expand event table list IDs want expand; can see following simulation 4 individuals solved :","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, until = set_units(3, days), ii=12) %>% # loading doses et(seq(0,48,length.out=200)) %>% et(id=1:4) ev #> -- EventTable with 804 records -- #> 4 dosing records (see x$get.dosing(); add with add.dosing or et) #> 800 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 804 x 6 #> id time amt ii addl evid #> [h] [h] #> 1 1 0 NA NA NA 0:Observation #> 2 1 0 10000 12 6 1:Dose (Add) #> 3 1 0.241 NA NA NA 0:Observation #> 4 1 0.482 NA NA NA 0:Observation #> 5 1 0.724 NA NA NA 0:Observation #> 6 1 0.965 NA NA NA 0:Observation #> 7 1 1.21 NA NA NA 0:Observation #> 8 1 1.45 NA NA NA 0:Observation #> 9 1 1.69 NA NA NA 0:Observation #> 10 1 1.93 NA NA NA 0:Observation #> # i 794 more rows set.seed(42) rxSetSeed(42) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"add-doses-and-samples-within-a-sampling-window","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Add doses and samples within a sampling window","title":"Easy rxode2 Event Tables","text":"addition adding fixed doses fixed sampling times, can windows sample draw doses . dosing windows specify time ordered numerical vector lowest dosing time highest dosing time inside list. example, start dosing time 6 hour dosing window: can clearly see different dosing times following simulation: course reality dosing interval may 2 hours: sort thing can specified sampling times. specify sampling times terms sampling window, can create list sampling times. sampling time two element ordered numeric vector. shows flexibility dosing sampling rxode2 event tables allow.","code":"set.seed(42) rxSetSeed(42) ev <- et(timeUnits=\"hr\") %>% et(time=list(c(0,6)), amt=10000, until = set_units(2, days), ii=12) %>% # loading doses et(id=1:4) ev #> -- EventTable with 16 records -- #> 16 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 16 x 6 #> id low time high amt evid #> [h] [h] [h] #> 1 1 0 5.49 6 10000 1:Dose (Add) #> 2 1 12 17.0 18 10000 1:Dose (Add) #> 3 1 24 25.7 30 10000 1:Dose (Add) #> 4 1 36 41.6 42 10000 1:Dose (Add) #> 5 2 0 4.31 6 10000 1:Dose (Add) #> 6 2 12 14.7 18 10000 1:Dose (Add) #> 7 2 24 28.2 30 10000 1:Dose (Add) #> 8 2 36 39.9 42 10000 1:Dose (Add) #> 9 3 0 0.808 6 10000 1:Dose (Add) #> 10 3 12 16.4 18 10000 1:Dose (Add) #> 11 3 24 27.1 30 10000 1:Dose (Add) #> 12 3 36 39.9 42 10000 1:Dose (Add) #> 13 4 0 4.98 6 10000 1:Dose (Add) #> 14 4 12 13.7 18 10000 1:Dose (Add) #> 15 4 24 29.6 30 10000 1:Dose (Add) #> 16 4 36 41.5 42 10000 1:Dose (Add) ev <- ev %>% et(seq(0,48,length.out=200)) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments set.seed(42) rxSetSeed(42) ev <- et(timeUnits=\"hr\") %>% et(time=list(c(0,2)), amt=10000, until = set_units(2, days), ii=12) %>% # loading doses et(id=1:4) %>% et(seq(0,48,length.out=200)) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments rxSetSeed(42) set.seed(42) ev <- et(timeUnits=\"hr\") %>% et(time=list(c(0,2)), amt=10000, until = set_units(2, days), ii=12) %>% # loading doses et(id=1:4) ## Create 20 samples in the first 24 hours and 20 samples in the ## second 24 hours samples <- c(lapply(1:20, function(...){c(0,24)}), lapply(1:20, function(...){c(20,48)})) ## Add the random collection to the event table ev <- ev %>% et(samples) library(ggplot2) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) + geom_point() #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"combining-event-tables","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Combining event tables","title":"Easy rxode2 Event Tables","text":"Since can create dosing records sampling records, can create complex dosing regimen wish. addition, rxode2 allows combine event tables c, seq, rep, rbind.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"sequencing-event-tables","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Sequencing event tables","title":"Easy rxode2 Event Tables","text":"One way combine event table sequence c, seq etSeq. takes two dosing groups adds least one inter-dose interval : sequencing events, can also separate sequence period time; example wanted separate week, easily following sequence event tables: Note example time bid qd event tables exactly one week, 1 week plus 24 hours inter-dose interval. want behavior, can sequence using wait=\"+ii\". Also note, rxode2 assumes dosing want space event tables , clears sampling records combine event tables. true, can also use option samples=\"use\"","code":"## bid for 5 days bid <- et(timeUnits=\"hr\") %>% et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") %>% et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) %>% et(seq(0,11*24,length.out=100)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days followed by qd for 5 days et <- seq(bid,set_units(1, \"week\"), qd) %>% et(seq(0,18*24,length.out=100)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days followed by qd for 5 days et <- seq(bid,set_units(1, \"week\"), qd,wait=\"+ii\") %>% et(seq(0,18*24,length.out=100)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"repeating-event-tables","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Repeating event tables","title":"Easy rxode2 Event Tables","text":"can event table can repeat etRep rep. example 4 rounds 2 weeks QD therapy 1 week therapy can simply specified: simplified way use sequence event tables. Therefore, many options still apply; samples cleared unless use samples=\"use\", time event tables least inter-dose interval. can adjust timing wait option.","code":"qd <-et(timeUnits = \"hr\") %>% et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- rep(qd, times=4, wait=set_units(1,\"weeks\")) %>% add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"combining-event-tables-with-rbind","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Combining event tables with rbind","title":"Easy rxode2 Event Tables","text":"may combine event tables rbind. consider event times combining event tables, keeps times. space event tables waiting period, also consider inter-dose interval. Using previous seq can clearly see difference. sequence: bind together rbind Still waiting period applies (consider inter-dose interval) can also bind tables together make ID event table unique; can good combine cohorts different expected dosing sampling times. requires id=\"unique\" option; Using first example shows different case:","code":"## bid for 5 days bid <- et(timeUnits=\"hr\") %>% et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") %>% et(amt=20000,ii=24,until=set_units(5, \"days\")) et <- seq(bid,qd) %>% et(seq(0,18*24,length.out=500)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days et <- rbind(bid,qd) %>% et(seq(0,18*24,length.out=500)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments et <- rbind(bid,wait=set_units(10,days),qd) %>% et(seq(0,18*24,length.out=500)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days et <- etRbind(bid,qd, id=\"unique\") %>% et(seq(0,150,length.out=500)); library(ggplot2) rxSolve(m1, et) %>% plot(C2) + facet_wrap( ~ id) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"event-tables-in-rstudio-notebooks","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Event tables in Rstudio Notebooks","title":"Easy rxode2 Event Tables","text":"addition output console shown examples, Rstudio notebook output different can seen following screenshots; first screenshot shows event table looks evaluating Rstduio notebook simple dataframe allows page contents. click first box Rstudio notebook output, notes event table: ## Expanding events Event tables can expanded contain addl data item, like following example: can expand events addl items $expand() etExpand(ev): first, etExpand(ev) expands event table without modifying original data frame: can see addl events expanded, however original data frame remained intact: use ev$expand() modify ev object. similar object-oriented method:","code":"ev <- et() %>% et(dose=50, ii=8, until=48) ev #> -- EventTable with 1 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 1 x 5 #> time amt ii addl evid #> #> 1 0 50 8 6 1:Dose (Add) etExpand(ev) #> -- EventTable with 7 records -- #> 7 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 7 x 4 #> time amt ii evid #> #> 1 0 50 0 1:Dose (Add) #> 2 8 50 0 1:Dose (Add) #> 3 16 50 0 1:Dose (Add) #> 4 24 50 0 1:Dose (Add) #> 5 32 50 0 1:Dose (Add) #> 6 40 50 0 1:Dose (Add) #> 7 48 50 0 1:Dose (Add) print(ev) #> -- EventTable with 1 records -- #> 1 dosing records (see $get.dosing(); add with add.dosing or et) #> 0 observation times (see $get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with $expand(); or etExpand() #> -- First part of : -- #> # A tibble: 1 x 5 #> time amt ii addl evid #> #> 1 0 50 8 6 1:Dose (Add) ev$expand() ev #> -- EventTable with 7 records -- #> 7 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 7 x 4 #> time amt ii evid #> #> 1 0 50 0 1:Dose (Add) #> 2 8 50 0 1:Dose (Add) #> 3 16 50 0 1:Dose (Add) #> 4 24 50 0 1:Dose (Add) #> 5 32 50 0 1:Dose (Add) #> 6 40 50 0 1:Dose (Add) #> 7 48 50 0 1:Dose (Add)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"rxode2-event-tables","dir":"Articles","previous_headings":"","what":"rxode2 event tables","title":"rxode2 Event Types","text":"general, rxode2 event tables follow NONMEM dataset convention exceptions: may turn compartment negative compartment number “-cmt” cmt compartment name. compartment data item (cmt) can still number, number compartment defined appearance compartment name model. can tedious count, can specify compartment numbers easier using cmt(cmtName) beginning model. Bioavailability changes change rate infusion since dur/amt fixed input data. Similarly, specifying rate/amt infusion, bioavailability change infusion duration since rate/amt fixed input data. infrequent NONMEM columns supported: pcmt, call. evid=5 replace event; replaces value compartment value specified amt column. equivalent deSolve=replace. evid=6 multiply event; multiplies value compartment value specified amt column. equivalent deSolve=multiply. evid=7 transit compartment model/phantom event. puts dose dose() function calculates time since last dose tad() doesn’t actually put dose compartment. allows transit() function easily apply compartment. legal entries data table: notes: evid can classic RxODE (described ) NONMEM-style evid described . NONMEM’s DV required; rxode2 ODE solving framework. NONMEM’s MDV required, since captured EVID. Instead NONMEM-compatible data, can accept deSolve compatible data-frames. returning rxode2 solved data-set additional event ids (EVID) may see depending solving options: EVID = -1 modeled rate ends (corresponds rate = -1) EVID = -2 modeled duration ends (corresponds rate=-2) EVID = -10 rate specified zero-order infusion ends (corresponds rate > 0) EVID = -20 duration specified zero-order infusion ends (corresponds dur > 0) EVID = 101, 102, 103,... correspond 1, 2, 3, … modeled time (mtime). can accessed solving option combination addDosing=TRUE subsetNonmem=FALSE. want see classic EVID equivalents can use addDosing=NA. illustrate event types use model original rxode2 tutorial.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` ## Model from rxode2 tutorial m1 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"bolusadditive-doses","dir":"Articles","previous_headings":"","what":"Bolus/Additive Doses","title":"rxode2 Event Types","text":"bolus dose default type dose rxode2 requires amt/dose. Note uses convenience function et() described rxode2 event tables","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 2 1:Dose (Add) #> 3 0.242 NA NA NA 0:Observation #> 4 0.485 NA NA NA 0:Observation #> 5 0.727 NA NA NA 0:Observation #> 6 0.970 NA NA NA 0:Observation #> 7 1.21 NA NA NA 0:Observation #> 8 1.45 NA NA NA 0:Observation #> 9 1.70 NA NA NA 0:Observation #> 10 1.94 NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev) %>% plot(C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"infusion-doses","dir":"Articles","previous_headings":"","what":"Infusion Doses","title":"rxode2 Event Types","text":"different type infusions rxode2 supports: Constant Rate Infusion (rate) Constant Duration Infusion (dur) Estimated Rate Infusion Estimated Duration Infusion","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"constant-infusion-in-terms-of-duration-and-rate","dir":"Articles","previous_headings":"Infusion Doses","what":"Constant Infusion (in terms of duration and rate)","title":"rxode2 Event Types","text":"next type event infusion; two ways specify infusion; first dur keyword. example : can also specified rate component: exception bioavailability changes infusion. case modeling rate, bioavailability decrease, decreases infusion duration, NONMEM. example: Similarly increasing bioavailability increases infusion duration. rationale behavior rate amt specified event table, thing can change bioavailability increase duration infusion. specify amt dur components event table, bioavailability changes affect rate infusion. can see side--side comparison bioavailability changes affecting rate instead duration records following plots:","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, dur=8) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt ii addl evid dur #> [h] [h] [h] #> 1 0 NA NA NA 0:Observation NA #> 2 0 10000 12 2 1:Dose (Add) 8 #> 3 0.242 NA NA NA 0:Observation NA #> 4 0.485 NA NA NA 0:Observation NA #> 5 0.727 NA NA NA 0:Observation NA #> 6 0.970 NA NA NA 0:Observation NA #> 7 1.21 NA NA NA 0:Observation NA #> 8 1.45 NA NA NA 0:Observation NA #> 9 1.70 NA NA NA 0:Observation NA #> 10 1.94 NA NA NA 0:Observation NA #> # i 91 more rows rxSolve(m1, ev) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, rate=10000/8) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt rate ii addl evid #> [h] [h] #> 1 0 NA NA NA NA 0:Observation #> 2 0 10000 1250 12 2 1:Dose (Add) #> 3 0.242 NA NA NA NA 0:Observation #> 4 0.485 NA NA NA NA 0:Observation #> 5 0.727 NA NA NA NA 0:Observation #> 6 0.970 NA NA NA NA 0:Observation #> 7 1.21 NA NA NA NA 0:Observation #> 8 1.45 NA NA NA NA 0:Observation #> 9 1.70 NA NA NA NA 0:Observation #> 10 1.94 NA NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments rxSolve(m1, ev, c(fdepot=0.25)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments rxSolve(m1, ev, c(fdepot=1.25)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, dur=8) %>% et(seq(0, 24, length.out=100)) library(ggplot2) library(patchwork) p1 <- rxSolve(m1, ev, c(fdepot=1.25)) %>% plot(depot) + xlab(\"Time\") + ylim(0,5000) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments p2 <- rxSolve(m1, ev, c(fdepot=0.25)) %>% plot(depot) + xlab(\"Time\")+ ylim(0,5000) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## Use patchwork syntax to combine plots p1 * p2"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"modeled-rate-and-duration-of-infusion","dir":"Articles","previous_headings":"Infusion Doses","what":"Modeled Rate and Duration of Infusion","title":"rxode2 Event Types","text":"can model duration, equivalent NONMEM’s rate=-2. Similarly, may also model rate. equivalent NONMEM’s rate=-1 rxode2’s event table specifies data item well.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, rate=-2) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt rate ii addl evid #> [h] [h] #> 1 0 NA NA NA NA 0:Observation #> 2 0 10000 -2:dur 12 2 1:Dose (Add) #> 3 0.242 NA NA NA NA 0:Observation #> 4 0.485 NA NA NA NA 0:Observation #> 5 0.727 NA NA NA NA 0:Observation #> 6 0.970 NA NA NA NA 0:Observation #> 7 1.21 NA NA NA NA 0:Observation #> 8 1.45 NA NA NA NA 0:Observation #> 9 1.70 NA NA NA NA 0:Observation #> 10 1.94 NA NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev, c(durDepot=7)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, rate=-1) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt rate ii addl evid #> [h] [h] #> 1 0 NA NA NA NA 0:Observation #> 2 0 10000 -1:rate 12 2 1:Dose (Add) #> 3 0.242 NA NA NA NA 0:Observation #> 4 0.485 NA NA NA NA 0:Observation #> 5 0.727 NA NA NA NA 0:Observation #> 6 0.970 NA NA NA NA 0:Observation #> 7 1.21 NA NA NA NA 0:Observation #> 8 1.45 NA NA NA NA 0:Observation #> 9 1.70 NA NA NA NA 0:Observation #> 10 1.94 NA NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev, c(rateDepot=10000/3)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"steady-state","dir":"Articles","previous_headings":"","what":"Steady State","title":"rxode2 Event Types","text":"doses solved steady state reached constant inter-dose interval.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, ss=1) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 101 x 5 #> time amt ii evid ss #> [h] [h] #> 1 0 NA NA 0:Observation NA #> 2 0 10000 12 1:Dose (Add) 1 #> 3 0.242 NA NA 0:Observation NA #> 4 0.485 NA NA 0:Observation NA #> 5 0.727 NA NA 0:Observation NA #> 6 0.970 NA NA 0:Observation NA #> 7 1.21 NA NA 0:Observation NA #> 8 1.45 NA NA 0:Observation NA #> 9 1.70 NA NA 0:Observation NA #> 10 1.94 NA NA 0:Observation NA #> # i 91 more rows rxSolve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"steady-state-for-complex-dosing","dir":"Articles","previous_headings":"Steady State","what":"Steady state for complex dosing","title":"rxode2 Event Types","text":"using ss=2 flag, can use super-positioning principle linear kinetics get steady state nonstandard dosing (.e. morning 100 mg vs evening 150 mg). done : Saving state values Resetting states solving system steady state Adding back prior state values can see takes full dose cycle reach true complex steady state dosing.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=24, ss=1) %>% et(time=12, amt=15000, ii=24, ss=2) %>% et(time=24, amt=10000, ii=24, addl=3) %>% et(time=36, amt=15000, ii=24, addl=3) %>% et(seq(0, 64, length.out=500)) library(ggplot2) rxSolve(m1, ev,maxsteps=10000) %>% plot(C2) + annotate(\"rect\", xmin=0, xmax=24, ymin=-Inf, ymax=Inf, alpha=0.2) + annotate(\"text\", x=12.5, y=7, label=\"Initial Steady State Period\") + annotate(\"text\", x=44, y=7, label=\"Steady State AM/PM dosing\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"steady-state-for-constant-infusion-or-zero-order-processes","dir":"Articles","previous_headings":"Steady State","what":"Steady state for constant infusion or zero order processes","title":"rxode2 Event Types","text":"last type steady state rxode2 supports steady-state constant infusion rate. can specified way NONMEM, : inter-dose interval ii=0 steady state dose, ie ss=1 Either positive rate (rate>0) estimated rate rate=-1. zero dose, ie amt=0 steady-state constant infusion achieved, infusion turned using record, just like NONMEM. Note rate=-2 model duration infusion doesn’t make much sense since solving infusion steady state. duration specified steady state solution. Also note bioavailability changes steady state infusion also make sense neither change rate duration steady state infusion. Hence modeled bioavailability type dosing event ignored. example: can used PK, can used steady-state disease processes.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=0, ss=1,rate=10000/8) p1 <- rxSolve(m1, ev) %>% plot(C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=200000, rate=10000/8) %>% et(0, 250, length.out=1000) p2 <- rxSolve(m1, ev) %>% plot(C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments library(patchwork) p1 / p2"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"reset-events","dir":"Articles","previous_headings":"","what":"Reset Events","title":"rxode2 Event Types","text":"Reset events implemented evid=3 evid=reset, reset evid=4 reset dose. solving show happens system system reset 6 hours post-dose. can see compartments reset initial values. next dose start dosing cycle . case, whole system reset dose given","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, evid=reset) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 102 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 102 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 3 1:Dose (Add) #> 3 0.242 NA NA NA 0:Observation #> 4 0.485 NA NA NA 0:Observation #> 5 0.727 NA NA NA 0:Observation #> 6 0.970 NA NA NA 0:Observation #> 7 1.21 NA NA NA 0:Observation #> 8 1.45 NA NA NA 0:Observation #> 9 1.70 NA NA NA 0:Observation #> 10 1.94 NA NA NA 0:Observation #> # i 92 more rows rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, amt=10000, evid=4) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 102 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 102 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 3 1:Dose (Add) #> 3 0.242 NA NA NA 0:Observation #> 4 0.485 NA NA NA 0:Observation #> 5 0.727 NA NA NA 0:Observation #> 6 0.970 NA NA NA 0:Observation #> 7 1.21 NA NA NA 0:Observation #> 8 1.45 NA NA NA 0:Observation #> 9 1.70 NA NA NA 0:Observation #> 10 1.94 NA NA NA 0:Observation #> # i 92 more rows rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"turning-off-compartments","dir":"Articles","previous_headings":"","what":"Turning off compartments","title":"rxode2 Event Types","text":"may also turn compartment, similar reset event. Solving shows system: case, depot turned , depot compartment concentrations set initial values compartment concentrations/levels reset. another dose depot administered depot compartment turned back . Note dose compartment turns back compartment dosed. Hence turn effect compartment, continues another dose depot. turn back compartment, zero-dose compartment evid=2 compartment needed.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, cmt=\"-depot\", evid=2) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 102 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 102 x 6 #> time cmt amt ii addl evid #> [h] [h] #> 1 0 (obs) NA NA NA 0:Observation #> 2 0 (default) 10000 12 3 1:Dose (Add) #> 3 0.242 (obs) NA NA NA 0:Observation #> 4 0.485 (obs) NA NA NA 0:Observation #> 5 0.727 (obs) NA NA NA 0:Observation #> 6 0.970 (obs) NA NA NA 0:Observation #> 7 1.21 (obs) NA NA NA 0:Observation #> 8 1.45 (obs) NA NA NA 0:Observation #> 9 1.70 (obs) NA NA NA 0:Observation #> 10 1.94 (obs) NA NA NA 0:Observation #> # i 92 more rows rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, cmt=\"-eff\", evid=2) %>% et(seq(0, 24, length.out=100)) rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, cmt=\"-eff\", evid=2) %>% et(time=12,cmt=\"eff\",evid=2) %>% et(seq(0, 24, length.out=100)) rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"classic-rxode-evid-values","dir":"Articles","previous_headings":"","what":"Classic RxODE evid values","title":"Classic rxode2 Events","text":"Originally RxODE supported compound event IDs; rxode2 still supports parameters, often useful use normal NONMEM dataset standard used many modeling tools like NONMEM, Monolix nlmixr, described rxode2 types article. Classically, RxODE supported event coding single event id evid described following table. classic EVID concatenate numbers table, infusion compartment 1 10101 infusion compartment 199 119901. EVID = 0 (observations), EVID=2 (type event) EVID=3 supported. Internally EVID=9 non-observation event makes sure system initialized zero; EVID=9 manually set. EVID 10-99 represents modeled time interventions, similar NONMEM’s MTIME. along amount (amt) time columns specify events ODE system. infusions specified EVIDs > 100 amt column represents rate value. Infusion flags 1 2 +amt turn infusion specific compartment -amt turn infusion specific compartment. specify dose/duration place dosing records time duration starts stops. modeled rate/duration infusion flags infusion flag must followed infusion record. number concatenated together form full RxODE event ID, shown following examples:","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"bolus-dose-examples","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Bolus Dose Examples","title":"Classic rxode2 Events","text":"100 bolus dose compartment #1 time 0 100 bolus dose compartment #99 time 0 100 bolus dose compartment #199 time 0","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"infusion-event-examples","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Infusion Event Examples","title":"Classic rxode2 Events","text":"Bolus infusion rate 50 compartment 1 1.5 hr, (modeled bioavailability changes duration infusion) Bolus infusion rate 50 compartment 1 1.5 hr (modeled bioavailability changes rate infusion) Modeled rate amount 50 Modeled duration amount 50","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"steady-state-for-classic-rxode-evid-example","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Steady State for classic RxODE EVID example","title":"Classic rxode2 Events","text":"Steady state dose cmt 1 Steady State super-positioning principle 50 pm 100 dose","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"steady-state-with-lagged-dose-for-classic-rxode-evid","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Steady state with lagged dose for classic RxODE evid","title":"Classic rxode2 Events","text":"Steady state lagged dose bolus dose: time | evid | amt | ii | 0 | 109 | 100 | 24 | 0 | 101 | 100 | 0 | event 109 calculates trough amount steady state passed (ii-lag_time) event 101 applies next steady state dose. Steady state (=2) lagged bolus dose Steady state infusion lag time time | evid | amt | ii | 0 | 10109 | 5 | 24 | 0 | 10108 | -5 | 24 | 0 | 10101 | 5 | | 20 | 10101 | -5 | | case bolus, 10109 event calculates trough concentration ii=24, may (may ) still infusion running. infusion running 10108 event turn infusion appropriate time. infusion completed, 10108 event ignored. next 2 events 10101 represent event times (assuming bioavailability applied).","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"turning-off-a-compartment-with-classic-rxode-evid","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Turning off a compartment with classic RxODE EVID","title":"Classic rxode2 Events","text":"Turn first compartment time 12 Event coding rxode2 encoded single event number evid. compartments 100, coded : event 0 observation events. 100*(Compartment Number) + 1 dose captured amt 10000 + 100*(Compartment Number) + 1 infusion rate captured amt column infusion turned subtracting amt evid stop infusion. compartments greater equal 100, 100s place digits transferred 100,000th place digit. doses 99th compartment evid bolus dose 9901 evid infusion 19901. bolus dose 199th compartment evid bolus dose 109901. infusion dosing record 199th compartment 119901.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Introduction to rxode2","text":"rxode2 R package facilitates simulation ODE models R. designed pharmacometrics models mind, can applied generally ODE model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"description-of-rxode2-illustrated-through-an-example","dir":"Articles","previous_headings":"","what":"Description of rxode2 illustrated through an example","title":"Introduction to rxode2","text":"model equations can specified text string, model file R expression. differential algebraic equations permitted. Differential equations specified d/dt(var_name) =. equation can separated semicolon. load rxode2 package compile model: Model parameters may specified ini({}) model block, initial conditions can specified within model cmt(0)= X, like model eff(0) <- 1. may also specify subject variability initial conditions residual error components just like nlmixr2. allows single interface nlmixr2/rxode2 models. Also note, classic rxode2 interface still works just like past (don’t worry breaking code time). fact, can get classic rxode2 model $simulationModel ui object:","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ # central KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 # peripheral Q=1.05E+01 V3=2.97E+02 # effects Kin=1 Kout=1 EC50=200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 eff(0) <- 1 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } mod1 <- mod1() # create the ui object (can also use `rxode2(mod1)`) mod1 summary(mod1$simulationModel)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"specify-dosing-and-sampling-in-rxode2","dir":"Articles","previous_headings":"Description of rxode2 illustrated through an example","what":"Specify Dosing and sampling in rxode2","title":"Introduction to rxode2","text":"rxode2 provides simple flexible way specify dosing sampling functions generate event table. First, empty event table generated “et()” function. interface similar NONMEM event tables: can see code, can dose compartment named rxode2 model. slight deviation NONMEM can reduce need compartment renumbering. events can also combined expanded (multi-subject events complex regimens) rbind, c, seq, rep. information creating complex dosing regimens using rxode2 see rxode2 events vignette.","code":"ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(0:240) # Add sampling"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"solving-odes","dir":"Articles","previous_headings":"Description of rxode2 illustrated through an example","what":"Solving ODEs","title":"Introduction to rxode2","text":"ODE can now solved using rxSolve: returns modified data frame. can see compartment values plot : , Note labels automatically labeled units initial event table. rxode2 extracts units label plot (present).","code":"x <- mod1 %>% rxSolve(ev) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ x #> ── Solved rxode2 object ── #> ── Parameters (x$params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions (x$inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows library(ggplot2) plot(x,C2) + ylab(\"Central Concentration\") plot(x,eff) + ylab(\"Effect\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-model-types.html","id":"prediction-only-models","dir":"Articles","previous_headings":"","what":"Prediction only models","title":"rxode2 additional model types","text":"Prediction models simple create. use rxode2 syntax without ODE systems . simple example one-compartment model. Solving rxode2 models saving simple ODE system, faster course.","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` mod <- function(){ model({ ipre <- 10 * exp(-ke * t) }) } et <- et(seq(0,24,length.out=50)) cmt1 <- rxSolve(mod,et,params=c(ke=0.5)) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ cmt1 ## -- Solved rxode2 object -- ## -- Parameters (x$params): -- ## ke ## 0.5 ## -- Initial Conditions (x$inits): -- ## named numeric(0) ## -- First part of data (object): -- ## # A tibble: 50 x 2 ## time ipre ## ## 1 0 10 ## 2 0.490 7.83 ## 3 0.980 6.13 ## 4 1.47 4.80 ## 5 1.96 3.75 ## 6 2.45 2.94 ## # i 44 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-model-types.html","id":"solved-compartment-models","dir":"Articles","previous_headings":"","what":"Solved compartment models","title":"rxode2 additional model types","text":"Solved models also simple create. simply place linCmt() psuedo-function code. linCmt() function figures type model use based parameter names specified. often, pharmacometric models parameterized terms volume clearances. Clearances specified NONMEM-style names CL, Q, Q1, Q2, etc. distributional clearances CLD, CLD2. Volumes specified Central (VC V), Peripheral/Tissue (VP, VT). translations available, example translations : Another popular parameterization terms micro-constants. rxode2 assumes compartment 1 central compartment. elimination constant specified K, Ke Kel. example translations : last parameterization possible using alpha V //B/C. example translations : linCmt() sleuthing complete, 1, 2 3 compartment model solution used value linCmt(). compartments can dose linear solved system depot central linear absorption constant model ka. Without additional ODEs, compartments numbered depot=1 central=2. absorption constant ka missing, may dose central compartment. Without additional ODEs compartment number central=1. compartments take sort events ODE model can take, discussed rxode2 events vignette. acts ODE model; specify dose depot compartment solve system:","code":"mod <- function() { ini({ kel <- 0.5 V <- 1 }) model({ ipre <- linCmt(V, kel) }) } et <- et(amt=10,time=0,cmt=depot) %>% et(seq(0,24,length.out=50)) cmt1 <- rxSolve(mod,et) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ cmt1 ## -- Solved rxode2 object -- ## -- Parameters (x$params): -- ## kel V ## 0.5 1.0 ## -- Initial Conditions (x$inits): -- ## named numeric(0) ## -- First part of data (object): -- ## # A tibble: 50 x 2 ## time ipre ## ## 1 0 10 ## 2 0.490 7.83 ## 3 0.980 6.13 ## 4 1.47 4.80 ## 5 1.96 3.75 ## 6 2.45 2.94 ## # i 44 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-model-types.html","id":"mixing-solved-systems-and-odes","dir":"Articles","previous_headings":"","what":"Mixing Solved Systems and ODEs","title":"rxode2 additional model types","text":"addition pure ODEs, may mix solved systems ODEs. prior 2-compartment indirect response model can simplified linCmt() function: allows indirect response model assign 2-compartment model C2 variable used indirect response model. mixing solved systems ODEs, solved system’s compartment always last compartment. solved system technically isn’t compartment solved. Adding dosing compartment end interfere actual ODE solved. Therefore,two-compartment indirect response model, effect compartment compartment #1 PK dosing compartment depot compartment #2. compartment model requires new event table since compartment number changed: can solved following command: Note solving require specifying effect compartment initial condition 1. Rather, already pre-specified eff(0)=1. can solved different initial conditions easily: rxode2 detective also require specify variables linCmt() function already defined block. Therefore, following function also work solve system. Note specify parameters solving system since built model, can override parameters:","code":"library(rxode2) ## Setup example model mod1 <-function() { model({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) =-KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## Seup parameters and initial conditions theta <- c(KA=2.94E-01, CL=1.86E+01, V2=4.02E+01, # central Q=1.05E+01, V3=2.97E+02, # peripheral Kin=1, Kout=1, EC50=200) # effects inits <- c(eff=1) ## Setup dosing event information ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9, ii=12) %>% et(amt=20000, addl=4, time=120, ii=24) %>% add.sampling(0:240) ## Setup a mixed solved/ode system: mod2 <- function() { model({ ## the order of variables do not matter, the type of compartmental ## model is determined by the parameters specified. C2 = linCmt(KA, CL, V2, Q, V3); eff(0) = 1 ## This specifies that the effect compartment starts at 1. d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; }) } ev <- et(amountUnits='mg', timeUnits='hours') %>% et(amt=10000, addl=9, ii=12, cmt=2) %>% et(amt=20000, addl=4, time=120, ii=24, cmt=2) %>% et(0:240) x <- mod2 %>% solve(theta, ev) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 ## -- Initial Conditions ($inits): -- ## eff ## 1 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 1 ## 2 1 121. 1.35 ## 3 2 60.3 1.38 ## 4 3 31.0 1.28 ## 5 4 17.0 1.18 ## 6 5 10.2 1.11 ## # i 235 more rows x <- mod2 %>% solve(theta, ev,c(eff=2)) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 ## -- Initial Conditions ($inits): -- ## eff ## 2 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 2 ## 2 1 121. 1.93 ## 3 2 60.3 1.67 ## 4 3 31.0 1.41 ## 5 4 17.0 1.23 ## 6 5 10.2 1.13 ## # i 235 more rows mod3 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ # Since the parameters are in the ini block, put them in linCmt so # that the model is detected correctly C2 <- linCmt(KA, CL, V2, Q, V3) eff(0) <- 1 ## This specifies that the effect compartment starts at 1. d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff; }) } x <- mod3 %>% solve(ev) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 ## -- Initial Conditions ($inits): -- ## eff ## 1 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 1 ## 2 1 121. 1.35 ## 3 2 60.3 1.38 ## 4 3 31.0 1.28 ## 5 4 17.0 1.18 ## 6 5 10.2 1.11 ## # i 235 more rows x <- mod3 %>% solve(c(KA=10),ev) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 10.0 18.6 40.2 10.5 297.0 1.0 1.0 200.0 ## -- Initial Conditions ($inits): -- ## eff ## 1 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 1 ## 2 1 121. 1.35 ## 3 2 60.3 1.38 ## 4 3 31.0 1.28 ## 5 4 17.0 1.18 ## 6 5 10.2 1.11 ## # i 235 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"nesting-in-rxode2","dir":"Articles","previous_headings":"","what":"Nesting in rxode2","title":"Nesting levels in rxode2","text":"one level nesting possible rxode2; example using following uncertainties sources variability:","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"event-table","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Event table","title":"Nesting levels in rxode2","text":"event table contains nesting variables: inv: investigator id id: subject id eye: eye id (left right) occ: occasion","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(seq(0, 240, by=4)) %>% # Assumes sampling when there is no dosing information et(seq(0, 240, by=4) + 0.1) %>% ## adds 0.1 for separate eye et(id=1:20) %>% ## Add an occasion per dose mutate(occ=cumsum(!is.na(amt))) %>% mutate(occ=ifelse(occ == 0, 1, occ)) %>% mutate(occ=2- occ %% 2) %>% mutate(eye=ifelse(round(time) == time, 1, 2)) %>% mutate(inv=ifelse(id < 10, 1, 2)) %>% as_tibble -> ev"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"rxode2-model","dir":"Articles","previous_headings":"Nesting in rxode2","what":"rxode2 model","title":"Nesting levels in rxode2","text":"creates rxode2 model multi-level nesting. Note variables inv.Cl, inv.Ka, eta.Cl etc; need one variable level nesting.","code":"mod <- rxode2({ ## Clearance with individuals eff(0) = 1 C2 = centr/V2*(1+prop.sd) C3 = peri/V3 CL = TCl*exp(eta.Cl + eye.Cl + iov.Cl + inv.Cl) KA = TKA * exp(eta.Ka + eye.Ka + iov.Cl + inv.Ka) d/dt(depot) =-KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff ef0 = eff + add.sd }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"uncertainty-in-model-parameters","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Uncertainty in Model parameters","title":"Nesting levels in rxode2","text":"","code":"theta <- c(\"TKA\"=0.294, \"TCl\"=18.6, \"V2\"=40.2, \"Q\"=10.5, \"V3\"=297, \"Kin\"=1, \"Kout\"=1, \"EC50\"=200) ## Creating covariance matrix tmp <- matrix(rnorm(8^2), 8, 8) tMat <- tcrossprod(tmp, tmp) / (8 ^ 2) dimnames(tMat) <- list(names(theta), names(theta)) tMat #> TKA TCl V2 Q V3 #> TKA 0.173571236 -0.1003204607 0.038185010 -0.004108928 -0.095032973 #> TCl -0.100320461 0.2195710868 -0.043849095 0.013295549 -0.007477895 #> V2 0.038185010 -0.0438490948 0.129784612 -0.017270432 -0.038004762 #> Q -0.004108928 0.0132955493 -0.017270432 0.022145634 0.020376451 #> V3 -0.095032973 -0.0074778948 -0.038004762 0.020376451 0.165568340 #> Kin -0.040867119 -0.0492597458 -0.003056722 -0.033468634 -0.003021883 #> Kout 0.035469225 0.0275087955 0.033725901 0.027668205 0.005497301 #> EC50 0.026158042 0.0009434711 0.039426946 -0.036283167 -0.093134292 #> Kin Kout EC50 #> TKA -0.040867119 0.035469225 0.0261580416 #> TCl -0.049259746 0.027508796 0.0009434711 #> V2 -0.003056722 0.033725901 0.0394269465 #> Q -0.033468634 0.027668205 -0.0362831667 #> V3 -0.003021883 0.005497301 -0.0931342922 #> Kin 0.226735493 -0.083447793 0.0659884544 #> Kout -0.083447793 0.117195570 -0.0291684598 #> EC50 0.065988454 -0.029168460 0.0928611407"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"nesting-variability","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Nesting Variability","title":"Nesting levels in rxode2","text":"specify multiple levels nesting, can specify nested lotri matrix; using approach use condition operator | specify variable nesting occurs ; Bayesian simulation need specify much information parameter; rxode2 nu parameter. case: - id, nu=100 model came 100 subjects - eye, nu=200 model came 200 eyes - occ, nu=200 model came 200 occasions - inv, nu=10 model came 10 investigators specify lotri can use | var(nu=X), :","code":"omega <- lotri(lotri(eta.Cl ~ 0.1, eta.Ka ~ 0.1) | id(nu=100), lotri(eye.Cl ~ 0.05, eye.Ka ~ 0.05) | eye(nu=200), lotri(iov.Cl ~ 0.01, iov.Ka ~ 0.01) | occ(nu=200), lotri(inv.Cl ~ 0.02, inv.Ka ~ 0.02) | inv(nu=10)) omega #> $id #> eta.Cl eta.Ka #> eta.Cl 0.1 0.0 #> eta.Ka 0.0 0.1 #> #> $eye #> eye.Cl eye.Ka #> eye.Cl 0.05 0.00 #> eye.Ka 0.00 0.05 #> #> $occ #> iov.Cl iov.Ka #> iov.Cl 0.01 0.00 #> iov.Ka 0.00 0.01 #> #> $inv #> inv.Cl inv.Ka #> inv.Cl 0.02 0.00 #> inv.Ka 0.00 0.02 #> #> Properties: nu"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"unexplained-variability","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Unexplained variability","title":"Nesting levels in rxode2","text":"last piece variability specify unexplained variability","code":"sigma <- lotri(prop.sd ~ .25, add.sd~ 0.125)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"solving-the-problem","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Solving the problem","title":"Nesting levels in rxode2","text":"multiple investigators study; investigator number individuals enrolled site. rxode2 automatically determines number investigators simulate effect investigator. output, inv.Cl(inv==1) inv.Cl investigator 1, inv.Cl(inv==2) inv.Cl investigator 2, etc. inv.Cl(inv==1), inv.Cl(inv==2), etc simulated study combined form investigator variability. equation form represent following: look simulated parameters can see inv.Cl(inv==1) inv.Cl(inv==2) s$params; study: eye variability occasion variability individual simulates number variables become eye occasion variability; case eye: look simulation variables (ie eye.Cl(eye==1), eye.Cl(eye==2), etc) change individual combined make eye variability occasion variability can seen pharamcometric models.","code":"s <- rxSolve(mod, theta, ev, thetaMat=tMat, omega=omega, sigma=sigma, sigmaDf=400, nStud=400) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> unhandled error message: EE:[lsoda] 70000 steps taken before reaching tout #> @(lsoda.c:754 #> Warning: some ID(s) could not solve the ODEs correctly; These values are #> replaced with 'NA' print(s) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> # A tibble: 8,000 x 24 #> sim.id id `inv.Cl(inv==1)` `inv.Cl(inv==2)` `inv.Ka(inv==1)` #> #> 1 1 1 0.00900 -0.117 0.312 #> 2 1 2 0.00900 -0.117 0.312 #> 3 1 3 0.00900 -0.117 0.312 #> 4 1 4 0.00900 -0.117 0.312 #> 5 1 5 0.00900 -0.117 0.312 #> 6 1 6 0.00900 -0.117 0.312 #> 7 1 7 0.00900 -0.117 0.312 #> 8 1 8 0.00900 -0.117 0.312 #> 9 1 9 0.00900 -0.117 0.312 #> 10 1 10 0.00900 -0.117 0.312 #> # i 7,990 more rows #> # i 19 more variables: `inv.Ka(inv==2)` , `eye.Cl(eye==1)` , #> # `eye.Cl(eye==2)` , `eye.Ka(eye==1)` , `eye.Ka(eye==2)` , #> # `iov.Cl(occ==1)` , `iov.Cl(occ==2)` , `iov.Ka(occ==1)` , #> # `iov.Ka(occ==2)` , V2 , V3 , TCl , eta.Cl , #> # TKA , eta.Ka , Q , Kin , Kout , EC50 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> #> Simulation with uncertainty in: #> * parameters ($thetaMat for changes) #> * omega matrix ($omegaList) #> #> -- First part of data (object): -- #> # A tibble: 976,000 x 21 #> sim.id id time inv.Cl inv.Ka eye.Cl eye.Ka iov.Cl iov.Ka C2 C3 #> [h] #> 1 1 1 0 0.00900 0.312 -0.330 -0.0547 0.0370 0.139 0 0 #> 2 1 1 0.1 0.00900 0.312 0.0792 0.185 0.0370 0.139 10.9 0.0108 #> 3 1 1 4 0.00900 0.312 -0.330 -0.0547 0.0370 0.139 41.4 5.58 #> 4 1 1 4.1 0.00900 0.312 0.0792 0.185 0.0370 0.139 20.6 5.69 #> 5 1 1 8 0.00900 0.312 -0.330 -0.0547 0.0370 0.139 4.67 7.95 #> 6 1 1 8.1 0.00900 0.312 0.0792 0.185 0.0370 0.139 12.9 7.97 #> # i 975,994 more rows #> # i 10 more variables: CL , KA , ef0 , depot , centr , #> # peri , eff , occ , eye , inv inv.Cl = (inv == 1) * `inv.Cl(inv==1)` + (inv == 2) * `inv.Cl(inv==2)` print(head(s$params)) #> sim.id id inv.Cl(inv==1) inv.Cl(inv==2) inv.Ka(inv==1) inv.Ka(inv==2) #> 1 1 1 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 2 1 2 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 3 1 3 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 4 1 4 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 5 1 5 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 6 1 6 0.008995575 -0.1165083 0.3118205 -0.001926179 #> eye.Cl(eye==1) eye.Cl(eye==2) eye.Ka(eye==1) eye.Ka(eye==2) iov.Cl(occ==1) #> 1 -0.33023666 0.079190835 -0.05471051 0.18487157 0.037021761 #> 2 -0.42211135 -0.006773841 -0.15399939 0.22463048 -0.007762485 #> 3 -0.05128596 0.123504458 0.18243012 0.13361259 -0.168921159 #> 4 -0.06360621 0.340443016 0.65606292 0.04807945 0.157027939 #> 5 0.08009126 -0.027627640 0.06662396 -0.05838949 -0.226341946 #> 6 -0.11937190 0.090540884 -0.17320340 0.02039840 -0.211648032 #> iov.Cl(occ==2) iov.Ka(occ==1) iov.Ka(occ==2) V2 V3 TCl #> 1 -0.19726803 0.13932112 0.088763868 40.26476 296.4748 19.25043 #> 2 0.04555116 0.07716277 0.049148937 40.26476 296.4748 19.25043 #> 3 0.17916513 0.08347085 -0.002990168 40.26476 296.4748 19.25043 #> 4 -0.13444417 0.24736740 -0.077647794 40.26476 296.4748 19.25043 #> 5 0.02049190 -0.09568733 0.054658457 40.26476 296.4748 19.25043 #> 6 0.12619350 -0.01547841 0.040206608 40.26476 296.4748 19.25043 #> eta.Cl TKA eta.Ka Q Kin Kout EC50 #> 1 0.09788109 0.2354877 -0.21526790 10.43157 0.9256189 1.044937 200.3679 #> 2 0.33302598 0.2354877 -0.01028112 10.43157 0.9256189 1.044937 200.3679 #> 3 0.08504325 0.2354877 0.37253705 10.43157 0.9256189 1.044937 200.3679 #> 4 0.16521678 0.2354877 -0.01859974 10.43157 0.9256189 1.044937 200.3679 #> 5 0.53131380 0.2354877 -0.37109644 10.43157 0.9256189 1.044937 200.3679 #> 6 -0.30786713 0.2354877 0.14897588 10.43157 0.9256189 1.044937 200.3679 print(head(s$params %>% filter(sim.id == 2))) #> sim.id id inv.Cl(inv==1) inv.Cl(inv==2) inv.Ka(inv==1) inv.Ka(inv==2) #> 1 2 1 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 2 2 2 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 3 2 3 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 4 2 4 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 5 2 5 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 6 2 6 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> eye.Cl(eye==1) eye.Cl(eye==2) eye.Ka(eye==1) eye.Ka(eye==2) iov.Cl(occ==1) #> 1 -0.25102634 0.1354374 -0.135230741 -0.01605664 0.081212198 #> 2 -0.24832622 0.2233348 -0.380770273 -0.37101991 0.207985292 #> 3 0.24081384 -0.3826770 0.133361609 -0.32496203 -0.099983807 #> 4 -0.11021791 0.3655308 0.009423897 0.08736599 -0.002580804 #> 5 0.21155058 0.3626918 0.194977611 -0.19452347 0.058392202 #> 6 0.03663028 -0.1003754 0.068047203 0.32368023 0.167658084 #> iov.Cl(occ==2) iov.Ka(occ==1) iov.Ka(occ==2) V2 V3 TCl #> 1 -0.06556217 -0.032678168 -0.061277262 40.21091 296.6424 18.86433 #> 2 -0.05016896 0.130258486 -0.103721118 40.21091 296.6424 18.86433 #> 3 0.06144127 -0.262726137 -0.104186144 40.21091 296.6424 18.86433 #> 4 0.03954265 -0.037289852 -0.021344468 40.21091 296.6424 18.86433 #> 5 0.12713682 -0.007530921 0.081238197 40.21091 296.6424 18.86433 #> 6 -0.02811353 0.026801132 -0.002702762 40.21091 296.6424 18.86433 #> eta.Cl TKA eta.Ka Q Kin Kout EC50 #> 1 0.19368101 0.5686675 0.26184170 10.54673 0.5434136 1.323825 200.09 #> 2 -0.16262369 0.5686675 0.12969487 10.54673 0.5434136 1.323825 200.09 #> 3 0.22164455 0.5686675 0.24501105 10.54673 0.5434136 1.323825 200.09 #> 4 0.05997662 0.5686675 0.03059399 10.54673 0.5434136 1.323825 200.09 #> 5 0.45691421 0.5686675 -0.20098716 10.54673 0.5434136 1.323825 200.09 #> 6 -0.19943300 0.5686675 -0.36846082 10.54673 0.5434136 1.323825 200.09 eye.Cl = (eye == 1) * `eye.Cl(eye==1)` + (eye == 2) * `eye.Cl(eye==2)`"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"setting-up-the-rxode2-model-for-the-pipeline","dir":"Articles","previous_headings":"","what":"Setting up the rxode2 model for the pipeline","title":"rxode2 in a pipeline","text":"example show use rxode2 simple pipeline. can start model can used different simulation workflows rxode2 can handle: tumor growth model described Ribba 2012. case, compiled model R object Ribba2012, though rxode2 simulation pipeline, assign compiled model object, though think makes sense.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` Ribba2012 <- function() { ini({ k = 100 tkde = 0.24 eta.tkde = 0 tkpq = 0.0295 eta.kpq = 0 tkqpp = 0.0031 eta.kqpp = 0 tlambdap = 0.121 eta.lambdap = 0 tgamma = 0.729 eta.gamma = 0 tdeltaqp = 0.00867 eta.deltaqp = 0 prop.sd <- 0 tpt0 = 7.13 eta.pt0 = 0 tq0 = 41.2 eta.q0 = 0 }) model({ kde ~ tkde*exp(eta.tkde) kpq ~ tkpq * exp(eta.kpq) kqpp ~ tkqpp * exp(eta.kqpp) lambdap ~ tlambdap*exp(eta.lambdap) gamma ~ tgamma*exp(eta.gamma) deltaqp ~ tdeltaqp*exp(eta.deltaqp) d/dt(c) = -kde * c d/dt(pt) = lambdap * pt *(1-pstar/k) + kqpp*qp - kpq*pt - gamma*c*kde*pt d/dt(q) = kpq*pt -gamma*c*kde*q d/dt(qp) = gamma*c*kde*q - kqpp*qp - deltaqp*qp ## initial conditions pt0 ~ tpt0*exp(eta.pt0) q0 ~ tq0*exp(eta.q0) pt(0) = pt0 q(0) = q0 pstar <- (pt+q+qp) pstar ~ prop(prop.sd) }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulating-one-event-table","dir":"Articles","previous_headings":"","what":"Simulating one event table","title":"rxode2 in a pipeline","text":"Simulating single event table quite simple: pipe rxode2 simulation object event table object et(). events completely specified, simply solve ODE system rxSolve(). case can pipe output plot() conveniently view results. pt (Proliferative Tissue), q (quiescent tissue) qp (DNA-Damaged quiescent tissue) pstar (total tumor tissue)","code":"Ribba2012 %>% # Use rxode2 et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve() %>% # Solve the simulation plot(pt, q, qp, pstar) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulating-with-between-subject-variability","dir":"Articles","previous_headings":"Simulating multiple subjects from a single event table","what":"Simulating with between subject variability","title":"rxode2 in a pipeline","text":"next sort simulation may useful simulating multiple patients treatments. case, use omega matrix specified paper: information, easy simulate 3 subjects model-based parameters: Note two different things added simulation: - nSub specify many subjects model - omega specify subject variability.","code":"## Add CVs from paper for individual simulation ## Uses exact formula: lognCv = function(x){log((x/100)^2+1)} library(lotri) ## Now create omega matrix ## I'm using lotri to quickly specify names/diagonals omega <- lotri(eta.pt0 ~ lognCv(94), eta.q0 ~ lognCv(54), eta.lambdap ~ lognCv(72), eta.kqp ~ lognCv(76), eta.kqpp ~ lognCv(97), eta.deltaqp ~ lognCv(115), eta.tkde ~ lognCv(70)) omega #> eta.pt0 eta.q0 eta.lambdap eta.kqp eta.kqpp eta.deltaqp #> eta.pt0 0.6331848 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 #> eta.q0 0.0000000 0.2558818 0.0000000 0.0000000 0.0000000 0.0000000 #> eta.lambdap 0.0000000 0.0000000 0.4176571 0.0000000 0.0000000 0.0000000 #> eta.kqp 0.0000000 0.0000000 0.0000000 0.4559047 0.0000000 0.0000000 #> eta.kqpp 0.0000000 0.0000000 0.0000000 0.0000000 0.6631518 0.0000000 #> eta.deltaqp 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.8426442 #> eta.tkde 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 #> eta.tkde #> eta.pt0 0.0000000 #> eta.q0 0.0000000 #> eta.lambdap 0.0000000 #> eta.kqp 0.0000000 #> eta.kqpp 0.0000000 #> eta.deltaqp 0.0000000 #> eta.tkde 0.3987761 set.seed(1089) rxSetSeed(1089) Ribba2012 %>% # Use rxode2 et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=3, omega=omega) %>% # Solve the simulation plot(pt, q, qp, pstar) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> Warning: multi-subject simulation without without 'omega'"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulation-with-unexplained-variability","dir":"Articles","previous_headings":"Simulating multiple subjects from a single event table","what":"Simulation with unexplained variability","title":"rxode2 in a pipeline","text":"can even add unexplained variability quite easily: case added sigma matrix unexplained variability pstar total tumor tissue. can even simulate uncertainty theta omega sigma values wish.","code":"Ribba2012 %>% # Use rxode2 ini(prop.sd=0.05) %>% # change variability et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=3, omega=omega) %>% plot(pt, q, qp, sim) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega' # note that sim is the simulated pstar since this is simulated from the # model with a nlmixr2 endpoint"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulation-with-uncertainty-in-all-the-parameters-by-matrices","dir":"Articles","previous_headings":"Simulating multiple subjects from a single event table","what":"Simulation with uncertainty in all the parameters (by matrices)","title":"rxode2 in a pipeline","text":"assume parameters came 95 subjects 8 observations apiece, degrees freedom omega matrix 95, degrees freedom sigma matrix 95*8=760 95 items informed omega matrix, 760 items informed sigma matrix. Often simulations full covariance matrix fixed effect parameters. case, matrix, specified thetaMat. full covariance matrix, can information diagonal elements covariance matrix model paper. can converted follows: Now thetaMat represent uncertainty theta matrix, well pieces simulation. Typically can put information simulation thetaMat matrix. large variability theta easy sample negative rate constant, make sense. example: correct problems simply need use truncated multivariate normal specify reasonable ranges parameters. theta specified thetaLower thetaUpper. Similar parameters matrices: omegaLower, omegaUpper, sigmaLower sigmaUpper. may named vectors, one numeric value, numeric vector matching number parameters specified thetaMat matrix. case simulation simply modified thetaLower=0 make sure rates positive:","code":"Ribba2012 %>% # Use rxode2 ini(prop.sd = 0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=3, nStud=3, omega=omega, dfSub=760, dfObs=95) %>% # Solve the simulation plot(pt, q, qp, sim) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega' rseVar <- function(est, rse){ return(est*rse/100)^2 } thetaMat <- lotri(tpt0 ~ rseVar(7.13,25), tq0 ~ rseVar(41.2,7), tlambdap ~ rseVar(0.121, 16), tkqpp ~ rseVar(0.0031, 35), tdeltaqp ~ rseVar(0.00867, 21), tgamma ~ rseVar(0.729, 37), tkde ~ rseVar(0.24, 33) ) thetaMat #> tpt0 tq0 tlambdap tkqpp tdeltaqp tgamma tkde #> tpt0 1.7825 0.000 0.00000 0.000000 0.0000000 0.00000 0.0000 #> tq0 0.0000 2.884 0.00000 0.000000 0.0000000 0.00000 0.0000 #> tlambdap 0.0000 0.000 0.01936 0.000000 0.0000000 0.00000 0.0000 #> tkqpp 0.0000 0.000 0.00000 0.001085 0.0000000 0.00000 0.0000 #> tdeltaqp 0.0000 0.000 0.00000 0.000000 0.0018207 0.00000 0.0000 #> tgamma 0.0000 0.000 0.00000 0.000000 0.0000000 0.26973 0.0000 #> tkde 0.0000 0.000 0.00000 0.000000 0.0000000 0.00000 0.0792 Ribba2012 %>% # Use rxode2 ini(prop.sd = 0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=2, nStud=2, omega=omega, thetaMat=thetaMat, dfSub=760, dfObs=95) %>% # Solve the simulation plot(pt, q, qp, pstar) # Plot it, plotting the variables of interest #> ℹ change initial estimate of `prop.sd` to `0.05` #> unhandled error message: EE:[lsoda] 70000 steps taken before reaching tout #> @(lsoda.c:750 #> Warning message: #> In rxSolve_(object, .ctl, .nms, .xtra, params, events, inits, setupOnly = .setupOnly) : #> Some ID(s) could not solve the ODEs correctly; These values are replaced with NA. Ribba2012 %>% # Use rxode2 ini(prop.sd = 0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=2, nStud=2, omega=omega, thetaMat=thetaMat, thetaLower=0, # Make sure the rates are reasonable dfSub=760, dfObs=95) %>% # Solve the simulation plot(pt, q, qp, sim) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega'"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"summarizing-the-simulation-output","dir":"Articles","previous_headings":"","what":"Summarizing the simulation output","title":"rxode2 in a pipeline","text":"easy use dplyr data.table perform summary simulations, rxode2 also provides ability confint function.","code":"## This takes a little more time; Most of the time is the summary ## time. sim0 <- Ribba2012 %>% # Use rxode2 ini(prop.sd=0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=10, nStud=10, omega=omega, thetaMat=thetaMat, thetaLower=0, # Make sure the rates are reasonable dfSub=760, dfObs=95) %>% # Solve the simulation confint(c(\"pt\",\"q\",\"qp\",\"sim\"),level=0.90); # Create Simulation intervals #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega' #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done sim0 %>% plot() # Plot the simulation intervals"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulating-from-a-data-frame-of-parameters","dir":"Articles","previous_headings":"Summarizing the simulation output","what":"Simulating from a data-frame of parameters","title":"rxode2 in a pipeline","text":"simulation matrices can useful fast way simulate information, sometimes may want simulate complex scenarios. instance, may reason believe tkde needs tlambdap, therefore need simulated carefully. can generate data frame whatever way want. internal method simulating new parameters exported .","code":"library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union Ribba2012 <- Ribba2012() # Convert to classic rxode2 model with ini attached r <- Ribba2012$simulationIniModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ pars <- rxInits(r) pars <- pars[regexpr(\"(prop|eta)\",names(pars)) == -1] print(pars) #> k tkde tkpq tkqpp tlambdap tgamma #> 1.00e+02 2.40e-01 2.95e-02 3.10e-03 1.21e-01 7.29e-01 #> tdeltaqp tpt0 tq0 rxerr.pstar #> 8.67e-03 7.13e+00 4.12e+01 1.00e+00 ## This is the exported method for simulation of Theta/Omega internally in rxode2 df <- rxSimThetaOmega(params=pars, omega=omega,dfSub=760, thetaMat=thetaMat, thetaLower=0, nSub=60,nStud=60) %>% filter(tkde > tlambdap) %>% as_tibble() ## You could also simulate more and bind them together to a data frame. print(df) #> # A tibble: 2,100 × 17 #> k tkde tkpq tkqpp tlambdap tgamma tdeltaqp tpt0 tq0 rxerr.pstar #> #> 1 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 2 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 3 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 4 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 5 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 6 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 7 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 8 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 9 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 10 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> # ℹ 2,090 more rows #> # ℹ 7 more variables: eta.pt0 , eta.q0 , eta.lambdap , #> # eta.kqp , eta.kqpp , eta.deltaqp , eta.tkde ## Quick check to make sure that all the parameters are OK. all(df$tkde>df$tlambdap) #> [1] TRUE sim1 <- r %>% # Use rxode2 et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(df) ## Note this information looses information about which ID is in a ## \"study\", so it summarizes the confidence intervals by dividing the ## subjects into sqrt(#subjects) subjects and then summarizes the ## confidence intervals sim2 <- sim1 %>% confint(c(\"pt\",\"q\",\"qp\",\"sim\"),level=0.90); # Create Simulation intervals #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done save(sim2, file = file.path(system.file(package = \"rxode2\"), \"pipeline-sim2.rds\"), version = 2) sim2 %>% plot()"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"setting-up-model-for-plotting-explanation","dir":"Articles","previous_headings":"Plotting in rxode2","what":"Setting up model for plotting explanation","title":"Plotting rxode2 models","text":"first step explain rxode2 model plots setup: rxode2 model event table solved object","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` ## Model from rxode2 tutorial m1 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 }) model({ C2 <- centr / V2 C3 <- peri / V3 d/dt(depot) <- -KA * depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 d/dt(peri) <- Q * C2 - Q * C3 d/dt(eff) <- Kin - Kout * (1 - C2 / (EC50 + C2)) * eff eff(0) <- 1 }) } ev <- et(timeUnits = \"hr\") %>% et(amt = 10000, ii = 12, until = 24) %>% et(seq(0, 24, length.out = 100)) s <- rxSolve(m1, ev) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"default-rxode2-plot","dir":"Articles","previous_headings":"Plotting in rxode2","what":"Default rxode2 plot","title":"Plotting rxode2 models","text":"default plot rxode2 plot time versus state calculated lhs values: Things note: First, plots actually ggplot2 plots can modified standard ggplot2 grammar graphics Also note plot method rxSolve objects can currently use arguments default plot method: log character string contains \"x\" x axis logarithmic, \"y\" y axis logarithmic \"xy\" \"yx\" axes logarithmic. available, use xgxr xgx_scale_x_log10() xgx_scale_y_log10() functions. xlab bit different simply supplying x-label ggplot2, retain unit information originally supplied event table. Also note, available, unit information used used meaningful ticks xgx_scale_x_time_units() ylab supplies y label following currently unsupported: . type b. xlim c. ylim d. main e. sub f. ann g. axes","code":"plot(s)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"subsetting-plots","dir":"Articles","previous_headings":"","what":"Subsetting plots","title":"Plotting rxode2 models","text":"interesting, often useful subset plots based values interested ; example, interesting plot eff C2. , simply specify interesting items plot function. instance:","code":"plot(s, C2, eff)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"semi-log-plots","dir":"Articles","previous_headings":"","what":"Semi-log plots","title":"Plotting rxode2 models","text":"Semi-log plots PK concentrations common; simply need use log=\"y\" uses xgx_scale_y_log10() available clearly show semi-log nature plot.","code":"plot(s, C2, log=\"y\", ylab=\"Concentration\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"plots-with-multi-subject-plots","dir":"Articles","previous_headings":"","what":"Plots with multi-subject plots","title":"Plotting rxode2 models","text":"multi-subject plots can easily plot applying principles . illustrate plot, lets expand event table include plot 4 subjects lognormal random variability subjects; complete, may plot method: Notice colored individual labeled legend. interested concentration, produces similar plot: Notice plot individual labeled attached id let know individual comes . done ggrepel available, otherwise legend retained.","code":"# Setup the new problem m2 <- function() { ini({ KA <- 2.94E-01 TCL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 eta.Cl ~ 0.4^2 }) model({ CL <- TCL * exp(eta.Cl) C2 <- centr / V2 C3 <- peri / V3 d/dt(depot) <- -KA * depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 d/dt(peri) <- Q * C2 - Q * C3 d/dt(eff) <- Kin - Kout * (1 - C2 / (EC50 + C2)) * eff eff(0) <- 1 }) } # Create the event table ev <- et(timeUnits = \"hr\") %>% et(amt = 10000, until = units::set_units(3, days), ii = 12) %>% # loading doses et(seq(0, 48, length.out = 200)) %>% et(id = 1:4) s <- rxSolve(m2, ev) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ plot(s, C2, eff) plot(s, C2, log=\"y\", ylab=\"Concentration\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"multi-subject-plots-with-large-number-of-subjects","dir":"Articles","previous_headings":"Plots with multi-subject plots","what":"Multi-subject plots with large number of subjects","title":"Plotting rxode2 models","text":"can get bit much many subjects solved (example lets simulate 100) case, individuals put plot transparent grayscale plot pane. allows places subjects present darker. number individuals plots switch legend grayscale controlled changing options rxode2.spaghetti. ie. options(rxode2.spaghetti=7). 7 individuals default value plotting changes individual grayscale spaghetti plots. can also create confidence interval simulations confint: plot plot","code":"ev <- et(timeUnits = \"hr\") %>% et(amt = 10000, until = units::set_units(3, days), ii = 12) %>% # loading doses et(seq(0, 48, length.out = 200)) %>% et(id = 1:100) # 100 subjects s <- rxSolve(m2, ev) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments plot(s, C2, log=\"y\", ylab=\"Concentration\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values. s2 <- confint(s, parm=\"C2\") ## ! in order to put confidence bands around the intervals, you need at least 2500 simulations ## summarizing data...done plot(s2)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-prior-data.html","id":"using-prior-data-for-solving","dir":"Articles","previous_headings":"","what":"Using prior data for solving","title":"Using Prior Data for ODE solving","text":"rxode2 can use single subject multiple subjects single event table solve ODEs. Additionally, rxode2 can use arbitrary data frame individualized events. example using nlmixr, use theo_sd data frame","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` library(nlmixr2data) ## Load data from nlmixr d <- theo_sd ## Create rxode2 model theo <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v }) } ## Create parameter dataset library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union parsDf <- tribble( ~ eta.ka, ~ eta.cl, ~ eta.v, 0.105, -0.487, -0.080, 0.221, 0.144, 0.021, 0.368, 0.031, 0.058, -0.277, -0.015, -0.007, -0.046, -0.155, -0.142, -0.382, 0.367, 0.203, -0.791, 0.160, 0.047, -0.181, 0.168, 0.096, 1.420, 0.042, 0.012, -0.738, -0.391, -0.170, 0.790, 0.281, 0.146, -0.527, -0.126, -0.198) %>% mutate(tka = 0.451, tcl = 1.017, tv = 3.449) ## Now solve the dataset solveData <- rxSolve(theo, parsDf, d) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ plot(solveData, cp) print(solveData) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> # A tibble: 12 × 7 #> id tka tcl tv eta.ka eta.cl eta.v #> #> 1 1 0.451 1.02 3.45 0.105 -0.487 -0.08 #> 2 2 0.451 1.02 3.45 0.221 0.144 0.021 #> 3 3 0.451 1.02 3.45 0.368 0.031 0.058 #> 4 4 0.451 1.02 3.45 -0.277 -0.015 -0.007 #> 5 5 0.451 1.02 3.45 -0.046 -0.155 -0.142 #> 6 6 0.451 1.02 3.45 -0.382 0.367 0.203 #> 7 7 0.451 1.02 3.45 -0.791 0.16 0.047 #> 8 8 0.451 1.02 3.45 -0.181 0.168 0.096 #> 9 9 0.451 1.02 3.45 1.42 0.042 0.012 #> 10 10 0.451 1.02 3.45 -0.738 -0.391 -0.17 #> 11 11 0.451 1.02 3.45 0.79 0.281 0.146 #> 12 12 0.451 1.02 3.45 -0.527 -0.126 -0.198 #> ── Initial Conditions ($inits): ── #> depot center #> 0 0 #> ── First part of data (object): ── #> # A tibble: 132 × 8 #> id time ka cl v cp depot center #> #> 1 1 0 1.74 1.70 29.0 0 320. 0 #> 2 1 0.25 1.74 1.70 29.0 3.86 207. 112. #> 3 1 0.57 1.74 1.70 29.0 6.81 118. 198. #> 4 1 1.12 1.74 1.70 29.0 9.06 45.4 263. #> 5 1 2.02 1.74 1.70 29.0 9.79 9.45 284. #> 6 1 3.82 1.74 1.70 29.0 9.10 0.410 264. #> # ℹ 126 more rows ## Of course the fasest way to solve if you don't care about the rxode2 extra parameters is solveData <- rxSolve(theo, parsDf, d, returnType=\"data.frame\") #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ## solved data dplyr::as_tibble(solveData) #> # A tibble: 132 × 8 #> id time ka cl v cp depot center #> #> 1 1 0 1.74 1.70 29.0 0 320. 0 #> 2 1 0.25 1.74 1.70 29.0 3.86 207. 112. #> 3 1 0.57 1.74 1.70 29.0 6.81 118. 198. #> 4 1 1.12 1.74 1.70 29.0 9.06 45.4 263. #> 5 1 2.02 1.74 1.70 29.0 9.79 9.45 284. #> 6 1 3.82 1.74 1.70 29.0 9.10 0.410 264. #> 7 1 5.1 1.74 1.70 29.0 8.46 0.0440 246. #> 8 1 7.03 1.74 1.70 29.0 7.56 0.00152 219. #> 9 1 9.05 1.74 1.70 29.0 6.71 0.0000449 195. #> 10 1 12.1 1.74 1.70 29.0 5.61 0.000000212 163. #> # ℹ 122 more rows data.table::data.table(solveData) #> id time ka cl v cp depot center #> #> 1: 1 0.00 1.7436838 1.698932 29.04946 0.000000 3.199920e+02 0.00000 #> 2: 1 0.25 1.7436838 1.698932 29.04946 3.861730 2.069289e+02 112.18117 #> 3: 1 0.57 1.7436838 1.698932 29.04946 6.805372 1.184389e+02 197.69240 #> 4: 1 1.12 1.7436838 1.698932 29.04946 9.058196 4.539354e+01 263.13572 #> 5: 1 2.02 1.7436838 1.698932 29.04946 9.791088 9.450361e+00 284.42585 #> --- #> 128: 12 5.07 0.9268162 2.437566 25.81614 8.442535 2.919432e+00 217.95370 #> 129: 12 7.07 0.9268162 2.437566 25.81614 7.074251 4.573778e-01 182.62989 #> 130: 12 9.03 0.9268162 2.437566 25.81614 5.892253 7.436222e-02 152.11524 #> 131: 12 12.05 0.9268162 2.437566 25.81614 4.432614 4.526550e-03 114.43300 #> 132: 12 24.15 0.9268162 2.437566 25.81614 1.414179 6.154773e-08 36.50865"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-rxUse.html","id":"using-pre-compiled-models-in-your-packages","dir":"Articles","previous_headings":"","what":"Using Pre-compiled models in your packages","title":"Compiled rxode2 models in Packages","text":"package like include pre-compiled rxode2 models package easy create package. simple make package rxPkg() command. : Add model package; can use package data idr package loads Add right package requirements DESCRIPTION file. want update describe package modify authors, license etc. Create skeleton model documentation files can add package documentation. case file idr-doc.R R directory Create configure configure.win script removes regenerates src directory based whatever version rxode2 compiled . modified plan compiled code, though suggested. can write R code package interacts rxode2 object can distribute shiny apps similar things package context. present can add models package rxUse(). Simply compile rxode2 model package add model rxUse() Now model idr model library. also create model-doc.R R directory can document model. can use devtools methods install/test model","code":"library(rxode2); ## Now Create a model idr <- rxode2({ C2 = centr/V2; C3 = peri/V3; d/dt(depot) =-KA*depot; d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) = Q*C2 - Q*C3; d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; }) ## You can specify as many models as you want to add rxPkg(idr, package=\"myPackage\"); ## Add the idr model to your package rxUse(model) devtools::load_all() # Load all the functions in the package devtools::document() # Create package documentation devtools::install() # Install package devtools::check() # Check the package devtools::build() # build the package so you can submit it to places like CRAN"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-rxUse.html","id":"using-models-in-a-already-present-package","dir":"Articles","previous_headings":"","what":"Using Models in a already present package","title":"Compiled rxode2 models in Packages","text":"illustrate, lets start blank package rxUse() : - Create rxode2 sources move package’s src/ directory. R source package, also finish directory library-init.c registers rxode2 models package use R. - Create stub R documentation models including package. able see R documentation loading package standard ? interface. still need : - Export least one function. function wish export, can add re-export rxode2 using roxygen follows: want use Suggests instead Depends package, way want export rxode2’s normal routines also need instruct R load model library models included model’s dll. done : R package rxode2 models intend add compiled sources (recommended), can add following configure scripts Depending check may need dummy autoconf script, want integrate sources Rcpp C/Fortan based packages, need include rxModels-compiled.h : - Add define macro compiledModelCall list registered .Call functions. - Register C interface allow model solving R_init0_rxModels_rxode2_models() (rxModels replaced package name). complete, can compile/document standard methods: load package new version rxode2, models recompiled used. However, want models recompiled recent version rxode2, simply need call rxUse() project directory followed standard methods install/create package. Note include rxode2 code required generate model regenerate rxode2 c-code src directory. rxode2 objects, summary show one way recreate model. example compiled models package can found rxModels repository.","code":"library(rxode2) library(usethis) pkgPath <- file.path(rxTempDir(),\"MyRxModel\") create_package(pkgPath); use_gpl3_license(\"Matt\") use_package(\"rxode2\", \"LinkingTo\") use_package(\"rxode2\", \"Depends\") ## library(rxode2) on load; Can use imports instead. use_roxygen_md() ##use_readme_md() library(rxode2); ## Now Create a model idr <- rxode2({ C2 = centr/V2; C3 = peri/V3; d/dt(depot) =-KA*depot; d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) = Q*C2 - Q*C3; d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; }); rxUse(idr); ## Add the idr model to your package rxUse(); # Update the compiled rxode2 sources for all of your packages ##' @importFrom rxode2 rxode2 ##' @export rxode2::rxode2 ##' @importFrom rxode2 rxode2 ##' @export rxode2::rxode2 ##' @importFrom rxode2 et ##' @export rxode2::et ##' @importFrom rxode2 etRep ##' @export rxode2::etRep ##' @importFrom rxode2 etSeq ##' @export rxode2::etSeq ##' @importFrom rxode2 as.et ##' @export rxode2::as.et ##' @importFrom rxode2 eventTable ##' @export rxode2::eventTable ##' @importFrom rxode2 add.dosing ##' @export rxode2::add.dosing ##' @importFrom rxode2 add.sampling ##' @export rxode2::add.sampling ##' @importFrom rxode2 rxSolve ##' @export rxode2::rxSolve ##' @importFrom rxode2 rxControl ##' @export rxode2::rxControl ##' @importFrom rxode2 rxClean ##' @export rxode2::rxClean ##' @importFrom rxode2 rxUse ##' @export rxode2::rxUse ##' @importFrom rxode2 rxShiny ##' @export rxode2::rxShiny ##' @importFrom rxode2 genShinyApp.template ##' @export rxode2::genShinyApp.template ##' @importFrom rxode2 cvPost ##' @export rxode2::cvPost # This is actually from `magrittr` but allows less imports ##' @importFrom rxode2 %>% ##' @export rxode2::`%>%` # In this case `rxModels` is the package name ##' @useDynLib rxModels, .registration=TRUE #!/bin/sh # This should be used for both configure and configure.win echo \"unlink('src', recursive=TRUE);rxode2::rxUse()\" > build.R ${R_HOME}/bin/Rscript build.R rm build.R ## dummy autoconf script ## It is saved to configure.ac devtools::load_all() devtools::document() devtools::install() devtools::load_all() devtools::document() devtools::install()"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-shiny.html","id":"facilities-for-generating-r-shiny-applications","dir":"Articles","previous_headings":"","what":"Facilities for generating R shiny applications","title":"rxode2 and Shiny","text":"example creating R shiny application interactively explore responses various complex dosing regimens available http://qsp.engr.uga.edu:3838/rxode2/RegimenSimulator. Shiny applications like one may programmatically created experimental function genShinyApp.template(). application includes widgets varying dose, dosing regimen, dose cycle, number cycles. Click go Shiny App","code":"genShinyApp.template(appDir = \"shinyExample\", verbose=TRUE) library(shiny) runApp(\"shinyExample\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-shiny.html","id":"exploring-parameter-fits-graphically-using-shiny","dir":"Articles","previous_headings":"","what":"Exploring parameter fits graphically using shiny","title":"rxode2 and Shiny","text":"rxode2 object can explored rxShiny(obj). rxShiny() also allow try new models see behave.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-variability-with-rxode2","dir":"Articles","previous_headings":"Population Simulations with rxode2","what":"Simulation of Variability with rxode2","title":"rxode2 Simulation","text":"pharmacometrics nonlinear-mixed effect modeling software (like nlmixr) characterizes -subject variability. subject variability can simulate new subjects. Assuming 2-compartment, indirect response model, can set create rxode2 model describing system :","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"setting-up-the-rxode2-model","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Setting up the rxode2 model","title":"rxode2 Simulation","text":"","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` set.seed(32) rxSetSeed(32) mod <- function() { ini({ KA <- 2.94E-01 TCl <- 1.86E+01 # between subject variability eta.Cl ~ 0.4^2 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 CL <- TCl*exp(eta.Cl) ## This is coded as a variable in the model d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulating","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Simulating","title":"rxode2 Simulation","text":"next step simulate create dosing regimen overall simulation: wish, can also add sampling times (though rxode2 can fill ): Note et takes similar arguments seq adding sampling times. methods adding sampling times events make complex dosing regimens (See event vignette). includes ways add variability sampling dosing times). complete can simulate using rxSolve routine: quickly look customize simulation use default plot routine. Since rxode2 object, create ggplot2 object can modify wish. extra parameter plot tells rxode2/R piece information interested plotting. case, interested looking derived parameter C2:","code":"ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=\"centr\") ev <- ev %>% et(0,48, length.out=100) sim <- rxSolve(mod, ev, nSub=100) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"checking-the-simulation-with-plot","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Checking the simulation with plot","title":"rxode2 Simulation","text":"course additional parameter also state value, like eff: even look two side--side: stack patchwork","code":"library(ggplot2) ## The plots from rxode2 are ggplots so they can be modified with ## standard ggplot commands. plot(sim, C2, log=\"y\") + ylab(\"Central Compartment\") ## They also takes many of the standard plot arguments; See ?plot plot(sim, eff, ylab=\"Effect\") plot(sim, C2, eff) library(patchwork) plot(sim, C2, log=\"y\") / plot(sim, eff)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"processing-the-data-to-create-summary-plots","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Processing the data to create summary plots","title":"rxode2 Simulation","text":"Usually pharmacometric simulations enough simply simulate system. something easier digest, like look central extreme tendencies simulation. Since rxode2 solve object type data frame now straightforward perform calculations generate plots simulated data. can , 5th, 50th, 95th percentiles simulated data plotted. Note can see parameters simulated example","code":"confint(sim, \"C2\", level=0.95) %>% plot(ylab=\"Central Concentration\", log=\"y\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done confint(sim, \"eff\", level=0.95) %>% plot(ylab=\"Effect\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done head(sim$param) #> sim.id KA TCl V2 Q V3 Kin Kout EC50 eta.Cl #> 1 1 0.294 18.6 40.2 10.5 297 1 1 200 0.8067570 #> 2 2 0.294 18.6 40.2 10.5 297 1 1 200 0.0236961 #> 3 3 0.294 18.6 40.2 10.5 297 1 1 200 -0.3340697 #> 4 4 0.294 18.6 40.2 10.5 297 1 1 200 -0.1098197 #> 5 5 0.294 18.6 40.2 10.5 297 1 1 200 -0.2803752 #> 6 6 0.294 18.6 40.2 10.5 297 1 1 200 -0.2114090"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-unexplained-variability-sigma","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Simulation of unexplained variability (sigma)","title":"rxode2 Simulation","text":"addition conveniently simulating subject variability, can also easily simulate unexplained variability. One way create rxode2 model endpoints defined. Model piping can keeping model intact: can see dataset defined $multipleEndpoint: see endpoints defined eff C2: allows solve system: Since simulated model residual specification included multiple endpoint model, can summarize endpoint simply taking confidence interval \"sim\": want subset specific endpoint, like eff can create confidence interval endpoint using specification sim.eff, endpoint name separated sim dot:","code":"mod2 <- mod %>% model(eff ~ add(eff.sd), append=TRUE) %>% model(C2 ~ prop(prop.sd), append=TRUE) %>% ini(eff.sd=sqrt(0.1), prop.sd=sqrt(0.1)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ add residual parameter `eff.sd` and set estimate to 1 #> ℹ add residual parameter `prop.sd` and set estimate to 1 #> ℹ change initial estimate of `eff.sd` to `0.316227766016838` #> ℹ change initial estimate of `prop.sd` to `0.316227766016838` mod2$multipleEndpoint #> variable cmt dvid* #> 1 eff ~ … cmt='eff' or cmt=4 dvid='eff' or dvid=1 #> 2 C2 ~ … cmt='C2' or cmt=5 dvid='C2' or dvid=2 ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=\"centr\") %>% et(seq(0,48, length.out=100), cmt=\"eff\") %>% et(seq(0,48, length.out=100), cmt=\"C2\") sim <- rxSolve(mod2, ev, nSub=100) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ s <- confint(sim, \"sim\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(s) seff <- confint(sim, \"sim.eff\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(seff)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-individuals","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Simulation of Individuals","title":"rxode2 Simulation","text":"Sometimes may want match dosing observations individuals clinical trial. create data.frame using rxode2 event specification well ID column indicate individual. rxode2 event vignette talks datasets created.","code":"library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union ev1 <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=2) %>% et(0,48,length.out=10) ev2 <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=5000, cmt=2) %>% et(0,48,length.out=8) dat <- rbind(data.frame(ID=1, ev1$get.EventTable()), data.frame(ID=2, ev2$get.EventTable())) ## Note the number of subject is not needed since it is determined by the data sim <- rxSolve(mod, dat) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ sim %>% select(id, time, eff, C2) #> id time eff C2 #> 1 1 0.000000 [h] 1.000000 248.7562189 #> 2 1 5.333333 [h] 1.062982 5.3970840 #> 3 1 10.666667 [h] 1.013881 2.5901710 #> 4 1 16.000000 [h] 1.011565 2.2550581 #> 5 1 21.333333 [h] 1.010158 1.9820213 #> 6 1 26.666667 [h] 1.008929 1.7422286 #> 7 1 32.000000 [h] 1.007849 1.5314615 #> 8 1 37.333333 [h] 1.006899 1.3461870 #> 9 1 42.666667 [h] 1.006064 1.1833253 #> 10 1 48.000000 [h] 1.005330 1.0401683 #> 11 2 0.000000 [h] 1.000000 124.3781095 #> 12 2 6.857143 [h] 1.005764 0.7047232 #> 13 2 13.714286 [h] 1.002879 0.5592808 #> 14 2 20.571429 [h] 1.002381 0.4630160 #> 15 2 27.428571 [h] 1.001971 0.3833262 #> 16 2 34.285714 [h] 1.001632 0.3173516 #> 17 2 41.142857 [h] 1.001351 0.2627315 #> 18 2 48.000000 [h] 1.001118 0.2175123"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-clinical-trials","dir":"Articles","previous_headings":"","what":"Simulation of Clinical Trials","title":"rxode2 Simulation","text":"either using simple single event table, data clinical trial described , complete clinical trial simulation can performed. Typically clinical trial simulations want account uncertainty fixed parameter estimates, even uncertainty subject variability well unexplained variability. rxode2 allows account uncertainties simulating multiple virtual “studies,” specified parameter nStud. studies samples realization fixed effect parameters covariance matrices subject variability(omega) unexplained variabilities (sigma). Depending information models, strategies simulating realization omega sigma matrices. first strategy occurs either standard errors standard deviations (related parameters), modeled correlation model simulating . case suggested strategy use inverse Wishart (parameterized scale conjugate prior)/scaled inverse chi distribution. approach uses single parameter inform variability covariance matrix sampled (degrees freedom). second strategy occurs standard errors variance/standard deviation modeled correlations covariance matrix. approach perform separate simulations standard deviations correlation matrix. First simulate variance/standard deviation components thetaMat multivariate normal simulation. simulation transformation standard deviations, correlation matrix simulated using degrees freedom covariance matrix. Combining simulated standard deviation simulated correlation matrix give simulated covariance matrix. smaller dimension covariance matrices (dimension < 10x10) recommended use lkj distribution simulate correlation matrix. higher dimension covariance matrices suggested use inverse wishart distribution (transformed correlation matrix) simulations. covariance/variance prior simulated rxode2s cvPost() function.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-from-inverse-wishart-correlations","dir":"Articles","previous_headings":"Simulation of Clinical Trials","what":"Simulation from inverse Wishart correlations","title":"rxode2 Simulation","text":"example simulation : wish can see omega sigma used virtual study accessing solved data object $omega.list $sigma.list: can also see parameter realizations $params data frame.","code":"## Creating covariance matrix tmp <- matrix(rnorm(8^2), 8, 8) tMat <- tcrossprod(tmp, tmp) / (8 ^ 2) dimnames(tMat) <- list(NULL, names(mod2$theta)[1:8]) sim <- rxSolve(mod2, ev, nSub=100, thetaMat=tMat, nStud=10, dfSub=10, dfObs=100) s <-sim %>% confint(\"sim\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(s) head(sim$omegaList) #> [[1]] #> eta.Cl #> eta.Cl 0.1676778 #> #> [[2]] #> eta.Cl #> eta.Cl 0.2917085 #> #> [[3]] #> eta.Cl #> eta.Cl 0.1776813 #> #> [[4]] #> eta.Cl #> eta.Cl 0.1578682 #> #> [[5]] #> eta.Cl #> eta.Cl 0.1845614 #> #> [[6]] #> eta.Cl #> eta.Cl 0.3282268 head(sim$sigmaList) #> [[1]] #> rxerr.eff rxerr.C2 #> rxerr.eff 1.12416983 0.04197039 #> rxerr.C2 0.04197039 0.97293971 #> #> [[2]] #> rxerr.eff rxerr.C2 #> rxerr.eff 0.84311199 -0.06277998 #> rxerr.C2 -0.06277998 1.22140938 #> #> [[3]] #> rxerr.eff rxerr.C2 #> rxerr.eff 0.9834771 0.1060251 #> rxerr.C2 0.1060251 1.0024751 #> #> [[4]] #> rxerr.eff rxerr.C2 #> rxerr.eff 1.25556975 0.07690868 #> rxerr.C2 0.07690868 0.90991261 #> #> [[5]] #> rxerr.eff rxerr.C2 #> rxerr.eff 1.116261 -0.184748 #> rxerr.C2 -0.184748 1.320288 #> #> [[6]] #> rxerr.eff rxerr.C2 #> rxerr.eff 0.93539238 0.07270049 #> rxerr.C2 0.07270049 0.98648424"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulate-using-covariance-inputs","dir":"Articles","previous_headings":"Simulation of Clinical Trials","what":"Simulate using covariance inputs","title":"rxode2 Simulation","text":"Lets assume wish simulate nonmem run included xpose First setup model; Since taking nonmem like use free-form style classic rxode2 model start classic model: Next input estimated parameters: also covariances; , easiest way create named covariance matrix use lotri():","code":"rx1 <- rxode2({ cl <- tcl*(1+crcl.cl*(CLCR-65)) * exp(eta.cl) v <- tv * WT * exp(eta.v) ka <- tka * exp(eta.ka) ipred <- linCmt() obs <- ipred * (1 + prop.sd) + add.sd }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ theta <- c(tcl=2.63E+01, tv=1.35E+00, tka=4.20E+00, tlag=2.08E-01, prop.sd=2.05E-01, add.sd=1.06E-02, crcl.cl=7.17E-03, ## Note that since we are using the separation strategy the ETA variances are here too eta.cl=7.30E-02, eta.v=3.80E-02, eta.ka=1.91E+00) thetaMat <- lotri( tcl + tv + tka + tlag + prop.sd + add.sd + crcl.cl + eta.cl + eta.v + eta.ka ~ c(7.95E-01, 2.05E-02, 1.92E-03, 7.22E-02, -8.30E-03, 6.55E-01, -3.45E-03, -6.42E-05, 3.22E-03, 2.47E-04, 8.71E-04, 2.53E-04, -4.71E-03, -5.79E-05, 5.04E-04, 6.30E-04, -3.17E-06, -6.52E-04, -1.53E-05, -3.14E-05, 1.34E-05, -3.30E-04, 5.46E-06, -3.15E-04, 2.46E-06, 3.15E-06, -1.58E-06, 2.88E-06, -1.29E-03, -7.97E-05, 1.68E-03, -2.75E-05, -8.26E-05, 1.13E-05, -1.66E-06, 1.58E-04, -1.23E-03, -1.27E-05, -1.33E-03, -1.47E-05, -1.03E-04, 1.02E-05, 1.67E-06, 6.68E-05, 1.56E-04, 7.69E-02, -7.23E-03, 3.74E-01, 1.79E-03, -2.85E-03, 1.18E-05, -2.54E-04, 1.61E-03, -9.03E-04, 3.12E-01)) evw <- et(amount.units=\"mg\", time.units=\"hours\") %>% et(amt=100) %>% ## For this problem we will simulate with sampling windows et(list(c(0, 0.5), c(0.5, 1), c(1, 3), c(3, 6), c(6, 12))) %>% et(id=1:1000) ## From the run we know that: ## total number of observations is: 476 ## Total number of individuals: 74 sim <- rxSolve(rx1, theta, evw, nSub=100, nStud=10, thetaMat=thetaMat, ## Match boundaries of problem thetaLower=0, sigma=c(\"prop.sd\", \"add.sd\"), ## Sigmas are standard deviations sigmaXform=\"identity\", # default sigma xform=\"identity\" omega=c(\"eta.cl\", \"eta.v\", \"eta.ka\"), ## etas are variances omegaXform=\"variance\", # default omega xform=\"variance\" iCov=data.frame(WT=rnorm(1000, 70, 15), CLCR=rnorm(1000, 65, 25)), dfSub=74, dfObs=476); #> ℹ thetaMat has too many items, ignored: 'tlag' print(sim) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> # A tibble: 10,000 × 9 #> sim.id id tcl crcl.cl eta.cl tv eta.v tka eta.ka #> #> 1 1 1 27.0 0.995 0.489 1.45 0.975 4.51 -0.186 #> 2 1 2 27.0 0.995 -0.770 1.45 0.0294 4.51 -0.116 #> 3 1 3 27.0 0.995 -2.13 1.45 0.187 4.51 0.941 #> 4 1 4 27.0 0.995 0.333 1.45 -0.346 4.51 -0.686 #> 5 1 5 27.0 0.995 1.01 1.45 0.978 4.51 1.69 #> 6 1 6 27.0 0.995 -0.474 1.45 1.06 4.51 -0.641 #> 7 1 7 27.0 0.995 -0.0488 1.45 1.18 4.51 0.395 #> 8 1 8 27.0 0.995 0.267 1.45 0.164 4.51 1.41 #> 9 1 9 27.0 0.995 -1.19 1.45 1.24 4.51 -0.726 #> 10 1 10 27.0 0.995 -0.163 1.45 -0.00741 4.51 -0.799 #> # ℹ 9,990 more rows #> ── Initial Conditions ($inits): ── #> named numeric(0) #> #> Simulation with uncertainty in: #> • parameters ($thetaMat for changes) #> • omega matrix ($omegaList) #> • sigma matrix ($sigmaList) #> #> ── First part of data (object): ── #> # A tibble: 50,000 × 10 #> sim.id id time cl v ka ipred obs WT CLCR #> [h] #> 1 1 1 0.0155 230. 240. 3.74 0.0234 1.08 62.2 69.3 #> 2 1 1 0.749 230. 240. 3.74 0.239 0.680 62.2 69.3 #> 3 1 1 1.02 230. 240. 3.74 0.198 0.0443 62.2 69.3 #> 4 1 1 3.41 230. 240. 3.74 0.0213 0.275 62.2 69.3 #> 5 1 1 7.81 230. 240. 3.74 0.000311 1.21 62.2 69.3 #> 6 1 2 0.0833 515. 53.3 4.01 0.358 0.620 35.7 105. #> # ℹ 49,994 more rows ## Notice that the simulation time-points change for the individual ## If you want the same sampling time-points you can do that as well: evw <- et(amount.units=\"mg\", time.units=\"hours\") %>% et(amt=100) %>% et(0, 24, length.out=50) %>% et(id=1:100) sim <- rxSolve(rx1, theta, evw, nSub=100, nStud=10, thetaMat=thetaMat, ## Match boundaries of problem thetaLower=0, sigma=c(\"prop.sd\", \"add.sd\"), ## Sigmas are standard deviations sigmaXform=\"identity\", # default sigma xform=\"identity\" omega=c(\"eta.cl\", \"eta.v\", \"eta.ka\"), ## etas are variances omegaXform=\"variance\", # default omega xform=\"variance\" iCov=data.frame(WT=rnorm(100, 70, 15), CLCR=rnorm(100, 65, 25)), dfSub=74, dfObs=476, resample=TRUE) #> ℹ thetaMat has too many items, ignored: 'tlag' s <-sim %>% confint(c(\"ipred\")) #> summarizing data... #> done plot(s)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulate-without-uncertainty-in-omega-or-sigma-parameters","dir":"Articles","previous_headings":"Simulation of Clinical Trials","what":"Simulate without uncertainty in omega or sigma parameters","title":"rxode2 Simulation","text":"wish sample prior distributions either omega sigma matrices, can turn feature specifying simVariability = FALSE option solving: Note since realizations omega sigma simulated, $omegaList $sigmaList return NULL.","code":"sim <- rxSolve(mod2, ev, nSub=100, thetaMat=tMat, nStud=10, simVariability=FALSE) s <-sim %>% confint(c(\"centr\", \"eff\")) #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(s)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-single-subject.html","id":"single-subject-solving","dir":"Articles","previous_headings":"","what":"Single Subject solving","title":"Single Subject ODE solving -- differences from multiple subject","text":"Originally, rxode2 created solve ODEs one individual. single system without changes individual parameters. course still supported, classic examples found rxode2 intro. article discusses differences multiple subject single subject solving. three differences: Single solving solve ID parallel Single solving lacks id column parameters($params) well actual dataset. Single solving allows parameter exploration easier parameter can modified. multiple subject solves, make sure update individual parameter. first obvious difference speed; multiple subjects can run subject ID parallel. information examples speed gains multiple subject solving see Speeding rxode2 vignette. next difference amount information output final data. Taking 2 compartment indirect response model originally tutorial: Now simple solve better see differences single solve, can solve 2 individuals observing two solves, can see: multiple subject solve contains id column data frame data frame parameters subject. last feature obvious, modifying individual parameters. single subject data, can modify rxode2 data frame changing initial conditions parameter values part data frame, described rxode2 Data Frames. multiple subject solving, feature still works, requires care supplying individual’s parameter value, otherwise may change solve drop parameter key individuals.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 Q=1.05E+01 V3=2.97E+02 Kin=1 Kout=1 EC50=200 }) model({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) =-KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 }) } et <- et(amount.units='mg', time.units='hours') %>% et(dose=10000, addl=9, ii=12) %>% et(amt=20000, nbr.doses=5, start.time=120, dosing.interval=24) %>% et(0:240) # sampling x <- rxSolve(mod1, et) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments x #> ── Solved rxode2 object ── #> ── Parameters (x$params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions (x$inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows print(x) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions ($inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows plot(x, C2, eff) x2 <- rxSolve(mod1, et %>% et(id=1:2), params=data.frame(CL=c(18.6, 7.6))) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(x2) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> # A tibble: 2 × 9 #> id KA CL V2 Q V3 Kin Kout EC50 #> #> 1 1 0.294 18.6 40.2 10.5 297 1 1 200 #> 2 2 0.294 7.6 40.2 10.5 297 1 1 200 #> ── Initial Conditions ($inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 482 × 8 #> id time C2 C3 depot centr peri eff #> [h] #> 1 1 0 0 0 10000 0 0 1 #> 2 1 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 1 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 1 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 1 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 1 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 476 more rows plot(x2, C2, eff)"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"a-note-about-the-speed-of-the-functional-form-for-rxode2","dir":"Articles","previous_headings":"","what":"A note about the speed of the functional form for rxode2","title":"Speeding up rxode2","text":"functional form benefit supported nlmixr2 therefore one interface solving estimating, takes computation time get underlying “classic” simulation code. models form : can also specify end-points simulation/estimation just like nlmixr2: every solve, compile (cached compile) underlying model. wish speed process can use two underlying rxode2 classic models. takes two steps: Parsing/evaluating model Creating simulation model first step can done rxode2(mod1) mod1() (second model ). second step create underlying “classic” rxode2 model, can done two different methods:$simulationModel $simulationIniModel. $simulationModel provide simulation code without initial conditions pre-pended, $simulationIniModel pre-pend values. endpoints specified, simulation code endpoint also output. can see differences : wish speed multiple simualtions rxode2 functions, need pre-calculate care steps : functions can act like normal ui model solved. can convert back UI .rxUi() function .function() needed. increase speed multiple simulations model use lower level simulation model (ie $simulationModel $simulationIniModel depending need)","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ KA <- 0.3 CL <- 7 V2 <- 40 Q <- 10 V3 <- 300 Kin <- 0.2 Kout <- 0.2 EC50 <- 8 }) model({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 }) } mod2f <- function() { ini({ TKA <- 0.3 TCL <- 7 TV2 <- 40 TQ <- 10 TV3 <- 300 TKin <- 0.2 TKout <- 0.2 TEC50 <- 8 eta.cl + eta.v ~ c(0.09, 0.08, 0.25) c2.prop.sd <- 0.1 eff.add.sd <- 0.1 }) model({ KA <- TKA CL <- TCL*exp(eta.cl) V2 <- TV2*exp(eta.v) Q <- TQ V3 <- TV3 Kin <- TKin Kout <- TKout EC50 <- TEC50 C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 C2 ~ prop(c2.prop.sd) eff ~ add(eff.add.sd) }) } mod1 <- mod1() mod2f <- rxode2(mod2f) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments summary(mod1$simulationModel) #> rxode2 3.0.2.9000 model named rx_e03c9eb3783e2e7c13c3a7dc8f1a92f9 model (✔ ready). #> DLL: /tmp/RtmpmSWcH0/rxode2/rx_e03c9eb3783e2e7c13c3a7dc8f1a92f9__.rxd/rx_e03c9eb3783e2e7c13c3a7dc8f1a92f9_.so #> NULL #> #> Calculated Variables: #> [1] \"C2\" \"C3\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(KA, CL, V2, Q, V3, Kin, Kout, EC50) #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> }) summary(mod1$simulationIniModel) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_b417932627da0688491c7e24f4cd3fe4 model (✔ ready). #> DLL: /tmp/RtmpmSWcH0/rxode2/rx_b417932627da0688491c7e24f4cd3fe4__.rxd/rx_b417932627da0688491c7e24f4cd3fe4_.so #> NULL #> #> Calculated Variables: #> [1] \"C2\" \"C3\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(KA, CL, V2, Q, V3, Kin, Kout, EC50) #> KA = 0.3 #> CL = 7 #> V2 = 40 #> Q = 10 #> V3 = 300 #> Kin = 0.2 #> Kout = 0.2 #> EC50 = 8 #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> }) summary(mod2f$simulationModel) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_28940772572f7c0b5a80981045ad4e50 model (✔ ready). #> DLL: /tmp/RtmpmSWcH0/rxode2/rx_28940772572f7c0b5a80981045ad4e50__.rxd/rx_28940772572f7c0b5a80981045ad4e50_.so #> NULL #> #> Calculated Variables: #> [1] \"KA\" \"CL\" \"V2\" \"Q\" \"V3\" \"Kin\" #> [7] \"Kout\" \"EC50\" \"C2\" \"C3\" \"ipredSim\" \"sim\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(TKA, TCL, TV2, TQ, TV3, TKin, TKout, TEC50, c2.prop.sd, #> eff.add.sd, eta.cl, eta.v) #> KA = TKA #> CL = TCL * exp(eta.cl) #> V2 = TV2 * exp(eta.v) #> Q = TQ #> V3 = TV3 #> Kin = TKin #> Kout = TKout #> EC50 = TEC50 #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> if (CMT == 5) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ C2 #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (rx_pred_f_ * c2.prop.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.C2, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> if (CMT == 4) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ eff #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (eff.add.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.eff, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> cmt(C2) #> dvid(5, 4) #> }) summary(mod2f$simulationIniModel) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_ce7a25fd486dddfe1cf38dd01893c832 model (✔ ready). #> DLL: /tmp/RtmpmSWcH0/rxode2/rx_ce7a25fd486dddfe1cf38dd01893c832__.rxd/rx_ce7a25fd486dddfe1cf38dd01893c832_.so #> NULL #> #> Calculated Variables: #> [1] \"KA\" \"CL\" \"V2\" \"Q\" \"V3\" \"Kin\" #> [7] \"Kout\" \"EC50\" \"C2\" \"C3\" \"ipredSim\" \"sim\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(TKA, TCL, TV2, TQ, TV3, TKin, TKout, TEC50, c2.prop.sd, #> eff.add.sd, eta.cl, eta.v) #> rxerr.C2 = 1 #> rxerr.eff = 1 #> TKA = 0.3 #> TCL = 7 #> TV2 = 40 #> TQ = 10 #> TV3 = 300 #> TKin = 0.2 #> TKout = 0.2 #> TEC50 = 8 #> c2.prop.sd = 0.1 #> eff.add.sd = 0.1 #> eta.cl = 0 #> eta.v = 0 #> KA = TKA #> CL = TCL * exp(eta.cl) #> V2 = TV2 * exp(eta.v) #> Q = TQ #> V3 = TV3 #> Kin = TKin #> Kout = TKout #> EC50 = TEC50 #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> if (CMT == 5) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ C2 #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (rx_pred_f_ * c2.prop.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.C2, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> if (CMT == 4) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ eff #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (eff.add.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.eff, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> cmt(C2) #> dvid(5, 4) #> }) mod1 <- mod1$simulationModel mod2 <- mod2f$simulationModel"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"increasing-rxode2-speed-by-multi-subject-parallel-solving","dir":"Articles","previous_headings":"","what":"Increasing rxode2 speed by multi-subject parallel solving","title":"Speeding up rxode2","text":"Using classic rxode2 model specification (can convert functional/ui model style) continue discussion rxode2 speed enhancements. rxode2 originally developed ODE solver allowed ODE solve single subject. flexibility still supported. original code rxode2 tutorial :","code":"library(rxode2) library(microbenchmark) library(ggplot2) mod1 <- rxode2({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ## Create an event table ev <- et() %>% et(amt=10000, addl=9,ii=12) %>% et(time=120, amt=20000, addl=4, ii=24) %>% et(0:240) ## Add Sampling nsub <- 100 # 100 sub-problems sigma <- matrix(c(0.09,0.08,0.08,0.25),2,2) # IIV covariance matrix mv <- rxRmvn(n=nsub, rep(0,2), sigma) # Sample from covariance matrix CL <- 7*exp(mv[,1]) V2 <- 40*exp(mv[,2]) params.all <- cbind(KA=0.3, CL=CL, V2=V2, Q=10, V3=300, Kin=0.2, Kout=0.2, EC50=8)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"for-loop","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"For Loop","title":"Speeding up rxode2","text":"slowest way code use loop. example enclose function compare timing.","code":"runFor <- function(){ res <- NULL for (i in 1:nsub) { params <- params.all[i,] x <- mod1$solve(params, ev) ##Store results for effect compartment res <- cbind(res, x[, \"eff\"]) } return(res) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"running-with-apply","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Running with apply","title":"Speeding up rxode2","text":"general R, apply types functions perform better loop, tutorial also suggests speed enhancement","code":"runSapply <- function(){ res <- apply(params.all, 1, function(theta) mod1$run(theta, ev)[, \"eff\"]) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"run-using-a-single-threaded-solve","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Run using a single-threaded solve","title":"Speeding up rxode2","text":"can also rxode2 solve subject simultaneously without collecting results R, using single threaded solve. data output slightly different , still gives information:","code":"runSingleThread <- function(){ solve(mod1, params.all, ev, cores=1)[,c(\"sim.id\", \"time\", \"eff\")] }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"run-a-2-threaded-solve","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Run a 2 threaded solve","title":"Speeding up rxode2","text":"rxode2 supports multi-threaded solves, another option 2 threads (called cores solve options, can see options rxControl() rxSolve()).","code":"run2Thread <- function(){ solve(mod1, params.all, ev, cores=2)[,c(\"sim.id\", \"time\", \"eff\")] }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"compare-the-times-between-all-the-methods","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Compare the times between all the methods","title":"Speeding up rxode2","text":"Now moment truth, timings: clear largest jump performance using solve method providing parameters rxode2 solve without looping subject either sapply. number cores/threads applied solve also plays role solving. can explore number threads following code: can suite spot speed vs number cores. system type (mac, linux, windows /processor), complexity ODE solving number subjects may affect arbitrary number threads. 4 threads good number use without prior knowledge systems days least 4 threads (2 processors 4 threads).","code":"bench <- microbenchmark(runFor(), runSapply(), runSingleThread(),run2Thread()) print(bench) #> Unit: milliseconds #> expr min lq mean median uq max #> runFor() 377.10896 383.31715 399.45494 389.21681 396.41863 533.30417 #> runSapply() 377.12935 386.26628 400.09744 389.53396 397.44471 556.68635 #> runSingleThread() 29.95904 30.19660 31.56191 30.42578 30.85423 53.91155 #> run2Thread() 19.43597 19.66449 21.20636 19.85214 20.45016 34.16524 #> neval #> 100 #> 100 #> 100 #> 100 autoplot(bench) runThread <- function(n){ solve(mod1, params.all, ev, cores=n)[,c(\"sim.id\", \"time\", \"eff\")] } bench <- eval(parse(text=sprintf(\"microbenchmark(%s)\", paste(paste0(\"runThread(\", seq(1, 2 * rxCores()),\")\"), collapse=\",\")))) print(bench) #> Unit: milliseconds #> expr min lq mean median uq max neval #> runThread(1) 29.93519 30.20806 31.43031 30.32592 30.76595 47.71069 100 #> runThread(2) 19.43759 19.71286 23.42815 19.96794 29.00904 34.79672 100 #> runThread(3) 20.80118 21.12864 22.86815 21.50596 24.73094 28.46153 100 #> runThread(4) 21.07578 21.28399 22.86137 21.44066 21.67990 46.43890 100 autoplot(bench)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"increasing-speed-with-compiler-options","dir":"Articles","previous_headings":"","what":"Increasing speed with compiler options","title":"Speeding up rxode2","text":"One way allows faster ODE solving make approximations make math operators like exp() faster technically accurate enough follow IEEE standard math functions values (implications cover ). optimizations opt-Julia since compile everything session, CRAN conservative approach since individuals compile R function running . Still, rxode2 models can compiled option without disturbing CRAN policies. key set option. example: Note compiler settings can tricky setup system wide Makevars may interact setting. example use ccache compile may produced options since cached options. example, github runner (generates page), advantage \"fast\" compile. However, development laptop minimal speed increase. probably check using . disabled default since minimum increase speed.","code":"# Using the first example subset to PK mod2f <- function() { ini({ TKA <- 0.3 TCL <- 7 TV2 <- 40 TQ <- 10 TV3 <- 300 TKin <- 0.2 TKout <- 0.2 TEC50 <- 8 eta.cl + eta.v ~ c(0.09, 0.08, 0.25) c2.prop.sd <- 0.1 }) model({ KA <- TKA CL <- TCL*exp(eta.cl) V2 <- TV2*exp(eta.v) Q <- TQ V3 <- TV3 Kin <- TKin Kout <- TKout EC50 <- TEC50 C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 C2 ~ prop(c2.prop.sd) }) } mod2f <- mod2f() mod2s <- mod2f$simulationIniModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(0:240) # Add sampling bench1 <- microbenchmark(standardCompile=rxSolve(mod2s, ev, nSub=1000)) # Now clear the cache of models so we can change the compile options for the same model rxClean() # Use withr to preserve the options withr::with_options(list(rxode2.compile.O=\"fast\"), { mod2s <- mod2f$simulationIniModel }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ bench2 <- microbenchmark(fastCompile=rxSolve(mod2s, ev, nSub=1000)) bench <- rbind(bench1, bench2) print(bench) #> Unit: milliseconds #> expr min lq mean median uq max neval #> standardCompile 345.9838 355.2424 412.0364 369.6037 487.0648 552.9638 100 #> fastCompile 343.7996 354.6576 409.8407 377.0467 488.7956 561.7211 100 autoplot(bench)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"a-real-life-example","dir":"Articles","previous_headings":"","what":"A real life example","title":"Speeding up rxode2","text":"cBefore parallel solving implemented, fastest way run rxode2 lapply. Rik Schoemaker created data-set nlmixr comparisons, reduced run faster automatic building pkgdown website. applying new parallel solving concepts can simply run simulation less code faster: can see striking time difference two methods; things keep mind: rxode2 use thread-safe sitmo threefry routines simulation eta values. Therefore results expected different (also random samples taken different order different) prior simulation run R 3.5, different random number generator results simulation different actual nlmixr comparison using slower simulation. speed comparison used data.table. rxode2 uses data.table internally (available) try speed sorting, different installations data.table installed. can force rxode2 use order() sorting using forderForceBase(TRUE). case little difference two, though examples data.table’s presence leads speed increase (less likely lead slowdown).","code":"library(rxode2) library(data.table) #Define the rxode2 model ode1 <- \" d/dt(abs) = -KA*abs; d/dt(centr) = KA*abs-(CL/V)*centr; C2=centr/V; \" #Create the rxode2 simulation object mod1 <- rxode2(model = ode1) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #Population parameter values on log-scale paramsl <- c(CL = log(4), V = log(70), KA = log(1)) #make 10,000 subjects to sample from: nsubg <- 300 # subjects per dose doses <- c(10, 30, 60, 120) nsub <- nsubg * length(doses) #IIV of 30% for each parameter omega <- diag(c(0.09, 0.09, 0.09))# IIV covariance matrix sigma <- 0.2 #Sample from the multivariate normal set.seed(98176247) rxSetSeed(98176247) library(MASS) mv <- mvrnorm(nsub, rep(0, dim(omega)[1]), omega) # Sample from covariance matrix #Combine population parameters with IIV params.all <- data.table( \"ID\" = seq(1:nsub), \"CL\" = exp(paramsl['CL'] + mv[, 1]), \"V\" = exp(paramsl['V'] + mv[, 2]), \"KA\" = exp(paramsl['KA'] + mv[, 3]) ) #set the doses (looping through the 4 doses) params.all[, AMT := rep(100 * doses,nsubg)] Startlapply <- Sys.time() #Run the simulations using lapply for speed s = lapply(1:nsub, function(i) { #selects the parameters associated with the subject to be simulated params <- params.all[i] #creates an eventTable with 7 doses every 24 hours ev <- eventTable() ev$add.dosing( dose = params$AMT, nbr.doses = 1, dosing.to = 1, rate = NULL, start.time = 0 ) #generates 4 random samples in a 24 hour period ev$add.sampling(c(0, sort(round(sample(runif(600, 0, 1440), 4) / 60, 2)))) #runs the rxode2 simulation x <- as.data.table(mod1$run(params, ev)) #merges the parameters and ID number to the simulation output x[, names(params) := params] }) #runs the entire sequence of 100 subjects and binds the results to the object res res = as.data.table(do.call(\"rbind\", s)) Stoplapply <- Sys.time() print(Stoplapply - Startlapply) #> Time difference of 13.84886 secs rx <- rxode2({ CL = log(4) V = log(70) KA = log(1) CL = exp(CL + eta.CL) V = exp(V + eta.V) KA = exp(KA + eta.KA) d/dt(abs) = -KA*abs; d/dt(centr) = KA*abs-(CL/V)*centr; C2=centr/V; }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ omega <- lotri(eta.CL ~ 0.09, eta.V ~ 0.09, eta.KA ~ 0.09) doses <- c(10, 30, 60, 120) startParallel <- Sys.time() ev <- do.call(\"rbind\", lapply(seq_along(doses), function(i){ et() %>% et(amt=doses[i]) %>% # Add single dose et(0) %>% # Add 0 observation ## Generate 4 samples in 24 hour period et(lapply(1:4, function(...){c(0, 24)})) %>% et(id=seq(1, nsubg) + (i - 1) * nsubg) %>% ## Convert to data frame to skip sorting the data ## When binding the data together as.data.frame })) ## To better compare, use the same output, that is data.table res <- rxSolve(rx, ev, omega=omega, returnType=\"data.table\") endParallel <- Sys.time() print(endParallel - startParallel) #> Time difference of 0.1162055 secs"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"want-more-ways-to-run-multi-subject-simulations","dir":"Articles","previous_headings":"A real life example","what":"Want more ways to run multi-subject simulations","title":"Speeding up rxode2","text":"version since tutorial even ways run multi-subject simulations, including adding variability sampling dosing times et() (see rxode2 events information), ability supply omega sigma matrix well adding thetaMat R simulate uncertainty omega, sigma theta matrices; see rxode2 simulation vignette.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"session-information","dir":"Articles","previous_headings":"A real life example","what":"Session Information","title":"Speeding up rxode2","text":"session information:","code":"sessionInfo() #> R version 4.4.2 (2024-10-31) #> Platform: x86_64-pc-linux-gnu #> Running under: Ubuntu 22.04.5 LTS #> #> Matrix products: default #> BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 #> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 #> #> locale: #> [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 #> [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 #> [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C #> [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C #> #> time zone: UTC #> tzcode source: system (glibc) #> #> attached base packages: #> [1] stats graphics grDevices utils datasets methods base #> #> other attached packages: #> [1] MASS_7.3-61 data.table_1.16.2 ggplot2_3.5.1 #> [4] microbenchmark_1.5.0 rxode2_3.0.2.9000 #> #> loaded via a namespace (and not attached): #> [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 #> [4] lattice_0.22-6 digest_0.6.37 magrittr_2.0.3 #> [7] evaluate_1.0.1 grid_4.4.2 fastmap_1.2.0 #> [10] lotri_1.0.0.9000 jsonlite_1.8.9 rxode2ll_2.0.12 #> [13] backports_1.5.0 fansi_1.0.6 scales_1.3.0 #> [16] lazyeval_0.2.2 textshaping_0.4.0 jquerylib_0.1.4 #> [19] RApiSerialize_0.1.4 cli_3.6.3 symengine_0.2.6 #> [22] crayon_1.5.3 rlang_1.1.4 units_0.8-5 #> [25] munsell_0.5.1 withr_3.0.2 cachem_1.1.0 #> [28] yaml_2.3.10 tools_4.4.2 qs_0.27.2 #> [31] memoise_2.0.1 checkmate_2.3.2 dplyr_1.1.4 #> [34] colorspace_2.1-1 vctrs_0.6.5 R6_2.5.1 #> [37] lifecycle_1.0.4 fs_1.6.5 stringfish_0.16.0 #> [40] htmlwidgets_1.6.4 ragg_1.3.3 PreciseSums_0.7 #> [43] pkgconfig_2.0.3 desc_1.4.3 rex_1.2.1 #> [46] pkgdown_2.1.1 RcppParallel_5.1.9 pillar_1.9.0 #> [49] bslib_0.8.0 gtable_0.3.6 glue_1.8.0 #> [52] Rcpp_1.0.13-1 systemfonts_1.1.0 xfun_0.49 #> [55] tibble_3.2.1 tidyselect_1.2.1 sys_3.4.3 #> [58] knitr_1.49 farver_2.1.2 dparser_1.3.1-13 #> [61] htmltools_0.5.8.1 nlme_3.1-166 labeling_0.4.3 #> [64] rmarkdown_2.29 compiler_4.4.2"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-stiff.html","id":"stiff-odes-with-jacobian-specification","dir":"Articles","previous_headings":"","what":"Stiff ODEs with Jacobian Specification","title":"rxode2 Jacobian specification and Stiff Systems","text":"Occasionally, may come across stiff differential equation, differential equation numerically unstable small variations parameters cause different solutions ODEs. One way tackle choose stiff-solver, hybrid stiff solver (like default LSODA). Typically enough. However exact Jacobian solutions may increase stability ODE. (Note Jacobian derivative ODE specification respect variable). rxode2 can specify Jacobian df(state)/dy(variable)= statement. classic ODE stiff properties various conditions Van der Pol differential equations. rxode2 can specified following: stiff mu=1, mu=1000 stiff system easy enough , bit tedious. rxode2 setup appropriately, can use computer algebra system sympy calculate Jacobian automatically. done rxode2 option calcJac option:","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` Vtpol2 <- function() { ini({ mu <- 1 ## nonstiff; 10 moderately stiff; 1000 stiff }) model({ d/dt(y) <- dy d/dt(dy) <- mu*(1-y^2)*dy - y ## Jacobian df(y)/dy(dy) <- 1 df(dy)/dy(y) <- -2*dy*mu*y - 1 df(dy)/dy(dy) <- mu*(1-y^2) ## Initial conditions y(0) <- 2 dy(0) <- 0 }) } et <- et(0, 10, length.out=200) %>% et(amt=0) s1 <- Vtpol2 %>% solve(et, method=\"lsoda\") ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(s1) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## mu ## 1 ## -- Initial Conditions ($inits): -- ## y dy ## 2 0 ## -- First part of data (object): -- ## # A tibble: 200 x 3 ## time y dy ## ## 1 0 2 0 ## 2 0.0503 2.00 -0.0933 ## 3 0.101 1.99 -0.173 ## 4 0.151 1.98 -0.242 ## 5 0.201 1.97 -0.302 ## 6 0.251 1.95 -0.353 ## # i 194 more rows s2 <- Vtpol2 %>% solve(c(mu=1000), et) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(s2) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## mu ## 1000 ## -- Initial Conditions ($inits): -- ## y dy ## 2 0 ## -- First part of data (object): -- ## # A tibble: 200 x 3 ## time y dy ## ## 1 0 2 0 ## 2 0.0503 2.00 -0.000667 ## 3 0.101 2.00 -0.000667 ## 4 0.151 2.00 -0.000667 ## 5 0.201 2.00 -0.000667 ## 6 0.251 2.00 -0.000667 ## # i 194 more rows Vtpol <- function() { ini({ mu <- 1 ## nonstiff; 10 moderately stiff; 1000 stiff }) model({ d/dt(y) <- dy d/dt(dy) <- mu*(1-y^2)*dy - y y(0) <- 2 dy(0) <- 0 }) } Vtpol <- Vtpol() # you can also use $symengineModelPrune if there is if/else blocks # that need to be converted: Vtpol <- rxode2(Vtpol$symengineModelNoPrune, calcJac=TRUE) ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ## > pruning branches (`if`/`else`)... ## v done ## > loading into symengine environment... ## v done ## > calculate jacobian ## [====|====|====|====|====|====|====|====|====|====] 0:00:00 ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ summary(Vtpol) ## rxode2 3.0.2.9000 model named rx_267d72f0cbe977723a6e6438b5a7ed7d model (ready). ## DLL: /tmp/RtmpmSWcH0/rxode2/rx_267d72f0cbe977723a6e6438b5a7ed7d__.rxd/rx_267d72f0cbe977723a6e6438b5a7ed7d_.so ## NULL ## -- rxode2 Model Syntax -- ## rxode2({ ## cmt(y) ## cmt(dy) ## d/dt(y) = dy ## d/dt(dy) = -y + mu * dy * (1 - Rx_pow_di(y, 2)) ## y(0) = 2 ## dy(0) = 0 ## df(y)/dy(y) = 0 ## df(dy)/dy(y) = -1 - 2 * y * mu * dy ## df(y)/dy(dy) = 1 ## df(dy)/dy(dy) = mu * (1 - Rx_pow_di(y, 2)) ## df(y)/dy(mu) = 0 ## df(dy)/dy(mu) = dy * (1 - Rx_pow_di(y, 2)) ## })"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"rxode2 ODE solving syntax","text":"briefly describes syntax used define models rxode2 translate R-callable compiled code. also describes communication variables R rxode2 modeling specification.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"creating-rxode2-models","dir":"Articles","previous_headings":"","what":"Creating rxode2 models","title":"rxode2 ODE solving syntax","text":"ODE-based model specification may coded inside four places: Inside rxode2({}) block statements: Inside rxode2(\"\") string statement: file name loaded rxode2: model function can parsed rxode2: block statement, character string text file internal rxode2 compilation manager translates ODE system C, compiles loads R session. call rxode2 produces object class rxode2 consists list-like structure (environment) various member functions. last type model (model function), call rxode2 creates parsed rxode2 ui can translated rxode2 compilation model. type function required nlmixr2 estimation can extended modified model piping. reason focused documentation.","code":"library(rxode2) mod <- rxode2({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) mod <- rxode2(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \") writeLines(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \", \"modelFile.rxode2\") mod <- rxode2(filename='modelFile.rxode2') unlink(\"modelFile.rxode2\") mod <- function() { model({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) } mod <- rxode2(mod) # or simply mod() if the model is at the end of the function # These model functions often have residual components and initial # (`ini({})`) conditions attached as well. For example the # theophylline model can be written as: one.compartment <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } # after parsing the model mod <- one.compartment() mod$simulationModel # or mod$simulationIniModel"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"syntax","dir":"Articles","previous_headings":"","what":"Syntax","title":"rxode2 ODE solving syntax","text":"basic model specification consists one statements optionally terminated semi-colons ; optional comments (comments delimited # end--line). block statements set statements delimited curly braces, { ... }. Statements can either assignments, conditional /else /else, loops (can exited break), special statements, printing statements (debugging/testing). Assignment statements can : simple assignments, left hand identifier (.e., variable). includes string assignments special time-derivative assignments, left hand specifies change amount corresponding state variable (compartment) respect time e.g., d/dt(depot): special initial-condition assignments left hand specifies compartment initial condition specified, e.g. depot(0) = 0 special model event changes including bioavailability (f(depot)=1), lag time (alag(depot)=0), modeled rate (rate(depot)=2) modeled duration (dur(depot)=2). example model features event specification modeled infusions rxode2 data specification found rxode2 events vignette. special change point syntax, model times. model times specified mtime(var)=time special Jacobian-derivative assignments, left hand specifies change compartment ode respect variable. example, d/dt(y) = dy, Jacobian compartment can specified df(y)/dy(dy) = 1. may advantage obtaining solution specifying Jacobian stiff ODE systems. However, stiff systems tried LSODA, actually slightly slowed solving. Special string value declarations tell values string variable take within rxode2 solving structure. values cause factor created variable solving rxode2 model. , declared much way R, : labels() <- c(\"a1\", \"a2\"). Note assignment can done =, <- ~. assigning ~ operator, simple assignments time-derivative assignments output. Note rxode2 model functions assignment ~ can also overloaded residual distribution specification. Special statements can : Compartment declaration statements, can change default dosing compartment assumed compartment number(s) well add extra compartment names end (useful multiple-endpoint nlmixr models); specified cmt(compartmentName) Parameter declaration statements, can make sure input parameters certain order instead ordering parameters order parsed. useful keeping parameter order using 2 different ODE models. specified param(par1, par2,...) Variable interpolation statements, tells interpolation specific covariates. include locf(cov1, cov2, ...) last observation carried forward, nocb(cov1, cov2, ...) next observation carried backward, linear(cov1, cov2, ...) linear interpolation midpoint(cov1, cov2, ...) midpoint interpolation. example model shown : Expressions assignment statements can numeric logical. Numeric expressions can include following numeric operators +, -, *, /, ^ mathematical functions defined C R math libraries (e.g., fabs, exp, log, sin, abs). may also access R’s functions R math libraries, like lgammafn log gamma function. rxode2 syntax case-sensitive, .e., ABC different abc, Abc, ABc, etc.","code":"# simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3;"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"identifiers","dir":"Articles","previous_headings":"Syntax","what":"Identifiers","title":"rxode2 ODE solving syntax","text":"Like R, Identifiers (variable names) may consist one alphanumeric, underscore _ period . characters, first character digit underscore _. Identifiers model specification can refer : State variables dynamic system (e.g., compartments pharmacokinetics model). Implied input variable, t (time), tlast (last time point), podo (oral dose, undocumented case absorption transit models). Special constants like pi R’s predefined constants. Model parameters (e.g., ka rate absorption, CL clearance, etc.) Others, created assignments part model specification; referred LHS (left-hand side) variable. Currently, rxode2 modeling language recognizes system state variables “parameters”, thus, values need passed R ODE model (e.g., age) either passed params argument integrator function rxSolve() supplied event data-set. certain variable names rxode2 event tables. avoid confusion, following event table-related items assigned, used state can accessed rxode2 code: cmt dvid addl ss amt dur rate Rprintf print printf id However following variables used model specification: evid ii Sometimes rxode2 generates variables fed back rxode2. Similarly, nlmixr2 generates variables used nlmixr estimation simulation. variables start either rx nlmixr prefixes. avoid problems, suggested use variables starting either rx nlmixr prefixes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"logical-operators","dir":"Articles","previous_headings":"","what":"Logical Operators","title":"rxode2 ODE solving syntax","text":"Logical operators support standard R operators ==, != >= <= > <. Like R can () () statements, ifelse() expressions. Additionally can standard assignment. instance, following valid: Notice can also use character expressions comparisons. convenience comes cost since character comparisons slower numeric expressions. Unlike R, .numeric .integer logical statements needed, cause syntax error try use function.","code":"cov1 = covm*(sexf == \"female\") + covm*(sexf != \"female\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"supported-functions","dir":"Articles","previous_headings":"","what":"Supported functions","title":"rxode2 ODE solving syntax","text":"supported functions rxode2 can seen rxSupportedFuns(). brief description built-functions following table: Note lag(cmt) = equivalent alag(cmt) = = lag(wt)","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"reserved-keywords","dir":"Articles","previous_headings":"","what":"Reserved keywords","title":"rxode2 ODE solving syntax","text":"reserved keywords rxode2 model. following table: Note rxFlag always output 11 calc_lhs since final variables calculated, though can tweak test certain parts rxode2 using flag.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"residual-functions-when-using-rxode2-functions","dir":"Articles","previous_headings":"","what":"Residual functions when using rxode2 functions","title":"rxode2 ODE solving syntax","text":"addition ~ hiding output certain types output, also used specify residual output endpoint input rxode2 model function (includes residual model({}) block). specifications form: Indicating variable var variable represents individual central tendencies model also represents compartment specification data-set. can also change compartment name using | syntax, : case var represents central tendency cmt represents compartment dvid specification.","code":"var ~ add(add.sd) var ~ add(add.sd) | cmt"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"transformations","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Transformations","title":"rxode2 ODE solving syntax","text":"normal related distributions, can apply transformation sides using keywords/functions apply transformations. default likelihood transformations calculated untransformed scale. bounded variables like logit-normal probit-normal low high values defaulted 0 1 missing. models wish proportional model one transformation can replace standard deviation NA allow transformations, lnorm(), probitNorm() logitNorm() can combined variance stabilizing yeoJohnson() transformation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"normal-and-t-related-distributions","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Normal and t-related distributions","title":"rxode2 ODE solving syntax","text":"normal t-related distributions, wanted keep ability use skewed distributions additive proportional t/cauchy-space, distributions specified differently comparison supported distributions within nlmixr2: Note normal t-related distributions nlmixr2 calculate cwres npde normal assumption help assess goodness fit model. Also note +dnorm() mostly testing purposes slow estimation procedure nlmixr2. suggest adding (except explicit testing). multiple endpoint models mix non-normal normal distributions, whole problem shifted log-likelihood method estimation nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"notes-on-additive-proportional-models","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Notes on additive + proportional models","title":"rxode2 ODE solving syntax","text":"two different ways specify additive proportional models, call combined1 combined2, way Monolix calls two distributions (avoid software differences naming). first, combined1, assumes additive proportional differences standard deviation scale, : y=f+(+b* f^c)*err second, combined2, assumes additive proportional differences combined variance scale: y=f+sqrt(a2+b2*f(2c))sqrt(^2+b^2 *f^(2c))*err default nlmixr2/rxode2 otherwise specified combined2 since mirrors adding 2 normal distributions statistics add variances (standard deviations). However, combined1 can describe data possibly even better combined2 possible options rxode2/nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"distributions-of-known-likelihoods","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Distributions of known likelihoods","title":"rxode2 ODE solving syntax","text":"residuals related normal, t-distribution cauchy, often residual specification form: compartment specification left handed side specification. generalized likelihood can specify:","code":"cmt ~ dbeta(alpha, beta) ll(cmt) ~ llik specification"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"ordinal-likelihoods","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Ordinal likelihoods","title":"rxode2 ODE solving syntax","text":"Finally, ordinal likelihoods/simulations can specified 2 ways. first : err represents compartment p0 probability specific category: model ensure sum p values less 1. Additionally can write arbitrary number categories ordinal model described . seems little p0 probability category 1 sometimes scores non-whole numbers. can modeled follows: numeric categories specified explicitly, probabilities remain :","code":"err ~ c(p0, p1, p2) err ~ c(p0=0, p1=1, p2=2, 3)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"general-table-of-supported-residual-distributions","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"General table of supported residual distributions","title":"rxode2 ODE solving syntax","text":"general supported following table (available rxode2::rxResidualError)","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"note-on-strings-in-rxode2","dir":"Articles","previous_headings":"","what":"Note on strings in rxode2","title":"rxode2 ODE solving syntax","text":"Strings converted double values inside rxode2, hence can refer integer corresponding string value string value . covariates calculated fly based data likely try , though aware. strings defined model, fixed used. example: also replaced : Since \"Med\" already defined wanted can pre-declare levels (order) give better control : can see number changed since declaration change numbers variable tAPGAR. levels() statements need declared variable occurs ensure numbering consistent declared.","code":"if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- \"Med\" } if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- 3 } levels(tAPGAR) <- c(\"Med\", \"Low\", \"High\") if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- 3 } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- 2 } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- 1 } else { tAPGAR<- 1 }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"bugs-andor-deficiencies","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Bugs and/or deficiencies","title":"rxode2 ODE solving syntax","text":"modulo operator %% currently unsupported.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"note","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Note","title":"rxode2 ODE solving syntax","text":"ODE specification mini-language parsed help open source tool , Plevyak (2015).","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"example-model","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Example model","title":"rxode2 ODE solving syntax","text":"commented example quickly show capabilities rxode2 syntax.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"example","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Example","title":"rxode2 ODE solving syntax","text":"","code":"f <- function() { ini({ }) model({ # An rxode2 model specification (this line is a comment). if(comed==0) { # concomitant medication (con-med)? F <- 1.0 # full bioavailability w.o. con-med } else { F <- 0.80 # 20% reduced bioavailability } C2 <- centr/V2 # concentration in the central compartment C3 <- peri/V3 # concentration in the peripheral compartment # ODE describing the PK and PD d/dt(depot) <- -KA*depot d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"interface-and-data-handling-between-r-and-the-generated-c-code","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Interface and data handling between R and the generated C code","title":"rxode2 ODE solving syntax","text":"Users specify variables dynamic system’s state variables via d/dt(identifier) operator part model specification, model parameters via params= argument rxode2 solve() method: values variables pre-specified time points saved model fitting/integration returned part fitted values (see function et(), define set time points capture values variables) returned part modeling output. ODE specification mini-language parsed help open source tool DParser, Plevyak (2015).","code":"m1 <- rxode2(model = ode, modName = \"m1\") # model parameters -- a named vector is required theta <- c(KA=0.29, CL=18.6, V2=40.2, Q=10.5, V3=297, Kin=1, Kout=1, EC50=200) # state variables and their amounts at time 0 (the use of names is # encouraged, but not required) inits <- c(depot=0, centr=0, peri=0, eff=1) # qd1 is an eventTable specification with a set of dosing and sampling # records (code not shown here) solve(theta, event = qd1, inits = inits)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-tutorials.html","id":"interactive-tutorials","dir":"Articles","previous_headings":"","what":"Interactive tutorials","title":"Interactive Tutorials","text":"rxode2 comes interactive tutorials can run R session; built Rstudio 1.3 can run R session :","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` ## rxode2 Syntax learnr::run_tutorial(\"rxode2-00-syntax\", \"rxode2\") ## rxode2 event tables learnr::run_tutorial(\"rxode2-00-events\", \"rxode2\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"creating-a-2-compartment-model-in-rxode2","dir":"Articles","previous_headings":"","what":"Creating a 2-compartment model in rxode2","title":"Weight Based Dosing in rxode2","text":"","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` ## Note the time covariate is not included in the simulation m1 <- function() { model({ CL ~ (1-0.2*SEX)*(0.807+0.00514*(CRCL-91.2))*exp(eta.cl) V1 ~ 4.8*exp(eta.v1) Q ~ (3.46+0.0593*(WT-75.1))*exp(eta.q); V2 ~ 1.93*(3.13+0.0458*(WT-75.1))*exp(eta.v2) A1 ~ centr; A2 ~ peri; d/dt(centr) <- - A1*(CL/V1 + Q/V1) + A2*Q/V2; d/dt(peri) <- A1*Q/V1 - A2*Q/V2; DV = centr / V1 * (1 + prop.err) }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"simulating-covariates","dir":"Articles","previous_headings":"","what":"Simulating Covariates","title":"Weight Based Dosing in rxode2","text":"simulation correlates age, sex, weight. Since using weight based dosing, needs simulated first","code":"set.seed(42) rxSetSeed(42) library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union nsub=30 # Simulate Weight based on age and gender AGE<-round(runif(nsub,min=18,max=70)) SEX<-round(runif(nsub,min=0,max=1)) HTm<-round(rnorm(nsub,176.3,0.17*sqrt(4482)),digits=1) HTf<-round(rnorm(nsub,162.2,0.16*sqrt(4857)),digits=1) WTm<-round(exp(3.28+1.92*log(HTm/100))*exp(rnorm(nsub,0,0.14)),digits=1) WTf<-round(exp(3.49+1.45*log(HTf/100))*exp(rnorm(nsub,0,0.17)),digits=1) WT<-ifelse(SEX==1,WTf,WTm) CRCL<-round(runif(nsub,30,140)) ## id is in lower case to match the event table cov.df <- tibble(id=seq_along(AGE), AGE=AGE, SEX=SEX, WT=WT, CRCL=CRCL) print(cov.df) #> # A tibble: 30 x 5 #> id AGE SEX WT CRCL #> #> 1 1 66 1 49.4 83 #> 2 2 67 1 52.5 79 #> 3 3 33 0 97.9 37 #> 4 4 61 1 63.8 66 #> 5 5 51 0 71.8 127 #> 6 6 45 1 69.6 132 #> 7 7 56 0 61 73 #> 8 8 25 0 57.7 47 #> 9 9 52 1 58.7 65 #> 10 10 55 1 73.1 64 #> # i 20 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"creating-weight-based-event-table","dir":"Articles","previous_headings":"","what":"Creating weight based event table","title":"Weight Based Dosing in rxode2","text":"","code":"s<-c(0,0.25,0.5,0.75,1,1.5,seq(2,24,by=1)) s <- lapply(s, function(x){.x <- 0.1 * x; c(x - .x, x + .x)}) e <- et() %>% ## Specify the id and weight based dosing from covariate data.frame ## This requires rxode2 XXX et(id=cov.df$id, amt=6*cov.df$WT, rate=6 * cov.df$WT) %>% ## Sampling is added for each ID et(s) %>% as.data.frame %>% ## Merge the event table with the covarite information merge(cov.df, by=\"id\") %>% as_tibble e #> # A tibble: 900 x 12 #> id low time high cmt amt rate evid AGE SEX WT CRCL #> #> 1 1 0 0 0 (obs) NA NA 0 66 1 49.4 83 #> 2 1 NA 0 NA (default) 296. 296. 1 66 1 49.4 83 #> 3 1 0.225 0.246 0.275 (obs) NA NA 0 66 1 49.4 83 #> 4 1 0.45 0.516 0.55 (obs) NA NA 0 66 1 49.4 83 #> 5 1 0.675 0.729 0.825 (obs) NA NA 0 66 1 49.4 83 #> 6 1 0.9 0.921 1.1 (obs) NA NA 0 66 1 49.4 83 #> 7 1 1.35 1.42 1.65 (obs) NA NA 0 66 1 49.4 83 #> 8 1 1.8 1.82 2.2 (obs) NA NA 0 66 1 49.4 83 #> 9 1 2.7 2.97 3.3 (obs) NA NA 0 66 1 49.4 83 #> 10 1 3.6 3.87 4.4 (obs) NA NA 0 66 1 49.4 83 #> # i 890 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"solving-daptomycin-simulation","dir":"Articles","previous_headings":"","what":"Solving Daptomycin simulation","title":"Weight Based Dosing in rxode2","text":"","code":"data <- rxSolve(m1, e, ## Lotri uses lower-triangular matrix rep. for named matrix omega=lotri(eta.cl ~ .306, eta.q ~0.0652, eta.v1 ~.567, eta.v2 ~ .191), sigma=lotri(prop.err ~ 0.15), addDosing = TRUE, addCov = TRUE) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(data) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> # A tibble: 30 x 5 #> id eta.cl eta.v1 eta.q eta.v2 #> #> 1 1 0.343 -1.25 -0.0936 -0.253 #> 2 2 0.444 -0.0581 0.187 0.233 #> 3 3 0.142 0.203 0.0617 1.03 #> 4 4 0.274 -0.733 -0.0000116 -0.321 #> 5 5 0.505 -0.104 -0.406 -0.518 #> 6 6 0.472 1.48 -0.537 0.210 #> 7 7 0.156 -0.0295 0.112 -0.226 #> 8 8 -0.747 0.519 -0.347 0.476 #> 9 9 0.326 -0.373 0.340 0.470 #> 10 10 0.428 -1.28 0.131 -0.0240 #> # i 20 more rows #> -- Initial Conditions ($inits): -- #> centr peri #> 0 0 #> -- First part of data (object): -- #> # A tibble: 900 x 12 #> id evid cmt amt rate time DV centr peri SEX WT CRCL #> #> 1 1 1 1 296. 296. 0 0 0 0 1 49.4 83 #> 2 1 0 NA NA NA 0 0 0 0 1 49.4 83 #> 3 1 0 NA NA NA 0.246 41.3 58.7 9.45 1 49.4 83 #> 4 1 0 NA NA NA 0.516 31.0 100. 34.0 1 49.4 83 #> 5 1 0 NA NA NA 0.729 72.2 124. 58.9 1 49.4 83 #> 6 1 0 NA NA NA 0.921 82.0 140. 83.1 1 49.4 83 #> # i 894 more rows plot(data, log=\"y\") #> Warning in transformation$transform(x): NaNs produced #> Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = #> minor_breaks, : log-10 transformation introduced infinite #> values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"daptomycin-reference","dir":"Articles","previous_headings":"","what":"Daptomycin Reference","title":"Weight Based Dosing in rxode2","text":"weight-based simulation adapted Daptomycin article : Dvorchik B, Arbeit RD, Chung J, Liu S, Knebel W, Kastrissios H. Population pharmacokinetics daptomycin. Antimicrob Agents Che mother 2004; 48: 2799-2807. doi:(10.1128/AAC.48.8.2799-2807.2004)[https://dx.doi.org/10.1128%2FAAC.48.8.2799-2807.2004] simulation example made available work Sherwin Sy modifications Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors","text":"Matthew L. Fidler (core team/developer/manual) Melissa Hallow (tutorial writer) Wenping Wang (core team/developer)","code":""},{"path":"https://nlmixr2.github.io/rxode2/authors.html","id":"contributors","dir":"","previous_headings":"","what":"Contributors","title":"Authors","text":"Zufar Mulyukov – Wrote initial version rxShiny() modifications Matthew Fidler Alan Hindmarsh – Lsoda author Awad H. Al-Mohy – Al-Mohy matrix exponential author Ernst Hairer – dop853 author Gerhard Wanner – dop853 author Goro Fuji – Timsort author Hadley Wickham – Author original findLhs RxODE, also original author .s3register (used permission anyone, changed Matthew Fidler) Jack Dongarra – LApack author Linda Petzold – LSODA Martin Maechler – expm author, used routines inductive linearization Morwenn – Timsort author Nicholas J. Higham – Author Al-mohy matrix exponential Roger B. Sidje – expokit matrix exponential author Simon Frost – thread safe C implementation liblsoda Kevin Ushey – Original author fast factor, modified Matthew Filder Yu Feng – thread safe liblsoda Cleve Moler – LApack author David Cooley – Author fast_factor modified now used RxODE quickly create factors IDs without sorting like R Drew Schmidt – Drew Schmidt author edits exponential matrix utility taken R package expm Matt Dowle & Arun Srinivasan – data.table authors openMp framework based upon","code":""},{"path":"https://nlmixr2.github.io/rxode2/authors.html","id":"rxode-acknowledgments","dir":"","previous_headings":"","what":"RxODE acknowledgments:","title":"Authors","text":"Sherwin Sy – Weight based dosing example Justin Wilkins – Documentation updates, logo testing Emma Schwager – R IJK distribution author J Coligne – dop853 fortran author Bill Denney – Documentation updates, manual minor bug fixes Tim Waterhouse – Fixed one bug mac working directories Richard Upton – Helped solving ADVAN linCmt() solutions Dirk Eddelbuettel – Made fixes Rcpp changes require R strict headers Ross Ihaka – R author Robert Gentleman – R author R core team – R authors","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"overview","dir":"","previous_headings":"","what":"Overview","title":"Facilities for Simulating from ODE-Based Models","text":"rxode2 R package solving simulating ode-based models. models convert rxode2 mini-language C create compiled dll fast solving. ODE solving using rxode2 key parts: rxode2() creates C code fast ODE solving based simple syntax related Leibnitz notation. NONMEM deSolve compatible data frame, created et() eventTable() easy simulation events data frame can augmented adding time-varying adding individual covariates (iCov= needed) multiple subject data, may parallelized. single subject output data frame adaptive Covariances metrics uncertanty can used simulate solving","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Facilities for Simulating from ODE-Based Models","text":"can install released version rxode2 CRAN : fastest way install development version rxode2 use r-universe service. service compiles binaries development version MacOS Windows don’t wait package compilation: doesn’t work install development version rxode2 build models rxode2, need working c compiler. use parallel threaded solving rxode2, c compiler needs support open-mp. can check see R working c compiler can check : toolchain, can set described platform information :","code":"install.packages(\"rxode2\") install.packages(c(\"dparser\", \"rxode2ll\", \"rxode2\"), repos=c(nlmixr2=\"https://nlmixr2.r-universe.dev\", CRAN=\"https://cloud.r-project.org\")) devtools::install_github(\"nlmixr2/rxode2ll\") devtools::install_github(\"nlmixr2/rxode2\") ## install.packages(\"pkgbuild\") pkgbuild::has_build_tools(debug = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"windows","dir":"","previous_headings":"Installation","what":"Windows","title":"Facilities for Simulating from ODE-Based Models","text":"windows may simply use installr install rtools: Alternatively can download install rtools directly.","code":"install.packages(\"installr\") library(installr) install.rtools()"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"mac-osx","dir":"","previous_headings":"Installation","what":"Mac OSX","title":"Facilities for Simulating from ODE-Based Models","text":"get speed need OpenMP enabled compile rxode2 compiler. various options date discussion likely data.table installation FAQ MacOS. last thing keep mind rxode2 uses code similar original lsoda requires gfortran compiler setup well OpenMP compilers. going using rxode2 nlmixr together older mac computer, suggest trying following: crashes R session binary work Mac machine. able run nlmixr, need compile package manually. proceed assuming homebrew installed system. system terminal need install dependencies compile symengine: installing dependencies, need re-install symengine:","code":"library(symengine) brew install cmake gmp mpfr libmpc install.packages(\"symengine\", type=\"source\") library(symengine)"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"linux","dir":"","previous_headings":"Installation","what":"Linux","title":"Facilities for Simulating from ODE-Based Models","text":"install linux make sure install gcc (openmp support) gfortran using distribution’s package manager. also install system dependencies like udunits symengine dependencies complete installation work linux. also done system packages package manager add appropriate repositories. point r2u project.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"r-versions-40-and-41","dir":"","previous_headings":"Installation","what":"R versions 4.0 and 4.1","title":"Facilities for Simulating from ODE-Based Models","text":"installation R versions 4.0.x 4.1.x, please see instructions install symengine nlmixr2 installation instructions: https://github.com/nlmixr2/nlmixr2#r-package-installation","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"development-version","dir":"","previous_headings":"","what":"Development version","title":"Facilities for Simulating from ODE-Based Models","text":"Since development version rxode2 uses StanHeaders, need make sure compiler setup support C++14, described rstan setup page. R 4.0, believe requires modifying windows toolchain longer (much easier setup). C++ toolchain setup appropriately, can install development version GitHub :","code":"# install.packages(\"devtools\") devtools::install_github(\"nlmixr2/rxode2ll\") devtools::install_github(\"nlmixr2/rxode2\")"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"illustrated-example","dir":"","previous_headings":"","what":"Illustrated Example","title":"Facilities for Simulating from ODE-Based Models","text":"model equations can specified text string, model file R expression. differential algebraic equations permitted. Differential equations specified d/dt(var_name) =. equation can separated semicolon. load rxode2 package compile model: Model parameters may specified ini({}) model block, initial conditions can specified within model cmt(0)= X, like model eff(0) <- 1. may also specify subject variability initial conditions residual error components just like nlmixr2. allows single interface nlmixr2/rxode2 models. Also note, classic rxode2 interface still works just like past (don’t worry breaking code time). fact, can get classic rxode2 model $simulationModel ui object:","code":"library(rxode2) #> rxode2 2.1.3.9000 using 8 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ # central KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 # peripheral Q=1.05E+01 V3=2.97E+02 # effects Kin=1 Kout=1 EC50=200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 eff(0) <- 1 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } mod1 <- mod1() # create the ui object (can also use `rxode2(mod1)`) mod1 summary(mod1$simulationModel)"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"specify-dosing-and-sampling-in-rxode2","dir":"","previous_headings":"","what":"Specify Dosing and sampling in rxode2","title":"Facilities for Simulating from ODE-Based Models","text":"rxode2 provides simple flexible way specify dosing sampling functions generate event table. First, empty event table generated “et()” function. interface similar NONMEM event tables: can see code, can dose compartment named rxode2 model. slight deviation NONMEM can reduce need compartment renumbering. events can also combined expanded (multi-subject events complex regimens) rbind, c, seq, rep. information creating complex dosing regimens using rxode2 see rxode2 events vignette.","code":"ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(0:240) # Add sampling"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"solving-odes","dir":"","previous_headings":"","what":"Solving ODEs","title":"Facilities for Simulating from ODE-Based Models","text":"ODE can now solved using rxSolve: returns modified data frame. can see compartment values plot : , Note labels automatically labeled units initial event table. rxode2 extracts units label plot (present).","code":"x <- mod1 %>% rxSolve(ev) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ x #> ── Solved rxode2 object ── #> ── Parameters (x$params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions (x$inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows library(ggplot2) plot(x,C2) + ylab(\"Central Concentration\") plot(x,eff) + ylab(\"Effect\")"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"ode-solving","dir":"","previous_headings":"","what":"ODE solving","title":"Facilities for Simulating from ODE-Based Models","text":"brief comparison pharmacometric ODE solving R packages rxode2. several R packages differential equations. popular deSolve. However pharmacometrics-specific ODE solving, 2 packages rxode2 released CRAN. uses compiled code faster ODE solving. mrgsolve, uses C++ lsoda solver solve ODE systems. user required write hybrid R/C++ code create mrgsolve model translated C++ solving. contrast, rxode2 R-like mini-language parsed C code solves ODE system. Unlike rxode2, mrgsolve currently support symbolic manipulation ODE systems, like automatic Jacobian calculation forward sensitivity calculation (rxode2 currently supports basis nlmixr2’s FOCEi algorithm) dMod, uses unique syntax create “reactions”. reactions create underlying ODEs created c code compiled deSolve model. contrast rxode2 defines ODE systems lower level. rxode2’s parsing mini-language comes C, whereas dMod’s parsing comes R. Like rxode2, dMod supports symbolic manipulation ODE systems calculates forward sensitivities adjoint sensitivities systems. Unlike rxode2, dMod thread-safe since deSolve yet thread-safe. PKPDsim defines models R-like syntax converts system compiled code. Like mrgsolve, PKPDsim currently support symbolic manipulation ODE systems. PKPDsim thread-safe. open pharmacometrics open source community fairly friendly, rxode2 maintainers positive interactions ODE-solving pharmacometric projects listed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"pk-solved-systems","dir":"","previous_headings":"","what":"PK Solved systems","title":"Facilities for Simulating from ODE-Based Models","text":"rxode2 supports 1-3 compartment models gradients (using stan math’s auto-differentiation). currently uses equations PKADVAN allow time-varying covariates. rxode2 can mix ODEs solved systems.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"the-following-packages-for-solved-pk-systems-are-on-cran","dir":"","previous_headings":"PK Solved systems","what":"The following packages for solved PK systems are on CRAN","title":"Facilities for Simulating from ODE-Based Models","text":"mrgsolve currently 1-2 compartment (poly-exponential models) models built-. solved systems ODEs currently mixed. pmxTools currently 1-3 compartment (super-positioning) models built-. R-implementation. PKPDsim uses 1-3 “ADVAN” solutions using non-superpositioning. PKPDmodels one-compartment model gradients.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"non-cran-libraries","dir":"","previous_headings":"PK Solved systems","what":"Non-CRAN libraries:","title":"Facilities for Simulating from ODE-Based Models","text":"PKADVAN Provides 1-3 compartment models using non-superpositioning. allows time-varying covariates.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Linear Unit (ELU) Activation Function — ELU","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"Exponential Linear Unit (ELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"","code":"ELU(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"","code":"ELU(c(-1, 0, 1, 2), 2) #> [1] -1.264241 0.000000 1.000000 2.000000 # Can also be used in rxode2: x <- rxode2({ r=SELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> Warning: #> with negative times, compartments initialize at first negative observed time #> with positive times, compartments initialize at time zero #> use 'rxSetIni0(FALSE)' to initialize at first observed time #> this warning is displayed once per session #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -1.11 #> 2 0 0 #> 3 1 1.05 #> 4 2 2.10"},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":null,"dir":"Reference","previous_headings":"","what":"GELU activation function — GELU","title":"GELU activation function — GELU","text":"GELU activation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GELU activation function — GELU","text":"","code":"GELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GELU activation function — GELU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GELU activation function — GELU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GELU activation function — GELU","text":"","code":"GELU(c(-2, -1, 0, 1, 2)) #> [1] -0.04550026 -0.15865525 0.00000000 0.84134475 1.95449974 # you can use rxode2 as well r <- rxode2({ r = GELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ et <- et(c(-2, -1, 0, 1, 2)) rxSolve(r, et) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 5 × 2 #> time r #> #> 1 -2 -0.0455 #> 2 -1 -0.159 #> 3 0 0 #> 4 1 0.841 #> 5 2 1.95"},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Parametric ReLU Activation Function — PReLU","title":"Parametric ReLU Activation Function — PReLU","text":"Parametric ReLU Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parametric ReLU Activation Function — PReLU","text":"","code":"PReLU(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parametric ReLU Activation Function — PReLU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parametric ReLU Activation Function — PReLU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parametric ReLU Activation Function — PReLU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Parametric ReLU Activation Function — PReLU","text":"","code":"PReLU(c(-1, 0, 1, 2), 2) #> [1] -2 0 1 2 # Can also be used in rxode2: x <- rxode2({ r=PReLU(time, 2) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -2 #> 2 0 0 #> 3 1 1 #> 4 2 2"},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Rectified Linear Unit (ReLU) Activation Function — ReLU","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"function applies Rectified Linear Unit (ReLU) activation function input numeric vector. ReLU function defined positive part argument: \\(f(x) = max(0, x)\\).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"","code":"ReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"","code":"ReLU(c(-1, 0, 1, 2)) #> [1] 0 0 1 2 # Can also be used in rxode2: x <- rxode2({ r=ReLU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0 #> 2 0 0 #> 3 1 1 #> 4 2 2"},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"Scaled Exponential Linear Unit (SELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"","code":"SELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"","code":"SELU(c(-1, 0, 1, 2)) #> [1] -1.111331 0.000000 1.050701 2.101402 # Can also be used in rxode2: x <- rxode2({ r=SELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -1.11 #> 2 0 0 #> 3 1 1.05 #> 4 2 2.10"},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":null,"dir":"Reference","previous_headings":"","what":"Switch Activation Function — Swish","title":"Switch Activation Function — Swish","text":"switch activation function defined :","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Switch Activation Function — Swish","text":"","code":"Swish(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Switch Activation Function — Swish","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Switch Activation Function — Swish","text":"numeric vector ReLU function applied element x.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Switch Activation Function — Swish","text":"$$f(x) = x \\cdot \\text{sigmoid}(x)$$","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Switch Activation Function — Swish","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Switch Activation Function — Swish","text":"","code":"Swish(c(-1, 0, 1, 2)) #> [1] -0.2689414 0.0000000 0.7310586 1.7615942 # Can also be used in rxode2: x <- rxode2({ r<- Swish(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -0.269 #> 2 0 0 #> 3 1 0.731 #> 4 2 1.76"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":null,"dir":"Reference","previous_headings":"","what":"Add dosing to eventTable — add.dosing","title":"Add dosing to eventTable — add.dosing","text":"adds dosing event event table. provided piping syntax magrittr. can also accessed eventTable$add.dosing(...)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add dosing to eventTable — add.dosing","text":"","code":"add.dosing( eventTable, dose, nbr.doses = 1L, dosing.interval = 24, dosing.to = 1L, rate = NULL, amount.units = NA_character_, start.time = 0, do.sampling = FALSE, time.units = NA_character_, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add dosing to eventTable — add.dosing","text":"eventTable eventTable object; accessed object eventTable$ dose numeric scalar, dose amount amount.units; nbr.doses integer, number doses; dosing.interval required numeric scalar, time doses time.units, defaults 24 time.units=\"hours\"; dosing.integer, compartment dose goes (first compartment default); rate infusions, rate infusion (default NULL, bolus dosing; amount.units optional string indicating dosing units. Defaults NA indicate per original EventTable definition. start.time required dosing start time; .sampling logical, observation sampling records added dosing times? Defaults FALSE. time.units optional string indicating time units. Defaults \"hours\" indicate per original EventTable definition. ... parameters passed et().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add dosing to eventTable — add.dosing","text":"eventTable updated dosing (note event table updated anyway)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add dosing to eventTable — add.dosing","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add dosing to eventTable — add.dosing","text":"Matthew L. Fidler Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add dosing to eventTable — add.dosing","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":null,"dir":"Reference","previous_headings":"","what":"Add sampling to eventTable — add.sampling","title":"Add sampling to eventTable — add.sampling","text":"adds dosing event event table. provided piping syntax magrittr. can also accessed eventTable$add.sampling()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add sampling to eventTable — add.sampling","text":"","code":"add.sampling(eventTable, time, time.units = NA)"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add sampling to eventTable — add.sampling","text":"eventTable eventTable object. accessed object eventTable$ time vector time values (time.units). time.units optional string specifying time units. Defaults units specified EventTable initialized.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add sampling to eventTable — add.sampling","text":"eventTable updated sampling. (Note event table updated even reassign eventTable)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add sampling to eventTable — add.sampling","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add sampling to eventTable — add.sampling","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add sampling to eventTable — add.sampling","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":null,"dir":"Reference","previous_headings":"","what":"Coerce object to data.frame — as.et","title":"Coerce object to data.frame — as.et","text":"Coerce object data.frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Coerce object to data.frame — as.et","text":"","code":"as.et(x, ...) # Default S3 method as.et(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Coerce object to data.frame — as.et","text":"x Object coerce et. ... parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Coerce object to data.frame — as.et","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":null,"dir":"Reference","previous_headings":"","what":"Turn into an ini block for initialization — as.ini","title":"Turn into an ini block for initialization — as.ini","text":"Turn ini block initialization","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Turn into an ini block for initialization — as.ini","text":"","code":"as.ini(x) # S3 method for class 'character' as.ini(x) # S3 method for class 'data.frame' as.ini(x) # S3 method for class 'call' as.ini(x) # S3 method for class 'lotriFix' as.ini(x) # S3 method for class 'matrix' as.ini(x) # Default S3 method as.ini(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Turn into an ini block for initialization — as.ini","text":"x Item convert rxode2/nlmixr2 ui ini expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Turn into an ini block for initialization — as.ini","text":"rxode2 ini expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Turn into an ini block for initialization — as.ini","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Turn into an ini block for initialization — as.ini","text":"","code":"ini <- quote(ini({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 })) as.ini(ini) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) l <- quote(lotri({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 })) as.ini(l) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) m <- lotri({ eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 }) as.ini(m) #> ini({ #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) one.compartment <- function() { ini({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } as.ini(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ui <- one.compartment() as.ini(ui) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ui$iniDf #> ntheta neta1 neta2 name lower est upper fix label backTransform #> 1 1 NA NA tka -Inf 0.4510756 Inf FALSE #> 2 2 NA NA tcl -Inf 1.0006319 Inf FALSE #> 3 3 NA NA tv -Inf 3.4499875 Inf FALSE #> 4 4 NA NA add.sd 0 0.7000000 Inf FALSE #> 5 NA 1 1 eta.ka -Inf 0.6000000 Inf FALSE #> 6 NA 2 2 eta.cl -Inf 0.3000000 Inf FALSE #> 7 NA 3 3 eta.v -Inf 0.1000000 Inf FALSE #> condition err #> 1 #> 2 #> 3 #> 4 cp add #> 5 id #> 6 id #> 7 id as.ini(ui$iniDf) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ini <- c(\"ini({\", \"tka <- log(1.57)\", \"tcl <- log(2.72)\", \"tv <- log(31.5)\", \"eta.ka ~ 0.6\", \"eta.cl ~ 0.3\", \"eta.v ~ 0.1\", \"add.sd <- 0.7\", \"})\") as.ini(ini) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ini <- paste(ini, collapse=\"\\n\") as.ini(ini) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> })"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":null,"dir":"Reference","previous_headings":"","what":"Turn into a model expression — as.model","title":"Turn into a model expression — as.model","text":"Turn model expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Turn into a model expression — as.model","text":"","code":"as.model(x) # S3 method for class 'character' as.model(x) # S3 method for class 'call' as.model(x) # S3 method for class 'list' as.model(x) # Default S3 method as.model(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Turn into a model expression — as.model","text":"x item convert model({}) expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Turn into a model expression — as.model","text":"model expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Turn into a model expression — as.model","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Turn into a model expression — as.model","text":"","code":"model <- quote(model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) })) as.model(model) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) one.compartment <- function() { ini({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } as.model(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) ui <- one.compartment() as.model(ui) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) model <- c(\"model({\", \"ka <- exp(tka + eta.ka)\", \"cl <- exp(tcl + eta.cl)\", \"v <- exp(tv + eta.v)\", \"d/dt(depot) = -ka * depot\", \"d/dt(center) = ka * depot - cl / v * center\", \"cp = center / v\", \"cp ~ add(add.sd)\", \"})\") as.model(model) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) model <- paste(model, collapse=\"\\n\") as.model(model) #> model({ #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> })"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":null,"dir":"Reference","previous_headings":"","what":"As rxode2 ui — as.rxUi","title":"As rxode2 ui — as.rxUi","text":"rxode2 ui","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"As rxode2 ui — as.rxUi","text":"","code":"as.rxUi(x) # S3 method for class 'rxode2' as.rxUi(x) # S3 method for class 'rxode2tos' as.rxUi(x) # S3 method for class 'rxModelVars' as.rxUi(x) # S3 method for class '`function`' as.rxUi(x) # S3 method for class 'rxUi' as.rxUi(x) # Default S3 method as.rxUi(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"As rxode2 ui — as.rxUi","text":"x Object convert rxUi object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"As rxode2 ui — as.rxUi","text":"rxUi object (error converted)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"As rxode2 ui — as.rxUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"As rxode2 ui — as.rxUi","text":"","code":"mod1 <- function() { ini({ # central KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 # peripheral Q=1.05E+01 V3=2.97E+02 # effects Kin=1 Kout=1 EC50=200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 eff(0) <- 1 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } as.rxUi(mod1) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 4-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 centr #> 3 3 peri #> 4 4 eff #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> KA <- 0.294 #> CL <- 18.6 #> V2 <- 40.2 #> Q <- 10.5 #> V3 <- 297 #> Kin <- 1 #> Kout <- 1 #> EC50 <- 200 #> }) #> model({ #> C2 <- centr/V2 #> C3 <- peri/V3 #> d/dt(depot) <- -KA * depot #> d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) <- Q * C2 - Q * C3 #> eff(0) <- 1 #> d/dt(eff) <- Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":null,"dir":"Reference","previous_headings":"","what":"Verify that the compartment exists in a model — assertCompartmentExists","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"Verify compartment exists model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"","code":"assertCompartmentExists(ui, x) testCompartmentExists(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"ui model test x value test (can vector strings)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"value compartment exists; vector returns first item matches","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"testCompartmentExists(): Test compartment exists","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"Matthew Fidler & Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":null,"dir":"Reference","previous_headings":"","what":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"Verify value valid nlmixr2 compartment name","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"","code":"assertCompartmentName(x) assertVariableName(x) assertParameterValue(x) assertExists(ui, x) testExists(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"x value test ui needed, rxode2/nlmixr2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"value error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"assertVariableName(): Verify value valid nlmixr2 variable name assertParameterValue(): Verify value valid nlmixr2 parameter value assertExists(): Assert compartment/variable exists testExists(): Test compartment/variable exists","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":null,"dir":"Reference","previous_headings":"","what":"Verify that a compartment would be new to the model — assertCompartmentNew","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"Verify compartment new model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"","code":"assertCompartmentNew(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"ui model test model paramet exists x value test","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"value error","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"Matthew Fidler & Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":null,"dir":"Reference","previous_headings":"","what":"Assert properties of the rxUi models — assertRxUi","title":"Assert properties of the rxUi models — assertRxUi","text":"Assert properties rxUi models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assert properties of the rxUi models — assertRxUi","text":"","code":"assertRxUi(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiPrediction(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiSingleEndpoint(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiTransformNormal(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiNormal(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiMuRefOnly(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiEstimatedResiduals(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiPopulationOnly(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiMixedOnly(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiRandomOnIdOnly(ui, extra = \"\", .var.name = .vname(ui))"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assert properties of the rxUi models — assertRxUi","text":"ui Model check extra Extra text append error message (like \"focei\") .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assert properties of the rxUi models — assertRxUi","text":"rxUi model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Assert properties of the rxUi models — assertRxUi","text":"functions different types assertions assertRxUi – Make sure proper rxode2 model (throw error) assertRxUiSingleEndpoint – Make sure rxode2 model single endpoint model (throw error) assertRxUiTransformNormal – Make sure model residual distribution normal transformably normal assertRxUiNormal – Make sure model residual distribution normal assertRxUiEstimatedResiduals – Make sure residual error parameters estimated (modeled). assertRxUiPopulationOnly – Make sure model population model (mixed effects) assertRxUiMixedOnly – Make sure model mixed effect model (population effect, ) assertRxUiPrediction – Make sure model predictions assertRxUiMuRefOnly – Make sure parameters mu-referenced assertRxUiRandomOnIdOnly – Make sure random effects ID level","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assert properties of the rxUi models — assertRxUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Assert properties of the rxUi models — assertRxUi","text":"","code":"# \\donttest{ one.cmt <- function() { ini({ tka <- 0.45; label(\"Ka\") tcl <- log(c(0, 2.7, 100)); label(\"Cl\") tv <- 3.45; label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } assertRxUi(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # assertRxUi(rnorm) # will fail assertRxUiSingleEndpoint(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":null,"dir":"Reference","previous_headings":"","what":"Assert a variable exists in the model — assertVariableExists","title":"Assert a variable exists in the model — assertVariableExists","text":"Assert variable exists model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assert a variable exists in the model — assertVariableExists","text":"","code":"assertVariableExists(ui, x) testVariableExists(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assert a variable exists in the model — assertVariableExists","text":"ui rxode2 ui model x x variable exist model. vector variable check see exists, must valid nlmixr2 variable names","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assert a variable exists in the model — assertVariableExists","text":"variable matches, case multiple variables, first matches. nothing matches return error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Assert a variable exists in the model — assertVariableExists","text":"testVariableExists(): Test variable exists","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assert a variable exists in the model — assertVariableExists","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":null,"dir":"Reference","previous_headings":"","what":"Assert a variable would be new to the model — assertVariableNew","title":"Assert a variable would be new to the model — assertVariableNew","text":"Assert variable new model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assert a variable would be new to the model — assertVariableNew","text":"","code":"assertVariableNew(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assert a variable would be new to the model — assertVariableNew","text":"ui rxode2 ui model x variable x variable new model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assert a variable would be new to the model — assertVariableNew","text":"nothing, error x new","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assert a variable would be new to the model — assertVariableNew","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"meant perform way quantile() can drop replacement code using quantile() using distributional assumptions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"","code":"binomProbs(x, ...) # Default S3 method binomProbs( x, probs = c(0.025, 0.05, 0.5, 0.95, 0.975), na.rm = FALSE, names = TRUE, onlyProbs = TRUE, n = 0L, m = 0L, pred = FALSE, piMethod = c(\"lim\"), M = 5e+05, tol = .Machine$double.eps^0.25, ciMethod = c(\"wilson\", \"wilsonCorrect\", \"agrestiCoull\", \"wald\", \"wc\", \"ac\"), ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"x numeric vector whose mean probability based confidence values wanted, NA NaN values allowed numeric vectors unless na.rm TRUE. ... Arguments passed default method, allows many different methods applied. probs numeric vector probabilities values interval 0 1, inclusive. 0, represents maximum observed, 1, represents maximum observed. 0.5 represents expected probability (mean). na.rm logical; true, NA NaN's removed x quantiles computed. names logical; true, result names attribute. onlyProbs logical; true, return probability based confidence interval/prediction interval estimates, otherwise return extra statistics. n integer/integerish; n used calculate prediction confidence interval. n=0 (default) use number non-NA observations. calculating prediction interval, represents number observations used input (\"true\") distribution. m integer. using prediction interval represents number samples observed future prediction interval. pred Use prediction interval instead confidence interval. default FALSE. piMethod gives prediction interval method (currently lim) Lu 2020 M number simulations run LIM PI. tol tolerance root finding LIM prediction interval ciMethod gives method calculating confidence interval. Can : \"argestiCoull\" \"ac\" – Agresti-Coull method. 95\\ interval, method use concept \"adding 2 successes 2 failures,\" rather uses formulas explicitly described following link: https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Agresti-Coull_Interval. \"wilson\" – Wilson Method \"wilsonCorrect\" \"wc\" – Wilson method continuity correction \"wald\" – Wald confidence interval standard z approximation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"default return probabilities names (named) points expected distribution located given sampling mean standard deviation. onlyProbs=FALSE prepend mean, variance, standard deviation, minimum, maximum number non-NA observations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"used confidence intervals rxode2 solved objects using confint(mean=\"binom\")","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"Newcombe, R. G. (1998). \"Two-sided confidence intervals single proportion: comparison seven methods\". Statistics Medicine. 17 (8): 857–872. doi:10.1002/(SICI)1097-0258(19980430)17:8<857::AID-SIM777>3.0.CO;2-E. PMID 9595616. Hezhi Lu, Hua Jin, new prediction interval binomial random variable based inferential models, Journal Statistical Planning Inference, Volume 205, 2020, Pages 156-174, ISSN 0378-3758, https://doi.org/10.1016/j.jspi.2019.07.001.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"","code":"x<- rbinom(7001, p=0.375, size=1) binomProbs(x) #> 2.5% 5% 50% 95% 97.5% #> 0.3723355 0.3741468 0.3836595 0.3932621 0.3951111 # you can also use the prediction interval # \\donttest{ binomProbs(x, pred=TRUE) #> 2.5% 5% 50% 95% 97.5% #> 0.3675189 0.3702328 0.3836595 0.3972290 0.3998000 # } # Can get some extra statistics if you request onlyProbs=FALSE binomProbs(x, onlyProbs=FALSE) #> mean var sd n 2.5% 5% #> 0.3836595 0.2364649 0.4862765 7001.0000000 0.3723355 0.3741468 #> 50% 95% 97.5% #> 0.3836595 0.3932621 0.3951111 x[2] <- NA_real_ binomProbs(x, onlyProbs=FALSE) #> mean var sd n 2.5% 5% 50% 95% 97.5% #> NA NA NA NA NA NA NA NA NA binomProbs(x, na.rm=TRUE) #> 2.5% 5% 50% 95% 97.5% #> 0.3723892 0.3742006 0.3837143 0.3933178 0.3951670"},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":null,"dir":"Reference","previous_headings":"","what":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"boxCox/yeoJohnson inverse boxCox/yeoJohnson functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"","code":"boxCox(x, lambda = 1) boxCoxInv(x, lambda = 1) yeoJohnson(x, lambda = 1) yeoJohnsonInv(x, lambda = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"x input value(s) transform lambda lambda value transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"values boxCox boxCoxInv","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"","code":"boxCox(10, 0.5) #> [1] 4.324555 boxCoxInv(4.32, 0.5) #> [1] 9.9856 yeoJohnson(10, 0.5) #> [1] 4.63325 yeoJohnsonInv(4.32, 0.5) #> [1] 8.9856"},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the rxode2 coefficients — coef.rxode2","title":"Return the rxode2 coefficients — coef.rxode2","text":"returns parameters , state variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the rxode2 coefficients — coef.rxode2","text":"","code":"# S3 method for class 'rxode2' coef(object, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the rxode2 coefficients — coef.rxode2","text":"object rxode2 object ... ignored arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the rxode2 coefficients — coef.rxode2","text":"rxCoef object following params list strings parameters rxode2 object state list strings names state rxode2 object. ini model specified default values parameters. rxode2 referring rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the rxode2 coefficients — coef.rxode2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":null,"dir":"Reference","previous_headings":"","what":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"Note Inverse wishart rescaled match original scale covariance matrix.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"","code":"cvPost( nu, omega, n = 1L, omegaIsChol = FALSE, returnChol = FALSE, type = c(\"invWishart\", \"lkj\", \"separation\"), diagXformType = c(\"log\", \"identity\", \"variance\", \"nlmixrSqrt\", \"nlmixrLog\", \"nlmixrIdentity\") )"},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"nu Degrees Freedom (Number Observations) covariance matrix simulation. omega Either estimate covariance matrix estimated standard deviations matrix form row forming standard deviation simulated values n Number Matrices sample. default 1. useful omega matrix. Otherwise determined number rows input omega matrix standard deviations omegaIsChol indicator omega matrix Cholesky decomposition. used type=\"invWishart\" returnChol Return Cholesky decomposition covariance matrix sample. used type=\"invWishart\" type type covariance posterior simulated. can : invWishart posterior inverse wishart; allows correlations parameters modeled. uncertainty parameter captured degrees freedom parameter. lkj posterior separates standard deviation estimates (modeled outside provided omega argument) correlation estimates. correlation estimate simulated rLKJ1(). simulation uses relationship eta=(nu-1)/2. relationship based proof relationship restricted LKJ-distribution inverse wishart distribution (XXXXXX). correlation posterior calculated, estimated standard deviations combined simulated correlation matrix create covariance matrix. separation Like lkj option, separates estimation correlation standard deviation. Instead using LKJ distribution simulate correlation, simulates inverse wishart identity matrix converts result correlation matrix. correlation matrix used standard deviation calculate simulated covariance matrix. diagXformType Diagonal transformation type. : log standard deviations log transformed, actual standard deviations exp(omega) identity standard deviations transformed. standard deviations transformed; positive. variance variances specified omega matrix; transformed standard deviations. nlmixrSqrt standard deviations come nlmixr omega matrix diag(chol(inv(omega))) = x^2 nlmixrLog standard deviations come nlmixr omega matrix omega matrix diag(chol(solve(omega))) = exp(x) nlmixrIdentity standard deviations come nlmixr omega matrix omega matrix diag(chol(solve(omega))) = x nlmixr transformations make sense -diagonal correlations modeled.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"matrix (n=1) list matrices (n > 1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"covariance matrix 1x1 matrix, uses scaled inverse chi-squared equivalent Inverse Wishart distribution uni-directional case. general, separation strategy preferred diagonal matrices. dimension matrix 10, lkj numerically faster separation method. However, lkj method densities close zero (XXXX) dimension 10. case, though computationally expensive separation method performs better. matrices modeled covariances, easiest method use inverse Wishart allows simulation correlation matrices (XXXX). method well suited well behaved matrices, variance components low high. modeling nonlinear mixed effects modeling matrices high low variances considered sub-optimal describing system. rules mind, reasonable use inverse Wishart.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"Alvarez , Niemi J Simpson M. (2014) Bayesian Inference Covariance Matrix. Conference Applied Statistics Agriculture. Wang1 Z, Wu Y, Chu H. (2018) Equivalence LKJ distribution restricted Wishart distribution. [[1]] #> [,1] [,2] [,3] #> [1,] 96.862339 0.7748630 -4.626203 #> [2,] 0.774863 0.0283645 0.119055 #> [3,] -4.626203 0.1190550 4.094623 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.06218003 0.05815138 -0.5246680 #> [2,] 0.05815138 0.70904612 0.3915278 #> [3,] -0.52466798 0.39152780 7.9264641 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 0.5725945 -0.7039115 0.3184467 #> [2,] -0.7039115 11.3514944 -0.9360070 #> [3,] 0.3184467 -0.9360070 0.2958648 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 0.7659467 -2.803861 0.3011139 #> [2,] -2.8038607 44.273527 -9.4665546 #> [3,] 0.3011139 -9.466555 2.7453546 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 3.56762745 0.07176028 0.13656513 #> [2,] 0.07176028 0.42276523 -0.02050365 #> [3,] 0.13656513 -0.02050365 0.03225709 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 0.5663711 0.0340262 0.1454173 #> [2,] 0.0340262 0.5977762 0.3269646 #> [3,] 0.1454173 0.3269646 0.2082704 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 0.004927562 -0.002843181 0.005520158 #> [2,] -0.002843181 0.029412775 -0.013463952 #> [3,] 0.005520158 -0.013463952 0.182352220 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.007589923 -0.06216448 0.002859140 #> [2,] -0.062164482 2.50977902 -0.118417072 #> [3,] 0.002859140 -0.11841707 0.007999188 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 14.0163806 1.2051675 0.8401261 #> [2,] 1.2051675 0.2780401 -0.1994978 #> [3,] 0.8401261 -0.1994978 1.0749189 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 0.5415731 -0.7109454 0.4040513 #> [2,] -0.7109454 2.4865600 -0.4319643 #> [3,] 0.4040513 -0.4319643 1.5098302 #> ## or return cholesky decomposition cvPost(3, sapply(1:3, function(...) { rnorm(10) }), type = \"lkj\", returnChol = TRUE ) #> [[1]] #> [,1] [,2] [,3] #> [1,] 1.86548 0.9644577 -1.1377549 #> [2,] 0.00000 0.5131372 0.7633548 #> [3,] 0.00000 0.0000000 1.3396488 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.3853808 -0.2396288 0.2759888 #> [2,] 0.0000000 0.8531100 0.3904699 #> [3,] 0.0000000 0.0000000 3.9907672 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 0.5811021 0.02348261 0.040235833 #> [2,] 0.0000000 0.30199556 0.006542798 #> [3,] 0.0000000 0.00000000 0.326766208 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 1.787819 -0.5701632 0.02973627 #> [2,] 0.000000 1.7537550 0.16276115 #> [3,] 0.000000 0.0000000 0.38911063 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 2.155836 -0.1976721 -0.27043101 #> [2,] 0.000000 0.7801646 0.06882305 #> [3,] 0.000000 0.0000000 0.16161284 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 1.590053 0.07434835 -0.17317880 #> [2,] 0.000000 0.82964610 0.13403995 #> [3,] 0.000000 0.00000000 0.07785199 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 0.4123939 0.2062854 -0.8475394 #> [2,] 0.0000000 2.5346241 0.4594744 #> [3,] 0.0000000 0.0000000 0.4939941 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.332944 -0.6235242 -0.002281778 #> [2,] 0.000000 2.1873959 0.885067020 #> [3,] 0.000000 0.0000000 1.705736993 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 4.539001 0.4690774 -2.300368 #> [2,] 0.000000 3.9959179 -1.030652 #> [3,] 0.000000 0.0000000 2.165767 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 1.294237 2.545228e-05 -0.891757 #> [2,] 0.000000 6.211554e-01 -1.993399 #> [3,] 0.000000 0.000000e+00 1.819896 #> ## Sample 3 covariances with lognormal standard deviations via separation ## strategy using inverse Wishart correlation sample cvPost(3, sapply(1:3, function(...) { rnorm(10) }), type = \"separation\") #> [[1]] #> [,1] [,2] [,3] #> [1,] 17.8091343 0.73461953 -1.39358522 #> [2,] 0.7346195 0.43703688 0.08246014 #> [3,] -1.3935852 0.08246014 0.39231482 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.11144462 0.2079765 -0.08551474 #> [2,] 0.20797652 9.2698949 -0.16544961 #> [3,] -0.08551474 -0.1654496 0.08403645 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 0.7908562 -0.5415399 -0.8590748 #> [2,] -0.5415399 0.3821333 0.5923616 #> [3,] -0.8590748 0.5923616 0.9845958 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 11.0562602 0.33123520 1.27030624 #> [2,] 0.3312352 0.42048853 -0.01175715 #> [3,] 1.2703062 -0.01175715 0.20178261 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 0.3908392 1.232200 0.3605851 #> [2,] 1.2321999 4.029834 1.1549621 #> [3,] 0.3605851 1.154962 0.3440444 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 0.9003795 0.2147410 3.1855956 #> [2,] 0.2147410 0.1209066 0.7990146 #> [3,] 3.1855956 0.7990146 13.1359204 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 0.8417985 -0.8216620 -0.7381474 #> [2,] -0.8216620 0.9218277 0.7890609 #> [3,] -0.7381474 0.7890609 0.7039473 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.16942278 0.01244557 -0.01024524 #> [2,] 0.01244557 0.04491023 -0.07210998 #> [3,] -0.01024524 -0.07210998 0.11723618 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 0.4109154 -1.842263 -0.7241764 #> [2,] -1.8422630 10.322635 3.4070393 #> [3,] -0.7241764 3.407039 1.3859887 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 0.9428107 -0.7354081 0.6621306 #> [2,] -0.7354081 0.5785147 -0.5232715 #> [3,] 0.6621306 -0.5232715 0.4840937 #> ## or returning the cholesky decomposition cvPost(3, sapply(1:3, function(...) { rnorm(10) }), type = \"separation\", returnChol = TRUE ) #> [[1]] #> [,1] [,2] [,3] #> [1,] 0.5361344 -0.5646490 -1.2157714 #> [2,] 0.0000000 0.2706145 0.7833376 #> [3,] 0.0000000 0.0000000 1.4143150 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.4763222 -0.1686305 -0.2638639 #> [2,] 0.0000000 0.3953129 0.2370631 #> [3,] 0.0000000 0.0000000 0.2553825 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 1.457362 -0.1565739 0.003957496 #> [2,] 0.000000 0.2969488 0.004259446 #> [3,] 0.000000 0.0000000 0.034623292 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 0.2697727 0.1901255 0.1775689 #> [2,] 0.0000000 0.1863785 -0.4415488 #> [3,] 0.0000000 0.0000000 1.3256841 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 1.081252 -0.2458460 0.05591077 #> [2,] 0.000000 0.4958417 0.11182166 #> [3,] 0.000000 0.0000000 0.07342814 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 0.4513931 -1.555660 0.9059502 #> [2,] 0.0000000 1.430568 -0.3169197 #> [3,] 0.0000000 0.000000 0.7111382 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 5.850312 0.3103629 -3.1410818 #> [2,] 0.000000 0.3115511 0.2156489 #> [3,] 0.000000 0.0000000 2.5678462 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.3920281 -0.17091427 1.44657948 #> [2,] 0.0000000 0.01081568 -0.09688330 #> [3,] 0.0000000 0.00000000 0.08276372 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 2.021659 -0.6427884 0.8126606 #> [2,] 0.000000 0.2158093 -0.3291584 #> [3,] 0.000000 0.0000000 0.3722985 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 0.4696165 0.1467044 -1.908483 #> [2,] 0.0000000 0.4906213 3.952318 #> [3,] 0.0000000 0.0000000 10.894538 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"Derivatives Exponential Linear Unit (ELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"","code":"dELU(x, alpha = 1) d2ELU(x, alpha = 1) d2aELU(x, alpha = 1) dELUa(x, alpha = 1) d2ELUa(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"numeric vector derivative(s) ELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"","code":"dELU(c(-1, 0, 1, 2), 2) #> [1] 0.7357589 2.0000000 1.0000000 1.0000000 d2ELU(c(-1, 0, 1, 2), 2) #> [1] 0.7357589 2.0000000 0.0000000 0.0000000 d2aELU(c(-1, 0, 1, 2), 2) #> [1] 0.3678794 1.0000000 0.0000000 0.0000000 dELUa(c(-1, 0, 1, 2), 2) #> [1] -0.6321206 0.0000000 0.0000000 0.0000000 d2ELUa(c(-1, 0, 1, 2), 2) #> [1] 0.3678794 1.0000000 0.0000000 0.0000000 # Can also be used in rxode2: r <- rxode2({ r1=dELU(time, 2) r2=d2ELU(time, 2) r2a=d2aELU(time, 2) ra=dELUa(time, 2) r2a=d2ELUa(time, 2) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 5 #> time r1 r2 r2a ra #> #> 1 -1 0.736 0.736 0.368 -0.632 #> 2 0 2 2 1 0 #> 3 1 1 0 0 0 #> 4 2 1 0 0 0"},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivatives of GELU — dGELU","title":"Derivatives of GELU — dGELU","text":"Derivatives GELU","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivatives of GELU — dGELU","text":"","code":"dGELU(x) d2GELU(x) d3GELU(x) d4GELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivatives of GELU — dGELU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivatives of GELU — dGELU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivatives of GELU — dGELU","text":"","code":"dGELU(c(-2, -1, 0, 1, 2)) #> [1] -0.08523180 -0.08331547 0.50000000 1.08331547 1.08523180 d2GELU(c(-2, -1, 0, 1, 2)) #> [1] -0.1079819 0.2419707 0.7978846 0.2419707 -0.1079819 d3GELU(c(-2, -1, 0, 1, 2)) #> [1] 0.0000000 0.7259122 0.0000000 -0.7259122 0.0000000 d4GELU(c(-2, -1, 0, 1, 2)) #> [1] 0.4319277 0.4839414 -1.5957691 0.4839414 0.4319277 # you can use rxode2 as well r <- rxode2({ r1 <- dGELU(time) r2 <- d2GELU(time) r3 <- d3GELU(time) r4 <- d4GELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ et <- et(c(-2, -1, 0, 1, 2)) rxSolve(r, et) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 5 × 5 #> time r1 r2 r3 r4 #> #> 1 -2 -0.0852 -0.108 0 0.432 #> 2 -1 -0.0833 0.242 0.726 0.484 #> 3 0 0.5 0.798 0 -1.60 #> 4 1 1.08 0.242 -0.726 0.484 #> 5 2 1.09 -0.108 0 0.432"},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivatives Parametric ReLU Activation Function — dPReLU","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"Derivatives Parametric ReLU Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"","code":"dPReLU(x, alpha = 1) dPReLUa(x, alpha = 1) dPReLUa1(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"numeric vector derivative(s) ELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"","code":"dPReLU(c(-1, 0, 1, 2), 2) #> [1] 2 2 1 1 dPReLUa(c(-1, 0, 1, 2), 2) #> [1] -1 0 0 0 dPReLUa1(c(-1, 0, 1, 2), 2) #> [1] 1 1 0 0 # Can also be used in rxode2: r <- rxode2({ r1=dPReLU(time, 2) r2a=dPReLUa(time, 2) ra=dPReLUa1(time, 2) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 4 #> time r1 r2a ra #> #> 1 -1 2 -1 1 #> 2 0 2 0 1 #> 3 1 1 0 0 #> 4 2 1 0 0"},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"function applies derivative Rectified Linear Unit (ReLU) activation function input numeric vector.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"","code":"dReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"numeric vector derivative ReLU function","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"","code":"dReLU(c(-1, 0, 1, 2)) #> [1] 0 0 1 1 # Can also be used in rxode2: x <- rxode2({ r=dReLU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0 #> 2 0 0 #> 3 1 1 #> 4 2 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"Derivative Scaled Exponential Linear Unit (SELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"","code":"dSELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"numeric vector derivative SELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"","code":"dSELU(c(-1, 0, 1, 2)) #> [1] 0.6467686 1.7580993 1.0507010 1.0507010 # Can also be used in rxode2: x <- rxode2({ r=dSELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0.647 #> 2 0 1.76 #> 3 1 1.05 #> 4 2 1.05"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of the Swish Activation Function — dSwish","title":"Derivative of the Swish Activation Function — dSwish","text":"Derivative Swish Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of the Swish Activation Function — dSwish","text":"","code":"dSwish(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of the Swish Activation Function — dSwish","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of the Swish Activation Function — dSwish","text":"numeric vector derivative SELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivative of the Swish Activation Function — dSwish","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of the Swish Activation Function — dSwish","text":"","code":"dSwish(c(-1, 0, 1, 2)) #> [1] 0.07232949 0.50000000 0.92767051 1.09078425 # Can also be used in rxode2: x <- rxode2({ r <- dSwish(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0.0723 #> 2 0 0.5 #> 3 1 0.928 #> 4 2 1.09"},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":null,"dir":"Reference","previous_headings":"","what":"This uses simulations to match the rse — dfWishart","title":"This uses simulations to match the rse — dfWishart","text":"uses simulations match rse","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This uses simulations to match the rse — dfWishart","text":"","code":"dfWishart(omega, n, rse, upper, totN = 1000, diag = TRUE, seed = 1234)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This uses simulations to match the rse — dfWishart","text":"omega represents matrix simulation n represents number subjects/samples comes (used calculate rse). present assumes rse= sqrt(2)/sqrt(n) rse rse try match, specified, derived n upper upper boundary root finding terms degrees freedom. specified, n*200 totN represents total number simulated inverse wishart deviates diag TRUE, represents rse match diagonals, otherwise total matrix. seed make simulation reproducible, represents seed used simulating inverse Wishart distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This uses simulations to match the rse — dfWishart","text":"output uniroot() find right estimate","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This uses simulations to match the rse — dfWishart","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This uses simulations to match the rse — dfWishart","text":"","code":"dfWishart(lotri::lotri(a+b~c(1, 0.5, 1)), 100) #> $root #> [1] 164.9818 #> #> $f.root #> [1] 0.0005180792 #> #> $iter #> [1] 28 #> #> $init.it #> [1] NA #> #> $estim.prec #> [1] 7.882673e-05 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of Leaky ReLU activation function — dlReLU","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"Derivative Leaky ReLU activation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"","code":"dlReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"","code":"dlReLU(c(-1, 0, 1)) #> [1] 0.01 0.01 1.00 # Can use in rxode2 as well r <- rxode2({r <- dlReLU(time)}) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 2 #> time r #> #> 1 -1 0.01 #> 2 0 0.01 #> 3 1 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":null,"dir":"Reference","previous_headings":"","what":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"returns new expression, old expression, new variable old variable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"","code":".assertRenameErrorModelLine(line, vars)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"line quoted call information line vars Variables contained within mdel","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"list(new, old, newChar, oldChar)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":null,"dir":"Reference","previous_headings":"","what":"cbind Ome — .cbindOme","title":"cbind Ome — .cbindOme","text":"cbind Ome","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"cbind Ome — .cbindOme","text":"","code":".cbindOme(et, mat, n)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"cbind Ome — .cbindOme","text":"et theta data frame mat full matrix simulation omegas n number subject simulated","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"cbind Ome — .cbindOme","text":"data frame et combined simulated omega matrix values","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"cbind Ome — .cbindOme","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":null,"dir":"Reference","previous_headings":"","what":"Clear/Set pipeline — .clearPipe","title":"Clear/Set pipeline — .clearPipe","text":"Clear/Set pipeline","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Clear/Set pipeline — .clearPipe","text":"","code":".clearPipe( rx = NULL, inits = NULL, events = NULL, params = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, sigma = NULL, dfObs = NULL, dfSub = NULL, nSub = NULL, nStud = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Clear/Set pipeline — .clearPipe","text":"rx rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Clear/Set pipeline — .clearPipe","text":"None, clears rxode2 pipeline","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":null,"dir":"Reference","previous_headings":"","what":"Collect warnings and just warn once. — .collectWarnings","title":"Collect warnings and just warn once. — .collectWarnings","text":"Collect warnings just warn .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Collect warnings and just warn once. — .collectWarnings","text":"","code":".collectWarnings(expr, lst = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Collect warnings and just warn once. — .collectWarnings","text":"expr R expression lst TRUE return list list(object,warnings) instead issuing warnings. Otherwise, FALSE issue warnings return object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Collect warnings and just warn once. — .collectWarnings","text":"value expression list value expression list warning messages","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Collect warnings and just warn once. — .collectWarnings","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a factor/char to an id — .convertId","title":"Convert a factor/char to an id — .convertId","text":"Convert factor/char id","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a factor/char to an id — .convertId","text":"","code":".convertId(a)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a factor/char to an id — .convertId","text":"value convert id","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a factor/char to an id — .convertId","text":"id factor","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a factor/char to an id — .convertId","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a factor/char to an id — .convertId","text":"","code":".convertId(\"a\") #> [1] a #> Levels: a"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":null,"dir":"Reference","previous_headings":"","what":"This copies the rxode2 UI object so it can be modified — .copyUi","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"copies rxode2 UI object can modified","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"","code":".copyUi(ui)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"ui Original UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"Copied UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand parameters — .expandPars","title":"Expand parameters — .expandPars","text":"Expand parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand parameters — .expandPars","text":"","code":".expandPars(object, params, events, control)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand parameters — .expandPars","text":"object rxode2 model variables object params parameters expand events event table help expansion control control structure help parameter generation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand parameters — .expandPars","text":"Expanded parameters simulation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expand parameters — .expandPars","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate extraC information for rxode2 models — .extraC","title":"Generate extraC information for rxode2 models — .extraC","text":"Generate extraC information rxode2 models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate extraC information for rxode2 models — .extraC","text":"","code":".extraC(extraC = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate extraC information for rxode2 models — .extraC","text":"extraC Additional extraC rxode2 compile optioioins","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate extraC information for rxode2 models — .extraC","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generate extraC information for rxode2 models — .extraC","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the extraCnow for compiling — .extraCnow","title":"Get the extraCnow for compiling — .extraCnow","text":"Get extraCnow compiling","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the extraCnow for compiling — .extraCnow","text":"","code":".extraCnow()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the extraCnow for compiling — .extraCnow","text":"string extraC information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the extraCnow for compiling — .extraCnow","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the last idLvl — .getLastIdLvl","title":"Get the last idLvl — .getLastIdLvl","text":"Get last idLvl","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the last idLvl — .getLastIdLvl","text":"","code":".getLastIdLvl()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the last idLvl — .getLastIdLvl","text":"Last idLvl","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the last idLvl — .getLastIdLvl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the last idLvl — .getLastIdLvl","text":"","code":".getLastIdLvl() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the internal breakdown of an evid — .getWh","title":"Get the internal breakdown of an evid — .getWh","text":"Get internal breakdown evid","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the internal breakdown of an evid — .getWh","text":"","code":".getWh(i)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the internal breakdown of an evid — .getWh","text":"evid breakdown","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the internal breakdown of an evid — .getWh","text":"named evid integer vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the internal breakdown of an evid — .getWh","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the internal breakdown of an evid — .getWh","text":"","code":".getWh(1001) #> wh cmt wh100 whI wh0 #> 11001 9 0 0 1 .getWh(10401) #> wh cmt wh100 whI wh0 #> 10401 3 0 1 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"Handle single error normal t distributions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"","code":".handleSingleErrTypeNormOrTFoceiBase( env, pred1, errNum = 1L, rxPredLlik = TRUE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"env Environment parsed model pred1 data.frame current error errNum number error specification nlmixr2 model rxPredLlik boolean indicating log likelihood calculated non-normal distributions. default TRUE.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"list lines added. lines contain rx_yj_ integer corresponds transformation type. rx_lambda_ transformation lambda rx_low_ lower boundary transformation rx_hi_ upper boundary transformation rx_pred_f_ prediction function rx_pred_ transformed prediction function rx_r_ transformed variance","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":null,"dir":"Reference","previous_headings":"","what":"This gets the append arg for the ini() piping — .iniGetAppendArg","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"gets append arg ini() piping","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"","code":".iniGetAppendArg(f, s)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"f try(force(append)) argument, s .character(substitute(append)) argument","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"corrected ini piping argument exported creating new ini methods requirements piping","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":null,"dir":"Reference","previous_headings":"","what":"Reorder rows in iniDf — .iniHandleAppend","title":"Reorder rows in iniDf — .iniHandleAppend","text":"Reorder rows iniDf","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reorder rows in iniDf — .iniHandleAppend","text":"","code":".iniHandleAppend(expr, rxui, envir, append)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reorder rows in iniDf — .iniHandleAppend","text":"expr Expression parsing rxui User interface function envir Environment parsing append Reorder theta parameters. NULL means change parameter order. parameter name (character string) means put new parameter named parameter. number less equal zero means put parameter beginning list. number greater last parameter number means put parameter end list.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reorder rows in iniDf — .iniHandleAppend","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":null,"dir":"Reference","previous_headings":"","what":"Update the iniDf of a model — .iniHandleLine","title":"Update the iniDf of a model — .iniHandleLine","text":"Update iniDf model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update the iniDf of a model — .iniHandleLine","text":"","code":".iniHandleLine(expr, rxui, envir = parent.frame(), append = NULL) .iniHandleFixOrUnfix(expr, rxui, envir = parent.frame(), append = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update the iniDf of a model — .iniHandleLine","text":"expr Expression parsing rxui User interface function envir Environment parsing append Reorder theta parameters. NULL means change parameter order. parameter name (character string) means put new parameter named parameter. number less equal zero means put parameter beginning list. number greater last parameter number means put parameter end list.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update the iniDf of a model — .iniHandleLine","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Update the iniDf of a model — .iniHandleLine","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the linear systems with gradients built-in — .linCmtSensB","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"linear systems gradients built-","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"","code":".linCmtSensB()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"logical (TRUE) solved systems gradients built-. (FALSE) solves systems gradients absent","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"","code":".linCmtSensB() #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a language object matches a template language object — .matchesLangTemplate","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"template == str2lang(\".\"), match anything. template == str2lang(\".name\"), match name. template == str2lang(\".call()\"), match call.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"","code":".matchesLangTemplate(x, template)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"x object check template template object match","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"TRUE matches, FALSE, otherwise","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"","code":".matchesLangTemplate(str2lang(\"d/dt(foo)\"), str2lang(\"d/dt(.name)\")) #> [1] TRUE .matchesLangTemplate(str2lang(\"d/dt(foo)\"), str2lang(\"d/foo(.name)\")) #> [1] FALSE .matchesLangTemplate(str2lang(\"d/dt(foo)\"), str2lang(\"d/.\")) #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal messaging statements — .minfo","title":"Internal messaging statements — .minfo","text":"Internal messaging statements","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal messaging statements — .minfo","text":"","code":".minfo(text, ..., .envir = parent.frame()) .malert(text, ..., .envir = parent.frame()) .mwarn(text, ..., .envir = parent.frame()) .msuccess(text, ..., .envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal messaging statements — .minfo","text":"text Text ... arguments .envir Environment evaluate ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal messaging statements — .minfo","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal messaging statements — .minfo","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle model lines — .modelHandleModelLines","title":"Handle model lines — .modelHandleModelLines","text":"Handle model lines","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle model lines — .modelHandleModelLines","text":"","code":".modelHandleModelLines( modelLines, rxui, modifyIni = FALSE, append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle model lines — .modelHandleModelLines","text":"modelLines model lines considered rxui rxode2 UI object modifyIni ini() considered append boolean determine lines appended piping. possible values : TRUE lines appended model instead replaced FALSE lines replaced model (default) NA lines pre-pended model instead replaced lhs expression, append lines last observed line expression lhs auto boolean tells piping automatically selects parameters characterized population parameter, subject variability, covariate. TRUE automatic selection occurs. FALSE automatic selection turned everything added covariate (can promoted parameter ini statement). default TRUE, can changed options(rxode2.autoVarPiping=FALSE). cov character vector variables assumed covariates. override automatic promotion population parameter estimate (eta) envir Environment evaluation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle model lines — .modelHandleModelLines","text":"New UI","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Handle model lines — .modelHandleModelLines","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign in the rxode2 pipeline — .pipeRx","title":"Assign in the rxode2 pipeline — .pipeRx","text":"Assign rxode2 pipeline","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign in the rxode2 pipeline — .pipeRx","text":"","code":".pipeRx(obj) .pipeInits(obj) .pipeEvents(obj) .pipeParams(obj) .pipeKeep(obj) .pipeThetaMat(obj) .pipeOmega(obj) .pipeSigma(obj) .pipeDfObs(obj) .pipeDfSub(obj) .pipeNSub(obj) .pipeNStud(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign in the rxode2 pipeline — .pipeRx","text":"obj Object assign. NA return value.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign in the rxode2 pipeline — .pipeRx","text":"pipeline object (invisibly)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign in the rxode2 pipeline — .pipeRx","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":null,"dir":"Reference","previous_headings":"","what":"Returns quoted call information — .quoteCallInfoLines","title":"Returns quoted call information — .quoteCallInfoLines","text":"Returns quoted call information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Returns quoted call information — .quoteCallInfoLines","text":"","code":".quoteCallInfoLines(callInfo, envir = parent.frame(), iniDf = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Returns quoted call information — .quoteCallInfoLines","text":"callInfo Call information envir Environment evaluation (needed) iniDf parent model iniDf piping ini block (NULL otherwise)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Returns quoted call information — .quoteCallInfoLines","text":"Quote call information. name=expression, change name<-expression quoted call list. expressions within brackets ie {}, unlist brackets called one single sequence.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Returns quoted call information — .quoteCallInfoLines","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"Get blank, theta1, eta1 initialization block iniDf","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"","code":".rxBlankIni(type = c(\"empty\", \"theta\", \"eta\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"type type initialization block return","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"data.frame appropriate number/type columns. type=\"empty\", data.frame 0 rows correct types. type=\"theta\", data.frame 1 row correct types default values. \"name\" \"est\" likely need updated. type=\"eta\", data.frame 1 row correct types default values single eta added. \"name\" \"est\" likely need updated.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"","code":".rxBlankIni(\"empty\") #> [1] ntheta neta1 neta2 name lower est upper fix err label #> <0 rows> (or 0-length row.names) .rxBlankIni(\"theta\") #> ntheta neta1 neta2 name lower est upper fix err label #> 1 1 NA NA -Inf 0 Inf FALSE .rxBlankIni(\"eta\") #> ntheta neta1 neta2 name lower est upper fix err label #> 1 NA 1 1 0 0.1 Inf FALSE "},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the C code of an internal function — .rxC","title":"Return the C code of an internal function — .rxC","text":"Return C code internal function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the C code of an internal function — .rxC","text":"","code":".rxC(fun)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the C code of an internal function — .rxC","text":"fun string function wish get C code ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the C code of an internal function — .rxC","text":"C code found (string) NULL found","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the C code of an internal function — .rxC","text":"Matthew Fider","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":null,"dir":"Reference","previous_headings":"","what":"Print out a table in the documentation — .rxDocTable","title":"Print out a table in the documentation — .rxDocTable","text":"Print table documentation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print out a table in the documentation — .rxDocTable","text":"","code":".rxDocTable(table, caption = \"none\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print out a table in the documentation — .rxDocTable","text":"table data frame caption character vector representing caption latex table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print out a table in the documentation — .rxDocTable","text":"based knitr context: output kableExtra::kbl latex output output DT::datatable html output otherwise output knitr::kable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print out a table in the documentation — .rxDocTable","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Print out a table in the documentation — .rxDocTable","text":"","code":".rxDocTable(rxReservedKeywords) #> #> #> |Reserved Name |Meaning |Alias | #> |:--------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------| #> |time |solver time |t | #> |podo |In Transit compartment models, last dose amount | | #> |tlast |Time of Last dose | | #> |M_E |Exp(1) | | #> |M_LOG2E |log2(e) | | #> |M_LOG10E |log10(e) | | #> |M_LN2 |log(2) | | #> |M_LN10 |log(10) | | #> |M_PI |pi | | #> |M_PI_2 |pi/2 | | #> |M_PI_4 |pi/4 | | #> |M_1_PI |1/pi | | #> |M_2_PI |2/pi | | #> |M_2_SQRTPI |2/sqrt(pi) | | #> |M_SQRT2 |sqrt(2) | | #> |M_SQRT1_2 |1/sqrt(2) | | #> |M_SQRT_3 |sqrt(3) | | #> |M_SQRT_32 |sqrt(32) | | #> |M_LOG10_2 |Log10(2) | | #> |M_2PI |2*pi | | #> |M_SQRT_PI |sqrt(pi) | | #> |M_1_SQRT_2PI |1/(sqrt(2*pi)) | | #> |M_LN_SQRT_PI |log(sqrt(pi)) | | #> |M_LN_SQRT_2PI |log(sqrt(2*pi)) | | #> |M_LN_SQRT_PId2 |log(sqrt(pi/2)) | | #> |pi |pi | | #> |NA |R's NA value | | #> |NaN |Not a Number Value | | #> |Inf |Infinite Value | | #> |newind |1: First record of individual; 2: Subsequent record of individual |NEWIND | #> |rxFlag |Flag for what part of the rxode2 model is being run; 1: ddt; 2: jac; 3: ini; 4: F; 5: lag; 6: rate; 7: dur; 8: mtime; 9: matrix exponential; 10: inductive linearization; 11: lhs | |"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"Get upper boundary condition transformation ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"","code":".rxGetHiBoundaryPred1AndIni(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"env Environment parsed model pred1 data.frame current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"Upper Boundary","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"Get lambda value based pred information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"","code":".rxGetLambdaFromPred1AndIni(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"env Environment environment pred1 Single error data frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"Lambda expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"Get lower boundary condition transformation requires ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"","code":".rxGetLowBoundaryPred1AndIni(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"env Environment parsed model pred1 data.frame current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"Lower Boundary","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Observation transformation — .rxGetPredictionDVTransform","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"Get Observation transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"","code":".rxGetPredictionDVTransform(env, pred1, yj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"env Environment parsed model pred1 data.frame current error yj transformation number current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"transformation expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the prediction name — .rxGetPredictionF","title":"Get the prediction name — .rxGetPredictionF","text":"Get prediction name","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the prediction name — .rxGetPredictionF","text":"","code":".rxGetPredictionF(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the prediction name — .rxGetPredictionF","text":"env Environment parsed model pred1 data.frame current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the prediction name — .rxGetPredictionF","text":"prediction symbol","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the prediction name — .rxGetPredictionF","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the prediction transformation — .rxGetPredictionFTransform","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"Get prediction transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"","code":".rxGetPredictionFTransform(env, pred1, yj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"env Environment parsed model pred1 data.frame current error yj transformation number current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"transformation expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Variance for error type — .rxGetVarianceForErrorType","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"Get Variance error type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"","code":".rxGetVarianceForErrorType(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"env Environment pred1 Pred one end-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"Variance error type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"Internal function tell linCmt() model variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"","code":".rxIsLinCmt()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"0 1","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function for calculating the Jacobian — .rxJacobian","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"Internal function calculating Jacobian","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"","code":".rxJacobian(model, vars = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"model symengine environment vars Variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"Jacobian information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"Internal function generate model variables linCmt() model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"","code":".rxLinCmtGen(lenState, vars)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"lenState Length state vars Variables model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"Model variables expanded linCmt model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal Pruning function — .rxPrune","title":"Internal Pruning function — .rxPrune","text":"Internal Pruning function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal Pruning function — .rxPrune","text":"","code":".rxPrune(x, envir = parent.frame(), strAssign = list())"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal Pruning function — .rxPrune","text":"x List quoted lines envir Environment information stored strAssign string assignment list model variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal Pruning function — .rxPrune","text":"Pruned model code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal Pruning function — .rxPrune","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the equivalents symengine user functions from C — .rxSEeqUsr","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"Return equivalents symengine user functions C","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"","code":".rxSEeqUsr()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"equivalent symengine user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":null,"dir":"Reference","previous_headings":"","what":"Sensitivity for model — .rxSens","title":"Sensitivity for model — .rxSens","text":"Sensitivity model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sensitivity for model — .rxSens","text":"","code":".rxSens(model, vars, vars2)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sensitivity for model — .rxSens","text":"model symengine model environment vars Variables single sensitivity vars2 present, 2 parameter sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sensitivity for model — .rxSens","text":"Sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Sensitivity for model — .rxSens","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"Get information rxode2 derived parameter transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"","code":".rxTransInfo(...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"... Parameters translated, unquoted assigned anything.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"Translation information; list contains: $str named string parameters seen underlying C/C++ code. parameters NA used linear compartment model calculations. $ncmt number compartments model $trans rxode2 translation number parameterization contains linCmt() translation number, number compartments parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"","code":".rxTransInfo(cl, v , Vp, vp2, q, q2) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"cl\" \"v\" \"q\" \"Vp\" \"q2\" \"vp2\" NA #> #> $ncmt #> [1] 3 #> #> $trans #> [1] 1 #> .rxTransInfo(k12, k21, k13, k31, kel, v) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"kel\" \"v\" \"k12\" \"k21\" \"k13\" \"k31\" NA #> #> $ncmt #> [1] 3 #> #> $trans #> [1] 2 #> .rxTransInfo(k12, k21, k13, k31, kel, v, ka) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"kel\" \"v\" \"k12\" \"k21\" \"k13\" \"k31\" \"ka\" #> #> $ncmt #> [1] 3 #> #> $trans #> [1] 2 #> .rxTransInfo(CL, V) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"CL\" \"V\" NA NA NA NA NA #> #> $ncmt #> [1] 1 #> #> $trans #> [1] 1 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":null,"dir":"Reference","previous_headings":"","what":"rxode2 general transformation function — .rxTransform","title":"rxode2 general transformation function — .rxTransform","text":"rxode2 general transformation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxode2 general transformation function — .rxTransform","text":"","code":".rxTransform( x, lambda = 1, low = 0, high = 1, transform = c(\"boxCox\", \"yeoJohnson\", \"untransformed\", \"lnorm\", \"logit\", \"logit + yeoJohnson\", \"probit\", \"probit + yeoJohnson\", \"logit + boxCox\", \"probit + boxCox\"), inverse = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxode2 general transformation function — .rxTransform","text":"x value transformed lambda lambda value transformation low lower bound transformation high upper bound transformation transform transformation use (can integer string matching supported transformations) inverse boolean inverse transformation performed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxode2 general transformation function — .rxTransform","text":"transformed value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxode2 general transformation function — .rxTransform","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"rxode2 general transformation function — .rxTransform","text":"","code":"logit(0.25) #> [1] -1.098612 .rxTransform(0.25, transform=\"logit\") #> [1] -1.098612 expit(-1.09) #> [1] 0.2516183 .rxTransform(-1.09, transform=\"logit\", inverse=TRUE) #> [1] 0.2516183"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":null,"dir":"Reference","previous_headings":"","what":"Temporarily set options then restore them while running code — .rxWithOptions","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"Temporarily set options restore running code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"","code":".rxWithOptions(ops, code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"ops list options temporarily set code code code run sink","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"value code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"","code":".rxWithOptions(list(digits = 21), { print(pi) }) #> [1] 3.141592653589793116 print(pi) #> [1] 3.141593"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":null,"dir":"Reference","previous_headings":"","what":"With one sink, then release — .rxWithSink","title":"With one sink, then release — .rxWithSink","text":"one sink, release","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"With one sink, then release — .rxWithSink","text":"","code":".rxWithSink(file, code) .rxWithSinkBoth(file, code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"With one sink, then release — .rxWithSink","text":"file path file sink running code code code run sink","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"With one sink, then release — .rxWithSink","text":"return results code section","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"With one sink, then release — .rxWithSink","text":".rxWithSink captures output cat .rxWithSinkBoth captures output cat message","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"With one sink, then release — .rxWithSink","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"With one sink, then release — .rxWithSink","text":"","code":"t <- tempfile() .rxWithSink(t, cat(\"message\\n\")) cat(\"cat2\\n\") # now you can see the cat2 #> cat2 lines <- readLines(t) unlink(t)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":null,"dir":"Reference","previous_headings":"","what":"Temporarily set options then restore them while running code — .rxWithWd","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"Temporarily set options restore running code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"","code":".rxWithWd(wd, code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"wd working directory temporarily set system evaluating code code code run sink","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"value code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"","code":".rxWithWd(tempdir(), { getwd() }) #> [1] \"/tmp/RtmpmSWcH0\" getwd() #> [1] \"/home/runner/work/rxode2/rxode2/docs/reference\""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 function pointers — .rxode2ptrs","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"function used get function pointers rxode2. used allow rxode2 binary linkage nlmixr2est.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"","code":".rxode2ptrs()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"list function pointers","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"","code":".rxode2ptrs() #> $rxode2rxRmvnSEXP #> #> #> $rxode2rxParProgress #> #> #> $rxode2getRxSolve_ #> #> #> $rxode2indSolve #> #> #> $rxode2getTime #> #> #> $rxode2isRstudio #> #> #> $rxode2iniSubjectE #> #> #> $rxode2sortIds #> #> #> $getSolvingOptionsInd #> #> #> $rxode2getUpdateInis #> #> #> $rxode2_rxode2_rxModelVars_ #> #> #> $rxode2_par_solve #> #> #> $rxode2rxGetId #> #> #> $rxode2getIndLambda #> #> #> $rxode2getIndLambdaYj #> #> #> $rxode2getIndLogitLow #> #> #> $rxode2getIndLogitHi #> #> #> $rxode2setIndParPtr #> #> #> $rxode2getIndParPtr #> #> #> $rxode2getIndNallTimes #> #> #> $rxode2setIndIdx #> #> #> $rxode2getIndIx #> #> #> $rxode2getIndEvid #> #> #> $rxode2getIndLhs #> #> #> $rxode2getIndNdoses #> #> #> $rxode2getIndNevid2 #> #> #> $rxode2setIndSolve #> #> #> $rxode2getIndSolve #> #> #> $rxode2getIndDv #> #> #> $rxode2getIndYj #> #> #> $rxode2getIndLimit #> #> #> $rxode2getIndCens #> #> #> $rxode2getIndIdx #> #> #> $rxode2getOpNeq #> #> #> $rxode2setOpNeq #> #> #> $rxode2hasOpBadSolve #> #> #> $rxode2getOpNlin #> #> #> $rxode2getOpCores #> #> #> $rxode2getOpNlhs #> #> #> $rxode2getOpStiff #> #> #> $rxode2resetOpBadSolve #> #> #> $rxode2getRxNsub #> #> #> $rxode2hasRxLimit #> #> #> $rxode2hasRxCens #> #> #> $rxode2getRxNall #> #> #> $rxode2getRxNobs #> #> #> $rxode2getRxNobs2 #> #> #> $rxode2getOpIndSolve #> #> #> $rxode2getRxNpars #> #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":null,"dir":"Reference","previous_headings":"","what":"Register a method for a suggested dependency — .s3register","title":"Register a method for a suggested dependency — .s3register","text":"Generally, recommend way register S3 method use S3Method() namespace directive (often generated automatically @export roxygen2 tag). However, technique requires generic imported package, sometimes want suggest package, provide method package loaded. s3_register() can called package's .onLoad() dynamically register method generic's package loaded. (avoid taking dependency vctrs one function, please feel free copy paste function source package.)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Register a method for a suggested dependency — .s3register","text":"","code":".s3register(generic, class, method = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Register a method for a suggested dependency — .s3register","text":"generic Name generic form pkg::generic. class Name class method Optionally, implementation method. default, found looking function called generic.class package environment. Note providing method can dangerous use devtools. namespace method reloaded devtools::load_all(), function keep inheriting old namespace. might cause crashes dangling .Call() pointers.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Register a method for a suggested dependency — .s3register","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Register a method for a suggested dependency — .s3register","text":"R 3.5.0 later, s3_register() also useful demonstrating class creation vignette, since method lookup longer always involves lexical scope. R 3.6.0 later, can achieve similar effect using \"delayed method registration\", .e. placing following NAMESPACE file:","code":"if (getRversion() >= \"3.6.0\") { S3method(package::generic, class) }"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Register a method for a suggested dependency — .s3register","text":"","code":"# A typical use case is to dynamically register tibble/pillar methods # for your class. That way you avoid creating a hard dependency on packages # that are not essential, while still providing finer control over # printing when they are used. .onLoad <- function(...) { .s3Register(\"pillar::pillar_shaft\", \"vctrs_vctr\") .s3Register(\"tibble::type_sum\", \"vctrs_vctr\") }"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":null,"dir":"Reference","previous_headings":"","what":"Return symengineFs from user functions — .symengineFs","title":"Return symengineFs from user functions — .symengineFs","text":"Return symengineFs user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return symengineFs from user functions — .symengineFs","text":"","code":".symengineFs()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return symengineFs from user functions — .symengineFs","text":"symengineFs user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return symengineFs from user functions — .symengineFs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":null,"dir":"Reference","previous_headings":"","what":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"converts NONMEM-style EVIDs classic RxODE events","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"","code":".toClassicEvid(cmt = 1L, amt = 0, rate = 0, dur = 0, ii = 0, evid = 0L, ss = 0)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"cmt compartment flag amt dose amount rate dose rate dur dose duration ii inter-dose interval evid event id ss steady state","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"classic evids, excluding evids added (need add manually) simply use etTran. mostly testing really used directly.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"","code":".toClassicEvid(cmt=10, amt=3, evid=1) #> [1] 1001 .toClassicEvid(cmt=10, amt=3, rate=2, evid=1) #> [1] 11001 .toClassicEvid(cmt=10, amt=3, rate=-1, evid=1) #> [1] 91001 .toClassicEvid(cmt=10, amt=3, rate=-2, evid=1) #> [1] 81001 .toClassicEvid(cmt=10, amt=3, dur=2, evid=1) #> [1] 21001 .toClassicEvid(cmt=304, amt=3, dur=2, evid=1) #> [1] 320401 .toClassicEvid(cmt=7, amt=0, rate=2, evid=1, ss=1) #> [1] 10740 .toClassicEvid(cmt=-10, amt=3, evid=1) #> [1] 1030 .toClassicEvid(cmt=10, amt=3, evid=5) #> [1] 41001 .toClassicEvid(cmt=6, amt=3, evid=6) #> [1] 50601 .toClassicEvid(cmt=6, amt=3, evid=7) #> [1] 650 .toClassicEvid(evid=2) #> [1] 2 .toClassicEvid(evid=4) #> [1] 101"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the function name with the current arguments as a string — .udfCallFunArg","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"Get function name current arguments string","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"","code":".udfCallFunArg(fun, args)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"fun function name args arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"string form 'fun(arg1, arg2)':","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":null,"dir":"Reference","previous_headings":"","what":"Lock/Unlock environment for getting R user functions — .udfEnvReset","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"Lock/Unlock environment getting R user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"","code":".udfEnvReset(lock = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"lock logical see environment look user defined functions locked. locked environments assigned. NULL returns lock status","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"lock status","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":null,"dir":"Reference","previous_headings":"","what":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"Setup UDF environment (querying user defined funtions)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"","code":".udfEnvSet(env)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"env environment user defined functions queried. NULL return current environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":null,"dir":"Reference","previous_headings":"","what":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"Use udf model variable information get environment functions exists","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"","code":".udfEnvSetUdf(udf)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"udf modelVars$udf, integer vector NA_integer_ address environment functions exist","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"nothing called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":null,"dir":"Reference","previous_headings":"","what":"See if the UI function exists in given environment. — .udfExists","title":"See if the UI function exists in given environment. — .udfExists","text":"functions declared, make sure exist .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"See if the UI function exists in given environment. — .udfExists","text":"","code":".udfExists(fun, nargs, envir, doList = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"See if the UI function exists in given environment. — .udfExists","text":"fun Function check nargs Number args check envir Environment check doList boolean see functions .udfEnv$fun checked . default TRUE, called recursively function (set FALSE)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"See if the UI function exists in given environment. — .udfExists","text":"logical declaring udf function exists environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"See if the UI function exists in given environment. — .udfExists","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the udf strings for creating model md5 — .udfMd5Info","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"Get udf strings creating model md5","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"","code":".udfMd5Info()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"string vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-useUtf.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function to figure out if this session supports Unicode — .useUtf","title":"Internal function to figure out if this session supports Unicode — .useUtf","text":"Internal function figure session supports Unicode","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-useUtf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function to figure out if this session supports Unicode — .useUtf","text":"","code":".useUtf()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-useUtf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function to figure out if this session supports Unicode — .useUtf","text":"boolean indicating session supports Unicode","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert numeric vector to repeated data.frame — .vecDf","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"Convert numeric vector repeated data.frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"","code":".vecDf(vec, n)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"vec Named input vector n Number columns","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"Data frame repeated vec","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":null,"dir":"Reference","previous_headings":"","what":"Default Softplus Activation Function — dsoftplus","title":"Default Softplus Activation Function — dsoftplus","text":"Default Softplus Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Default Softplus Activation Function — dsoftplus","text":"","code":"dsoftplus(x) d2softplus(x) d3softplus(x) d4softplus(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Default Softplus Activation Function — dsoftplus","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Default Softplus Activation Function — dsoftplus","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Default Softplus Activation Function — dsoftplus","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Default Softplus Activation Function — dsoftplus","text":"","code":"dsoftplus(c(-1, 0, 1, 2)) #> [1] 0.2689414 0.5000000 0.7310586 0.8807971 # You can use rxode2 too: r <- rxode2({ s1 <- dsoftplus(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time s1 #> #> 1 -1 0.269 #> 2 0 0.5 #> 3 1 0.731 #> 4 2 0.881"},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":null,"dir":"Reference","previous_headings":"","what":"Error function — erf","title":"Error function — erf","text":"Error function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Error function — erf","text":"","code":"erf(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Error function — erf","text":"x vector real values","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Error function — erf","text":"erf x","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Error function — erf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Error function — erf","text":"","code":"erf(1.0) #> [1] 0.8427008"},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":null,"dir":"Reference","previous_headings":"","what":"Event Table Function — et","title":"Event Table Function — et","text":"Event Table Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Event Table Function — et","text":"","code":"et(x, ..., envir = parent.frame()) # S3 method for class 'rxode2' et(x, ..., envir = parent.frame()) # S3 method for class '`function`' et(x, ..., envir = parent.frame()) # S3 method for class 'rxUi' et(x, ..., envir = parent.frame()) # S3 method for class 'rxSolve' et(x, ..., envir = parent.frame()) # S3 method for class 'rxParams' et(x, ..., envir = parent.frame()) # Default S3 method et( x, ..., time, amt, evid, cmt, ii, addl, ss, rate, dur, until, id, amountUnits, timeUnits, addSampling, envir = parent.frame(), by = NULL, length.out = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Event Table Function — et","text":"x first argument supplied event table. named allow et used pipe-line arbitrary objects. ... Times event tables. can also one named arguments . envir environment expr evaluated. May also NULL, list, data frame, pairlist integer specified sys.call. time Time time dose sampling times. can also unspecified determined object type (list numeric/integer). amt Amount dose. specified, assumes dosing record, instead sampling record. evid Event ID; can : Note reset event resets compartment values zero turns infusions. cmt Compartment name number. number, integer starting 1. Negative compartments turn compartment. compartment name, compartment name changed correct state/compartment number running simulation. compartment named \"-cmt\" compartment turned . ii specifying dose, inter-dose interval ss, addl options (described ). addl number additional doses inter-dose interval one dose. ss Steady state flag; can one : ss=2 steady state dose uses super-position principle allow complex steady states, like 10 mg morning 20 mg night, dosing 8 12 pm 8 pm instead every 12 hours. Since uses super positioning principle, makes sense know kinetics linear. values SS currently invalid. rate positive, rate infusion. Otherwise: modeled bioavailability applied positive rates (rate > 0), duration infusion changed. data specify rate amount, think modeled bioavailability can affect duration. instead want modeled bioavailability increase rate infusion instead duration infusion, specify dur instead model duration rate=2. dur Duration infusion. amt dur specified rate calculated two data items. dur specified instead rate, bioavailability changes increase rate instead duration. time dosing end. can easier way figure many additional doses needed sampling period. id integer vector IDs add remove event table. event table identical ID, may expand include IDs vector. negative IDs vector removed. amountUnits units dosing records (amt) timeUnits units time records (time) addSampling boolean indicating sampling time added time dosing time. default FALSE. number: increment sequence. length.desired length sequence. non-negative number, seq seq.int rounded fractional.","code":"Can also specify `cmt` as `dosing.to`, `dose.to`, `doseTo`, `dosingTo`, and `state`."},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Event Table Function — et","text":"new event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Event Table Function — et","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Event Table Function — et","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Event Table Function — et","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand additional doses — etExpand","title":"Expand additional doses — etExpand","text":"Expand additional doses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand additional doses — etExpand","text":"","code":"etExpand(et)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand additional doses — etExpand","text":"et Event table expand additional doses .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand additional doses — etExpand","text":"New event table addl doses expanded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expand additional doses — etExpand","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Expand additional doses — etExpand","text":"","code":"ev <- et(amt = 3, ii = 24, until = 240) print(ev) #> ── EventTable with 1 records ── #> 1 dosing records (see $get.dosing(); add with add.dosing or et) #> 0 observation times (see $get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with $expand(); or etExpand() #> ── First part of : ── #> # A tibble: 1 × 5 #> time amt ii addl evid #> #> 1 0 3 24 10 1:Dose (Add) etExpand(ev) # expands event table, but doesn't modify it #> ── EventTable with 11 records ── #> 11 dosing records (see value$get.dosing(); add with add.dosing or et) #> 0 observation times (see value$get.sampling(); add with add.sampling or et) #> ── First part of value: ── #> # A tibble: 11 × 4 #> time amt ii evid #> #> 1 0 3 0 1:Dose (Add) #> 2 24 3 0 1:Dose (Add) #> 3 48 3 0 1:Dose (Add) #> 4 72 3 0 1:Dose (Add) #> 5 96 3 0 1:Dose (Add) #> 6 120 3 0 1:Dose (Add) #> 7 144 3 0 1:Dose (Add) #> 8 168 3 0 1:Dose (Add) #> 9 192 3 0 1:Dose (Add) #> 10 216 3 0 1:Dose (Add) #> 11 240 3 0 1:Dose (Add) print(ev) #> ── EventTable with 1 records ── #> 1 dosing records (see $get.dosing(); add with add.dosing or et) #> 0 observation times (see $get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with $expand(); or etExpand() #> ── First part of : ── #> # A tibble: 1 × 5 #> time amt ii addl evid #> #> 1 0 3 24 10 1:Dose (Add) ev$expand() ## Expands the current event table and saves it in ev"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":null,"dir":"Reference","previous_headings":"","what":"Combining event tables — etRbind","title":"Combining event tables — etRbind","text":"Combining event tables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Combining event tables — etRbind","text":"","code":"etRbind( ..., samples = c(\"use\", \"clear\"), waitII = c(\"smart\", \"+ii\"), id = c(\"merge\", \"unique\") ) # S3 method for class 'rxEt' rbind(..., deparse.level = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Combining event tables — etRbind","text":"... event tables optionally time event tables, called waiting times help document. samples handle samples repeating event table. options : \"clear\" Clear sampling records combining datasets \"use\" Use sampling records combining datasets waitII determines waiting times events handled. options : \"smart\" \"smart\" handling waiting times default option. case, waiting time last observed inter-dose interval first combined event table, actual time doses given wait time. smaller last observed inter-dose interval, time event tables given inter-dose interval + waiting time event tables. \"+ii\" case, wait time added inter-dose interval matter length wait time inter-dose interval id rbind handle IDs. two different types options: merge id=\"merge\", IDs merged together, overlapping IDs merged single event table. unique id=\"unique\", IDs renumbered IDs event tables overlapping. deparse.level deparse.level traditional rbind ignored.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Combining event tables — etRbind","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Combining event tables — etRbind","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Combining event tables — etRbind","text":"Matthew L Fidler Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Combining event tables — etRbind","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":null,"dir":"Reference","previous_headings":"","what":"Repeat an rxode2 event table — etRep","title":"Repeat an rxode2 event table — etRep","text":"Repeat rxode2 event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Repeat an rxode2 event table — etRep","text":"","code":"etRep( x, times = 1, length.out = NA, each = NA, n = NULL, wait = 0, id = integer(0), samples = c(\"clear\", \"use\"), waitII = c(\"smart\", \"+ii\"), ii = 24 ) # S3 method for class 'rxEt' rep(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Repeat an rxode2 event table — etRep","text":"x rxode2 event table times Number times repeat event table length.Invalid rxode2 event tables, throw error used. Invalid rxode2 event tables, throw error used. n number times repeat event table. Overrides times. wait Waiting time repeated event table. default waiting, wait=0 id integer vector IDs add remove event table. event table identical ID, may expand include IDs vector. negative IDs vector removed. samples handle samples repeating event table. options : \"clear\" Clear sampling records combining datasets \"use\" Use sampling records combining datasets waitII determines waiting times events handled. options : \"smart\" \"smart\" handling waiting times default option. case, waiting time last observed inter-dose interval first combined event table, actual time doses given wait time. smaller last observed inter-dose interval, time event tables given inter-dose interval + waiting time event tables. \"+ii\" case, wait time added inter-dose interval matter length wait time inter-dose interval ii specifying dose, inter-dose interval ss, addl options (described ). ... Times event tables. can also one named arguments .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Repeat an rxode2 event table — etRep","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Repeat an rxode2 event table — etRep","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Repeat an rxode2 event table — etRep","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Repeat an rxode2 event table — etRep","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":null,"dir":"Reference","previous_headings":"","what":"Sequence of event tables — etSeq","title":"Sequence of event tables — etSeq","text":"combines sequence event tables.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sequence of event tables — etSeq","text":"","code":"etSeq(..., samples = c(\"clear\", \"use\"), waitII = c(\"smart\", \"+ii\"), ii = 24) # S3 method for class 'rxEt' seq(...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sequence of event tables — etSeq","text":"... event tables optionally time event tables, called waiting times help document. samples handle samples repeating event table. options : \"clear\" Clear sampling records combining datasets \"use\" Use sampling records combining datasets waitII determines waiting times events handled. options : \"smart\" \"smart\" handling waiting times default option. case, waiting time last observed inter-dose interval first combined event table, actual time doses given wait time. smaller last observed inter-dose interval, time event tables given inter-dose interval + waiting time event tables. \"+ii\" case, wait time added inter-dose interval matter length wait time inter-dose interval ii inter-dose intervals found event table, assume interdose interval given ii value. default 24.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sequence of event tables — etSeq","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Sequence of event tables — etSeq","text":"sequences event tables added argument list .... default combining event tables offset least last inter-dose interval prior event table (ii). separate event tables number, event tables separated least wait time defined number last inter-dose interval.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Sequence of event tables — etSeq","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Sequence of event tables — etSeq","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Sequence of event tables — etSeq","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":null,"dir":"Reference","previous_headings":"","what":"Event translation for rxode2 — etTrans","title":"Event translation for rxode2 — etTrans","text":"Event translation rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Event translation for rxode2 — etTrans","text":"","code":"etTrans( inData, obj, addCmt = FALSE, dropUnits = FALSE, allTimeVar = FALSE, keepDosingOnly = FALSE, combineDvid = NULL, keep = character(0), addlKeepsCov = FALSE, addlDropSs = TRUE, ssAtDoseTime = TRUE, iCov = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Event translation for rxode2 — etTrans","text":"inData Data frame translate obj object model variables can extracted addCmt Add compartment data frame (default FALSE). dropUnits Boolean drop units (default FALSE). allTimeVar Treat covariates time-varying keepDosingOnly keep individuals dosing records trailing dosing records last observation. combineDvid boolean indicating rxode2 use DVID observation records change cmt value; Useful multiple-endpoint nlmixr models. default determined option(\"rxode2.combine.dvid\") option set, TRUE. typically affect rxode2 simulations. keep named vector items want keep final rxode2 dataset. added rxode2 event records (seen), last observation carried forward used. addlKeepsCov determines additional dosing items repeats dose (FALSE) keeps covariates record dose (TRUE) addlDropSs steady state doses addl specification steady state flag dropped repeated doses (TRUE) retained (FALSE) ssAtDoseTime Boolean TRUE back calculates steady concentration actual time dose, otherwise FALSE doses shifted iCov data frame individual non-time varying covariates combine events dataset. iCov dataset one covariate per ID match event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Event translation for rxode2 — etTrans","text":"Object solving rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an event table object — eventTable","title":"Create an event table object — eventTable","text":"Initializes object class ‘EventTable’ methods adding querying dosing observation records","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an event table object — eventTable","text":"","code":"eventTable(amount.units = NA, time.units = NA)"},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an event table object — eventTable","text":"amount.units string denoting amount dosing units, e.g., “mg”, “ug”. Default NA denote unspecified units. also solved rxode2 object. case, eventTable(obj) returns eventTable used solve rxode2 object. time.units string denoting time units, e.g., “hours”, “days”. Default \"hours\". eventTable object consists data.frame storing ordered time-stamped events (unspecified) PK/PD dynamic system, units (strings) dosing time records, plus list functions add extract event records. Currently, events can two types: dosing events represent inputs system sampling time events represent observations system ‘amount.units’ ‘time.units’, respectively.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an event table object — eventTable","text":"modified data.frame following accessible functions: get.EventTable() returns current event table add.dosing() adds dosing records event table. get.dosing() returns data.frame dosing records. clear.dosing() clears deletes dosing event table `add.sampling() adds sampling time observation records event table. get.sampling()returns data.frame sampled observation records. clear.sampling() removes sampling event table. get.obs.rec() returns logical vector indicating whether event record represents observation . get.nobs() returns number observation (dosing) records. get.units() returns two-element character vector dosing time units, respectively copy() makes copy current event table. create copy event table object use qd2 <- qd$copy() expand() Expands event table multi-subject solving. done qd$expand(400) 400 subject data expansion","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Create an event table object — eventTable","text":"Matthew Fidler, Melissa Hallow Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an event table object — eventTable","text":"","code":"# create dosing and observation (sampling) events # QD 50mg dosing, 5 days followed by 25mg 5 days # qd <- eventTable(amount.units = \"mg\", time.units = \"days\") # qd$add.dosing(dose = 50, nbr.doses = 5, dosing.interval = 1, do.sampling = FALSE) # # sample the system's drug amounts hourly the first day, then every 12 hours # for the next 4 days qd$add.sampling(seq(from = 0, to = 1, by = 1 / 24)) qd$add.sampling(seq(from = 1, to = 5, by = 12 / 24)) # # print(qd$get.dosing()) # table of dosing records print(qd$get.nobs()) # number of observation (not dosing) records #> [1] 34 # # BID dosing, 5 days bid <- eventTable(\"mg\", \"days\") # only dosing bid$add.dosing( dose = 10000, nbr.doses = 2 * 5, dosing.interval = 12, do.sampling = FALSE ) # # Use the copy() method to create a copy (clone) of an existing # event table (simple assignments just create a new reference to # the same event table object (closure)). # bid.ext <- bid$copy() # three-day extension for a 2nd cohort bid.ext$add.dosing( dose = 5000, nbr.doses = 2 * 3, start.time = 120, dosing.interval = 12, do.sampling = FALSE ) # You can also use the Piping operator to create a table qd2 <- eventTable(amount.units = \"mg\", time.units = \"days\") %>% add.dosing(dose = 50, nbr.doses = 5, dosing.interval = 1, do.sampling = FALSE) %>% add.sampling(seq(from = 0, to = 1, by = 1 / 24)) %>% add.sampling(seq(from = 1, to = 5, by = 12 / 24)) # print(qd2$get.dosing()) # table of dosing records print(qd2$get.nobs()) # number of observation (not dosing) records #> [1] 34 # Note that piping with %>% will update the original table. qd3 <- qd2 %>% add.sampling(seq(from = 5, to = 10, by = 6 / 24)) print(qd2$get.nobs()) #> [1] 34 print(qd3$get.nobs()) #> [1] 55"},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":null,"dir":"Reference","previous_headings":"","what":"Find the assignments in R expression — findLhs","title":"Find the assignments in R expression — findLhs","text":"Find assignments R expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Find the assignments in R expression — findLhs","text":"","code":"findLhs(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Find the assignments in R expression — findLhs","text":"x R expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Find the assignments in R expression — findLhs","text":"list assigned parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Find the assignments in R expression — findLhs","text":"Hadley Wickham Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":null,"dir":"Reference","previous_headings":"","what":"Force using base order for rxode2 radix sorting — forderForceBase","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"Force using base order rxode2 radix sorting","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"","code":"forderForceBase(forceBase = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"forceBase boolean indicating rxode2 use R's order() radix sorting instead data.table's parallel radix sorting.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"value forceBase (can change data.table available)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"","code":"# \\donttest{ forderForceBase(TRUE) # Use base `order` for rxode2 sorts forderForceBase(FALSE) # Use `data.table` for rxode2 sorts # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":null,"dir":"Reference","previous_headings":"","what":"Gammap: normalized lower incomplete gamma function — gammap","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"gamma_p boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"","code":"gammap(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"numeric '' parameter normalized lower incomplete gamma z numeric 'z' parameter normalized lower incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"gammap results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"gamma p function given : gammap = lowergamma(, z)/gamma()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"","code":"gammap(1, 3) #> [1] 0.9502129 gammap(1:3, 3) #> [1] 0.9502129 0.8008517 0.5768099 gammap(1, 1:3) #> [1] 0.6321206 0.8646647 0.9502129"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":null,"dir":"Reference","previous_headings":"","what":"gammapDer: derivative of gammap — gammapDer","title":"gammapDer: derivative of gammap — gammapDer","text":"gamma_p_derivative boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"gammapDer: derivative of gammap — gammapDer","text":"","code":"gammapDer(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"gammapDer: derivative of gammap — gammapDer","text":"numeric '' parameter upper incomplete gamma z numeric 'z' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"gammapDer: derivative of gammap — gammapDer","text":"lowergamma results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"gammapDer: derivative of gammap — gammapDer","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"gammapDer: derivative of gammap — gammapDer","text":"","code":"gammapDer(1:3, 3) #> [1] 0.04978707 0.14936121 0.22404181 gammapDer(1, 1:3) #> [1] 0.36787944 0.13533528 0.04978707"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":null,"dir":"Reference","previous_headings":"","what":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"gammapInv gammapInva: Inverses normalized gammap function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"","code":"gammapInv(a, p) gammapInva(x, p)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"numeric '' parameter upper incomplete gamma p numeric 'p' parameter upper incomplete gamma x numeric 'x' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"inverse gammap results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"equation: p = gammap(, x) 'gammapInv' function returns value 'x' satisfies equation 'gammapInva' function returns value 'q' satisfies equation NOTE: gammapInva slow","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"","code":"gammapInv(1:3, 0.5) #> [1] 0.6931472 1.6783470 2.6740603 gammapInv(1, 1:3 / 3.1) #> [1] 0.3894648 1.0360919 3.4339872 gammapInv(1:3, 1:3 / 3.1) #> [1] 0.3894648 2.1988984 6.8872929 gammapInva(1:3, 1:3 / 3.1) #> [1] 0.3894648 2.1988984 6.8872929"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":null,"dir":"Reference","previous_headings":"","what":"Gammaq: normalized upper incomplete gamma function — gammaq","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"gamma_q boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"","code":"gammaq(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"numeric '' parameter normalized upper incomplete gamma z numeric 'z' parameter normalized upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"gammaq results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"gamma q function given : gammaq = uppergamma(, z)/gamma()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"","code":"gammaq(1, 3) #> [1] 0.04978707 gammaq(1:3, 3) #> [1] 0.04978707 0.19914827 0.42319008 gammaq(1, 1:3) #> [1] 0.36787944 0.13533528 0.04978707"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":null,"dir":"Reference","previous_headings":"","what":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"gammaqInv gammaqInva: Inverses normalized gammaq function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"","code":"gammaqInv(a, q) gammaqInva(x, q)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"numeric '' parameter upper incomplete gamma q numeric 'q' parameter upper incomplete gamma x numeric 'x' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"inverse gammaq results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"equation: q = gammaq(, x) 'gammaqInv' function returns value 'x' satisfies equation 'gammaqInva' function returns value '' satisfies equation NOTE: gammaqInva slow","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"","code":"gammaqInv(1:3, 0.5) #> [1] 0.6931472 1.6783470 2.6740603 gammaqInv(1, 1:3 / 3) #> [1] 1.0986123 0.4054651 0.0000000 gammaqInv(1:3, 1:3 / 3.1) #> [1] 1.131402 1.248533 0.684289 gammaqInva(1:3, 1:3 / 3.1) #> [1] 1.131402 1.248533 0.684289"},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"Create complete shiny application exploring dosing regimens given (hardcoded) PK/PD model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"","code":"genShinyApp.template( appDir = \"shinyExample\", verbose = TRUE, ODE.config = list(ode = \"model\", params = c(KA = 0.294), inits = c(eff = 1), method = \"lsoda\", atol = 1e-08, rtol = 1e-06) ) write.template.server(appDir) write.template.ui(appDir, statevars)"},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"appDir string directory store shiny app, default \"shinyExample\". directory appDir created exist. verbose logical specifying whether write messages shiny app generated. Defaults TRUE. ODE.config model name compiled list parameters sent rxSolve(). statevars List statevars passed write.template.ui() function. usually called directly. PK/PD model defined using rxode2(), set parameters initial values defined. appropriate R scripts shiny's user interface ui.R server logic server.R created directory appDir. function evaluates following PK/PD model default: can changed ODE.config parameter. launch shiny app, simply issue runApp(appDir) R command.","code":"C2 = centr/V2; C3 = peri/V3; d/dt(depot) =-KA*depot; d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) = Q*C2 - Q*C3; d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff;"},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"None, functions used side effects.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"functions create simple, working example dosing regimen simulation web application. Users may want modify code experiment creating shiny applications specific rxode2 models.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"","code":"# \\donttest{ # remove myapp when the example is complete on.exit(unlink(\"myapp\", recursive = TRUE, force = TRUE)) # create the shiny app example (template) genShinyApp.template(appDir = \"myapp\") #> #> Generating an example (template) for a dosing regimen shiny app #> #> Using the following PK/PD model: #> C2 = centr/V2; #> C3 = peri/V3; #> d/dt(depot) =-KA*depot; #> d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; #> d/dt(peri) = Q*C2 - Q*C3; #> d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; #> #> Translating the PK/PD ODE model into C, compiling, etc. #> #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> #> Parameters and their values: #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> #> Initial values in each compartment: #> depot centr pari eff #> 0 0 0 1 #> #> Warning: 2 arguments not used by format ' #> # #> # Dosing regimen template generated by rxode2::genShinyApp.template() #> # #> #> debug = TRUE #> #wd = sprintf(\"%%s/../\", getwd()) #> #setwd(wd) #> #> # Server inputs: Dose, dosing regimen, dosing frequency, #> # dosing cycle definition, number of dosing cycles #> #> library(shiny) #> library(rxode2) #> #> # read objects from \"rx_shiny_data.rda\" in the AppDir folder, #> # objects include, mod1, params, inits, method, atol, rtol.] #> #> load(\"./rx_shiny_data.rda\") #> if (!rxDynLoad(mod1)) mod1 <- rxode2(mod1, modName=\"mod1\") #> # Define server logic #> shinyServer(function(input, output) { #> #> get.cp <- reactive({ #> ds <- input$Dose #> reg <- switch(input$regimen, \"QD\"=1, \"BID\"=2) #> cyc <- switch(input$cycle, #> \"continous\"=c(7,0), #> \"1wkon 1wkoff\"=c(7,7), #> \"2wkon 1wkoff\"=c(14,7), #> \"3wkon 1wkoff\"=c(21,7) #> ) #> cyc <- [... truncated] #> Shiny files (ui.R, server.R) plus R data saved. #> #> To launch the Shiny app, type the following two R commands: #> #> \tlibrary(shiny) #> \trunApp(\"myapp\") #> # run the shiny app if (requireNamespace(\"shiny\", quietly=TRUE)) { library(shiny) # runApp(\"myapp\") # Won't launch in environments without browsers } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"Get base simulation model simulation inis underlying rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"","code":"getBaseIniSimModel(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"obj Fit Object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"Simulation object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the base simulation model for simulation — getBaseSimModel","title":"Get the base simulation model for simulation — getBaseSimModel","text":"Get base simulation model simulation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the base simulation model for simulation — getBaseSimModel","text":"","code":"getBaseSimModel(obj) # Default S3 method getBaseSimModel(obj) # Default S3 method getBaseIniSimModel(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the base simulation model for simulation — getBaseSimModel","text":"obj Fit Object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the base simulation model for simulation — getBaseSimModel","text":"Simulation object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the base simulation model for simulation — getBaseSimModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"Get symengine loading symengine rxS()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"","code":"getBaseSymengineModel(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"obj Object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"Simulation model ready load symeng","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":null,"dir":"Reference","previous_headings":"","what":"Get/Set the number of threads that rxode2 uses — getRxThreads","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"Get/Set number threads rxode2 uses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"","code":"getRxThreads(verbose = FALSE) setRxThreads(threads = NULL, percent = NULL, throttle = NULL) rxCores(verbose = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"verbose Display value relevant OpenMP settings threads NULL (default) rereads environment variables. 0 means use logical CPUs available. Otherwise number >= 1 percent provided number 2 100; percentage logical CPUs use. default startup, 50 percent. throttle 2 (default) means , roughly speaking, single thread used number subjects solved <=2, 2 threads number points <=4, etc. throttle speed small data tasks (especially repeated many times) incurring overhead managing multiple threads. throttle also suppress sorting ID solved first (nsubject solved)*throttle <= nthreads. rxode2 sorting occurs minimize time waiting another thread finish. last item solved long solving time, solving wait last costly solving occur. items likely take time solved first, wait less likely impact overall solving time. rxode2 IDs sorted individual number solving points (largest first). also C interface allows IDs resorted total time spent solving equation. allows packages like nlmixr sort solving time needed. Overall number threads throttled (restricted) small tasks sorting IDs suppressed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"number threads rxode2 uses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":null,"dir":"Reference","previous_headings":"","what":"Empty Guide — guide_none","title":"Empty Guide — guide_none","text":"empty guide draws nothing; included rxode2 compatibility ggplot 3.2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Empty Guide — guide_none","text":"","code":"guide_none(title = waiver(), position = waiver())"},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Empty Guide — guide_none","text":"title character string expression indicating title guide. NULL, title shown. default (waiver()), name scale object name specified labs() used title. position guide drawn: one top, bottom, left, right.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Empty Guide — guide_none","text":"nothing, simply included compatible ggplot 3.2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign the ini block in the rxode2 related object — ini<-","title":"Assign the ini block in the rxode2 related object — ini<-","text":"Assign ini block rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign the ini block in the rxode2 related object — ini<-","text":"","code":"ini(x, envir = environment(x)) <- value"},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign the ini block in the rxode2 related object — ini<-","text":"x rxode2 related object envir Environment assignment occurs value Value object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign the ini block in the rxode2 related object — ini<-","text":"rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign the ini block in the rxode2 related object — ini<-","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":null,"dir":"Reference","previous_headings":"","what":"Ini block for rxode2/nlmixr models — ini.rxUi","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"ini block controls initial conditions 'theta' (fixed effects), 'omega' (random effects), 'sigma' (residual error) elements model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"","code":"# S3 method for class 'rxUi' ini(x, ..., envir = parent.frame(), append = NULL) # Default S3 method ini(x, ..., envir = parent.frame(), append = NULL) ini(x, ..., envir = parent.frame(), append = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"x expression ... expressions ini() function envir environment unevaluated model expressions evaluated. May also NULL, list, data frame, pairlist integer specified sys.call. append Reorder theta parameters. NULL means change parameter order. parameter name (character string) means put new parameter named parameter. number less equal zero means put parameter beginning list. number greater last parameter number means put parameter end list.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"ini block","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"ini() function used two different ways. main way used set initial conditions associated attributes (described ) model. way used updating initial conditions model, often using pipe operator. 'theta' 'sigma' can set using either <- = tvCL <- 1 equivalently tvCL = 1. 'omega' can set ~ etaCL ~ 0.1. Parameters can named unnamed (though named parameters preferred). named parameter set using name left assignment unnamed parameters set without assignment operator. tvCL <- 1 set named parameter tvCL 1. Unnamed parameters set using just value, 1. estimation methods, lower upper bounds can set 'theta' 'sigma' values. set lower /upper bound, use vector values. vector c(lower, estimate, upper). vector may given just estimate (estimate), lower bound estimate (c(lower, estimate)), three (c(lower, estimate, upper)). set estimate upper bound without lower bound, set lower bound -Inf, c(-Inf, estimate, upper). estimation method support bounds, bounds ignored warning. 'omega' values can set single value values lower-triangular matrix. values may set either variance-covariance matrix (default) correlation matrix -diagonals standard deviations diagonals. Names may set left side ~. set variance-covariance matrix variance values 2 3 covariance -2.5 use ~c(2, 2.5, 3). set matrix names iivKa iivCL, use iivKa + iivCL~c(2, 2.5, 3). set correlation matrix standard deviations diagonal, use cor() like iivKa + iivCL~cor(2, -0.5, 3). rxode2 3.0 can also use iivKa ~ 2, iivCL ~ c(2.5, 3) covariance matrices well. Values may fixed (therefore estimated) using either name fixed end assignment calling fixed() function value fix. 'theta' 'sigma', either estimate full definition (including lower upper bounds) may included fixed setting. example, following effectively equivalent set 'theta' 'sigma' fixed value (lower upper bounds ignored fixed value): tvCL <- fixed(1), tvCL <- fixed(0, 1), tvCL <- fixed(0, 1, 2), tvCL <- c(0, fixed(1), 2), tvCL <- c(0, 1, fixed). 'omega' assignment, full block none block must set fixed. Examples setting 'omega' value fixed : iivKa~fixed(1), iivKa + iivCL~fixed(1, 2, 3), iivKa + iivCL~c(1, 2, 3, fixed). Anywhere fixed used, FIX, FIXED, fix may used equivalently. value, standard mathematical operators functions may used define value. example, log(2) 24*30 may used define value anywhere number can used (e.g. lower bound, estimate, upper bound, variance, etc.). Values may labeled using label() function assignment. Labels used make reporting easier giving human-readable description parameter, labels effect estimation. typical way set label parameter tvCL label \"Typical Value Clearance (L/hr)\" tvCL <- 1; label(\"Typical Value Clearance (L/hr)\"). diagonal values 'omega' can set zero using diag() remove -diagonals can removed ini(diag()). remove covariances 'omega' item iivKa, can use %>% ini(diag(iivKa)). remove covariances contain either iivKa iivCl can use %>% ini(diag(iivKa, iivCl)). finer control can remove covariance two items (like iivKa iivCl) `%>% ini(-cov(iivKa, iivCl)) rxode2/nlmixr2 attempt determine back-transformations user. example, CL <- exp(tvCL) detect tvCL must back-transformed exp() easier interpretation. want control back-transformation, can specify back-transformation using backTransform() assignment. example, set back-transformation exp(), can use tvCL <- 1; backTransform(exp()).","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"","code":"# Set the ini() block in a model one.compartment <- function() { ini({ tka <- log(1.57); label(\"Ka\") tcl <- log(2.72); label(\"Cl\") tv <- log(31.5); label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } # Use piping to update initial conditions one.compartment %>% ini(tka <- log(2)) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.693147180559945` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.6931472 1.0006319 3.4499875 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.693147180559945 #> label(\"Ka\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } one.compartment %>% ini(tka <- label(\"Absorption rate, Ka (1/hr)\")) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.4510756 1.0006319 3.4499875 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.451075619360217 #> label(\"Absorption rate, Ka (1/hr)\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } # Move the tka parameter to be just below the tv parameter (affects parameter # summary table, only) one.compartment %>% ini(tka <- label(\"Absorption rate, Ka (1/hr)\"), append = \"tv\") #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tcl tv tka add.sd #> 1.0006319 3.4499875 0.4510756 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> tka <- 0.451075619360217 #> label(\"Absorption rate, Ka (1/hr)\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } # When programming with rxode2/nlmixr2, it may be easier to pass strings in # to modify the ini one.compartment %>% ini(\"tka <- log(2)\") #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.693147180559945` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.6931472 1.0006319 3.4499875 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.693147180559945 #> label(\"Ka\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":null,"dir":"Reference","previous_headings":"","what":"One correlation sample from the Inverse Wishart distribution — invWR1d","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"correlation constructed transformation Inverse Wishart random covariate correlation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"","code":"invWR1d(d, nu, omegaIsChol = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"d dimension correlation matrix nu Degrees freedom Wishart distribution omegaIsChol indicator omega matrix Cholesky decomposition. used type=\"invWishart\"","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"One correlation sample inverse wishart","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":null,"dir":"Reference","previous_headings":"","what":"Check to see if this is an rxEt object. — is.rxEt","title":"Check to see if this is an rxEt object. — is.rxEt","text":"Check see rxEt object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check to see if this is an rxEt object. — is.rxEt","text":"","code":"is.rxEt(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check to see if this is an rxEt object. — is.rxEt","text":"x object check see rxEt rxEt object expired strip rxEt information.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check to see if this is an rxEt object. — is.rxEt","text":"Boolean indicating rxode2 event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check to see if this is an rxEt object. — is.rxEt","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Check to see if this is an rxSolve object. — is.rxSolve","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"Check see rxSolve object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"","code":"is.rxSolve(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"x object check see rxSolve rxSolve object expired strip rxSolve information.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"boolean indicating rxSolve object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":null,"dir":"Reference","previous_headings":"","what":"Return if the object can be stacked — is.rxStackData","title":"Return if the object can be stacked — is.rxStackData","text":"Return object can stacked","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return if the object can be stacked — is.rxStackData","text":"","code":"is.rxStackData(object)"},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return if the object can be stacked — is.rxStackData","text":"object object test can stacked","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return if the object can be stacked — is.rxStackData","text":"boolean tell object can stacked using rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return if the object can be stacked — is.rxStackData","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return if the object can be stacked — is.rxStackData","text":"","code":"is.rxStackData(NULL) #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Leaky ReLU activation function — lReLU","title":"Leaky ReLU activation function — lReLU","text":"Leaky ReLU activation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Leaky ReLU activation function — lReLU","text":"","code":"lReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Leaky ReLU activation function — lReLU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Leaky ReLU activation function — lReLU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Leaky ReLU activation function — lReLU","text":"","code":"lReLU(c(-1, 0, 1)) #> [1] -0.01 0.00 1.00 # Can use in rxode2 as well r <- rxode2({r <- lReLU(time)}) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 2 #> time r #> #> 1 -1 -0.01 #> 2 0 0 #> 3 1 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear model to replace in rxode2 ui model — linMod","title":"Linear model to replace in rxode2 ui model — linMod","text":"Linear model replace rxode2 ui model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear model to replace in rxode2 ui model — linMod","text":"","code":"linMod( variable, power, dv = \"dv\", intercept = TRUE, type = c(\"replace\", \"before\", \"after\"), num = NULL, iniDf = NULL, data = FALSE, mv = FALSE ) linMod0(..., intercept = FALSE) linModB(..., type = \"before\") linModB0(..., intercept = FALSE, type = \"before\") linModA(..., type = \"after\") linModA0(..., intercept = FALSE, type = \"after\") linModD(..., intercept = TRUE, data = TRUE) linModD0(..., intercept = FALSE, data = TRUE) linModM(..., intercept = TRUE, mv = TRUE) linModM0(..., intercept = FALSE, mv = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear model to replace in rxode2 ui model — linMod","text":"variable variable rxode2 made . power power polynomial generated. dv dependent variable use generate initial estimates data. NULL query using rxUdfUiData(). intercept Boolean tells intercept generated. type type linear model replacement used. num number particular model generated. unspecified, query using rxUdfUiNum(). iniDf initialization data.frame, NULL query using rxUdfUiIniDf() data logical tells initial estimates linear model estimated data. mv logical tell model variables need used generate model variables. ... arguments passed linMod() abbreviations linMod()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear model to replace in rxode2 ui model — linMod","text":"list use generating rxode2 ui model see rxUdfUi() details.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Linear model to replace in rxode2 ui model — linMod","text":"linMod0(): linear model without intercept linModB(): linear model occurs linModB0(): linear model user function occurs linModA(): linear model user function occurs linModA0(): liner model without intercept placed user function occurs linModD(): linear model initial estimates generated data linModD0(): linear model initial estimates generated data (intercept) linModM(): linear model model variables used generate model variables linModM0(): linear model model variables used generate model variables (intercept)","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Linear model to replace in rxode2 ui model — linMod","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear model to replace in rxode2 ui model — linMod","text":"","code":"linMod(x, 3) #> $replace #> [1] \"rx.linMod.x1a+rx.linMod.x1b*x+rx.linMod.x1c*x^2+rx.linMod.x1d*x^3\" #> #> $iniDf #> NULL #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"Calculate log likelihood binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"","code":"llikBeta(x, shape1, shape2, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"x Observation shape1, shape2 non-negative parameters Beta distribution. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"data frame fx log pdf value dShape1 dShape2 derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"rxode2() model, can use llikBeta() use arguments. can also get derivative shape1 shape2 llikBetaDshape1() llikBetaDshape2().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"","code":"# \\donttest{ x <- seq(1e-4, 1 - 1e-4, length.out = 21) llikBeta(x, 0.5, 0.5) #> fx dShape1 dShape2 #> 1 3.46049030 -7.82404601 1.38619436 #> 2 0.37793108 -1.60763953 1.33490633 #> 3 0.05888752 -0.91549105 1.28084495 #> 4 -0.11510253 -0.51035907 1.22369308 #> 5 -0.22855163 -0.22284360 1.16307581 #> 6 -0.30780832 0.00019998 1.09854562 #> 7 -0.36444410 0.18245488 1.02956227 #> 8 -0.40444714 0.33655795 0.95546529 #> 9 -0.43118004 0.47005363 0.87543540 #> 10 -0.44655956 0.58780889 0.78843918 #> 11 -0.45158271 0.69314718 0.69314718 #> 12 -0.44655956 0.78843918 0.58780889 #> 13 -0.43118004 0.87543540 0.47005363 #> 14 -0.40444714 0.95546529 0.33655795 #> 15 -0.36444410 1.02956227 0.18245488 #> 16 -0.30780832 1.09854562 0.00019998 #> 17 -0.22855163 1.16307581 -0.22284360 #> 18 -0.11510253 1.22369308 -0.51035907 #> 19 0.05888752 1.28084495 -0.91549105 #> 20 0.37793108 1.33490633 -1.60763953 #> 21 3.46049030 1.38619436 -7.82404601 llikBeta(x, 1, 3, TRUE) #> x shape1 shape2 fx dShape1 dShape2 #> 1 0.00010 1 3 1.09841228 -7.37700704 0.33323333 #> 2 0.05009 1 3 0.99583622 -1.16060056 0.28194530 #> 3 0.10008 1 3 0.88771347 -0.46845208 0.22788392 #> 4 0.15007 1 3 0.77340972 -0.06332009 0.17073205 #> 5 0.20006 1 3 0.65217518 0.22419538 0.11011478 #> 6 0.25005 1 3 0.52311481 0.44723895 0.04558459 #> 7 0.30004 1 3 0.38514811 0.62949385 -0.02339876 #> 8 0.35003 1 3 0.23695415 0.78359692 -0.09749574 #> 9 0.40002 1 3 0.07689437 0.91709260 -0.17752562 #> 10 0.45001 1 3 -0.09709808 1.03484786 -0.26452185 #> 11 0.50000 1 3 -0.28768207 1.14018615 -0.35981385 #> 12 0.54999 1 3 -0.49835866 1.23547815 -0.46515214 #> 13 0.59998 1 3 -0.73386918 1.32247438 -0.58290740 #> 14 0.64997 1 3 -1.00086054 1.40250426 -0.71640308 #> 15 0.69996 1 3 -1.30906667 1.47660124 -0.87050615 #> 16 0.74995 1 3 -1.67357647 1.54558459 -1.05276105 #> 17 0.79994 1 3 -2.11966363 1.61011478 -1.27580462 #> 18 0.84993 1 3 -2.69469457 1.67073205 -1.56332009 #> 19 0.89992 1 3 -3.50495854 1.72788392 -1.96845208 #> 20 0.94991 1 3 -4.88925549 1.78194530 -2.66060056 #> 21 0.99990 1 3 -17.32206846 1.83323333 -8.87700704 et <- et(seq(1e-4, 1-1e-4, length.out=21)) et$shape1 <- 0.5 et$shape2 <- 1.5 model <- function() { model({ fx <- llikBeta(time, shape1, shape2) dShape1 <- llikBetaDshape1(time, shape1, shape2) dShape2 <- llikBetaDshape2(time, shape1, shape2) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 21 × 6 #> time fx dShape1 dShape2 shape1 shape2 #> #> 1 0.0001 4.15 -6.82 0.386 0.5 1.5 #> 2 0.0501 1.02 -0.608 0.335 0.5 1.5 #> 3 0.100 0.647 0.0845 0.281 0.5 1.5 #> 4 0.150 0.415 0.490 0.224 0.5 1.5 #> 5 0.200 0.241 0.777 0.163 0.5 1.5 #> 6 0.250 0.0976 1.00 0.0985 0.5 1.5 #> # ℹ 15 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"Calculate log likelihood binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"","code":"llikBinom(x, size, prob, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"x Number successes size Size trial prob probability success full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"data frame fx pdf value dProb derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"rxode2() model, can use llikBinom() use arguments. can also get derivative prob llikBinomDprob()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"","code":"# \\donttest{ llikBinom(46:54, 100, 0.5) #> fx dProb #> 1 -2.848030 -16 #> 2 -2.709193 -12 #> 3 -2.610102 -8 #> 4 -2.550679 -4 #> 5 -2.530876 0 #> 6 -2.550679 4 #> 7 -2.610102 8 #> 8 -2.709193 12 #> 9 -2.848030 16 llikBinom(46:54, 100, 0.5, TRUE) #> x size prob fx dProb #> 1 46 100 0.5 -2.848030 -16 #> 2 47 100 0.5 -2.709193 -12 #> 3 48 100 0.5 -2.610102 -8 #> 4 49 100 0.5 -2.550679 -4 #> 5 50 100 0.5 -2.530876 0 #> 6 51 100 0.5 -2.550679 4 #> 7 52 100 0.5 -2.610102 8 #> 8 53 100 0.5 -2.709193 12 #> 9 54 100 0.5 -2.848030 16 # In rxode2 you can use: et <- et(46:54) et$size <- 100 et$prob <-0.5 model <- function() { model({ fx <- llikBinom(time, size, prob) dProb <- llikBinomDprob(time, size, prob) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 9 × 5 #> time fx dProb size prob #> #> 1 46 -2.85 -16 100 0.5 #> 2 47 -2.71 -12 100 0.5 #> 3 48 -2.61 -8 100 0.5 #> 4 49 -2.55 -4 100 0.5 #> 5 50 -2.53 0 100 0.5 #> 6 51 -2.55 4 100 0.5 #> # ℹ 3 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"log likelihood Cauchy distribution derivatives (stan)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"","code":"llikCauchy(x, location = 0, scale = 1, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"x Observation location, scale location scale parameters. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"data frame fx log pdf value dLocation dScale derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"rxode2() model, can use llikCauchy() use arguments. can also get derivative location scale llikCauchyDlocation() llikCauchyDscale().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"","code":"# \\donttest{ x <- seq(-3, 3, length.out = 21) llikCauchy(x, 0, 1) #> fx dLocation dScale #> 1 -3.447315 -0.6000000 0.8000000 #> 2 -3.259780 -0.6513872 0.7587455 #> 3 -3.055753 -0.7100592 0.7041420 #> 4 -2.832979 -0.7763401 0.6303142 #> 5 -2.589293 -0.8490566 0.5283019 #> 6 -2.323385 -0.9230769 0.3846154 #> 7 -2.036728 -0.9836066 0.1803279 #> 8 -1.738057 -0.9944751 -0.1049724 #> 9 -1.452215 -0.8823529 -0.4705882 #> 10 -1.230908 -0.5504587 -0.8348624 #> 11 -1.144730 0.0000000 -1.0000000 #> 12 -1.230908 0.5504587 -0.8348624 #> 13 -1.452215 0.8823529 -0.4705882 #> 14 -1.738057 0.9944751 -0.1049724 #> 15 -2.036728 0.9836066 0.1803279 #> 16 -2.323385 0.9230769 0.3846154 #> 17 -2.589293 0.8490566 0.5283019 #> 18 -2.832979 0.7763401 0.6303142 #> 19 -3.055753 0.7100592 0.7041420 #> 20 -3.259780 0.6513872 0.7587455 #> 21 -3.447315 0.6000000 0.8000000 llikCauchy(x, 3, 1, full=TRUE) #> x location scale fx dLocation dScale #> 1 -3.0 3 1 -4.755648 -0.3243243 0.9459459 #> 2 -2.7 3 1 -4.655977 -0.3404001 0.9402807 #> 3 -2.4 3 1 -4.551246 -0.3580902 0.9336870 #> 4 -2.1 3 1 -4.440937 -0.3776379 0.9259534 #> 5 -1.8 3 1 -4.324449 -0.3993344 0.9168053 #> 6 -1.5 3 1 -4.201087 -0.4235294 0.9058824 #> 7 -1.2 3 1 -4.070040 -0.4506438 0.8927039 #> 8 -0.9 3 1 -3.930358 -0.4811845 0.8766194 #> 9 -0.6 3 1 -3.780926 -0.5157593 0.8567335 #> 10 -0.3 3 1 -3.620428 -0.5550883 0.8317914 #> 11 0.0 3 1 -3.447315 -0.6000000 0.8000000 #> 12 0.3 3 1 -3.259780 -0.6513872 0.7587455 #> 13 0.6 3 1 -3.055753 -0.7100592 0.7041420 #> 14 0.9 3 1 -2.832979 -0.7763401 0.6303142 #> 15 1.2 3 1 -2.589293 -0.8490566 0.5283019 #> 16 1.5 3 1 -2.323385 -0.9230769 0.3846154 #> 17 1.8 3 1 -2.036728 -0.9836066 0.1803279 #> 18 2.1 3 1 -1.738057 -0.9944751 -0.1049724 #> 19 2.4 3 1 -1.452215 -0.8823529 -0.4705882 #> 20 2.7 3 1 -1.230908 -0.5504587 -0.8348624 #> 21 3.0 3 1 -1.144730 0.0000000 -1.0000000 et <- et(-3, 3, length.out=10) et$location <- 0 et$scale <- 1 model <- function() { model({ fx <- llikCauchy(time, location, scale) dLocation <- llikCauchyDlocation(time, location, scale) dScale <- llikCauchyDscale(time, location, scale) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dLocation dScale location scale #> #> 1 -3 -3.45 -0.6 0.8 0 1 #> 2 -2.33 -3.01 -0.724 0.690 0 1 #> 3 -1.67 -2.47 -0.882 0.471 0 1 #> 4 -1 -1.84 -1 0 0 1 #> 5 -0.333 -1.25 -0.6 -0.8 0 1 #> 6 0.333 -1.25 0.600 -0.8 0 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for chi-squared distribution — llikChisq","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"log likelihood derivatives chi-squared distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"","code":"llikChisq(x, df, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"x variable distributed chi-squared distribution df degrees freedom (non-negative, can non-integer). full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"data frame fx log pdf value dDf derivatives respect df parameter observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"rxode2() model, can use llikChisq() use x df arguments. can also get derivative df llikChisqDdf().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"","code":"# \\donttest{ llikChisq(1, df = 1:3, full=TRUE) #> x df fx dDf #> 1 1 1 -1.418939 0.63518142 #> 2 1 2 -1.193147 -0.05796576 #> 3 1 3 -1.418939 -0.36481858 llikChisq(1, df = 6:9) #> fx dDf #> 1 -3.272589 -0.8079658 #> 2 -4.126989 -0.8981519 #> 3 -5.064348 -0.9746324 #> 4 -6.072899 -1.0410091 et <- et(1:3) et$x <- 1 model <- function() { model({ fx <- llikChisq(x, time) dDf <- llikChisqDdf(x, time) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 4 #> time fx dDf x #> #> 1 1 -1.42 0.635 1 #> 2 2 -1.19 -0.0580 1 #> 3 3 -1.42 -0.365 1 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for exponential distribution — llikExp","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"log likelihood derivatives exponential distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"","code":"llikExp(x, rate, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"x variable distributed exponential distribution rate vector rates. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"data frame fx log pdf value dRate derivatives respect rate parameter observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"rxode2() model, can use llikExp() use x rate arguments. can also get derivative rate llikExpDrate().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"","code":"# \\donttest{ llikExp(1, 1:3) #> fx dRate #> 1 -1.000000 0.0000000 #> 2 -1.306853 -0.5000000 #> 3 -1.901388 -0.6666667 llikExp(1, 1:3, full=TRUE) #> x rate fx dRate #> 1 1 1 -1.000000 0.0000000 #> 2 1 2 -1.306853 -0.5000000 #> 3 1 3 -1.901388 -0.6666667 # You can use rxode2 for these too: et <- et(1:3) et$x <- 1 model <- function() { model({ fx <- llikExp(x, time) dRate <- llikExpDrate(x, time) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 4 #> time fx dRate x #> #> 1 1 -1 0 1 #> 2 2 -1.31 -0.5 1 #> 3 3 -1.90 -0.667 1 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for F distribution — llikF","title":"log likelihood and derivatives for F distribution — llikF","text":"log likelihood derivatives F distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for F distribution — llikF","text":"","code":"llikF(x, df1, df2, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for F distribution — llikF","text":"x variable distributed f distribution df1, df2 degrees freedom. Inf allowed. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for F distribution — llikF","text":"data frame fx log pdf value dDf1 dDf2 derivatives respect df1/df2 parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for F distribution — llikF","text":"rxode2() model, can use llikF() use x rate arguments. can also get derivative df1 df2 llikFDdf1() llikFDdf2().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for F distribution — llikF","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for F distribution — llikF","text":"","code":"# \\donttest{ x <- seq(0.001, 5, length.out = 100) llikF(x^2, 1, 5) #> fx dDf1 dDf2 #> 1 5.939135090 -5.769327755 0.0098138672 #> 2 1.996061339 -1.829698617 0.0098667834 #> 3 1.308027230 -1.151720596 0.0100203751 #> 4 0.898151814 -0.758467992 0.0102713542 #> 5 0.601410048 -0.484842238 0.0106143384 #> 6 0.365567397 -0.278507461 0.0110419510 #> 7 0.167275143 -0.115987118 0.0115449567 #> 8 -0.005928407 0.015333168 0.0121124287 #> 9 -0.161467803 0.123053577 0.0127319420 #> 10 -0.304110944 0.212138450 0.0133897879 #> 11 -0.437089645 0.286034532 0.0140712037 #> 12 -0.562684604 0.347253504 0.0147606108 #> 13 -0.682555520 0.397699568 0.0154418570 #> 14 -0.797939098 0.438864917 0.0160984557 #> 15 -0.909773848 0.471951996 0.0167138175 #> 16 -1.018782007 0.497952966 0.0172714700 #> 17 -1.125525217 0.517703019 0.0177552614 #> 18 -1.230443500 0.531917117 0.0181495454 #> 19 -1.333883243 0.541215913 0.0184393449 #> 20 -1.436117763 0.546144408 0.0186104926 #> 21 -1.537362702 0.547185650 0.0186497493 #> 22 -1.637787764 0.544770962 0.0185448973 #> 23 -1.737525805 0.539287723 0.0182848126 #> 24 -1.836679954 0.531085385 0.0178595139 #> 25 -1.935329266 0.520480216 0.0172601925 #> 26 -2.033533263 0.507759100 0.0164792220 #> 27 -2.131335592 0.493182655 0.0155101530 #> 28 -2.228767013 0.476987816 0.0143476919 #> 29 -2.325847849 0.459390036 0.0129876676 #> 30 -2.422589998 0.440585182 0.0114269877 #> 31 -2.518998603 0.420751193 0.0096635860 #> 32 -2.615073425 0.400049565 0.0076963639 #> 33 -2.710810000 0.378626673 0.0055251263 #> 34 -2.806200581 0.356614982 0.0031505147 #> 35 -2.901234940 0.334134152 0.0005739382 #> 36 -2.995901017 0.311292055 -0.0022024960 #> 37 -3.090185467 0.288185720 -0.0051760516 #> 38 -3.184074111 0.264902202 -0.0083434311 #> 39 -3.277552304 0.241519400 -0.0117008417 #> 40 -3.370605236 0.218106810 -0.0152440579 #> 41 -3.463218177 0.194726229 -0.0189684823 #> 42 -3.555376677 0.171432411 -0.0228692014 #> 43 -3.647066718 0.148273673 -0.0269410395 #> 44 -3.738274839 0.125292465 -0.0311786073 #> 45 -3.828988227 0.102525891 -0.0355763478 #> 46 -3.919194789 0.080006197 -0.0401285781 #> 47 -4.008883199 0.057761220 -0.0448295271 #> 48 -4.098042931 0.035814802 -0.0496733702 #> 49 -4.186664276 0.014187176 -0.0546542601 #> 50 -4.274738350 -0.007104684 -0.0597663547 #> 51 -4.362257091 -0.028046739 -0.0650038410 #> 52 -4.449213248 -0.048627585 -0.0703609577 #> 53 -4.535600366 -0.068838184 -0.0758320130 #> 54 -4.621412763 -0.088671614 -0.0814114015 #> 55 -4.706645505 -0.108122840 -0.0870936184 #> 56 -4.791294380 -0.127188508 -0.0928732707 #> 57 -4.875355868 -0.145866755 -0.0987450876 #> 58 -4.958827105 -0.164157039 -0.1047039284 #> 59 -5.041705859 -0.182059980 -0.1107447891 #> 60 -5.123990491 -0.199577223 -0.1168628074 #> 61 -5.205679923 -0.216711307 -0.1230532668 #> 62 -5.286773611 -0.233465550 -0.1293115988 #> 63 -5.367271506 -0.249843943 -0.1356333846 #> 64 -5.447174028 -0.265851061 -0.1420143563 #> 65 -5.526482033 -0.281491973 -0.1484503963 #> 66 -5.605196787 -0.296772169 -0.1549375368 #> 67 -5.683319932 -0.311697491 -0.1614719584 #> 68 -5.760853464 -0.326274073 -0.1680499885 #> 69 -5.837799706 -0.340508283 -0.1746680988 #> 70 -5.914161282 -0.354406680 -0.1813229026 #> 71 -5.989941093 -0.367975967 -0.1880111521 #> 72 -6.065142296 -0.381222952 -0.1947297352 #> 73 -6.139768282 -0.394154517 -0.2014756717 #> 74 -6.213822655 -0.406777586 -0.2082461105 #> 75 -6.287309215 -0.419099097 -0.2150383254 #> 76 -6.360231938 -0.431125983 -0.2218497115 #> 77 -6.432594959 -0.442865149 -0.2286777813 #> 78 -6.504402560 -0.454323453 -0.2355201612 #> 79 -6.575659147 -0.465507693 -0.2423745875 #> 80 -6.646369247 -0.476424593 -0.2492389023 #> 81 -6.716537483 -0.487080791 -0.2561110501 #> 82 -6.786168572 -0.497482830 -0.2629890742 #> 83 -6.855267306 -0.507637151 -0.2698711122 #> 84 -6.923838547 -0.517550083 -0.2767553934 #> 85 -6.991887212 -0.527227840 -0.2836402345 #> 86 -7.059418267 -0.536676516 -0.2905240366 #> 87 -7.126436719 -0.545902081 -0.2974052813 #> 88 -7.192947604 -0.554910380 -0.3042825282 #> 89 -7.258955983 -0.563707126 -0.3111544109 #> 90 -7.324466935 -0.572297907 -0.3180196342 #> 91 -7.389485548 -0.580688177 -0.3248769714 #> 92 -7.454016916 -0.588883261 -0.3317252608 #> 93 -7.518066132 -0.596888352 -0.3385634034 #> 94 -7.581638284 -0.604708517 -0.3453903600 #> 95 -7.644738447 -0.612348689 -0.3522051484 #> 96 -7.707371685 -0.619813679 -0.3590068413 #> 97 -7.769543041 -0.627108167 -0.3657945633 #> 98 -7.831257537 -0.634236713 -0.3725674892 #> 99 -7.892520171 -0.641203751 -0.3793248413 #> 100 -7.953335909 -0.648013598 -0.3860658874 model <- function(){ model({ fx <- llikF(time, df1, df2) dMean <- llikFDdf1(time, df1, df2) dSd <- llikFDdf2(time, df1, df2) }) } et <- et(x) et$df1 <- 1 et$df2 <- 5 rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 100 × 6 #> time fx dMean dSd df1 df2 #> #> 1 0.001 2.48 -2.32 0.00983 1 5 #> 2 0.0515 0.484 -0.380 0.0108 1 5 #> 3 0.102 0.112 -0.0731 0.0117 1 5 #> 4 0.152 -0.118 0.0943 0.0125 1 5 #> 5 0.203 -0.291 0.204 0.0133 1 5 #> 6 0.253 -0.431 0.283 0.0140 1 5 #> # ℹ 94 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Gamma distribution — llikGamma","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"log likelihood derivatives Gamma distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"","code":"llikGamma(x, shape, rate, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"x variable distributed gamma distribution shape distribution's shape parameter. Must positive. rate distribution's rate parameters. Must positive. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"rxode2() model, can use llikGamma() use x rate arguments. can also get derivative shape rate llikGammaDshape() llikGammaDrate().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"","code":"# \\donttest{ llikGamma(1, 1, 10) #> fx dShape dRate #> 1 -7.697415 2.879801 -0.9 # You can use this in `rxode2` too: et <- et(seq(0.001, 1, length.out=10)) et$shape <- 1 et$rate <- 10 model <- function() { model({ fx <- llikGamma(time, shape, rate) dShape<- llikGammaDshape(time, shape, rate) dRate <- llikGammaDrate(time, shape, rate) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dShape dRate rate shape #> #> 1 0.001 2.29 -4.03 0.099 10 1 #> 2 0.112 1.18 0.691 -0.012 10 1 #> 3 0.223 0.0726 1.38 -0.123 10 1 #> 4 0.334 -1.04 1.78 -0.234 10 1 #> 5 0.445 -2.15 2.07 -0.345 10 1 #> 6 0.556 -3.26 2.29 -0.456 10 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Geom distribution — llikGeom","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"log likelihood derivatives Geom distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"","code":"llikGeom(x, prob, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"x variable distributed geom distribution prob probability success trial. 0 < prob <= 1. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"rxode2() model, can use llikGeom() use x rate arguments. can also get derivative prob llikGeomDprob().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"","code":"# \\donttest{ llikGeom(1:10, 0.2) #> fx dProb #> 1 -1.832581 3.75 #> 2 -2.055725 2.50 #> 3 -2.278869 1.25 #> 4 -2.502012 0.00 #> 5 -2.725156 -1.25 #> 6 -2.948299 -2.50 #> 7 -3.171443 -3.75 #> 8 -3.394586 -5.00 #> 9 -3.617730 -6.25 #> 10 -3.840873 -7.50 et <- et(1:10) et$prob <- 0.2 model <- function() { model({ fx <- llikGeom(time, prob) dProb <- llikGeomDprob(time, prob) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time fx dProb prob #> #> 1 1 -1.83 3.75 0.2 #> 2 2 -2.06 2.5 0.2 #> 3 3 -2.28 1.25 0.2 #> 4 4 -2.50 0 0.2 #> 5 5 -2.73 -1.25 0.2 #> 6 6 -2.95 -2.5 0.2 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"Calculate log likelihood negative binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"","code":"llikNbinom(x, size, prob, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"x Number successes size Size trial prob probability success full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"data frame fx pdf value dProb derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"rxode2() model, can use llikNbinom() use arguments. can also get derivative prob llikNbinomDprob()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"","code":"# \\donttest{ llikNbinom(46:54, 100, 0.5) #> fx dProb #> 1 -13.25200 108 #> 2 -12.81168 106 #> 3 -12.38560 104 #> 4 -11.97335 102 #> 5 -11.57458 100 #> 6 -11.18892 98 #> 7 -10.81603 96 #> 8 -10.45559 94 #> 9 -10.10728 92 llikNbinom(46:54, 100, 0.5, TRUE) #> x size prob fx dProb #> 1 46 100 0.5 -13.25200 108 #> 2 47 100 0.5 -12.81168 106 #> 3 48 100 0.5 -12.38560 104 #> 4 49 100 0.5 -11.97335 102 #> 5 50 100 0.5 -11.57458 100 #> 6 51 100 0.5 -11.18892 98 #> 7 52 100 0.5 -10.81603 96 #> 8 53 100 0.5 -10.45559 94 #> 9 54 100 0.5 -10.10728 92 # In rxode2 you can use: et <- et(46:54) et$size <- 100 et$prob <-0.5 model <- function() { model({ fx <- llikNbinom(time, size, prob) dProb <- llikNbinomDprob(time, size, prob) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 9 × 5 #> time fx dProb size prob #> #> 1 46 -13.3 108 100 0.5 #> 2 47 -12.8 106 100 0.5 #> 3 48 -12.4 104 100 0.5 #> 4 49 -12.0 102 100 0.5 #> 5 50 -11.6 100 100 0.5 #> 6 51 -11.2 98 100 0.5 #> # ℹ 3 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"Calculate log likelihood negative binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"","code":"llikNbinomMu(x, size, mu, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"x Number successes size Size trial mu mu parameter negative binomial full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"data frame fx pdf value dProb derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"rxode2() model, can use llikNbinomMu() use arguments. can also get derivative mu llikNbinomMuDmu()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"","code":"# \\donttest{ llikNbinomMu(46:54, 100, 40) #> fx dMu #> 1 -3.326828 0.1071429 #> 2 -3.446132 0.1250000 #> 3 -3.579663 0.1428571 #> 4 -3.727034 0.1607143 #> 5 -3.887874 0.1785714 #> 6 -4.061827 0.1964286 #> 7 -4.248554 0.2142857 #> 8 -4.447728 0.2321429 #> 9 -4.659037 0.2500000 llikNbinomMu(46:54, 100, 40, TRUE) #> x size mu fx dMu #> 1 46 100 40 -3.326828 0.1071429 #> 2 47 100 40 -3.446132 0.1250000 #> 3 48 100 40 -3.579663 0.1428571 #> 4 49 100 40 -3.727034 0.1607143 #> 5 50 100 40 -3.887874 0.1785714 #> 6 51 100 40 -4.061827 0.1964286 #> 7 52 100 40 -4.248554 0.2142857 #> 8 53 100 40 -4.447728 0.2321429 #> 9 54 100 40 -4.659037 0.2500000 et <- et(46:54) et$size <- 100 et$mu <- 40 model <- function() { model({ fx <- llikNbinomMu(time, size, mu) dProb <- llikNbinomMuDmu(time, size, mu) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 9 × 5 #> time fx dProb size mu #> #> 1 46 -3.33 0.107 100 40 #> 2 47 -3.45 0.125 100 40 #> 3 48 -3.58 0.143 100 40 #> 4 49 -3.73 0.161 100 40 #> 5 50 -3.89 0.179 100 40 #> 6 51 -4.06 0.196 100 40 #> # ℹ 3 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":null,"dir":"Reference","previous_headings":"","what":"Log likelihood for normal distribution — llikNorm","title":"Log likelihood for normal distribution — llikNorm","text":"Log likelihood normal distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log likelihood for normal distribution — llikNorm","text":"","code":"llikNorm(x, mean = 0, sd = 1, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log likelihood for normal distribution — llikNorm","text":"x Observation mean Mean likelihood sd Standard deviation likelihood full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log likelihood for normal distribution — llikNorm","text":"data frame fx pdf value dMean dSd derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Log likelihood for normal distribution — llikNorm","text":"rxode2() model, can use llikNorm() use arguments. can also get derivatives llikNormDmean() llikNormDsd()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Log likelihood for normal distribution — llikNorm","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Log likelihood for normal distribution — llikNorm","text":"","code":"# \\donttest{ llikNorm(0) #> fx dMean dSd #> 1 -0.9189385 0 -1 llikNorm(seq(-2,2,length.out=10), full=TRUE) #> x mean sd fx dMean dSd #> 1 -2.0000000 0 1 -2.9189385 -2.0000000 3.0000000 #> 2 -1.5555556 0 1 -2.1288151 -1.5555556 1.4197531 #> 3 -1.1111111 0 1 -1.5362225 -1.1111111 0.2345679 #> 4 -0.6666667 0 1 -1.1411608 -0.6666667 -0.5555556 #> 5 -0.2222222 0 1 -0.9436299 -0.2222222 -0.9506173 #> 6 0.2222222 0 1 -0.9436299 0.2222222 -0.9506173 #> 7 0.6666667 0 1 -1.1411608 0.6666667 -0.5555556 #> 8 1.1111111 0 1 -1.5362225 1.1111111 0.2345679 #> 9 1.5555556 0 1 -2.1288151 1.5555556 1.4197531 #> 10 2.0000000 0 1 -2.9189385 2.0000000 3.0000000 # With rxode2 you can use: et <- et(-3, 3, length.out=10) et$mu <- 0 et$sigma <- 1 model <- function(){ model({ fx <- llikNorm(time, mu, sigma) dMean <- llikNormDmean(time, mu, sigma) dSd <- llikNormDsd(time, mu, sigma) }) } ret <- rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ret #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dMean dSd mu sigma #> #> 1 -3 -5.42 -3 8 0 1 #> 2 -2.33 -3.64 -2.33 4.44 0 1 #> 3 -1.67 -2.31 -1.67 1.78 0 1 #> 4 -1 -1.42 -1 0 0 1 #> 5 -0.333 -0.974 -0.333 -0.889 0 1 #> 6 0.333 -0.974 0.333 -0.889 0 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":null,"dir":"Reference","previous_headings":"","what":"log-likelihood for the Poisson distribution — llikPois","title":"log-likelihood for the Poisson distribution — llikPois","text":"log-likelihood Poisson distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log-likelihood for the Poisson distribution — llikPois","text":"","code":"llikPois(x, lambda, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log-likelihood for the Poisson distribution — llikPois","text":"x non negative integers lambda non-negative means full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log-likelihood for the Poisson distribution — llikPois","text":"data frame fx pdf value dLambda derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log-likelihood for the Poisson distribution — llikPois","text":"rxode2() model, can use llikPois() use arguments. can also get derivatives llikPoisDlambda()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log-likelihood for the Poisson distribution — llikPois","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log-likelihood for the Poisson distribution — llikPois","text":"","code":"# \\donttest{ llikPois(0:7, lambda = 1) #> fx dLambda #> 1 -1.000000 -1 #> 2 -1.000000 0 #> 3 -1.693147 1 #> 4 -2.791759 2 #> 5 -4.178054 3 #> 6 -5.787492 4 #> 7 -7.579251 5 #> 8 -9.525161 6 llikPois(0:7, lambda = 4, full=TRUE) #> x lambda fx dLambda #> 1 0 4 -4.000000 -1.00 #> 2 1 4 -2.613706 -0.75 #> 3 2 4 -1.920558 -0.50 #> 4 3 4 -1.632876 -0.25 #> 5 4 4 -1.632876 0.00 #> 6 5 4 -1.856020 0.25 #> 7 6 4 -2.261485 0.50 #> 8 7 4 -2.821101 0.75 # In rxode2 you can use: et <- et(0:10) et$lambda <- 0.5 model <- function() { model({ fx <- llikPois(time, lambda) dLambda <- llikPoisDlambda(time, lambda) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 11 × 4 #> time fx dLambda lambda #> #> 1 0 -0.5 -1 0.5 #> 2 1 -1.19 1 0.5 #> 3 2 -2.58 3 0.5 #> 4 3 -4.37 5 0.5 #> 5 4 -6.45 7 0.5 #> 6 5 -8.75 9 0.5 #> # ℹ 5 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":null,"dir":"Reference","previous_headings":"","what":"Log likelihood of T and it's derivatives (from stan) — llikT","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"Log likelihood T derivatives (stan)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"","code":"llikT(x, df, mean = 0, sd = 1, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"x Observation df degrees freedom (\\(> 0\\), maybe non-integer). df = Inf allowed. mean Mean likelihood sd Standard deviation likelihood full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"data frame fx log pdf value dDf dMean dSd derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"rxode2() model, can use llikT() use arguments. can also get derivative df, mean sd llikTDdf(), llikTDmean() llikTDsd().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"","code":"# \\donttest{ x <- seq(-3, 3, length.out = 21) llikT(x, 7, 0, 1) #> fx dDf dMean dSd #> 1 -4.2612484 -0.086858773 -1.5000000 3.5000000 #> 2 -3.8091335 -0.060260433 -1.5115465 3.0811756 #> 3 -3.3561547 -0.037201674 -1.5047022 2.6112853 #> 4 -2.9088542 -0.018379169 -1.4723926 2.0920245 #> 5 -2.4761000 -0.004340221 -1.4062500 1.5312500 #> 6 -2.0693878 0.004691380 -1.2972973 0.9459459 #> 7 -1.7028228 0.009010785 -1.1374408 0.3649289 #> 8 -1.3925134 0.009569214 -0.9218950 -0.1702945 #> 9 -1.1551333 0.007927361 -0.6521739 -0.6086957 #> 10 -1.0056349 0.005918024 -0.3385049 -0.8984485 #> 11 -0.9545342 0.005051942 0.0000000 -1.0000000 #> 12 -1.0056349 0.005918024 0.3385049 -0.8984485 #> 13 -1.1551333 0.007927361 0.6521739 -0.6086957 #> 14 -1.3925134 0.009569214 0.9218950 -0.1702945 #> 15 -1.7028228 0.009010785 1.1374408 0.3649289 #> 16 -2.0693878 0.004691380 1.2972973 0.9459459 #> 17 -2.4761000 -0.004340221 1.4062500 1.5312500 #> 18 -2.9088542 -0.018379169 1.4723926 2.0920245 #> 19 -3.3561547 -0.037201674 1.5047022 2.6112853 #> 20 -3.8091335 -0.060260433 1.5115465 3.0811756 #> 21 -4.2612484 -0.086858773 1.5000000 3.5000000 llikT(x, 15, 0, 1, full=TRUE) #> fx dDf dMean dSd #> 1 -4.6956220 -0.0338931511 -2.0000000 5.0000000 #> 2 -4.1042965 -0.0225073150 -1.9380888 4.2328398 #> 3 -3.5354158 -0.0134033865 -1.8497110 3.4393064 #> 4 -2.9974985 -0.0065857823 -1.7310665 2.6352396 #> 5 -2.5001272 -0.0019378861 -1.5789474 1.8421053 #> 6 -2.0536885 0.0007929097 -1.3913043 1.0869565 #> 7 -1.6689304 0.0019903977 -1.1678832 0.4014599 #> 8 -1.3563325 0.0021369166 -0.9108159 -0.1802657 #> 9 -1.1253251 0.0017504002 -0.6250000 -0.6250000 #> 10 -0.9834495 0.0012985422 -0.3180915 -0.9045726 #> 11 -0.9355929 0.0011086635 0.0000000 -1.0000000 #> 12 -0.9834495 0.0012985422 0.3180915 -0.9045726 #> 13 -1.1253251 0.0017504002 0.6250000 -0.6250000 #> 14 -1.3563325 0.0021369166 0.9108159 -0.1802657 #> 15 -1.6689304 0.0019903977 1.1678832 0.4014599 #> 16 -2.0536885 0.0007929097 1.3913043 1.0869565 #> 17 -2.5001272 -0.0019378861 1.5789474 1.8421053 #> 18 -2.9974985 -0.0065857823 1.7310665 2.6352396 #> 19 -3.5354158 -0.0134033865 1.8497110 3.4393064 #> 20 -4.1042965 -0.0225073150 1.9380888 4.2328398 #> 21 -4.6956220 -0.0338931511 2.0000000 5.0000000 et <- et(-3, 3, length.out=10) et$nu <- 7 et$mean <- 0 et$sd <- 1 model <- function() { model({ fx <- llikT(time, nu, mean, sd) dDf <- llikTDdf(time, nu, mean, sd) dMean <- llikTDmean(time, nu, mean, sd) dSd <- llikTDsd(time, nu, mean, sd) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 8 #> time fx dDf dMean dSd nu mean sd #> #> 1 -3 -4.26 -0.0869 -1.5 3.5 7 0 1 #> 2 -2.33 -3.26 -0.0326 -1.5 2.5 7 0 1 #> 3 -1.67 -2.29 0.000289 -1.36 1.27 7 0 1 #> 4 -1 -1.49 0.00971 -1 0 7 0 1 #> 5 -0.333 -1.02 0.00611 -0.375 -0.875 7 0 1 #> 6 0.333 -1.02 0.00611 0.375 -0.875 7 0 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Unif distribution — llikUnif","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"log likelihood derivatives Unif distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"","code":"llikUnif(x, alpha, beta, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"x variable distributed uniform distribution alpha lower limit uniform distribution beta upper limit distribution full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"rxode2() model, can use llikUnif() use x rate arguments. can also get derivative alpha beta llikUnifDalpha() llikUnifDbeta().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"","code":"# \\donttest{ llikUnif(1, -2, 2) #> fx dAlpha dBeta #> 1 -1.386294 0.25 -0.25 et <- et(seq(1,1, length.out=4)) et$alpha <- -2 et$beta <- 2 model <- function() { model({ fx <- llikUnif(time, alpha, beta) dAlpha<- llikUnifDalpha(time, alpha, beta) dBeta <- llikUnifDbeta(time, alpha, beta) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 6 #> time fx dAlpha dBeta alpha beta #> #> 1 1 -1.39 0.25 -0.25 -2 2 #> 2 1 -1.39 0.25 -0.25 -2 2 #> 3 1 -1.39 0.25 -0.25 -2 2 #> 4 1 -1.39 0.25 -0.25 -2 2 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Weibull distribution — llikWeibull","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"log likelihood derivatives Weibull distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"","code":"llikWeibull(x, shape, scale, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"x variable distributed Weibull distribution shape, scale shape scale parameters, latter defaulting 1. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"rxode2() model, can use llikWeibull() use x rate arguments. can also get derivative shape scale llikWeibullDshape() llikWeibullDscale().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"","code":"# \\donttest{ llikWeibull(1, 1, 10) #> fx dShape dScale #> 1 -2.402585 -1.072327 -0.09 # rxode2 can use this too: et <- et(seq(0.001, 1, length.out=10)) et$shape <- 1 et$scale <- 10 model <- function() { model({ fx <- llikWeibull(time, shape, scale) dShape<- llikWeibullDshape(time, shape, scale) dScale <- llikWeibullDscale(time, shape, scale) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dShape dScale shape scale #> #> 1 0.001 -2.30 -8.21 -0.100 1 10 #> 2 0.112 -2.31 -3.44 -0.0989 1 10 #> 3 0.223 -2.32 -2.72 -0.0978 1 10 #> 4 0.334 -2.34 -2.29 -0.0967 1 10 #> 5 0.445 -2.35 -1.97 -0.0956 1 10 #> 6 0.556 -2.36 -1.73 -0.0944 1 10 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":null,"dir":"Reference","previous_headings":"","what":"logit and inverse logit (expit) functions — logit","title":"logit and inverse logit (expit) functions — logit","text":"logit inverse logit (expit) functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"logit and inverse logit (expit) functions — logit","text":"","code":"logit(x, low = 0, high = 1) expit(alpha, low = 0, high = 1) logitNormInfo(mean = 0, sd = 1, low = 0, high = 1, abs.tol = 1e-06, ...) probitNormInfo(mean = 0, sd = 1, low = 0, high = 1, abs.tol = 1e-06, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"logit and inverse logit (expit) functions — logit","text":"x Input value(s) range [low,high] translate -Inf Inf low Lowest value range high Highest value range alpha Infinite value(s) translate range [low, high] mean logit-scale mean sd logit-scale standard deviation abs.tol absolute accuracy requested. ... parameters passed integrate()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"logit and inverse logit (expit) functions — logit","text":"values logit expit","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"logit and inverse logit (expit) functions — logit","text":"logit given : logit(p) = -log(1/p-1) : p = x-low/high-low expit given : expit(p, low, high) = (high-low)/(1+exp(-alpha)) + low logitNormInfo() gives mean, variance coefficient variability untransformed scale.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"logit and inverse logit (expit) functions — logit","text":"","code":"logit(0.25) #> [1] -1.098612 expit(-1.09) #> [1] 0.2516183 logitNormInfo(logit(0.25), sd = 0.1) #> mean var cv #> 0.2504672899 0.0003515538 0.0748591440 logitNormInfo(logit(1, 0, 10), sd = 1, low = 0, high = 10) #> mean var cv #> 1.3386966 1.2662276 0.8405697"},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":null,"dir":"Reference","previous_headings":"","what":"lowergamma: upper incomplete gamma function — lowergamma","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"tgamma_lower boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"","code":"lowergamma(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"numeric '' parameter upper incomplete gamma z numeric 'z' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"lowergamma results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"lowergamma function given : $$lowergamma(, z) = \\int_{0}^{z}t^{-1}\\cdot e^{-t} dt$$","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"","code":"lowergamma(1, 3) #> [1] 0.9502129 lowergamma(1:3, 3) #> [1] 0.9502129 0.8008517 1.1536198 lowergamma(1, 1:3) #> [1] 0.6321206 0.8646647 0.9502129"},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"generic function meanProbs produces expected confidence bands either t distribution normal sampling distribution. uses qnorm() qt() mean standard deviation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"","code":"meanProbs(x, ...) # Default S3 method meanProbs( x, probs = seq(0, 1, 0.25), na.rm = FALSE, names = TRUE, useT = TRUE, onlyProbs = TRUE, pred = FALSE, n = 0L, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"x numeric vector whose mean probability based confidence values wanted, NA NaN values allowed numeric vectors unless ‘na.rm’ ‘TRUE’. ... Arguments passed default method, allows many different methods applied. probs numeric vector probabilities values interval 0 1 . na.rm logical; true, NA NaN's removed x quantiles computed. names logical; true, result names attribute. useT logical; true, use t-distribution calculate confidence-based estimates. false use normal distribution calculate confidence based estimates. onlyProbs logical; true, return probability based confidence interval estimates, otherwise return pred logical; true use prediction interval instead confidence interval n integer/integerish; n used calculate prediction confidence interval. n=0 (default) use number non-NA observations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"default return probabilities names (named) points expected distribution located given sampling mean standard deviation. onlyProbs=FALSE prepend mean, variance, standard deviation, minimum, maximum number non-NA observations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"single probability, p, uses either: mean + qt(p, df=n)*sd/sqrt(n) mean + qnorm(p)*sd/sqrt(n) smallest observation corresponds probability 0 largest probability 1 mean corresponds 0.5. mean standard deviation sample calculated based Welford's method single pass. meant perform way quantile() can drop replacement code using quantile() using distributional assumptions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"","code":"quantile(x<- rnorm(1001)) #> 0% 25% 50% 75% 100% #> -3.43144297 -0.64684345 0.02633195 0.73461597 3.21812718 meanProbs(x) #> 0% 25% 50% 75% 100% #> -3.43144297 0.01513579 0.03671114 0.05828649 3.21812718 # Can get some extra statistics if you request onlyProbs=FALSE meanProbs(x, onlyProbs=FALSE) #> mean var sd min max #> 0.03671114 1.02348884 1.01167625 -3.43144297 3.21812718 #> n 0% 25% 50% 75% #> 1001.00000000 -3.43144297 0.01513579 0.03671114 0.05828649 #> 100% #> 3.21812718 x[2] <- NA_real_ meanProbs(x, onlyProbs=FALSE) #> mean var sd min max n 0% 25% 50% 75% 100% #> NA NA NA NA NA NA NA NA NA NA NA quantile(x<- rnorm(42)) #> 0% 25% 50% 75% 100% #> -2.1683411 -1.0129511 0.0234715 0.6878369 1.7242007 meanProbs(x) #> 0% 25% 50% 75% 100% #> -2.16834112 -0.30730494 -0.19063058 -0.07395621 1.72420071 meanProbs(x, useT=FALSE) #> 0% 25% 50% 75% 100% #> -2.16834112 -0.30627094 -0.19063058 -0.07499022 1.72420071"},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign the model block in the rxode2 related object — model<-","title":"Assign the model block in the rxode2 related object — model<-","text":"Assign model block rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign the model block in the rxode2 related object — model<-","text":"","code":"model(x, envir = environment(x)) <- value"},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign the model block in the rxode2 related object — model<-","text":"x rxode2 related object envir Environment assignment occurs value Value object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign the model block in the rxode2 related object — model<-","text":"rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign the model block in the rxode2 related object — model<-","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":null,"dir":"Reference","previous_headings":"","what":"Model block for rxode2/nlmixr models — model.function","title":"Model block for rxode2/nlmixr models — model.function","text":"Model block rxode2/nlmixr models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Model block for rxode2/nlmixr models — model.function","text":"","code":"# S3 method for class '`function`' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # S3 method for class 'rxUi' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # S3 method for class 'rxode2' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # S3 method for class 'rxModelVars' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) model( x, ..., append = FALSE, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # Default S3 method model(x, ..., append = FALSE, cov = NULL, envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Model block for rxode2/nlmixr models — model.function","text":"x model expression ... arguments append boolean determine lines appended piping. possible values : TRUE lines appended model instead replaced FALSE lines replaced model (default) NA lines pre-pended model instead replaced lhs expression, append lines last observed line expression lhs auto boolean tells piping automatically selects parameters characterized population parameter, subject variability, covariate. TRUE automatic selection occurs. FALSE automatic selection turned everything added covariate (can promoted parameter ini statement). default TRUE, can changed options(rxode2.autoVarPiping=FALSE). cov character vector variables assumed covariates. override automatic promotion population parameter estimate (eta) envir environment unevaluated model expressions evaluated. May also NULL, list, data frame, pairlist integer specified sys.call.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Model block for rxode2/nlmixr models — model.function","text":"Model block ini information included. ini must called model block","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Model block for rxode2/nlmixr models — model.function","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract model lines from a rxui model — modelExtract","title":"Extract model lines from a rxui model — modelExtract","text":"Extract model lines rxui model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract model lines from a rxui model — modelExtract","text":"","code":"modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class '`function`' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class 'rxUi' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class 'rxode2' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class 'rxModelVars' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # Default S3 method modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract model lines from a rxui model — modelExtract","text":"x model extract lines ... variables extract. missing, extract entire model (conditioned endpoint option ) expression return expressions (TRUE) strings (FALSE) endpoint include endpoint. can : NA – Missing means include endpoint non-endpoint lines TRUE – include endpoint lines FALSE – include non-endpoint lines lines boolean. TRUE add lines attribute output value ie attr(, \"lines\") envir Environment evaluating variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract model lines from a rxui model — modelExtract","text":"expressions strings extracted lines. Note duplicated lhs expression line, return lines","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract model lines from a rxui model — modelExtract","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extract model lines from a rxui model — modelExtract","text":"","code":"one.compartment <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.sd) }) } f <- one.compartment() modelExtract(f, cp) #> [1] \"cp <- center/v\" modelExtract(one.compartment, d/dt(depot)) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] \"d/dt(depot) <- -ka * depot\" # from variable var <- \"d/dt(depot)\" modelExtract(one.compartment, var) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] \"d/dt(depot) <- -ka * depot\" modelExtract(f, endpoint=NA, lines=TRUE, expression=TRUE) #> [[1]] #> ka <- exp(tka + eta.ka) #> #> [[2]] #> cl <- exp(tcl + eta.cl) #> #> [[3]] #> v <- exp(tv + eta.v) #> #> [[4]] #> d/dt(depot) <- -ka * depot #> #> [[5]] #> d/dt(center) <- ka * depot - cl/v * center #> #> [[6]] #> cp <- center/v #> #> [[7]] #> cp ~ add(add.sd) #> #> attr(,\"lines\") #> [1] 1 2 3 4 5 6 7"},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":null,"dir":"Reference","previous_headings":"","what":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"NULL given method, choices returned named vector.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"","code":"odeMethodToInt(method = c(\"liblsoda\", \"lsoda\", \"dop853\", \"indLin\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"method method solving ODEs. Currently supports: \"liblsoda\" thread safe lsoda. supports parallel thread-based solving, ignores user Jacobian specification. \"lsoda\" – LSODA solver. support parallel thread-based solving, allows user Jacobian specification. \"dop853\" – DOP853 solver. support parallel thread-based solving user Jacobian specification \"indLin\" – Solving inductive linearization. rxode2 dll must setup specially use solving routine.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"integer method (unless input NULL, case, see details)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative distribution of standard normal — phi","title":"Cumulative distribution of standard normal — phi","text":"Cumulative distribution standard normal","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative distribution of standard normal — phi","text":"","code":"phi(q)"},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative distribution of standard normal — phi","text":"q vector quantiles","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative distribution of standard normal — phi","text":"cumulative distribution standard normal distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Cumulative distribution of standard normal — phi","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Cumulative distribution of standard normal — phi","text":"","code":"# phi is equivalent to pnorm(x) phi(3) #> [1] 0.9986501 # See pnorm(3) #> [1] 0.9986501 # This is provided for NONMEM-like compatibility in rxode2 models"},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot rxode2 objects — plot.rxSolve","title":"Plot rxode2 objects — plot.rxSolve","text":"Plot rxode2 objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot rxode2 objects — plot.rxSolve","text":"","code":"# S3 method for class 'rxSolve' plot(x, y, ..., log = \"\", xlab = \"Time\", ylab = \"\") # S3 method for class 'rxSolveConfint1' plot(x, y, ..., xlab = \"Time\", ylab = \"\", log = \"\") # S3 method for class 'rxSolveConfint2' plot(x, y, ..., xlab = \"Time\", ylab = \"\", log = \"\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot rxode2 objects — plot.rxSolve","text":"x rxode2 object plot y Compartments left-hand-side values plot either bare name character vector ... Ignored log \"\" (neither x y), \"x\", \"y\", \"xy\" (\"yx\") log-scale? xlab, ylab x y axis labels","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot rxode2 objects — plot.rxSolve","text":"ggplot2 object","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Update Solved object with '+' — +.rxSolve","title":"Update Solved object with '+' — +.rxSolve","text":"Update Solved object '+'","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update Solved object with '+' — +.rxSolve","text":"","code":"# S3 method for class 'rxSolve' solved + new"},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update Solved object with '+' — +.rxSolve","text":"solved Solved object new New information added table.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update Solved object with '+' — +.rxSolve","text":"new solved object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Update Solved object with '+' — +.rxSolve","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":null,"dir":"Reference","previous_headings":"","what":"Print the rxCoef object — print.rxCoef","title":"Print the rxCoef object — print.rxCoef","text":"prints user supplied arguments rxCoef object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print the rxCoef object — print.rxCoef","text":"","code":"# S3 method for class 'rxCoef' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print the rxCoef object — print.rxCoef","text":"x rxCoef object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print the rxCoef object — print.rxCoef","text":"original object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print the rxCoef object — print.rxCoef","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":null,"dir":"Reference","previous_headings":"","what":"Print rxDll object — print.rxDll","title":"Print rxDll object — print.rxDll","text":"tells rxDll loaded, ready /deleted.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print rxDll object — print.rxDll","text":"","code":"# S3 method for class 'rxDll' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print rxDll object — print.rxDll","text":"original object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print rxDll object — print.rxDll","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":null,"dir":"Reference","previous_headings":"","what":"Print Values — print.rxModelVars","title":"Print Values — print.rxModelVars","text":"print prints argument returns invisibly (via invisible(x)). generic function means new printing methods can easily added new classes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print Values — print.rxModelVars","text":"","code":"# S3 method for class 'rxModelVars' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print Values — print.rxModelVars","text":"x object used select method. ... arguments passed methods.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print Values — print.rxModelVars","text":"returns invisibly model variables object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Print Values — print.rxModelVars","text":"default method, print.default help page. Use methods(\"print\") get methods print generic. print.factor allows customization used printing ordered factors well. print.table printing tables allows customization. R 3.0.0, prints description case table 0-extents (can happen classifier valid data). See noquote example class whose main purpose specific print method.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Print Values — print.rxModelVars","text":"Chambers, J. M. Hastie, T. J. (1992) Statistical Models S. Wadsworth & Brooks/Cole.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Print Values — print.rxModelVars","text":"","code":"require(stats) ts(1:20) #-- print is the \"Default function\" --> print.ts(.) is called #> Time Series: #> Start = 1 #> End = 20 #> Frequency = 1 #> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 for(i in 1:3) print(1:i) #> [1] 1 #> [1] 1 2 #> [1] 1 2 3 ## Printing of factors attenu$station ## 117 levels -> 'max.levels' depending on width #> [1] 117 1083 1095 283 135 475 113 1008 1028 2001 117 1117 1438 1083 1013 #> [16] 1014 1015 1016 1095 1011 1028 270 280 116 266 117 113 112 130 475 #> [31] 269 135 1093 1093 111 116 290 112 113 128 126 127 141 266 110 #> [46] 1027 111 125 135 475 262 269 1052 411 290 130 272 1096 1102 112 #> [61] 113 1028 2714 2708 2715 3501 655 272 1032 1377 1028 1250 1051 1293 1291 #> [76] 1292 283 885 2734 2728 1413 1445 1408 1411 1410 1409 1377 1492 #> [91] 1251 1422 1376 286 5028 942 5054 958 952 5165 117 955 #> [106] 5055 5060 412 5053 5058 5057 5051 5115 931 5056 #> [121] 5059 5061 5062 5052 724 5066 5050 2316 5055 942 5028 5165 #> [136] 952 958 955 117 412 5053 5054 5058 5057 5115 5056 5060 1030 1418 1383 #> [151] 1308 1298 1299 1219 1030 1418 1383 1299 1308 1219 1456 5045 #> [166] 5044 5160 5043 5047 c168 5068 c118 5042 5067 5049 c204 5070 c266 c203 5069 #> [181] 5073 5072 #> 117 Levels: 1008 1011 1013 1014 1015 1016 1027 1028 1030 1032 1051 1052 ... c266 ## ordered factors: levels \"l1 < l2 < ..\" esoph$agegp[1:12] #> [1] 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 #> Levels: 25-34 < 35-44 < 45-54 < 55-64 < 65-74 < 75+ esoph$alcgp[1:12] #> [1] 0-39g/day 0-39g/day 0-39g/day 0-39g/day 40-79 40-79 40-79 #> [8] 40-79 80-119 80-119 80-119 120+ #> Levels: 0-39g/day < 40-79 < 80-119 < 120+ ## Printing of sparse (contingency) tables set.seed(521) t1 <- round(abs(rt(200, df = 1.8))) t2 <- round(abs(rt(200, df = 1.4))) table(t1, t2) # simple #> t2 #> t1 0 1 2 3 4 5 6 7 8 10 17 21 30 #> 0 21 22 14 4 1 0 1 1 1 0 1 0 0 #> 1 25 21 7 3 4 2 1 1 1 1 0 0 0 #> 2 8 16 9 2 0 0 0 0 0 0 0 1 1 #> 3 3 7 0 2 0 0 0 0 0 0 0 0 0 #> 4 1 5 2 0 0 0 1 0 0 0 0 0 0 #> 5 1 1 1 0 0 0 0 0 0 0 0 0 0 #> 6 1 3 0 0 0 0 0 0 0 0 0 0 0 #> 7 1 0 0 0 0 0 0 0 0 0 0 0 0 #> 9 0 0 0 1 0 0 0 0 0 0 0 0 0 #> 12 1 0 0 0 0 0 0 0 0 0 0 0 0 print(table(t1, t2), zero.print = \".\") # nicer to read #> t2 #> t1 0 1 2 3 4 5 6 7 8 10 17 21 30 #> 0 21 22 14 4 1 . 1 1 1 . 1 . . #> 1 25 21 7 3 4 2 1 1 1 1 . . . #> 2 8 16 9 2 . . . . . . . 1 1 #> 3 3 7 . 2 . . . . . . . . . #> 4 1 5 2 . . . 1 . . . . . . #> 5 1 1 1 . . . . . . . . . . #> 6 1 3 . . . . . . . . . . . #> 7 1 . . . . . . . . . . . . #> 9 . . . 1 . . . . . . . . . #> 12 1 . . . . . . . . . . . . ## same for non-integer \"table\": T <- table(t2,t1) T <- T * (1+round(rlnorm(length(T)))/4) print(T, zero.print = \".\") # quite nicer, #> t1 #> t2 0 1 2 3 4 5 6 7 9 12 #> 0 26.25 25.00 10.00 3.75 1.50 1.25 1.25 1.00 . 2.00 #> 1 22.00 26.25 16.00 10.50 27.50 1.25 3.00 . . . #> 2 21.00 7.00 13.50 . 3.00 1.25 . . . . #> 3 5.00 3.75 2.50 2.50 . . . . 1.50 . #> 4 1.25 5.00 . . . . . . . . #> 5 . 2.00 . . . . . . . . #> 6 1.25 1.50 . . 1.25 . . . . . #> 7 1.25 1.25 . . . . . . . . #> 8 1.50 1.00 . . . . . . . . #> 10 . 1.00 . . . . . . . . #> 17 1.00 . . . . . . . . . #> 21 . . 2.75 . . . . . . . #> 30 . . 5.00 . . . . . . . print.table(T[,2:8] * 1e9, digits=3, zero.print = \".\") #> t1 #> t2 1 2 3 4 5 6 7 #> 0 2.50e+10 1.00e+10 3.75e+09 1.50e+09 1.25e+09 1.25e+09 1.00e+09 #> 1 2.62e+10 1.60e+10 1.05e+10 2.75e+10 1.25e+09 3.00e+09 . #> 2 7.00e+09 1.35e+10 . 3.00e+09 1.25e+09 . . #> 3 3.75e+09 2.50e+09 2.50e+09 . . . . #> 4 5.00e+09 . . . . . . #> 5 2.00e+09 . . . . . . #> 6 1.50e+09 . . 1.25e+09 . . . #> 7 1.25e+09 . . . . . . #> 8 1.00e+09 . . . . . . #> 10 1.00e+09 . . . . . . #> 17 . . . . . . . #> 21 . 2.75e+09 . . . . . #> 30 . 5.00e+09 . . . . . ## still slightly inferior to Matrix::Matrix(T) for larger T ## Corner cases with empty extents: table(1, NA) # < table of extent 1 x 0 > #> < table of extent 1 x 0 >"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Print information about the rxode2 object. — print.rxode2","title":"Print information about the rxode2 object. — print.rxode2","text":"prints model name status able solved","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print information about the rxode2 object. — print.rxode2","text":"","code":"# S3 method for class 'rxode2' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print information about the rxode2 object. — print.rxode2","text":"x rxode2 object ... Ignored parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print information about the rxode2 object. — print.rxode2","text":"original object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print information about the rxode2 object. — print.rxode2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":null,"dir":"Reference","previous_headings":"","what":"probit and inverse probit functions — probit","title":"probit and inverse probit functions — probit","text":"probit inverse probit functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"probit and inverse probit functions — probit","text":"","code":"probit(x, low = 0, high = 1) probitInv(x, low = 0, high = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"probit and inverse probit functions — probit","text":"x Input value(s) range [low,high] translate -Inf Inf low Lowest value range high Highest value range","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"probit and inverse probit functions — probit","text":"values probit, probitInv probitNormInfo","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"probit and inverse probit functions — probit","text":"","code":"probit(0.25) #> [1] -0.6744898 probitInv(-0.674) #> [1] 0.2501557 probitNormInfo(probit(0.25), sd = 0.1) #> mean var cv #> 0.25106491 0.00100658 0.12636827 probitNormInfo(probit(1, 0, 10), sd = 1, low = 0, high = 10) #> mean var cv #> 1.824166 4.307824 1.137796"},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":null,"dir":"Reference","previous_headings":"","what":"One correlation sample from the LKJ distribution — rLKJ1","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"One correlation sample LKJ distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"","code":"rLKJ1(d, eta = 1, cholesky = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"d dimension correlation matrix eta scaling parameter LKJ distribution. Must > 1. Also related degrees freedom nu. eta = (nu-1)/2. cholesky boolean; TRUE return cholesky decomposition.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"correlation sample LKJ distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"Matthew Fidler (translated RcppArmadillo) Emma Schwager","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. ggplot2 aes, expand_limits, facet_wrap, geom_line, ggplot, label_both, label_context, label_context, label_value, label_wrap_gen, scale_type, scale_x_continuous, scale_x_date, scale_x_discrete, scale_y_continuous, scale_y_date, scale_y_discrete, waiver, xlab, ylab lotri lotri magrittr %>%","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/reexports.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Objects exported from other packages — reexports","text":"Inherited parent routine","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":null,"dir":"Reference","previous_headings":"","what":"Scaled Inverse Chi Squared distribution — rinvchisq","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"Scaled Inverse Chi Squared distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"","code":"rinvchisq(n = 1L, nu = 1, scale = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"n Number random samples nu degrees freedom inverse chi square scale Scale inverse chi squared distribution (default 1).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"vector inverse chi squared deviates.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"","code":"rinvchisq(3, 4, 1) ## Scale = 1, degrees of freedom = 4 #> [1] 0.7552981 0.6805595 1.5079118 rinvchisq(2, 4, 2) ## Scale = 2, degrees of freedom = 4 #> [1] 5.191181 3.240882"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":null,"dir":"Reference","previous_headings":"","what":"Allow unloading of dlls — rxAllowUnload","title":"Allow unloading of dlls — rxAllowUnload","text":"Allow unloading dlls","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Allow unloading of dlls — rxAllowUnload","text":"","code":"rxAllowUnload(allow)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Allow unloading of dlls — rxAllowUnload","text":"allow boolean indicating garbage collection unload rxode2 dlls.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Allow unloading of dlls — rxAllowUnload","text":"Boolean allow; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Allow unloading of dlls — rxAllowUnload","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Allow unloading of dlls — rxAllowUnload","text":"","code":"# Garbage collection will not unload un-used rxode2 dlls rxAllowUnload(FALSE); #> [1] FALSE # Garbage collection will unload unused rxode2 dlls rxAllowUnload(TRUE); #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Append two rxui models together — rxAppendModel","title":"Append two rxui models together — rxAppendModel","text":"Append two rxui models together","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append two rxui models together — rxAppendModel","text":"","code":"rxAppendModel(..., common = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append two rxui models together — rxAppendModel","text":"... models append together common boolean determines need common value bind","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Append two rxui models together — rxAppendModel","text":"New model models appended together","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Append two rxui models together — rxAppendModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Append two rxui models together — rxAppendModel","text":"","code":"# \\donttest{ ocmt <- function() { ini({ tka <- exp(0.45) # Ka tcl <- exp(1) # Cl tv <- exp(3.45); # log V ## the label(\"Label name\") works with all models add.sd <- 0.7 }) model({ ka <- tka cl <- tcl v <- tv d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.sd) }) } idr <- function() { ini({ tkin <- log(1) tkout <- log(1) tic50 <- log(10) gamma <- fix(1) idr.sd <- 1 }) model({ kin <- exp(tkin) kout <- exp(tkout) ic50 <- exp(tic50) d/dt(eff) <- kin - kout*(1-ceff^gamma/(ic50^gamma+ceff^gamma)) eff ~ add(idr.sd) }) } rxAppendModel(ocmt %>% model(ceff=cp,append=TRUE), idr) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd tkin tkout tic50 gamma #> 1.568312 2.718282 31.500392 0.700000 0.000000 0.000000 2.302585 1.000000 #> idr.sd #> 1.000000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 eff #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 cp ~ … cmt='cp' or cmt=4 dvid='cp' or dvid=1 #> 2 eff ~ … cmt='eff' or cmt=3 dvid='eff' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> tkin <- 0 #> tkout <- 0 #> tic50 <- 2.30258509299405 #> gamma <- fix(1) #> idr.sd <- c(0, 1) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> ceff <- cp #> kin <- exp(tkin) #> kout <- exp(tkout) #> ic50 <- exp(tic50) #> d/dt(eff) <- kin - kout * (1 - ceff^gamma/(ic50^gamma + #> ceff^gamma)) #> eff ~ add(idr.sd) #> }) #> } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign Control Variable — rxAssignControlValue","title":"Assign Control Variable — rxAssignControlValue","text":"Assign Control Variable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign Control Variable — rxAssignControlValue","text":"","code":"rxAssignControlValue(ui, option, value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign Control Variable — rxAssignControlValue","text":"ui rxode2 ui function option Option name control modify value Value control modify","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign Control Variable — rxAssignControlValue","text":"Nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign Control Variable — rxAssignControlValue","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign pointer based on model variables — rxAssignPtr","title":"Assign pointer based on model variables — rxAssignPtr","text":"Assign pointer based model variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign pointer based on model variables — rxAssignPtr","text":"","code":"rxAssignPtr(object = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign pointer based on model variables — rxAssignPtr","text":"object rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign pointer based on model variables — rxAssignPtr","text":"nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates a logical matrix for block matrixes. — rxBlockZeros","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"Creates logical matrix block matrixes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"","code":"rxBlockZeros(mat, i)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"mat Matrix Row/column block matrix setup.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"logical matrix returning elements zero.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the C file associated with the rxode2 object — rxC","title":"Return the C file associated with the rxode2 object — rxC","text":"return C code generating rxode2 DLL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the C file associated with the rxode2 object — rxC","text":"","code":"rxC(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the C file associated with the rxode2 object — rxC","text":"obj rxode2 family objects character string model specification location file model specification.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the C file associated with the rxode2 object — rxC","text":"path library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the C file associated with the rxode2 object — rxC","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":null,"dir":"Reference","previous_headings":"","what":"Use cat when rxode2.verbose is TRUE — rxCat","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"Use cat rxode2.verbose TRUE","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"","code":"rxCat(a, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"... Parameters sent cat","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":null,"dir":"Reference","previous_headings":"","what":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"Bind study parameters individual parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"","code":"rxCbindStudyIndividual(studyParameters, individualParameters)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"studyParameters study parameters, often can generated sampling population. can either matrix data frame individualParameters data frame individual parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"Data frame can used rxode2 simulations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"","code":"# Function for coverting coefficient of covariance into a variance lognCv <- function(x){log((x/100)^2+1)} set.seed(32) nSub <- 100 nStud <- 10 #define theta theta <- c(lka=log(0.5), # log ka lCl=log(5), # log Cl lV=log(300) # log V ) #define theta Matrix thetaMat <- lotri(lCl ~ lognCv(5), lV ~ lognCv(5), lka ~ lognCv(5)) nev <- nSub*nStud ev1 <- data.frame(COV1=rnorm(nev,50,30),COV2=rnorm(nev,75,10), COV3=sample(c(1.0,2.0),nev,replace=TRUE)) tmat <-rxRmvn(nStud, theta[dimnames(thetaMat)[[1]]], thetaMat) rxCbindStudyIndividual(tmat, ev1) #> lCl lV lka COV1 COV2 COV3 #> 1 1.611472 5.631300 -0.5361740 50.4392162 70.66196 1 #> 2 1.611472 5.631300 -0.5361740 76.1986612 51.54621 1 #> 3 1.611472 5.631300 -0.5361740 19.1616139 71.83376 1 #> 4 1.611472 5.631300 -0.5361740 70.5699388 97.78351 2 #> 5 1.611472 5.631300 -0.5361740 63.4831094 66.85695 1 #> 6 1.611472 5.631300 -0.5361740 62.2105292 82.55363 2 #> 7 1.611472 5.631300 -0.5361740 58.5419410 62.74875 1 #> 8 1.611472 5.631300 -0.5361740 31.2707182 57.10467 1 #> 9 1.611472 5.631300 -0.5361740 75.1896803 71.51357 2 #> 10 1.611472 5.631300 -0.5361740 59.3383758 82.29588 1 #> 11 1.611472 5.631300 -0.5361740 64.2576042 72.52852 1 #> 12 1.611472 5.631300 -0.5361740 46.9972989 90.49283 2 #> 13 1.611472 5.631300 -0.5361740 56.1053755 70.40540 2 #> 14 1.611472 5.631300 -0.5361740 47.1769492 74.99919 1 #> 15 1.611472 5.631300 -0.5361740 53.0070458 71.85786 1 #> 16 1.611472 5.631300 -0.5361740 41.9531819 85.10154 2 #> 17 1.611472 5.631300 -0.5361740 90.3817524 68.09919 2 #> 18 1.611472 5.631300 -0.5361740 45.6069772 87.68332 2 #> 19 1.611472 5.631300 -0.5361740 51.4929710 78.54242 2 #> 20 1.611472 5.631300 -0.5361740 75.0119850 70.62079 1 #> 21 1.611472 5.631300 -0.5361740 41.2732735 62.85309 1 #> 22 1.611472 5.631300 -0.5361740 17.4579412 60.01102 1 #> 23 1.611472 5.631300 -0.5361740 78.1798965 71.00092 2 #> 24 1.611472 5.631300 -0.5361740 60.8240586 88.18910 1 #> 25 1.611472 5.631300 -0.5361740 72.2097805 67.26544 2 #> 26 1.611472 5.631300 -0.5361740 76.4570517 77.65842 2 #> 27 1.611472 5.631300 -0.5361740 65.8597676 77.46590 1 #> 28 1.611472 5.631300 -0.5361740 -11.5093946 73.63090 2 #> 29 1.611472 5.631300 -0.5361740 79.4650077 70.90530 2 #> 30 1.611472 5.631300 -0.5361740 64.2040257 65.38198 2 #> 31 1.611472 5.631300 -0.5361740 74.6127558 64.79464 1 #> 32 1.611472 5.631300 -0.5361740 67.6996446 88.98030 2 #> 33 1.611472 5.631300 -0.5361740 25.6399993 77.62073 2 #> 34 1.611472 5.631300 -0.5361740 80.6050221 65.78672 2 #> 35 1.611472 5.631300 -0.5361740 96.5733053 90.61418 1 #> 36 1.611472 5.631300 -0.5361740 79.5213975 78.61057 1 #> 37 1.611472 5.631300 -0.5361740 46.4445863 61.66917 1 #> 38 1.611472 5.631300 -0.5361740 13.6205265 75.75972 1 #> 39 1.611472 5.631300 -0.5361740 69.8343811 82.37549 2 #> 40 1.611472 5.631300 -0.5361740 40.8148886 94.50969 2 #> 41 1.611472 5.631300 -0.5361740 52.4049003 78.14845 1 #> 42 1.611472 5.631300 -0.5361740 52.4778514 57.68410 1 #> 43 1.611472 5.631300 -0.5361740 22.1783261 77.09679 1 #> 44 1.611472 5.631300 -0.5361740 46.3933207 77.77013 1 #> 45 1.611472 5.631300 -0.5361740 23.7368451 62.37419 1 #> 46 1.611472 5.631300 -0.5361740 1.9459432 79.16596 2 #> 47 1.611472 5.631300 -0.5361740 15.5076749 60.22776 1 #> 48 1.611472 5.631300 -0.5361740 31.5512208 74.52360 1 #> 49 1.611472 5.631300 -0.5361740 30.7194479 64.36655 2 #> 50 1.611472 5.631300 -0.5361740 12.5473169 56.33737 2 #> 51 1.611472 5.631300 -0.5361740 61.2498142 67.93173 1 #> 52 1.611472 5.631300 -0.5361740 44.1575132 75.64240 2 #> 53 1.611472 5.631300 -0.5361740 35.8231965 79.73345 2 #> 54 1.611472 5.631300 -0.5361740 48.1079451 81.25286 1 #> 55 1.611472 5.631300 -0.5361740 4.1550156 65.35836 1 #> 56 1.611472 5.631300 -0.5361740 27.8538742 87.86854 2 #> 57 1.611472 5.631300 -0.5361740 73.1211941 63.44239 1 #> 58 1.611472 5.631300 -0.5361740 44.3472840 85.53331 1 #> 59 1.611472 5.631300 -0.5361740 76.4857002 80.78371 2 #> 60 1.611472 5.631300 -0.5361740 32.0178192 80.28942 1 #> 61 1.611472 5.631300 -0.5361740 19.4646945 79.86622 1 #> 62 1.611472 5.631300 -0.5361740 -12.3783975 70.20201 2 #> 63 1.611472 5.631300 -0.5361740 41.0473400 63.11725 1 #> 64 1.611472 5.631300 -0.5361740 56.5048458 89.52226 2 #> 65 1.611472 5.631300 -0.5361740 53.7772297 84.53200 1 #> 66 1.611472 5.631300 -0.5361740 22.0830914 84.80086 1 #> 67 1.611472 5.631300 -0.5361740 26.4159793 94.95606 2 #> 68 1.611472 5.631300 -0.5361740 62.2241433 78.84814 2 #> 69 1.611472 5.631300 -0.5361740 61.7576517 60.34825 1 #> 70 1.611472 5.631300 -0.5361740 48.8577715 61.99353 1 #> 71 1.611472 5.631300 -0.5361740 16.3926620 55.24774 1 #> 72 1.611472 5.631300 -0.5361740 59.5427284 80.22367 2 #> 73 1.611472 5.631300 -0.5361740 60.5463528 83.25528 1 #> 74 1.611472 5.631300 -0.5361740 34.4879944 80.15938 2 #> 75 1.611472 5.631300 -0.5361740 23.6753215 77.25946 2 #> 76 1.611472 5.631300 -0.5361740 39.3029386 88.03693 2 #> 77 1.611472 5.631300 -0.5361740 91.7359360 90.93438 1 #> 78 1.611472 5.631300 -0.5361740 -30.9112428 48.23557 2 #> 79 1.611472 5.631300 -0.5361740 60.1236161 78.04262 2 #> 80 1.611472 5.631300 -0.5361740 37.7844671 96.99041 2 #> 81 1.611472 5.631300 -0.5361740 90.8042884 82.76736 2 #> 82 1.611472 5.631300 -0.5361740 13.8889632 77.14949 2 #> 83 1.611472 5.631300 -0.5361740 14.2401454 84.27253 1 #> 84 1.611472 5.631300 -0.5361740 -7.8223194 70.25095 2 #> 85 1.611472 5.631300 -0.5361740 57.9146416 87.04522 2 #> 86 1.611472 5.631300 -0.5361740 82.9157470 78.87614 2 #> 87 1.611472 5.631300 -0.5361740 78.1119804 79.40393 2 #> 88 1.611472 5.631300 -0.5361740 55.0322709 85.68824 2 #> 89 1.611472 5.631300 -0.5361740 74.7709478 66.44219 1 #> 90 1.611472 5.631300 -0.5361740 27.3116099 73.97360 1 #> 91 1.611472 5.631300 -0.5361740 34.1575424 72.03973 2 #> 92 1.611472 5.631300 -0.5361740 53.3668520 68.57956 1 #> 93 1.611472 5.631300 -0.5361740 89.2950340 75.21063 2 #> 94 1.611472 5.631300 -0.5361740 90.2010652 85.99426 1 #> 95 1.611472 5.631300 -0.5361740 67.7957424 71.51220 2 #> 96 1.611472 5.631300 -0.5361740 57.1605881 69.57692 1 #> 97 1.611472 5.631300 -0.5361740 27.0744964 74.41100 1 #> 98 1.611472 5.631300 -0.5361740 34.5612722 71.28752 1 #> 99 1.611472 5.631300 -0.5361740 29.1971409 83.80223 2 #> 100 1.611472 5.631300 -0.5361740 49.6872370 69.33945 2 #> 101 1.697194 5.632904 -0.7639157 32.6009902 67.30618 1 #> 102 1.697194 5.632904 -0.7639157 63.6353581 71.67337 2 #> 103 1.697194 5.632904 -0.7639157 43.9290434 78.97433 1 #> 104 1.697194 5.632904 -0.7639157 42.2490048 82.43933 2 #> 105 1.697194 5.632904 -0.7639157 53.0755018 61.52006 1 #> 106 1.697194 5.632904 -0.7639157 33.6951552 67.92496 1 #> 107 1.697194 5.632904 -0.7639157 51.9056000 82.44938 2 #> 108 1.697194 5.632904 -0.7639157 62.3551777 72.35504 2 #> 109 1.697194 5.632904 -0.7639157 52.2855212 68.81158 1 #> 110 1.697194 5.632904 -0.7639157 57.1403145 82.54662 2 #> 111 1.697194 5.632904 -0.7639157 30.2370673 67.40756 2 #> 112 1.697194 5.632904 -0.7639157 17.5741031 68.07342 2 #> 113 1.697194 5.632904 -0.7639157 103.4040015 77.90186 1 #> 114 1.697194 5.632904 -0.7639157 17.1038275 73.91354 2 #> 115 1.697194 5.632904 -0.7639157 49.8027185 81.48599 1 #> 116 1.697194 5.632904 -0.7639157 -11.4692481 64.76781 1 #> 117 1.697194 5.632904 -0.7639157 98.9071450 64.83333 1 #> 118 1.697194 5.632904 -0.7639157 37.6980931 70.31285 2 #> 119 1.697194 5.632904 -0.7639157 19.2868862 66.63816 1 #> 120 1.697194 5.632904 -0.7639157 51.0225062 83.88089 1 #> 121 1.697194 5.632904 -0.7639157 40.5382319 72.10914 1 #> 122 1.697194 5.632904 -0.7639157 101.5279207 80.94546 2 #> 123 1.697194 5.632904 -0.7639157 39.5403917 61.69040 2 #> 124 1.697194 5.632904 -0.7639157 70.0177582 73.65824 2 #> 125 1.697194 5.632904 -0.7639157 68.4393667 60.60936 2 #> 126 1.697194 5.632904 -0.7639157 95.4758801 76.48798 2 #> 127 1.697194 5.632904 -0.7639157 100.7280319 83.84368 1 #> 128 1.697194 5.632904 -0.7639157 31.1387506 84.25006 2 #> 129 1.697194 5.632904 -0.7639157 82.6307951 62.72472 1 #> 130 1.697194 5.632904 -0.7639157 73.1841931 81.63374 1 #> 131 1.697194 5.632904 -0.7639157 61.9958164 62.05448 1 #> 132 1.697194 5.632904 -0.7639157 91.3427083 86.26454 1 #> 133 1.697194 5.632904 -0.7639157 33.2167104 67.23963 2 #> 134 1.697194 5.632904 -0.7639157 11.7911197 67.49478 2 #> 135 1.697194 5.632904 -0.7639157 22.8650443 87.65617 1 #> 136 1.697194 5.632904 -0.7639157 22.4124998 71.17249 1 #> 137 1.697194 5.632904 -0.7639157 53.8564393 47.10541 2 #> 138 1.697194 5.632904 -0.7639157 44.8924890 73.24976 1 #> 139 1.697194 5.632904 -0.7639157 31.0650744 65.49308 1 #> 140 1.697194 5.632904 -0.7639157 17.8982324 73.66385 2 #> 141 1.697194 5.632904 -0.7639157 62.6270864 80.81898 2 #> 142 1.697194 5.632904 -0.7639157 53.5904127 70.59717 2 #> 143 1.697194 5.632904 -0.7639157 70.4837507 56.87197 1 #> 144 1.697194 5.632904 -0.7639157 42.5116968 67.28455 2 #> 145 1.697194 5.632904 -0.7639157 48.7878958 78.56057 2 #> 146 1.697194 5.632904 -0.7639157 0.9279941 85.57283 1 #> 147 1.697194 5.632904 -0.7639157 -18.3507952 86.95583 2 #> 148 1.697194 5.632904 -0.7639157 101.7579054 54.42115 2 #> 149 1.697194 5.632904 -0.7639157 24.6569588 75.49368 2 #> 150 1.697194 5.632904 -0.7639157 -7.9259128 77.66407 1 #> 151 1.697194 5.632904 -0.7639157 43.0784489 79.64376 1 #> 152 1.697194 5.632904 -0.7639157 36.1701133 82.19816 1 #> 153 1.697194 5.632904 -0.7639157 69.1335142 71.72814 2 #> 154 1.697194 5.632904 -0.7639157 33.6016215 70.27974 1 #> 155 1.697194 5.632904 -0.7639157 70.9239936 79.51531 1 #> 156 1.697194 5.632904 -0.7639157 87.7203229 72.59223 2 #> 157 1.697194 5.632904 -0.7639157 57.1156306 72.77681 2 #> 158 1.697194 5.632904 -0.7639157 60.4126793 82.76394 1 #> 159 1.697194 5.632904 -0.7639157 92.8375220 68.19552 1 #> 160 1.697194 5.632904 -0.7639157 63.2372782 72.24436 1 #> 161 1.697194 5.632904 -0.7639157 33.9613589 75.23715 1 #> 162 1.697194 5.632904 -0.7639157 81.6248543 76.55037 2 #> 163 1.697194 5.632904 -0.7639157 19.1811051 63.10995 2 #> 164 1.697194 5.632904 -0.7639157 75.3831810 69.18568 2 #> 165 1.697194 5.632904 -0.7639157 102.6843377 77.56710 2 #> 166 1.697194 5.632904 -0.7639157 4.1677784 85.11736 1 #> 167 1.697194 5.632904 -0.7639157 54.6184949 78.90585 1 #> 168 1.697194 5.632904 -0.7639157 76.6307625 77.20472 1 #> 169 1.697194 5.632904 -0.7639157 -15.0363003 88.79087 2 #> 170 1.697194 5.632904 -0.7639157 34.1118242 67.00169 1 #> 171 1.697194 5.632904 -0.7639157 35.2179067 79.35038 1 #> 172 1.697194 5.632904 -0.7639157 64.3295332 61.19219 2 #> 173 1.697194 5.632904 -0.7639157 40.4356811 74.68001 2 #> 174 1.697194 5.632904 -0.7639157 53.1522189 79.54962 1 #> 175 1.697194 5.632904 -0.7639157 70.2934969 63.31328 1 #> 176 1.697194 5.632904 -0.7639157 59.3989841 60.12108 1 #> 177 1.697194 5.632904 -0.7639157 46.6562879 83.05199 2 #> 178 1.697194 5.632904 -0.7639157 31.2214418 66.17985 1 #> 179 1.697194 5.632904 -0.7639157 58.0454805 67.40731 1 #> 180 1.697194 5.632904 -0.7639157 8.5442654 60.64299 2 #> 181 1.697194 5.632904 -0.7639157 -8.6994540 67.61161 2 #> 182 1.697194 5.632904 -0.7639157 61.9941352 56.18405 2 #> 183 1.697194 5.632904 -0.7639157 30.1262921 76.65569 2 #> 184 1.697194 5.632904 -0.7639157 24.5441908 69.14319 2 #> 185 1.697194 5.632904 -0.7639157 50.9208933 88.10101 2 #> 186 1.697194 5.632904 -0.7639157 69.7603735 87.51329 1 #> 187 1.697194 5.632904 -0.7639157 31.0769298 57.86124 1 #> 188 1.697194 5.632904 -0.7639157 90.5089258 90.74690 2 #> 189 1.697194 5.632904 -0.7639157 21.6640120 80.99970 1 #> 190 1.697194 5.632904 -0.7639157 47.6529746 78.80285 1 #> 191 1.697194 5.632904 -0.7639157 100.8414400 87.18736 1 #> 192 1.697194 5.632904 -0.7639157 73.7435691 67.51377 2 #> 193 1.697194 5.632904 -0.7639157 82.2576758 67.84921 2 #> 194 1.697194 5.632904 -0.7639157 29.5939114 86.13265 2 #> 195 1.697194 5.632904 -0.7639157 55.1984696 83.14714 1 #> 196 1.697194 5.632904 -0.7639157 84.6325985 61.39152 1 #> 197 1.697194 5.632904 -0.7639157 31.4798259 82.13564 2 #> 198 1.697194 5.632904 -0.7639157 38.3235350 81.68327 2 #> 199 1.697194 5.632904 -0.7639157 -8.4598097 70.31626 2 #> 200 1.697194 5.632904 -0.7639157 22.6554638 91.57896 1 #> 201 1.674146 5.676556 -0.6450219 -33.4003934 69.48843 1 #> 202 1.674146 5.676556 -0.6450219 52.2460410 75.97223 1 #> 203 1.674146 5.676556 -0.6450219 50.5880517 55.38187 1 #> 204 1.674146 5.676556 -0.6450219 8.7755868 74.53357 2 #> 205 1.674146 5.676556 -0.6450219 -10.6399840 89.02478 1 #> 206 1.674146 5.676556 -0.6450219 77.9804152 69.63404 1 #> 207 1.674146 5.676556 -0.6450219 111.9523274 63.11713 1 #> 208 1.674146 5.676556 -0.6450219 124.7472852 63.77779 2 #> 209 1.674146 5.676556 -0.6450219 41.0472614 109.19664 1 #> 210 1.674146 5.676556 -0.6450219 64.0597410 77.51251 1 #> 211 1.674146 5.676556 -0.6450219 61.8963879 67.56591 2 #> 212 1.674146 5.676556 -0.6450219 37.5018346 82.30857 2 #> 213 1.674146 5.676556 -0.6450219 61.5478787 64.67103 1 #> 214 1.674146 5.676556 -0.6450219 83.1943400 82.83273 1 #> 215 1.674146 5.676556 -0.6450219 17.7022001 82.39610 2 #> 216 1.674146 5.676556 -0.6450219 -14.2484933 69.37045 2 #> 217 1.674146 5.676556 -0.6450219 53.8941794 78.87093 2 #> 218 1.674146 5.676556 -0.6450219 103.5306147 72.10062 1 #> 219 1.674146 5.676556 -0.6450219 42.7939220 65.36429 2 #> 220 1.674146 5.676556 -0.6450219 73.7937437 61.97888 2 #> 221 1.674146 5.676556 -0.6450219 48.8117668 55.55597 1 #> 222 1.674146 5.676556 -0.6450219 28.1380983 69.42380 1 #> 223 1.674146 5.676556 -0.6450219 39.3779860 80.40495 2 #> 224 1.674146 5.676556 -0.6450219 62.8854692 77.64617 2 #> 225 1.674146 5.676556 -0.6450219 72.7218939 92.21864 1 #> 226 1.674146 5.676556 -0.6450219 66.5973495 78.22719 2 #> 227 1.674146 5.676556 -0.6450219 73.8570482 62.72534 2 #> 228 1.674146 5.676556 -0.6450219 18.5894635 67.62931 1 #> 229 1.674146 5.676556 -0.6450219 68.5556038 86.50493 1 #> 230 1.674146 5.676556 -0.6450219 30.1182224 71.89803 1 #> 231 1.674146 5.676556 -0.6450219 78.3971169 69.50827 2 #> 232 1.674146 5.676556 -0.6450219 73.5007234 69.40116 1 #> 233 1.674146 5.676556 -0.6450219 28.3210675 70.92010 1 #> 234 1.674146 5.676556 -0.6450219 46.6133629 77.06448 2 #> 235 1.674146 5.676556 -0.6450219 53.2401976 85.49854 2 #> 236 1.674146 5.676556 -0.6450219 63.4793431 58.30338 2 #> 237 1.674146 5.676556 -0.6450219 59.0269030 78.85214 1 #> 238 1.674146 5.676556 -0.6450219 93.5334639 72.54020 2 #> 239 1.674146 5.676556 -0.6450219 63.8996826 77.72598 2 #> 240 1.674146 5.676556 -0.6450219 68.8411703 70.86692 1 #> 241 1.674146 5.676556 -0.6450219 46.6390668 78.55434 1 #> 242 1.674146 5.676556 -0.6450219 68.5895359 60.86947 2 #> 243 1.674146 5.676556 -0.6450219 53.9343358 93.15884 2 #> 244 1.674146 5.676556 -0.6450219 101.7444338 98.30442 2 #> 245 1.674146 5.676556 -0.6450219 27.6387148 66.01310 1 #> 246 1.674146 5.676556 -0.6450219 22.1740324 75.26732 1 #> 247 1.674146 5.676556 -0.6450219 54.3124668 67.99166 2 #> 248 1.674146 5.676556 -0.6450219 68.6880503 84.26854 1 #> 249 1.674146 5.676556 -0.6450219 32.9912889 73.10049 1 #> 250 1.674146 5.676556 -0.6450219 37.0764193 60.87192 1 #> 251 1.674146 5.676556 -0.6450219 70.3974993 77.76398 1 #> 252 1.674146 5.676556 -0.6450219 37.2197366 76.65401 2 #> 253 1.674146 5.676556 -0.6450219 14.4365256 77.64115 2 #> 254 1.674146 5.676556 -0.6450219 29.9881040 53.00732 2 #> 255 1.674146 5.676556 -0.6450219 32.7384157 72.68504 1 #> 256 1.674146 5.676556 -0.6450219 115.5606580 67.00864 1 #> 257 1.674146 5.676556 -0.6450219 13.1778779 64.47407 2 #> 258 1.674146 5.676556 -0.6450219 43.9159381 75.48144 2 #> 259 1.674146 5.676556 -0.6450219 57.4438694 82.49917 1 #> 260 1.674146 5.676556 -0.6450219 35.3357869 67.90399 1 #> 261 1.674146 5.676556 -0.6450219 93.3877659 64.53529 1 #> 262 1.674146 5.676556 -0.6450219 55.8988571 69.94468 1 #> 263 1.674146 5.676556 -0.6450219 100.8071811 73.59461 1 #> 264 1.674146 5.676556 -0.6450219 58.2207959 91.20699 1 #> 265 1.674146 5.676556 -0.6450219 76.8416269 78.71474 2 #> 266 1.674146 5.676556 -0.6450219 47.2898040 79.51328 2 #> 267 1.674146 5.676556 -0.6450219 21.6059507 74.03412 1 #> 268 1.674146 5.676556 -0.6450219 64.0007893 55.95205 1 #> 269 1.674146 5.676556 -0.6450219 45.8709065 88.91552 1 #> 270 1.674146 5.676556 -0.6450219 107.1590022 57.55893 1 #> 271 1.674146 5.676556 -0.6450219 65.0859265 65.90542 2 #> 272 1.674146 5.676556 -0.6450219 119.1018283 75.01579 1 #> 273 1.674146 5.676556 -0.6450219 55.4592815 78.29274 2 #> 274 1.674146 5.676556 -0.6450219 31.8241194 65.68231 2 #> 275 1.674146 5.676556 -0.6450219 69.6482017 68.30628 2 #> 276 1.674146 5.676556 -0.6450219 57.9246085 75.74779 1 #> 277 1.674146 5.676556 -0.6450219 22.6963639 89.12890 2 #> 278 1.674146 5.676556 -0.6450219 86.2301450 91.36398 2 #> 279 1.674146 5.676556 -0.6450219 119.0278886 72.84194 2 #> 280 1.674146 5.676556 -0.6450219 59.1657062 68.30592 2 #> 281 1.674146 5.676556 -0.6450219 11.9152188 79.51124 1 #> 282 1.674146 5.676556 -0.6450219 -5.3716411 74.44313 1 #> 283 1.674146 5.676556 -0.6450219 57.4626697 63.37160 2 #> 284 1.674146 5.676556 -0.6450219 18.2516164 80.85700 1 #> 285 1.674146 5.676556 -0.6450219 35.8143158 81.09371 1 #> 286 1.674146 5.676556 -0.6450219 40.8566944 76.68455 1 #> 287 1.674146 5.676556 -0.6450219 11.9086877 79.05337 1 #> 288 1.674146 5.676556 -0.6450219 41.5697738 71.20915 1 #> 289 1.674146 5.676556 -0.6450219 61.1172570 68.21870 1 #> 290 1.674146 5.676556 -0.6450219 53.9569722 79.28401 2 #> 291 1.674146 5.676556 -0.6450219 70.1390883 79.39509 2 #> 292 1.674146 5.676556 -0.6450219 50.2440058 78.13196 1 #> 293 1.674146 5.676556 -0.6450219 29.3641415 61.43075 1 #> 294 1.674146 5.676556 -0.6450219 43.4205986 68.31340 2 #> 295 1.674146 5.676556 -0.6450219 11.9649051 59.88530 2 #> 296 1.674146 5.676556 -0.6450219 48.1018591 45.74281 1 #> 297 1.674146 5.676556 -0.6450219 60.3230568 74.24123 2 #> 298 1.674146 5.676556 -0.6450219 49.2737025 94.60425 1 #> 299 1.674146 5.676556 -0.6450219 89.2126057 65.93396 1 #> 300 1.674146 5.676556 -0.6450219 84.6711995 55.00520 2 #> 301 1.613874 5.740415 -0.6984534 16.2966677 68.34929 2 #> 302 1.613874 5.740415 -0.6984534 -23.8738375 81.29663 1 #> 303 1.613874 5.740415 -0.6984534 37.5517212 76.96609 1 #> 304 1.613874 5.740415 -0.6984534 61.7803372 57.67100 2 #> 305 1.613874 5.740415 -0.6984534 31.7448921 74.50269 1 #> 306 1.613874 5.740415 -0.6984534 103.7553019 76.50833 2 #> 307 1.613874 5.740415 -0.6984534 68.3064419 78.66488 1 #> 308 1.613874 5.740415 -0.6984534 46.3723587 72.80769 2 #> 309 1.613874 5.740415 -0.6984534 44.2082165 88.52164 2 #> 310 1.613874 5.740415 -0.6984534 16.7410057 71.31052 1 #> 311 1.613874 5.740415 -0.6984534 4.8366902 66.14520 2 #> 312 1.613874 5.740415 -0.6984534 40.7731288 60.79451 2 #> 313 1.613874 5.740415 -0.6984534 45.5423139 81.48294 2 #> 314 1.613874 5.740415 -0.6984534 34.5441864 83.36918 1 #> 315 1.613874 5.740415 -0.6984534 80.6230295 76.44552 1 #> 316 1.613874 5.740415 -0.6984534 41.0777626 66.61761 1 #> 317 1.613874 5.740415 -0.6984534 67.2442111 62.97680 1 #> 318 1.613874 5.740415 -0.6984534 55.7534751 71.47254 1 #> 319 1.613874 5.740415 -0.6984534 23.0419496 75.92260 2 #> 320 1.613874 5.740415 -0.6984534 50.5344811 60.99439 1 #> 321 1.613874 5.740415 -0.6984534 56.6442255 70.42003 1 #> 322 1.613874 5.740415 -0.6984534 49.6816955 78.48606 2 #> 323 1.613874 5.740415 -0.6984534 42.5396571 70.92581 1 #> 324 1.613874 5.740415 -0.6984534 85.4587299 71.81209 1 #> 325 1.613874 5.740415 -0.6984534 49.7048695 71.80567 2 #> 326 1.613874 5.740415 -0.6984534 43.7052724 71.15110 1 #> 327 1.613874 5.740415 -0.6984534 25.6587367 73.88314 1 #> 328 1.613874 5.740415 -0.6984534 38.0842682 68.11214 2 #> 329 1.613874 5.740415 -0.6984534 58.0814658 79.02879 2 #> 330 1.613874 5.740415 -0.6984534 47.0620228 78.75508 2 #> 331 1.613874 5.740415 -0.6984534 75.2547281 61.06943 1 #> 332 1.613874 5.740415 -0.6984534 59.1631641 70.49261 2 #> 333 1.613874 5.740415 -0.6984534 64.8077362 75.55531 1 #> 334 1.613874 5.740415 -0.6984534 70.2267571 85.75407 2 #> 335 1.613874 5.740415 -0.6984534 78.1350880 87.25513 2 #> 336 1.613874 5.740415 -0.6984534 99.9391549 73.21560 2 #> 337 1.613874 5.740415 -0.6984534 26.8114696 69.27603 1 #> 338 1.613874 5.740415 -0.6984534 42.2920693 73.35812 1 #> 339 1.613874 5.740415 -0.6984534 11.5777747 66.92449 1 #> 340 1.613874 5.740415 -0.6984534 7.2326812 76.23257 2 #> 341 1.613874 5.740415 -0.6984534 32.0251435 64.28934 2 #> 342 1.613874 5.740415 -0.6984534 5.6848147 84.06207 2 #> 343 1.613874 5.740415 -0.6984534 17.8630157 83.72065 1 #> 344 1.613874 5.740415 -0.6984534 39.2471861 71.08365 1 #> 345 1.613874 5.740415 -0.6984534 42.3913534 78.36272 2 #> 346 1.613874 5.740415 -0.6984534 37.1359731 80.05851 1 #> 347 1.613874 5.740415 -0.6984534 70.3095886 85.66656 1 #> 348 1.613874 5.740415 -0.6984534 73.1411037 84.16674 1 #> 349 1.613874 5.740415 -0.6984534 72.2027827 67.90291 2 #> 350 1.613874 5.740415 -0.6984534 89.0892997 69.01875 1 #> 351 1.613874 5.740415 -0.6984534 38.3062060 87.58053 2 #> 352 1.613874 5.740415 -0.6984534 94.6363923 69.93447 2 #> 353 1.613874 5.740415 -0.6984534 22.1603083 70.25841 1 #> 354 1.613874 5.740415 -0.6984534 86.6445941 58.44013 1 #> 355 1.613874 5.740415 -0.6984534 63.6328470 68.47071 1 #> 356 1.613874 5.740415 -0.6984534 47.4000258 79.02593 2 #> 357 1.613874 5.740415 -0.6984534 56.8906269 78.73618 1 #> 358 1.613874 5.740415 -0.6984534 138.4604907 91.03089 2 #> 359 1.613874 5.740415 -0.6984534 34.2312321 70.08259 1 #> 360 1.613874 5.740415 -0.6984534 28.7816357 68.35925 1 #> 361 1.613874 5.740415 -0.6984534 63.6295615 74.22550 1 #> 362 1.613874 5.740415 -0.6984534 17.8966286 75.69102 1 #> 363 1.613874 5.740415 -0.6984534 65.2934670 78.64505 1 #> 364 1.613874 5.740415 -0.6984534 63.4292942 67.34958 1 #> 365 1.613874 5.740415 -0.6984534 62.0240976 72.98431 2 #> 366 1.613874 5.740415 -0.6984534 -18.8146117 71.94563 2 #> 367 1.613874 5.740415 -0.6984534 50.0382446 60.28001 2 #> 368 1.613874 5.740415 -0.6984534 38.9153391 69.05125 2 #> 369 1.613874 5.740415 -0.6984534 34.9527197 90.92124 1 #> 370 1.613874 5.740415 -0.6984534 57.3564028 81.09840 2 #> 371 1.613874 5.740415 -0.6984534 5.6676726 82.55833 2 #> 372 1.613874 5.740415 -0.6984534 -2.4178148 76.20637 2 #> 373 1.613874 5.740415 -0.6984534 35.7885424 69.99939 2 #> 374 1.613874 5.740415 -0.6984534 47.7368090 80.19972 2 #> 375 1.613874 5.740415 -0.6984534 101.4735251 69.22624 2 #> 376 1.613874 5.740415 -0.6984534 -2.2779624 71.66347 2 #> 377 1.613874 5.740415 -0.6984534 20.0816173 80.03776 1 #> 378 1.613874 5.740415 -0.6984534 86.7090448 66.93729 2 #> 379 1.613874 5.740415 -0.6984534 113.6281574 87.99688 1 #> 380 1.613874 5.740415 -0.6984534 60.5466001 73.51926 2 #> 381 1.613874 5.740415 -0.6984534 77.7692487 91.64848 1 #> 382 1.613874 5.740415 -0.6984534 53.8636442 74.24403 1 #> 383 1.613874 5.740415 -0.6984534 48.1572877 59.35281 1 #> 384 1.613874 5.740415 -0.6984534 74.3395680 71.52724 1 #> 385 1.613874 5.740415 -0.6984534 82.6948844 78.87735 2 #> 386 1.613874 5.740415 -0.6984534 46.4934373 82.17691 2 #> 387 1.613874 5.740415 -0.6984534 25.6491388 77.72397 1 #> 388 1.613874 5.740415 -0.6984534 64.7947383 65.57023 1 #> 389 1.613874 5.740415 -0.6984534 87.6883038 89.76483 2 #> 390 1.613874 5.740415 -0.6984534 36.3328494 75.40819 2 #> 391 1.613874 5.740415 -0.6984534 26.4426459 73.85141 2 #> 392 1.613874 5.740415 -0.6984534 90.8342567 66.25896 2 #> 393 1.613874 5.740415 -0.6984534 93.6867760 57.91092 2 #> 394 1.613874 5.740415 -0.6984534 36.2778295 82.04241 2 #> 395 1.613874 5.740415 -0.6984534 56.8188275 73.16254 2 #> 396 1.613874 5.740415 -0.6984534 26.4980424 85.67589 1 #> 397 1.613874 5.740415 -0.6984534 25.4763875 70.98675 1 #> 398 1.613874 5.740415 -0.6984534 83.1803210 66.45085 1 #> 399 1.613874 5.740415 -0.6984534 1.7994674 59.17247 1 #> 400 1.613874 5.740415 -0.6984534 64.4949075 76.40213 2 #> 401 1.607998 5.643855 -0.6792054 48.8215960 68.12087 2 #> 402 1.607998 5.643855 -0.6792054 77.2970093 86.06118 2 #> 403 1.607998 5.643855 -0.6792054 67.4089724 65.71332 2 #> 404 1.607998 5.643855 -0.6792054 10.3769795 73.37489 1 #> 405 1.607998 5.643855 -0.6792054 79.1553290 85.74435 1 #> 406 1.607998 5.643855 -0.6792054 7.4670103 78.70518 2 #> 407 1.607998 5.643855 -0.6792054 56.0394847 65.44270 1 #> 408 1.607998 5.643855 -0.6792054 97.3603339 84.75567 1 #> 409 1.607998 5.643855 -0.6792054 64.1091315 69.81431 1 #> 410 1.607998 5.643855 -0.6792054 5.4828970 69.17843 2 #> 411 1.607998 5.643855 -0.6792054 -1.0365617 77.92836 1 #> 412 1.607998 5.643855 -0.6792054 105.1530363 58.76622 2 #> 413 1.607998 5.643855 -0.6792054 36.2081348 86.51888 1 #> 414 1.607998 5.643855 -0.6792054 100.7910554 72.30377 2 #> 415 1.607998 5.643855 -0.6792054 121.8033519 64.49824 2 #> 416 1.607998 5.643855 -0.6792054 80.7673520 79.15892 2 #> 417 1.607998 5.643855 -0.6792054 37.8666953 81.64906 2 #> 418 1.607998 5.643855 -0.6792054 115.5883876 72.47664 2 #> 419 1.607998 5.643855 -0.6792054 35.2369749 70.77398 1 #> 420 1.607998 5.643855 -0.6792054 64.1711223 81.17435 1 #> 421 1.607998 5.643855 -0.6792054 80.7895090 83.24437 1 #> 422 1.607998 5.643855 -0.6792054 21.7869881 66.29985 1 #> 423 1.607998 5.643855 -0.6792054 12.4926991 85.17995 2 #> 424 1.607998 5.643855 -0.6792054 100.3907484 63.01031 2 #> 425 1.607998 5.643855 -0.6792054 87.0887229 78.85374 1 #> 426 1.607998 5.643855 -0.6792054 25.1379799 73.96496 2 #> 427 1.607998 5.643855 -0.6792054 49.5239715 67.28242 1 #> 428 1.607998 5.643855 -0.6792054 88.7792321 79.57532 1 #> 429 1.607998 5.643855 -0.6792054 27.6786417 50.07289 2 #> 430 1.607998 5.643855 -0.6792054 39.2307194 71.84089 1 #> 431 1.607998 5.643855 -0.6792054 24.7497391 59.53040 1 #> 432 1.607998 5.643855 -0.6792054 41.3796076 91.30726 1 #> 433 1.607998 5.643855 -0.6792054 15.7437413 60.97164 1 #> 434 1.607998 5.643855 -0.6792054 49.3700152 87.90514 2 #> 435 1.607998 5.643855 -0.6792054 85.1566041 70.45287 2 #> 436 1.607998 5.643855 -0.6792054 40.6560199 71.09065 2 #> 437 1.607998 5.643855 -0.6792054 51.7926315 80.52528 1 #> 438 1.607998 5.643855 -0.6792054 21.9143343 90.76348 2 #> 439 1.607998 5.643855 -0.6792054 51.8020419 67.59027 1 #> 440 1.607998 5.643855 -0.6792054 16.6322957 68.55139 2 #> 441 1.607998 5.643855 -0.6792054 83.6203837 70.68124 1 #> 442 1.607998 5.643855 -0.6792054 0.5211994 77.24136 2 #> 443 1.607998 5.643855 -0.6792054 68.5951856 91.48323 1 #> 444 1.607998 5.643855 -0.6792054 43.1520866 76.30536 1 #> 445 1.607998 5.643855 -0.6792054 50.3386316 65.44094 2 #> 446 1.607998 5.643855 -0.6792054 -5.5620422 66.74062 2 #> 447 1.607998 5.643855 -0.6792054 36.6958235 75.55218 1 #> 448 1.607998 5.643855 -0.6792054 50.5999862 70.92480 1 #> 449 1.607998 5.643855 -0.6792054 33.7248448 63.47388 1 #> 450 1.607998 5.643855 -0.6792054 56.8412586 69.62838 1 #> 451 1.607998 5.643855 -0.6792054 41.5039976 42.87558 2 #> 452 1.607998 5.643855 -0.6792054 34.6840120 94.67629 2 #> 453 1.607998 5.643855 -0.6792054 66.7908719 85.49509 2 #> 454 1.607998 5.643855 -0.6792054 61.4085644 60.53623 1 #> 455 1.607998 5.643855 -0.6792054 20.3101447 63.61028 2 #> 456 1.607998 5.643855 -0.6792054 23.9141255 63.56250 1 #> 457 1.607998 5.643855 -0.6792054 33.5839449 52.95806 1 #> 458 1.607998 5.643855 -0.6792054 84.6397334 78.41237 2 #> 459 1.607998 5.643855 -0.6792054 44.8334456 71.30109 1 #> 460 1.607998 5.643855 -0.6792054 27.2349995 72.89661 2 #> 461 1.607998 5.643855 -0.6792054 91.2514376 91.89839 2 #> 462 1.607998 5.643855 -0.6792054 37.6097072 81.34729 1 #> 463 1.607998 5.643855 -0.6792054 68.5254907 72.04929 2 #> 464 1.607998 5.643855 -0.6792054 38.5642150 69.13123 1 #> 465 1.607998 5.643855 -0.6792054 44.1594360 77.51596 2 #> 466 1.607998 5.643855 -0.6792054 57.0717274 80.17189 2 #> 467 1.607998 5.643855 -0.6792054 95.9455509 74.75328 2 #> 468 1.607998 5.643855 -0.6792054 42.9920799 92.50767 1 #> 469 1.607998 5.643855 -0.6792054 55.7102276 75.72940 2 #> 470 1.607998 5.643855 -0.6792054 60.8177462 69.03698 2 #> 471 1.607998 5.643855 -0.6792054 55.3605893 66.34895 1 #> 472 1.607998 5.643855 -0.6792054 56.7559825 75.28003 2 #> 473 1.607998 5.643855 -0.6792054 25.4328185 73.75857 1 #> 474 1.607998 5.643855 -0.6792054 -6.8916878 88.03803 2 #> 475 1.607998 5.643855 -0.6792054 33.4832529 75.73123 2 #> 476 1.607998 5.643855 -0.6792054 52.0521677 80.03295 1 #> 477 1.607998 5.643855 -0.6792054 25.4914503 82.94275 1 #> 478 1.607998 5.643855 -0.6792054 100.9890496 77.45985 1 #> 479 1.607998 5.643855 -0.6792054 25.5156151 91.88302 1 #> 480 1.607998 5.643855 -0.6792054 43.6078125 57.43117 1 #> 481 1.607998 5.643855 -0.6792054 37.0091877 79.48740 2 #> 482 1.607998 5.643855 -0.6792054 11.8107388 64.78770 1 #> 483 1.607998 5.643855 -0.6792054 44.3389759 71.14324 2 #> 484 1.607998 5.643855 -0.6792054 54.9898805 73.64347 1 #> 485 1.607998 5.643855 -0.6792054 71.7998793 69.11348 1 #> 486 1.607998 5.643855 -0.6792054 -5.6880456 71.73435 2 #> 487 1.607998 5.643855 -0.6792054 79.1445668 69.27310 1 #> 488 1.607998 5.643855 -0.6792054 12.9249574 78.46686 2 #> 489 1.607998 5.643855 -0.6792054 27.5346015 67.62387 1 #> 490 1.607998 5.643855 -0.6792054 62.8966610 76.51829 2 #> 491 1.607998 5.643855 -0.6792054 32.0787529 68.94991 2 #> 492 1.607998 5.643855 -0.6792054 25.1917260 70.99306 2 #> 493 1.607998 5.643855 -0.6792054 54.4621512 70.62260 2 #> 494 1.607998 5.643855 -0.6792054 -2.2871236 80.68376 1 #> 495 1.607998 5.643855 -0.6792054 27.2894531 58.62351 1 #> 496 1.607998 5.643855 -0.6792054 74.5977013 88.26263 2 #> 497 1.607998 5.643855 -0.6792054 92.4308992 74.24270 2 #> 498 1.607998 5.643855 -0.6792054 55.8268794 89.50048 1 #> 499 1.607998 5.643855 -0.6792054 89.4983796 61.30342 2 #> 500 1.607998 5.643855 -0.6792054 79.8213569 76.81988 1 #> 501 1.643777 5.694137 -0.6690660 38.1678563 67.56115 2 #> 502 1.643777 5.694137 -0.6690660 61.0698769 58.17179 1 #> 503 1.643777 5.694137 -0.6690660 41.7382042 64.26612 1 #> 504 1.643777 5.694137 -0.6690660 33.8740280 69.33690 1 #> 505 1.643777 5.694137 -0.6690660 23.5953740 61.72238 1 #> 506 1.643777 5.694137 -0.6690660 13.3422225 52.87255 2 #> 507 1.643777 5.694137 -0.6690660 74.0383804 62.03574 1 #> 508 1.643777 5.694137 -0.6690660 93.0192305 70.91276 2 #> 509 1.643777 5.694137 -0.6690660 89.0049567 70.15547 2 #> 510 1.643777 5.694137 -0.6690660 43.5291243 91.50177 1 #> 511 1.643777 5.694137 -0.6690660 23.5393253 81.96101 2 #> 512 1.643777 5.694137 -0.6690660 40.9925587 57.60091 2 #> 513 1.643777 5.694137 -0.6690660 34.9704160 60.84323 2 #> 514 1.643777 5.694137 -0.6690660 59.9235702 88.99702 2 #> 515 1.643777 5.694137 -0.6690660 98.3658578 86.42595 1 #> 516 1.643777 5.694137 -0.6690660 50.7422608 92.09375 2 #> 517 1.643777 5.694137 -0.6690660 41.9356043 65.47800 1 #> 518 1.643777 5.694137 -0.6690660 69.2871008 72.68478 1 #> 519 1.643777 5.694137 -0.6690660 49.4730857 66.81432 2 #> 520 1.643777 5.694137 -0.6690660 44.8791520 70.87674 2 #> 521 1.643777 5.694137 -0.6690660 20.4638474 95.53771 2 #> 522 1.643777 5.694137 -0.6690660 32.3751288 83.15449 2 #> 523 1.643777 5.694137 -0.6690660 77.5845632 65.59434 1 #> 524 1.643777 5.694137 -0.6690660 56.7236110 85.66398 1 #> 525 1.643777 5.694137 -0.6690660 32.1085930 79.47297 1 #> 526 1.643777 5.694137 -0.6690660 46.5107080 75.75487 2 #> 527 1.643777 5.694137 -0.6690660 78.9429857 66.73803 1 #> 528 1.643777 5.694137 -0.6690660 31.0490558 83.34998 2 #> 529 1.643777 5.694137 -0.6690660 40.9829803 90.16081 2 #> 530 1.643777 5.694137 -0.6690660 43.9492312 80.31310 1 #> 531 1.643777 5.694137 -0.6690660 65.5490888 88.77697 2 #> 532 1.643777 5.694137 -0.6690660 56.2680938 90.90554 2 #> 533 1.643777 5.694137 -0.6690660 14.4686365 80.42169 1 #> 534 1.643777 5.694137 -0.6690660 70.2907813 80.47309 1 #> 535 1.643777 5.694137 -0.6690660 57.4804485 75.33315 1 #> 536 1.643777 5.694137 -0.6690660 66.0948896 89.54032 1 #> 537 1.643777 5.694137 -0.6690660 3.1032846 87.89076 2 #> 538 1.643777 5.694137 -0.6690660 44.2139073 84.02920 1 #> 539 1.643777 5.694137 -0.6690660 48.2643368 78.79437 2 #> 540 1.643777 5.694137 -0.6690660 74.8756724 61.15289 1 #> 541 1.643777 5.694137 -0.6690660 8.1327649 71.72132 2 #> 542 1.643777 5.694137 -0.6690660 16.5980966 64.94069 1 #> 543 1.643777 5.694137 -0.6690660 43.9312413 51.69354 1 #> 544 1.643777 5.694137 -0.6690660 -17.1351407 94.42809 1 #> 545 1.643777 5.694137 -0.6690660 53.1464554 83.92699 1 #> 546 1.643777 5.694137 -0.6690660 81.4527982 74.55878 2 #> 547 1.643777 5.694137 -0.6690660 10.1989198 87.76708 2 #> 548 1.643777 5.694137 -0.6690660 21.5496443 83.67005 2 #> 549 1.643777 5.694137 -0.6690660 34.7187279 81.54692 1 #> 550 1.643777 5.694137 -0.6690660 27.5386247 57.54349 2 #> 551 1.643777 5.694137 -0.6690660 14.6024354 78.74788 2 #> 552 1.643777 5.694137 -0.6690660 27.5903823 56.68944 1 #> 553 1.643777 5.694137 -0.6690660 72.5185564 91.10584 1 #> 554 1.643777 5.694137 -0.6690660 44.3002781 81.56935 2 #> 555 1.643777 5.694137 -0.6690660 139.1363422 82.74588 2 #> 556 1.643777 5.694137 -0.6690660 65.8100955 81.94809 1 #> 557 1.643777 5.694137 -0.6690660 50.6868391 72.21063 1 #> 558 1.643777 5.694137 -0.6690660 39.6543078 77.29151 2 #> 559 1.643777 5.694137 -0.6690660 83.1524478 55.31793 2 #> 560 1.643777 5.694137 -0.6690660 28.9030084 66.02987 1 #> 561 1.643777 5.694137 -0.6690660 74.8964861 81.14713 2 #> 562 1.643777 5.694137 -0.6690660 59.0149196 65.04019 1 #> 563 1.643777 5.694137 -0.6690660 30.3298336 79.68335 2 #> 564 1.643777 5.694137 -0.6690660 57.7948403 75.82379 1 #> 565 1.643777 5.694137 -0.6690660 34.2990000 86.36872 2 #> 566 1.643777 5.694137 -0.6690660 2.6535279 87.72225 2 #> 567 1.643777 5.694137 -0.6690660 37.6268290 74.39190 2 #> 568 1.643777 5.694137 -0.6690660 63.9340344 65.42419 2 #> 569 1.643777 5.694137 -0.6690660 58.9164769 45.08214 2 #> 570 1.643777 5.694137 -0.6690660 92.0016020 83.70186 1 #> 571 1.643777 5.694137 -0.6690660 61.7224060 79.23864 2 #> 572 1.643777 5.694137 -0.6690660 96.1235032 83.73479 2 #> 573 1.643777 5.694137 -0.6690660 68.5533210 59.05651 1 #> 574 1.643777 5.694137 -0.6690660 -3.6102436 50.09141 1 #> 575 1.643777 5.694137 -0.6690660 76.0941103 72.03348 2 #> 576 1.643777 5.694137 -0.6690660 104.4106457 75.32516 2 #> 577 1.643777 5.694137 -0.6690660 41.2928074 69.04815 1 #> 578 1.643777 5.694137 -0.6690660 65.2797569 74.49533 1 #> 579 1.643777 5.694137 -0.6690660 26.3265850 81.18398 2 #> 580 1.643777 5.694137 -0.6690660 65.5588529 68.91393 2 #> 581 1.643777 5.694137 -0.6690660 47.0697497 74.72187 1 #> 582 1.643777 5.694137 -0.6690660 87.2450727 94.10999 1 #> 583 1.643777 5.694137 -0.6690660 61.2502113 80.00009 2 #> 584 1.643777 5.694137 -0.6690660 89.2007650 58.09223 1 #> 585 1.643777 5.694137 -0.6690660 9.9740886 80.09600 1 #> 586 1.643777 5.694137 -0.6690660 73.9157460 74.08366 2 #> 587 1.643777 5.694137 -0.6690660 14.4160082 89.42311 1 #> 588 1.643777 5.694137 -0.6690660 64.4259505 63.68825 2 #> 589 1.643777 5.694137 -0.6690660 107.6692892 70.25459 1 #> 590 1.643777 5.694137 -0.6690660 97.0398311 75.44392 2 #> 591 1.643777 5.694137 -0.6690660 -18.6333110 58.40089 1 #> 592 1.643777 5.694137 -0.6690660 39.5946897 84.11830 2 #> 593 1.643777 5.694137 -0.6690660 20.6417920 73.83552 2 #> 594 1.643777 5.694137 -0.6690660 56.4086735 68.10451 1 #> 595 1.643777 5.694137 -0.6690660 85.1042630 66.95012 1 #> 596 1.643777 5.694137 -0.6690660 50.6295988 87.69661 1 #> 597 1.643777 5.694137 -0.6690660 36.9343237 68.84028 1 #> 598 1.643777 5.694137 -0.6690660 71.1503605 87.67769 1 #> 599 1.643777 5.694137 -0.6690660 56.5924449 81.06348 1 #> 600 1.643777 5.694137 -0.6690660 93.5501107 88.95669 1 #> 601 1.648057 5.729913 -0.6552792 18.9083599 82.84332 1 #> 602 1.648057 5.729913 -0.6552792 82.7940905 69.87248 2 #> 603 1.648057 5.729913 -0.6552792 45.9641247 69.22075 2 #> 604 1.648057 5.729913 -0.6552792 54.6802925 78.95279 1 #> 605 1.648057 5.729913 -0.6552792 107.1581579 62.13559 2 #> 606 1.648057 5.729913 -0.6552792 53.1915408 62.58662 1 #> 607 1.648057 5.729913 -0.6552792 53.7586208 57.37826 2 #> 608 1.648057 5.729913 -0.6552792 11.4903880 76.88262 1 #> 609 1.648057 5.729913 -0.6552792 42.9730652 76.14662 2 #> 610 1.648057 5.729913 -0.6552792 49.4591203 61.76904 2 #> 611 1.648057 5.729913 -0.6552792 78.8073818 79.18351 1 #> 612 1.648057 5.729913 -0.6552792 50.8429855 84.85734 2 #> 613 1.648057 5.729913 -0.6552792 49.4230911 80.54065 2 #> 614 1.648057 5.729913 -0.6552792 35.8725616 73.61357 2 #> 615 1.648057 5.729913 -0.6552792 73.8953130 87.20300 1 #> 616 1.648057 5.729913 -0.6552792 48.5112541 78.58745 1 #> 617 1.648057 5.729913 -0.6552792 41.2691503 77.56750 1 #> 618 1.648057 5.729913 -0.6552792 -2.5952400 52.72300 1 #> 619 1.648057 5.729913 -0.6552792 37.7309015 82.54988 1 #> 620 1.648057 5.729913 -0.6552792 30.3568403 73.26848 2 #> 621 1.648057 5.729913 -0.6552792 74.6840163 69.20581 2 #> 622 1.648057 5.729913 -0.6552792 57.2935950 59.50570 1 #> 623 1.648057 5.729913 -0.6552792 46.0448889 76.42029 2 #> 624 1.648057 5.729913 -0.6552792 26.0374982 88.97144 1 #> 625 1.648057 5.729913 -0.6552792 107.5539884 73.40860 1 #> 626 1.648057 5.729913 -0.6552792 76.0932271 64.01009 2 #> 627 1.648057 5.729913 -0.6552792 15.2618979 85.87639 1 #> 628 1.648057 5.729913 -0.6552792 26.9130546 81.09287 1 #> 629 1.648057 5.729913 -0.6552792 19.6257044 66.16867 1 #> 630 1.648057 5.729913 -0.6552792 27.6237559 83.07571 1 #> 631 1.648057 5.729913 -0.6552792 3.0788206 72.64991 1 #> 632 1.648057 5.729913 -0.6552792 83.9619254 70.62216 2 #> 633 1.648057 5.729913 -0.6552792 27.2919447 69.19040 1 #> 634 1.648057 5.729913 -0.6552792 70.9313798 85.46613 2 #> 635 1.648057 5.729913 -0.6552792 23.8187421 80.40937 2 #> 636 1.648057 5.729913 -0.6552792 59.3970342 79.11208 1 #> 637 1.648057 5.729913 -0.6552792 42.5267742 87.02663 2 #> 638 1.648057 5.729913 -0.6552792 109.4385054 73.75556 2 #> 639 1.648057 5.729913 -0.6552792 68.4397881 76.30425 1 #> 640 1.648057 5.729913 -0.6552792 75.7222837 82.39713 2 #> 641 1.648057 5.729913 -0.6552792 16.5044967 78.43945 2 #> 642 1.648057 5.729913 -0.6552792 66.1861109 79.22025 2 #> 643 1.648057 5.729913 -0.6552792 52.7481347 63.74457 2 #> 644 1.648057 5.729913 -0.6552792 37.2365634 71.05619 1 #> 645 1.648057 5.729913 -0.6552792 46.9804983 56.89054 2 #> 646 1.648057 5.729913 -0.6552792 50.2229018 77.10394 2 #> 647 1.648057 5.729913 -0.6552792 16.0139501 61.53448 1 #> 648 1.648057 5.729913 -0.6552792 41.5563797 65.99968 2 #> 649 1.648057 5.729913 -0.6552792 70.9674950 69.01587 1 #> 650 1.648057 5.729913 -0.6552792 55.6625466 82.58803 2 #> 651 1.648057 5.729913 -0.6552792 42.0096291 78.35425 1 #> 652 1.648057 5.729913 -0.6552792 117.8812335 77.27629 2 #> 653 1.648057 5.729913 -0.6552792 61.6658650 72.08551 1 #> 654 1.648057 5.729913 -0.6552792 -0.8736160 92.49828 2 #> 655 1.648057 5.729913 -0.6552792 80.5603108 75.62488 2 #> 656 1.648057 5.729913 -0.6552792 48.1762269 64.89065 2 #> 657 1.648057 5.729913 -0.6552792 12.9968319 65.07000 1 #> 658 1.648057 5.729913 -0.6552792 2.8313131 90.66089 2 #> 659 1.648057 5.729913 -0.6552792 70.0881641 62.61839 1 #> 660 1.648057 5.729913 -0.6552792 -33.8810337 64.19400 2 #> 661 1.648057 5.729913 -0.6552792 39.9661974 68.44032 2 #> 662 1.648057 5.729913 -0.6552792 31.3170364 75.73101 1 #> 663 1.648057 5.729913 -0.6552792 44.0024332 68.82384 2 #> 664 1.648057 5.729913 -0.6552792 36.7898696 68.25944 2 #> 665 1.648057 5.729913 -0.6552792 107.5733367 68.19207 2 #> 666 1.648057 5.729913 -0.6552792 68.0743864 63.00673 2 #> 667 1.648057 5.729913 -0.6552792 68.3035899 89.13444 2 #> 668 1.648057 5.729913 -0.6552792 46.1511899 71.02200 2 #> 669 1.648057 5.729913 -0.6552792 53.2178875 56.93658 2 #> 670 1.648057 5.729913 -0.6552792 -32.8588747 67.34866 2 #> 671 1.648057 5.729913 -0.6552792 43.5265993 86.60459 1 #> 672 1.648057 5.729913 -0.6552792 35.3250016 80.49457 2 #> 673 1.648057 5.729913 -0.6552792 132.4481604 87.69892 1 #> 674 1.648057 5.729913 -0.6552792 53.0284456 75.10771 2 #> 675 1.648057 5.729913 -0.6552792 72.9444754 58.12782 1 #> 676 1.648057 5.729913 -0.6552792 26.9975412 80.05722 2 #> 677 1.648057 5.729913 -0.6552792 36.8695056 98.52606 2 #> 678 1.648057 5.729913 -0.6552792 69.6609769 94.47954 1 #> 679 1.648057 5.729913 -0.6552792 25.0991472 84.40522 2 #> 680 1.648057 5.729913 -0.6552792 41.9468910 75.74272 1 #> 681 1.648057 5.729913 -0.6552792 20.8472512 83.97757 2 #> 682 1.648057 5.729913 -0.6552792 15.1525928 85.26197 1 #> 683 1.648057 5.729913 -0.6552792 29.9811042 52.37819 1 #> 684 1.648057 5.729913 -0.6552792 35.2479815 65.28672 1 #> 685 1.648057 5.729913 -0.6552792 55.8575273 64.93605 1 #> 686 1.648057 5.729913 -0.6552792 46.1190677 70.03628 1 #> 687 1.648057 5.729913 -0.6552792 58.2830057 71.94772 2 #> 688 1.648057 5.729913 -0.6552792 85.9325796 52.10738 1 #> 689 1.648057 5.729913 -0.6552792 81.0811061 70.93935 2 #> 690 1.648057 5.729913 -0.6552792 90.7740977 86.39420 1 #> 691 1.648057 5.729913 -0.6552792 80.5749599 91.67558 1 #> 692 1.648057 5.729913 -0.6552792 18.3214023 84.10786 2 #> 693 1.648057 5.729913 -0.6552792 50.2634173 71.34296 1 #> 694 1.648057 5.729913 -0.6552792 -9.2522554 78.23080 1 #> 695 1.648057 5.729913 -0.6552792 87.1693570 71.12958 1 #> 696 1.648057 5.729913 -0.6552792 95.4192058 79.23869 2 #> 697 1.648057 5.729913 -0.6552792 7.2926188 78.66146 2 #> 698 1.648057 5.729913 -0.6552792 4.8827826 103.71042 2 #> 699 1.648057 5.729913 -0.6552792 35.2762761 73.13650 2 #> 700 1.648057 5.729913 -0.6552792 31.6385434 73.79821 1 #> 701 1.668782 5.621953 -0.7406204 4.3862902 89.41130 2 #> 702 1.668782 5.621953 -0.7406204 29.6476474 77.60050 2 #> 703 1.668782 5.621953 -0.7406204 7.0213876 86.83642 2 #> 704 1.668782 5.621953 -0.7406204 9.5118652 68.27226 1 #> 705 1.668782 5.621953 -0.7406204 42.1259745 71.98352 2 #> 706 1.668782 5.621953 -0.7406204 73.2122235 69.81875 1 #> 707 1.668782 5.621953 -0.7406204 86.7027792 77.46672 2 #> 708 1.668782 5.621953 -0.7406204 91.0971639 78.11554 1 #> 709 1.668782 5.621953 -0.7406204 58.0830884 71.50048 2 #> 710 1.668782 5.621953 -0.7406204 37.0587768 76.60951 1 #> 711 1.668782 5.621953 -0.7406204 35.7099942 67.75827 1 #> 712 1.668782 5.621953 -0.7406204 56.8209016 59.88464 2 #> 713 1.668782 5.621953 -0.7406204 69.0604872 67.06852 2 #> 714 1.668782 5.621953 -0.7406204 69.7451362 81.98099 1 #> 715 1.668782 5.621953 -0.7406204 77.8364665 71.37878 1 #> 716 1.668782 5.621953 -0.7406204 19.6222663 78.43239 1 #> 717 1.668782 5.621953 -0.7406204 42.5694293 70.28217 2 #> 718 1.668782 5.621953 -0.7406204 90.0898872 65.33551 1 #> 719 1.668782 5.621953 -0.7406204 61.4365029 74.21749 1 #> 720 1.668782 5.621953 -0.7406204 96.8052970 76.24192 1 #> 721 1.668782 5.621953 -0.7406204 73.0402787 71.01772 2 #> 722 1.668782 5.621953 -0.7406204 33.4467777 74.08305 1 #> 723 1.668782 5.621953 -0.7406204 46.6144377 95.23591 2 #> 724 1.668782 5.621953 -0.7406204 53.3733455 75.33384 1 #> 725 1.668782 5.621953 -0.7406204 10.9778305 48.31491 2 #> 726 1.668782 5.621953 -0.7406204 23.8924573 87.92331 2 #> 727 1.668782 5.621953 -0.7406204 76.4078263 73.94247 1 #> 728 1.668782 5.621953 -0.7406204 31.5762808 59.15820 1 #> 729 1.668782 5.621953 -0.7406204 6.7104129 96.56197 1 #> 730 1.668782 5.621953 -0.7406204 79.3195285 80.77408 1 #> 731 1.668782 5.621953 -0.7406204 -28.3353878 68.22983 2 #> 732 1.668782 5.621953 -0.7406204 67.4295155 83.25717 1 #> 733 1.668782 5.621953 -0.7406204 64.3079145 58.77369 1 #> 734 1.668782 5.621953 -0.7406204 71.1403579 75.98192 2 #> 735 1.668782 5.621953 -0.7406204 89.5590335 76.42924 1 #> 736 1.668782 5.621953 -0.7406204 57.8191488 79.79139 2 #> 737 1.668782 5.621953 -0.7406204 11.1080731 71.21112 1 #> 738 1.668782 5.621953 -0.7406204 51.3348956 73.21401 1 #> 739 1.668782 5.621953 -0.7406204 79.1653337 78.88980 2 #> 740 1.668782 5.621953 -0.7406204 30.6420457 68.93621 1 #> 741 1.668782 5.621953 -0.7406204 -3.0512450 92.29634 1 #> 742 1.668782 5.621953 -0.7406204 69.8573389 71.13959 2 #> 743 1.668782 5.621953 -0.7406204 32.8850272 67.04577 2 #> 744 1.668782 5.621953 -0.7406204 51.0458458 71.73215 1 #> 745 1.668782 5.621953 -0.7406204 73.6786942 77.12900 1 #> 746 1.668782 5.621953 -0.7406204 31.1736141 71.92430 2 #> 747 1.668782 5.621953 -0.7406204 25.5612587 89.60676 1 #> 748 1.668782 5.621953 -0.7406204 -8.6963567 89.46077 1 #> 749 1.668782 5.621953 -0.7406204 -26.6067751 66.57096 2 #> 750 1.668782 5.621953 -0.7406204 57.2505420 70.30214 2 #> 751 1.668782 5.621953 -0.7406204 111.9767656 75.56339 2 #> 752 1.668782 5.621953 -0.7406204 76.0573053 60.96074 2 #> 753 1.668782 5.621953 -0.7406204 29.0669531 90.51543 2 #> 754 1.668782 5.621953 -0.7406204 57.1668329 79.69982 1 #> 755 1.668782 5.621953 -0.7406204 27.8484795 66.73348 2 #> 756 1.668782 5.621953 -0.7406204 85.4876148 74.22296 1 #> 757 1.668782 5.621953 -0.7406204 100.0837299 81.90151 1 #> 758 1.668782 5.621953 -0.7406204 46.0227120 89.35422 1 #> 759 1.668782 5.621953 -0.7406204 126.7902588 77.66575 1 #> 760 1.668782 5.621953 -0.7406204 19.1071394 80.77951 1 #> 761 1.668782 5.621953 -0.7406204 51.4319091 60.24571 2 #> 762 1.668782 5.621953 -0.7406204 65.6309065 84.63769 1 #> 763 1.668782 5.621953 -0.7406204 -13.2733730 83.71288 1 #> 764 1.668782 5.621953 -0.7406204 85.4482930 67.45798 1 #> 765 1.668782 5.621953 -0.7406204 55.1923811 92.04469 1 #> 766 1.668782 5.621953 -0.7406204 98.7165155 65.93427 2 #> 767 1.668782 5.621953 -0.7406204 65.5019725 103.28612 1 #> 768 1.668782 5.621953 -0.7406204 39.5002933 72.03163 1 #> 769 1.668782 5.621953 -0.7406204 42.5374292 82.07576 2 #> 770 1.668782 5.621953 -0.7406204 36.5696566 71.51964 1 #> 771 1.668782 5.621953 -0.7406204 81.3982645 79.04510 1 #> 772 1.668782 5.621953 -0.7406204 60.8786617 79.28927 1 #> 773 1.668782 5.621953 -0.7406204 70.7373746 83.19576 1 #> 774 1.668782 5.621953 -0.7406204 15.5478298 60.57505 2 #> 775 1.668782 5.621953 -0.7406204 72.9746357 81.74383 1 #> 776 1.668782 5.621953 -0.7406204 65.9319263 72.78060 2 #> 777 1.668782 5.621953 -0.7406204 88.3867317 63.68846 1 #> 778 1.668782 5.621953 -0.7406204 77.0011194 68.88250 1 #> 779 1.668782 5.621953 -0.7406204 85.8057743 64.98303 2 #> 780 1.668782 5.621953 -0.7406204 35.9705319 83.73558 1 #> 781 1.668782 5.621953 -0.7406204 67.3304997 86.84455 1 #> 782 1.668782 5.621953 -0.7406204 21.9524555 76.27415 1 #> 783 1.668782 5.621953 -0.7406204 -5.6352245 72.94603 2 #> 784 1.668782 5.621953 -0.7406204 52.3692116 71.22825 1 #> 785 1.668782 5.621953 -0.7406204 56.9827483 68.32436 2 #> 786 1.668782 5.621953 -0.7406204 74.3243768 91.43702 2 #> 787 1.668782 5.621953 -0.7406204 34.5160055 64.07231 1 #> 788 1.668782 5.621953 -0.7406204 2.9245152 80.98718 1 #> 789 1.668782 5.621953 -0.7406204 63.5431682 75.46948 1 #> 790 1.668782 5.621953 -0.7406204 21.2252373 61.52853 2 #> 791 1.668782 5.621953 -0.7406204 55.4826231 79.48380 2 #> 792 1.668782 5.621953 -0.7406204 54.4993559 70.46917 1 #> 793 1.668782 5.621953 -0.7406204 39.9538887 70.01352 1 #> 794 1.668782 5.621953 -0.7406204 52.8213303 75.21188 1 #> 795 1.668782 5.621953 -0.7406204 17.8784484 62.71215 1 #> 796 1.668782 5.621953 -0.7406204 69.1486342 69.49095 1 #> 797 1.668782 5.621953 -0.7406204 125.4859552 84.44350 1 #> 798 1.668782 5.621953 -0.7406204 77.9492961 77.33112 2 #> 799 1.668782 5.621953 -0.7406204 68.8333714 79.99650 1 #> 800 1.668782 5.621953 -0.7406204 63.1181812 67.00761 2 #> 801 1.589831 5.738289 -0.7595589 48.9974492 92.48121 2 #> 802 1.589831 5.738289 -0.7595589 9.2847128 81.37087 1 #> 803 1.589831 5.738289 -0.7595589 82.0302547 74.46283 2 #> 804 1.589831 5.738289 -0.7595589 53.7474361 78.08095 2 #> 805 1.589831 5.738289 -0.7595589 39.8132325 66.69704 1 #> 806 1.589831 5.738289 -0.7595589 58.5431310 79.77195 2 #> 807 1.589831 5.738289 -0.7595589 61.1797465 68.79759 1 #> 808 1.589831 5.738289 -0.7595589 2.6978623 65.68119 2 #> 809 1.589831 5.738289 -0.7595589 -2.9959481 74.07861 1 #> 810 1.589831 5.738289 -0.7595589 69.9499963 69.34748 1 #> 811 1.589831 5.738289 -0.7595589 23.1748838 68.48503 1 #> 812 1.589831 5.738289 -0.7595589 102.2255108 79.73994 2 #> 813 1.589831 5.738289 -0.7595589 24.4305703 100.22706 1 #> 814 1.589831 5.738289 -0.7595589 19.7481336 62.37810 2 #> 815 1.589831 5.738289 -0.7595589 96.4547470 68.61734 1 #> 816 1.589831 5.738289 -0.7595589 101.9418487 82.11478 2 #> 817 1.589831 5.738289 -0.7595589 86.4950177 68.86499 1 #> 818 1.589831 5.738289 -0.7595589 53.5351294 83.71468 1 #> 819 1.589831 5.738289 -0.7595589 60.2350748 74.95739 1 #> 820 1.589831 5.738289 -0.7595589 27.6376304 63.64001 2 #> 821 1.589831 5.738289 -0.7595589 76.6861986 72.81275 1 #> 822 1.589831 5.738289 -0.7595589 103.7663980 68.50690 2 #> 823 1.589831 5.738289 -0.7595589 36.1422701 59.36458 2 #> 824 1.589831 5.738289 -0.7595589 59.4754314 76.26514 1 #> 825 1.589831 5.738289 -0.7595589 9.6426331 79.35209 2 #> 826 1.589831 5.738289 -0.7595589 26.4151406 64.25640 1 #> 827 1.589831 5.738289 -0.7595589 96.3884253 70.78145 2 #> 828 1.589831 5.738289 -0.7595589 51.9134774 71.69811 1 #> 829 1.589831 5.738289 -0.7595589 68.7467603 75.20190 1 #> 830 1.589831 5.738289 -0.7595589 89.6591600 82.50803 1 #> 831 1.589831 5.738289 -0.7595589 49.9007763 59.16145 2 #> 832 1.589831 5.738289 -0.7595589 59.2548039 75.33259 1 #> 833 1.589831 5.738289 -0.7595589 60.0082121 70.27023 1 #> 834 1.589831 5.738289 -0.7595589 98.4688321 76.05810 2 #> 835 1.589831 5.738289 -0.7595589 39.4437763 77.66308 2 #> 836 1.589831 5.738289 -0.7595589 98.8925745 82.04197 1 #> 837 1.589831 5.738289 -0.7595589 35.4873664 71.06575 1 #> 838 1.589831 5.738289 -0.7595589 96.4278063 67.67618 1 #> 839 1.589831 5.738289 -0.7595589 115.1815537 84.49771 2 #> 840 1.589831 5.738289 -0.7595589 43.9022059 80.77810 2 #> 841 1.589831 5.738289 -0.7595589 94.6970963 82.54843 2 #> 842 1.589831 5.738289 -0.7595589 68.2905300 81.19173 1 #> 843 1.589831 5.738289 -0.7595589 70.4618488 75.03386 1 #> 844 1.589831 5.738289 -0.7595589 65.3453406 72.85415 2 #> 845 1.589831 5.738289 -0.7595589 8.5493994 67.85077 1 #> 846 1.589831 5.738289 -0.7595589 26.1536808 82.28340 1 #> 847 1.589831 5.738289 -0.7595589 26.0703862 73.35758 2 #> 848 1.589831 5.738289 -0.7595589 40.3849633 84.60289 2 #> 849 1.589831 5.738289 -0.7595589 29.1800568 60.90008 2 #> 850 1.589831 5.738289 -0.7595589 -32.8833387 69.53605 2 #> 851 1.589831 5.738289 -0.7595589 103.9548211 66.74417 1 #> 852 1.589831 5.738289 -0.7595589 78.4960457 66.55584 2 #> 853 1.589831 5.738289 -0.7595589 36.4818552 58.44428 1 #> 854 1.589831 5.738289 -0.7595589 76.5459964 78.62982 2 #> 855 1.589831 5.738289 -0.7595589 30.7158509 90.92795 2 #> 856 1.589831 5.738289 -0.7595589 25.1920732 61.34846 2 #> 857 1.589831 5.738289 -0.7595589 62.0165794 58.02042 2 #> 858 1.589831 5.738289 -0.7595589 49.8357389 90.59638 2 #> 859 1.589831 5.738289 -0.7595589 67.9258393 74.11929 1 #> 860 1.589831 5.738289 -0.7595589 55.4021737 72.10042 2 #> 861 1.589831 5.738289 -0.7595589 59.3635647 96.45434 1 #> 862 1.589831 5.738289 -0.7595589 -23.9923490 81.85788 1 #> 863 1.589831 5.738289 -0.7595589 87.7564769 92.13465 1 #> 864 1.589831 5.738289 -0.7595589 30.0966273 84.67296 2 #> 865 1.589831 5.738289 -0.7595589 66.8280521 88.14905 2 #> 866 1.589831 5.738289 -0.7595589 14.1272676 86.12434 1 #> 867 1.589831 5.738289 -0.7595589 67.9355537 80.70283 1 #> 868 1.589831 5.738289 -0.7595589 73.7743451 76.28507 2 #> 869 1.589831 5.738289 -0.7595589 52.5817553 75.43390 2 #> 870 1.589831 5.738289 -0.7595589 82.7847247 74.09916 2 #> 871 1.589831 5.738289 -0.7595589 119.3344072 72.45604 2 #> 872 1.589831 5.738289 -0.7595589 32.4057085 95.16381 1 #> 873 1.589831 5.738289 -0.7595589 23.4616522 51.02043 2 #> 874 1.589831 5.738289 -0.7595589 73.8724576 105.52575 2 #> 875 1.589831 5.738289 -0.7595589 95.2052909 67.49209 2 #> 876 1.589831 5.738289 -0.7595589 25.5779995 77.98522 1 #> 877 1.589831 5.738289 -0.7595589 41.3323586 97.91934 2 #> 878 1.589831 5.738289 -0.7595589 40.2603584 62.72925 2 #> 879 1.589831 5.738289 -0.7595589 35.0464101 81.22116 1 #> 880 1.589831 5.738289 -0.7595589 45.2187386 66.35779 2 #> 881 1.589831 5.738289 -0.7595589 77.5589970 87.31650 2 #> 882 1.589831 5.738289 -0.7595589 74.0977454 60.30295 1 #> 883 1.589831 5.738289 -0.7595589 79.2633304 83.93338 2 #> 884 1.589831 5.738289 -0.7595589 30.4352771 67.12438 1 #> 885 1.589831 5.738289 -0.7595589 17.2133018 84.08617 1 #> 886 1.589831 5.738289 -0.7595589 81.1112620 87.21712 1 #> 887 1.589831 5.738289 -0.7595589 23.0544113 66.02937 1 #> 888 1.589831 5.738289 -0.7595589 98.8625800 72.11651 2 #> 889 1.589831 5.738289 -0.7595589 -19.0959381 67.04116 1 #> 890 1.589831 5.738289 -0.7595589 74.4115694 52.53401 2 #> 891 1.589831 5.738289 -0.7595589 19.8049746 85.72635 1 #> 892 1.589831 5.738289 -0.7595589 76.0357495 76.12203 2 #> 893 1.589831 5.738289 -0.7595589 22.0888890 63.61794 2 #> 894 1.589831 5.738289 -0.7595589 67.4404536 84.88998 2 #> 895 1.589831 5.738289 -0.7595589 77.0286630 77.33351 2 #> 896 1.589831 5.738289 -0.7595589 118.5036480 82.51741 2 #> 897 1.589831 5.738289 -0.7595589 72.3987364 66.69147 1 #> 898 1.589831 5.738289 -0.7595589 12.2115634 71.74859 1 #> 899 1.589831 5.738289 -0.7595589 11.7928610 57.44029 1 #> 900 1.589831 5.738289 -0.7595589 53.6132611 68.94733 1 #> 901 1.613207 5.713738 -0.6484928 48.0109271 83.58202 1 #> 902 1.613207 5.713738 -0.6484928 -8.0301263 58.14177 2 #> 903 1.613207 5.713738 -0.6484928 -30.7769719 80.18095 1 #> 904 1.613207 5.713738 -0.6484928 12.7671316 79.99454 1 #> 905 1.613207 5.713738 -0.6484928 77.9824107 68.89383 2 #> 906 1.613207 5.713738 -0.6484928 77.2201927 88.51741 1 #> 907 1.613207 5.713738 -0.6484928 36.5923496 69.43529 1 #> 908 1.613207 5.713738 -0.6484928 48.9469580 90.75974 1 #> 909 1.613207 5.713738 -0.6484928 30.8224486 59.73813 1 #> 910 1.613207 5.713738 -0.6484928 35.7877271 70.84232 2 #> 911 1.613207 5.713738 -0.6484928 50.7266752 79.45346 2 #> 912 1.613207 5.713738 -0.6484928 65.2592161 57.61760 2 #> 913 1.613207 5.713738 -0.6484928 69.6026508 57.05023 1 #> 914 1.613207 5.713738 -0.6484928 0.7834984 73.61108 2 #> 915 1.613207 5.713738 -0.6484928 53.7762736 81.47588 2 #> 916 1.613207 5.713738 -0.6484928 89.3596538 80.25444 1 #> 917 1.613207 5.713738 -0.6484928 36.7637973 64.70868 1 #> 918 1.613207 5.713738 -0.6484928 32.2188928 81.81383 1 #> 919 1.613207 5.713738 -0.6484928 40.0758720 70.69324 1 #> 920 1.613207 5.713738 -0.6484928 24.8765461 72.98046 2 #> 921 1.613207 5.713738 -0.6484928 78.2716775 75.99325 2 #> 922 1.613207 5.713738 -0.6484928 -6.3395057 87.27324 2 #> 923 1.613207 5.713738 -0.6484928 22.6829677 94.22893 1 #> 924 1.613207 5.713738 -0.6484928 38.0136768 62.80747 2 #> 925 1.613207 5.713738 -0.6484928 35.1313985 68.95838 1 #> 926 1.613207 5.713738 -0.6484928 27.4797677 76.63736 2 #> 927 1.613207 5.713738 -0.6484928 30.5236960 66.16893 2 #> 928 1.613207 5.713738 -0.6484928 35.1188336 81.73566 2 #> 929 1.613207 5.713738 -0.6484928 28.4977983 104.08615 1 #> 930 1.613207 5.713738 -0.6484928 41.6466431 77.25039 1 #> 931 1.613207 5.713738 -0.6484928 45.9843787 79.00656 2 #> 932 1.613207 5.713738 -0.6484928 65.4998293 71.16540 2 #> 933 1.613207 5.713738 -0.6484928 69.3224629 82.60627 2 #> 934 1.613207 5.713738 -0.6484928 59.6321831 86.92970 2 #> 935 1.613207 5.713738 -0.6484928 8.5806949 60.81721 1 #> 936 1.613207 5.713738 -0.6484928 26.2068213 74.73239 2 #> 937 1.613207 5.713738 -0.6484928 11.2314175 63.90678 1 #> 938 1.613207 5.713738 -0.6484928 11.3707453 73.53251 2 #> 939 1.613207 5.713738 -0.6484928 78.2083687 71.39561 2 #> 940 1.613207 5.713738 -0.6484928 60.2735247 70.71942 2 #> 941 1.613207 5.713738 -0.6484928 44.8890747 81.41948 2 #> 942 1.613207 5.713738 -0.6484928 58.1814310 60.21858 1 #> 943 1.613207 5.713738 -0.6484928 84.7712213 60.52621 1 #> 944 1.613207 5.713738 -0.6484928 5.9956678 75.88211 1 #> 945 1.613207 5.713738 -0.6484928 -17.0222388 86.29289 2 #> 946 1.613207 5.713738 -0.6484928 62.7227620 73.75868 2 #> 947 1.613207 5.713738 -0.6484928 32.0911038 74.75940 1 #> 948 1.613207 5.713738 -0.6484928 78.4050789 70.20741 2 #> 949 1.613207 5.713738 -0.6484928 32.7781423 70.14355 2 #> 950 1.613207 5.713738 -0.6484928 73.4391557 81.68525 2 #> 951 1.613207 5.713738 -0.6484928 49.7361763 84.40696 1 #> 952 1.613207 5.713738 -0.6484928 57.9753483 82.18861 2 #> 953 1.613207 5.713738 -0.6484928 82.3302532 74.69445 1 #> 954 1.613207 5.713738 -0.6484928 57.6937706 88.39127 1 #> 955 1.613207 5.713738 -0.6484928 21.4806872 70.94022 1 #> 956 1.613207 5.713738 -0.6484928 41.6855276 70.52054 1 #> 957 1.613207 5.713738 -0.6484928 58.2824698 76.95454 2 #> 958 1.613207 5.713738 -0.6484928 -28.4194234 104.36439 2 #> 959 1.613207 5.713738 -0.6484928 -0.3208229 71.12139 2 #> 960 1.613207 5.713738 -0.6484928 93.8628975 64.04545 2 #> 961 1.613207 5.713738 -0.6484928 48.7233971 74.58184 1 #> 962 1.613207 5.713738 -0.6484928 -4.8453070 76.58630 1 #> 963 1.613207 5.713738 -0.6484928 59.3592742 66.97198 1 #> 964 1.613207 5.713738 -0.6484928 59.0093486 70.31729 1 #> 965 1.613207 5.713738 -0.6484928 52.2446956 74.82363 1 #> 966 1.613207 5.713738 -0.6484928 39.0863283 71.03333 1 #> 967 1.613207 5.713738 -0.6484928 57.5986251 81.46471 2 #> 968 1.613207 5.713738 -0.6484928 42.1454018 75.47601 2 #> 969 1.613207 5.713738 -0.6484928 43.1725786 66.90505 1 #> 970 1.613207 5.713738 -0.6484928 82.4901817 64.21519 1 #> 971 1.613207 5.713738 -0.6484928 60.7011635 72.24152 1 #> 972 1.613207 5.713738 -0.6484928 65.3391669 59.35424 1 #> 973 1.613207 5.713738 -0.6484928 31.9185684 66.83118 1 #> 974 1.613207 5.713738 -0.6484928 36.3661832 77.91527 1 #> 975 1.613207 5.713738 -0.6484928 59.0508009 77.52569 2 #> 976 1.613207 5.713738 -0.6484928 47.2930855 72.17148 1 #> 977 1.613207 5.713738 -0.6484928 96.8750065 73.46133 1 #> 978 1.613207 5.713738 -0.6484928 55.0212657 76.76546 2 #> 979 1.613207 5.713738 -0.6484928 62.6863454 58.77168 1 #> 980 1.613207 5.713738 -0.6484928 68.6373889 85.16956 1 #> 981 1.613207 5.713738 -0.6484928 81.2755279 48.92099 2 #> 982 1.613207 5.713738 -0.6484928 103.8595340 74.33343 1 #> 983 1.613207 5.713738 -0.6484928 28.6579149 90.43011 2 #> 984 1.613207 5.713738 -0.6484928 4.9403665 72.73476 1 #> 985 1.613207 5.713738 -0.6484928 78.8366005 74.70983 1 #> 986 1.613207 5.713738 -0.6484928 11.1238010 80.43364 1 #> 987 1.613207 5.713738 -0.6484928 63.3598971 57.93831 1 #> 988 1.613207 5.713738 -0.6484928 22.6545483 62.80785 1 #> 989 1.613207 5.713738 -0.6484928 64.5373818 90.66765 2 #> 990 1.613207 5.713738 -0.6484928 52.7217474 68.58825 1 #> 991 1.613207 5.713738 -0.6484928 36.9216153 70.37398 2 #> 992 1.613207 5.713738 -0.6484928 79.8122065 75.39207 1 #> 993 1.613207 5.713738 -0.6484928 61.5295674 77.52203 1 #> 994 1.613207 5.713738 -0.6484928 63.0572080 72.05715 1 #> 995 1.613207 5.713738 -0.6484928 99.1723557 78.37895 1 #> 996 1.613207 5.713738 -0.6484928 47.8702574 75.61264 1 #> 997 1.613207 5.713738 -0.6484928 87.0387347 73.06106 2 #> 998 1.613207 5.713738 -0.6484928 84.5713440 79.66582 2 #> 999 1.613207 5.713738 -0.6484928 27.4957126 98.71902 1 #> 1000 1.613207 5.713738 -0.6484928 45.5107794 75.38610 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":null,"dir":"Reference","previous_headings":"","what":"rxChain Chain or add item to solved system of equations — rxChain","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"Add item solved system equations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"","code":"rxChain(obj1, obj2) # S3 method for class 'solveRxDll' obj1 + obj2"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"obj1 Solved object. obj2 New object added/piped/chained solved object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"newObject event table, return new solved object new event table.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":null,"dir":"Reference","previous_headings":"","what":"Second command in chaining commands — rxChain2","title":"Second command in chaining commands — rxChain2","text":"s3 method called internally + \\%>\\% operators.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Second command in chaining commands — rxChain2","text":"","code":"rxChain2(obj, solvedObject) # Default S3 method rxChain2(obj, solvedObject) # S3 method for class 'EventTable' rxChain2(obj, solvedObject)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Second command in chaining commands — rxChain2","text":"obj object added/chained/piped solved object solvedObject solved object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Second command in chaining commands — rxChain2","text":"chained operation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Second command in chaining commands — rxChain2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":null,"dir":"Reference","previous_headings":"","what":"Cleanup anonymous DLLs by unloading them — rxClean","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"cleans rxode2 loaded DLLs","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"","code":"rxClean(wd)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"wd directory cleaned; (DEPRECIATED), longer anything. unloads rxode2 anonymous dlls.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"TRUE successful","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":null,"dir":"Reference","previous_headings":"","what":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"Combine Error Lines create rxode2 expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"","code":"rxCombineErrorLines( uiModel, errLines = NULL, prefixLines = NULL, paramsLine = NULL, modelVars = FALSE, cmtLines = TRUE, dvidLine = TRUE, lstExpr = NULL, useIf = TRUE, interpLines = NULL, levelLines = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"uiModel UI model errLines Error lines; missing, get error lines rxGetDistributionSimulationLines() prefixLines Prefix lines, param statement paramsLine Params line, present. modelVars Return model vars instead rxode2 statement cmtLines Include trailing cmt lines dvidLine Include trailing dvid() specification lstExpr list expressions model, NULL. NULL defaults model expressions accessible uiModel$lstExpr. useIf Use (CMT == X) endpoints interpLines Interpolation lines, present levelLines Levels lines assigned strings. present, use interpolation lines current model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"quoted expression can evaluated compiled rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"exported allow functions mangle error lines make types estimation methods (needed)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"","code":"# \\donttest{ one.cmt <- function() { ini({ ## You may label each parameter with a comment tka <- 0.45 # Log Ka tcl <- log(c(0, 2.7, 100)) # Log Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- 3.45; label(\"log V\") ## the label(\"Label name\") works with all models eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } f <- rxode2(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # You can get the simulation model easily by rxCombineErrorLines(f) #> rxode2({ #> params(tka, tcl, tv, add.sd, eta.ka, eta.cl, eta.v) #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ linCmt() #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (add.sd)^2 #> ipredSim <- rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim <- rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.rxLinCmt, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> cmt(rxLinCmt) #> dvid(1) #> }) # You can then get the compiled model by simply evaluting the model: r <- eval(rxCombineErrorLines(f)) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # This also works with multile endpoint models: pk.turnover.emax <- function() { ini({ tktr <- log(1) tka <- log(1) tcl <- log(0.1) tv <- log(10) ## eta.ktr ~ 1 eta.ka ~ 1 eta.cl ~ 2 eta.v ~ 1 prop.err <- 0.1 pkadd.err <- 0.1 ## temax <- logit(0.8) tec50 <- log(0.5) tkout <- log(0.05) te0 <- log(100) ## eta.emax ~ .5 eta.ec50 ~ .5 eta.kout ~ .5 eta.e0 ~ .5 ## pdadd.err <- 10 }) model({ ktr <- exp(tktr + eta.ktr) ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) ## emax=expit(temax+eta.emax) ec50 = exp(tec50 + eta.ec50) kout = exp(tkout + eta.kout) e0 = exp(te0 + eta.e0) ## DCP = center/v PD=1-emax*DCP/(ec50+DCP) ## effect(0) = e0 kin = e0*kout ## d/dt(depot) = -ktr * depot d/dt(gut) = ktr * depot -ka * gut d/dt(center) = ka * gut - cl / v * center d/dt(effect) = kin*PD -kout*effect ## cp = center / v cp ~ prop(prop.err) + add(pkadd.err) effect ~ add(pdadd.err) }) } f <- rxode2(pk.turnover.emax) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments rxCombineErrorLines(f) #> rxode2({ #> params(tktr, tka, tcl, tv, prop.err, pkadd.err, temax, tec50, #> tkout, te0, pdadd.err, eta.ktr, eta.ka, eta.cl, eta.v, #> eta.emax, eta.ec50, eta.kout, eta.e0) #> ktr <- exp(tktr + eta.ktr) #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> emax = expit(temax + eta.emax) #> ec50 = exp(tec50 + eta.ec50) #> kout = exp(tkout + eta.kout) #> e0 = exp(te0 + eta.e0) #> DCP = center/v #> PD = 1 - emax * DCP/(ec50 + DCP) #> effect(0) = e0 #> kin = e0 * kout #> d/dt(depot) = -ktr * depot #> d/dt(gut) = ktr * depot - ka * gut #> d/dt(center) = ka * gut - cl/v * center #> d/dt(effect) = kin * PD - kout * effect #> cp = center/v #> if (CMT == 5) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ cp #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (pkadd.err)^2 + (rx_pred_f_)^2 * (prop.err)^2 #> ipredSim <- rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim <- rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.cp, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> if (CMT == 4) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ effect #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (pdadd.err)^2 #> ipredSim <- rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim <- rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.effect, #> rx_lambda_, rx_yj_, rx_low_, rx_hi_) #> } #> cmt(cp) #> dvid(5, 4) #> }) # Note that in the parsed form, you can also get the compiled rxode2 # model with $simulationModel f$simulationModel #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_f0764e65123cfc53b54e96d2c698dd5c model (✔ ready). #> value$state: depot, gut, center, effect #> value$stateExtra: cp #> value$params: tktr, tka, tcl, tv, prop.err, pkadd.err, temax, tec50, tkout, te0, pdadd.err, eta.ktr, eta.ka, eta.cl, eta.v, eta.emax, eta.ec50, eta.kout, eta.e0, CMT, rxerr.cp, rxerr.effect #> value$lhs: ktr, ka, cl, v, emax, ec50, kout, e0, DCP, PD, kin, cp, ipredSim, sim # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":null,"dir":"Reference","previous_headings":"","what":"Compile a model if needed — rxCompile","title":"Compile a model if needed — rxCompile","text":"compilation workhorse creating rxode2 model DLL files.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compile a model if needed — rxCompile","text":"","code":"rxCompile( model, dir, prefix, force = FALSE, modName = NULL, package = NULL, ... ) # S3 method for class 'rxModelVars' rxCompile( model, dir = NULL, prefix = NULL, force = FALSE, modName = NULL, package = NULL, ... ) # S3 method for class 'character' rxCompile( model, dir = NULL, prefix = NULL, force = FALSE, modName = NULL, package = NULL, ... ) # S3 method for class 'rxDll' rxCompile(model, ...) # S3 method for class 'rxode2' rxCompile(model, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compile a model if needed — rxCompile","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . dir model directory C file stored compiling. prefix string indicating prefix use C based functions. missing, calculated based file name, md5 parsed model. force boolean stating (re)compile forced rxode2 detects models already generated. modName string used model name. string used naming various aspects computations, including generating C symbol names, dynamic libraries, etc. Therefore, necessary modName consists simple ASCII alphanumeric characters starting letter. package Package name pre-compiled binaries. ... arguments sent rxTrans() function.","code":"If unspecified, the C code is stored in a temporary directory, then the model is compiled and moved to the current directory. Afterwards the C code is removed. If specified, the C code is stored in the specified directory and then compiled in that directory. The C code is not removed after the DLL is created in the same directory. This can be useful to debug the c-code outputs."},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compile a model if needed — rxCompile","text":"rxDll object following components dll DLL path model model specification .c function call C code correct context DLL using .C() function. .call function call C code correct context DLL using .Call() function. args list arguments used create rxDll object.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compile a model if needed — rxCompile","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":null,"dir":"Reference","previous_headings":"","what":"Current Condition for rxode2 object — rxCondition","title":"Current Condition for rxode2 object — rxCondition","text":"Current Condition rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Current Condition for rxode2 object — rxCondition","text":"","code":"rxCondition(obj, condition = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Current Condition for rxode2 object — rxCondition","text":"obj rxode2 object condition specified one conditions rxode2 object (determined rxExpandIfElse()), assign rxode2 current condition parameter. condition one known condition, condition set NULL, implying conditioning currently used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Current Condition for rxode2 object — rxCondition","text":"Current condition rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Current Condition for rxode2 object — rxCondition","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":null,"dir":"Reference","previous_headings":"","what":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"assumes normal ODE equations first equations ODE expanded forward sensitivities type sensitivity (like adjoint)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"","code":"rxControlUpdateSens(rxControl, sensCmt = NULL, ncmt = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"rxControl Input list rxControl type list sensCmt Number sensitivity compartments ncmt Number compartments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"Updated rxControl $atol, $rtol, $ssAtol $ssRtol updated different sensitivities normal ODEs (first) different sensitivity larger compartments (sensitivities).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"","code":"tmp <- rxControl() tmp2 <- rxControlUpdateSens(tmp, 3, 6) tmp2$atol #> [1] 1e-08 1e-08 1e-08 1e-08 1e-08 1e-08 tmp2$rtol #> [1] 1e-06 1e-06 1e-06 1e-06 1e-06 1e-06 tmp2$ssAtol #> [1] 1e-08 1e-08 1e-08 1e-08 1e-08 1e-08 tmp2$ssRtol #> [1] 1e-06 1e-06 1e-06 1e-06 1e-06 1e-06"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":null,"dir":"Reference","previous_headings":"","what":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"run, R_user_dir rxode2's cache present, create cache","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"","code":"rxCreateCache()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":null,"dir":"Reference","previous_headings":"","what":"Add to rxode2's derivative tables — rxD","title":"Add to rxode2's derivative tables — rxD","text":"Add rxode2's derivative tables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add to rxode2's derivative tables — rxD","text":"","code":"rxD(name, derivatives)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add to rxode2's derivative tables — rxD","text":"name Function Name derivatives list functions. function takes number arguments original function. first function construct derivative respect first argument; second function construct derivitive respect second argument, .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add to rxode2's derivative tables — rxD","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add to rxode2's derivative tables — rxD","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add to rxode2's derivative tables — rxD","text":"","code":"## Add an arbitrary list of derivative functions ## In this case the fun(x,y) is assumed to be 0.5*x^2+0.5*y^2 rxD(\"fun\", list( function(x, y) { return(x) }, function(x, y) { return(y) } ))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":null,"dir":"Reference","previous_headings":"","what":"Delete the DLL for the model — rxDelete","title":"Delete the DLL for the model — rxDelete","text":"function deletes DLL, delete model information object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Delete the DLL for the model — rxDelete","text":"","code":"rxDelete(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Delete the DLL for the model — rxDelete","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Delete the DLL for the model — rxDelete","text":"boolean stating operation successful.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Delete the DLL for the model — rxDelete","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Demote the error type — rxDemoteAddErr","title":"Demote the error type — rxDemoteAddErr","text":"Demote error type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Demote the error type — rxDemoteAddErr","text":"","code":"rxDemoteAddErr(errType)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Demote the error type — rxDemoteAddErr","text":"errType Error type factor","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Demote the error type — rxDemoteAddErr","text":"Demoted Error Type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Demote the error type — rxDemoteAddErr","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Demote the error type — rxDemoteAddErr","text":"","code":"rxErrTypeCombine(\"add\") %>% rxErrTypeCombine(\"prop\") #> $transform #> [1] untransformed #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] add + prop #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] untransformed #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\" # This removes the internal additive error rxErrTypeCombine(\"add\") %>% rxErrTypeCombine(\"prop\") %>% rxDemoteAddErr() #> $transform #> [1] untransformed #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] prop #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] untransformed #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\" # This is used for logitNorm(NA), the additive portion is stripped"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"calculates derived parameters based provided data frame arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"","code":"rxDerived(..., verbose = FALSE, digits = 0)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"... input can : data frame PK parameters ; ideally data frame one pk parameter per row since output data frame one PK parameter per row. PK parameters either vector scalar verbose boolean TRUE provides message detected pk parameters detected compartmental model. default FALSE. digits represents number significant digits output; number zero (default), round.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"Return data.frame derived PK parameters 1-, 2-, 3-compartment linear model given provided clearances volumes based inferred model type. model parameters provided data frame : vc: Central Volume (1-, 2- 3- compartment models) kel: First-order elimination rate (1-, 2-, 3-compartment models) k12: First-order rate transfer central first peripheral compartment; (2- 3-compartment models) k21: First-order rate transfer first peripheral central compartment, (2- 3-compartment models) k13: First-order rate transfer central second peripheral compartment; (3-compartment model) k31: First-order rate transfer second peripheral central compartment (3-compartment model) vp: Peripheral Volume (2- 3- compartment models) vp2: Peripheral Volume 3rd compartment (3- compartment model) vss: Volume distribution steady state; (1-, 2-, 3-compartment models) t12alpha: \\(t_{1/2,\\alpha}\\); (1-, 2-, 3-compartment models) t12beta: \\(t_{1/2,\\beta}\\); (2- 3-compartment models) t12gamma: \\(t_{1/2,\\gamma}\\); (3-compartment model) alpha: \\(\\alpha\\); (1-, 2-, 3-compartment models) beta: \\(\\beta\\); (2- 3-compartment models) gamma: \\(\\beta\\); (3-compartment model) : true ; (1-, 2-, 3-compartment models) B: true B; (2- 3-compartment models) C: true C; (3-compartment model) fracA: fractional ; (1-, 2-, 3-compartment models) fracB: fractional B; (2- 3-compartment models) fracC: fractional C; (3-compartment model)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"Shafer S. L. CONVERT.XLS Rowland M, Tozer TN. Clinical Pharmacokinetics Pharmacodynamics: Concepts Applications (4th). Clipping Williams & Wilkins, Philadelphia, 2010.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"Matthew Fidler documentation Justin Wilkins, justin.wilkins@occams.com","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"","code":"## Note that rxode2 parses the names to figure out the best PK parameter params <- rxDerived(cl = 29.4, v = 23.4, Vp = 114, vp2 = 4614, q = 270, q2 = 73) ## That is why this gives the same results as the value before params <- rxDerived(CL = 29.4, V1 = 23.4, V2 = 114, V3 = 4614, Q2 = 270, Q3 = 73) ## You may also use micro-constants alpha/beta etc. params <- rxDerived(k12 = 0.1, k21 = 0.2, k13 = 0.3, k31 = 0.4, kel = 10, v = 10) ## or you can mix vectors and scalars params <- rxDerived(CL = 29.4, V = 1:3) ## If you want, you can round to a number of significant digits ## with the `digits` argument: params <- rxDerived(CL = 29.4, V = 1:3, digits = 2)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":null,"dir":"Reference","previous_headings":"","what":"Jacobian and parameter derivatives — rxDfdy","title":"Jacobian and parameter derivatives — rxDfdy","text":"Return Jacobain parameter derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Jacobian and parameter derivatives — rxDfdy","text":"","code":"rxDfdy(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Jacobian and parameter derivatives — rxDfdy","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Jacobian and parameter derivatives — rxDfdy","text":"list jacobian parameters defined rxode2 object.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Jacobian and parameter derivatives — rxDfdy","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the DLL associated with the rxode2 object — rxDll","title":"Return the DLL associated with the rxode2 object — rxDll","text":"return dynamic load library shared object used run C code rxode2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the DLL associated with the rxode2 object — rxDll","text":"","code":"rxDll(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the DLL associated with the rxode2 object — rxDll","text":"obj rxode2 family objects character string model specification location file model specification.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the DLL associated with the rxode2 object — rxDll","text":"path library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the DLL associated with the rxode2 object — rxDll","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":null,"dir":"Reference","previous_headings":"","what":"Load rxode2 object — rxDynLoad","title":"Load rxode2 object — rxDynLoad","text":"Load rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Load rxode2 object — rxDynLoad","text":"","code":"rxDynLoad(obj) rxLoad(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Load rxode2 object — rxDynLoad","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Load rxode2 object — rxDynLoad","text":"Boolean returning rxode2 library loaded.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Load rxode2 object — rxDynLoad","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":null,"dir":"Reference","previous_headings":"","what":"Unload rxode2 object — rxDynUnload","title":"Unload rxode2 object — rxDynUnload","text":"Unload rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unload rxode2 object — rxDynUnload","text":"","code":"rxDynUnload(obj) rxUnload(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unload rxode2 object — rxDynUnload","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unload rxode2 object — rxDynUnload","text":"Boolean returning rxode2 library loaded.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Unload rxode2 object — rxDynUnload","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":null,"dir":"Reference","previous_headings":"","what":"Combine transformations and error structures — rxErrTypeCombine","title":"Combine transformations and error structures — rxErrTypeCombine","text":"Combine error information figure transformation applied current endpoint","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Combine transformations and error structures — rxErrTypeCombine","text":"","code":"rxErrTypeCombine(oldErrType, newErrType)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Combine transformations and error structures — rxErrTypeCombine","text":"oldErrType old transformation, default zero representing prior transformation. parameter first allow piping. parameter addTransform missing oldErrType character value, functions swaps oldErrType addTransform assigns oldErrType zero assuming prior distribution. newErrType new distribution \"added\" current transformation. assumes inputs preferred distribution name, determined rxPreferredDistributionName()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Combine transformations and error structures — rxErrTypeCombine","text":"new transformation factor","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Combine transformations and error structures — rxErrTypeCombine","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Combine transformations and error structures — rxErrTypeCombine","text":"","code":"rxErrTypeCombine(\"probitNorm\") #> $transform #> [1] probit #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] add #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] none #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\" rxErrTypeCombine(\"probitNorm\") %>% rxErrTypeCombine(\"boxCox\") #> $transform #> [1] probit + boxCox #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] add #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] none #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"Dispatch solve 'rxode2' solve","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"","code":"rxEtDispatchSolve(x, ...) # Default S3 method rxEtDispatchSolve(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"x rxode2 solve dispatch object ... arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"'rxode2' loaded, solved object, otherwise error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":null,"dir":"Reference","previous_headings":"","what":"EVID formatting for tibble and other places. — rxEvid","title":"EVID formatting for tibble and other places. — rxEvid","text":"make EVID readable non pharmacometricians. displays means allows displayed tibble.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"EVID formatting for tibble and other places. — rxEvid","text":"","code":"rxEvid(x) as.rxEvid(x) # S3 method for class 'rxEvid' c(x, ...) # S3 method for class 'rxEvid' x[...] # S3 method for class 'rxEvid' as.character(x, ...) # S3 method for class 'rxEvid' x[[...]] # S3 method for class 'rxEvid' units(x) <- value # S3 method for class 'rxRateDur' c(x, ...) # S3 method for class 'rxEvid' format(x, ...) # S3 method for class 'rxRateDur' format(x, ...) # S3 method for class 'rxEvid' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"EVID formatting for tibble and other places. — rxEvid","text":"x Item converted rxode2 EVID specification. ... parameters value error set units evid","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"EVID formatting for tibble and other places. — rxEvid","text":"rxEvid specification","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"EVID formatting for tibble and other places. — rxEvid","text":"","code":"rxEvid(1:7) #> 1:Dose (Add) #> 2:Other #> 3:Reset #> 4:Reset&Dose #> 5:Replace #> 6:Multiply #> 7:Transit"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand d(f)/d(eta) — rxExpandFEta_","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"Expand d(f)/d(eta)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"","code":"rxExpandFEta_(state, neta, pred, isTheta = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"state state expand neta number etas pred type prediction isTheta logical, expansion actually thetas instead etas","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"String symengine expressions evaluate calculate df/deta","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":null,"dir":"Reference","previous_headings":"","what":"Faster expand.grid — rxExpandGrid","title":"Faster expand.grid — rxExpandGrid","text":"support x y characters right now","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Faster expand.grid — rxExpandGrid","text":"","code":"rxExpandGrid(x, y, type = 0L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Faster expand.grid — rxExpandGrid","text":"x first element (must character) y second element (must character) type Internal type=0L traditional expand grid type=1L Jacobian expand grid (adds symbols)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Faster expand.grid — rxExpandGrid","text":"Expand grid","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Faster expand.grid — rxExpandGrid","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Faster expand.grid — rxExpandGrid","text":"","code":"## rxExpandGrid(letters, letters) #> Var1 Var2 #> 1 a a #> 2 b a #> 3 c a #> 4 d a #> 5 e a #> 6 f a #> 7 g a #> 8 h a #> 9 i a #> 10 j a #> 11 k a #> 12 l a #> 13 m a #> 14 n a #> 15 o a #> 16 p a #> 17 q a #> 18 r a #> 19 s a #> 20 t a #> 21 u a #> 22 v a #> 23 w a #> 24 x a #> 25 y a #> 26 z a #> 27 a b #> 28 b b #> 29 c b #> 30 d b #> 31 e b #> 32 f b #> 33 g b #> 34 h b #> 35 i b #> 36 j b #> 37 k b #> 38 l b #> 39 m b #> 40 n b #> 41 o b #> 42 p b #> 43 q b #> 44 r b #> 45 s b #> 46 t b #> 47 u b #> 48 v b #> 49 w b #> 50 x b #> 51 y b #> 52 z b #> 53 a c #> 54 b c #> 55 c c #> 56 d c #> 57 e c #> 58 f c #> 59 g c #> 60 h c #> 61 i c #> 62 j c #> 63 k c #> 64 l c #> 65 m c #> 66 n c #> 67 o c #> 68 p c #> 69 q c #> 70 r c #> 71 s c #> 72 t c #> 73 u c #> 74 v c #> 75 w c #> 76 x c #> 77 y c #> 78 z c #> 79 a d #> 80 b d #> 81 c d #> 82 d d #> 83 e d #> 84 f d #> 85 g d #> 86 h d #> 87 i d #> 88 j d #> 89 k d #> 90 l d #> 91 m d #> 92 n d #> 93 o d #> 94 p d #> 95 q d #> 96 r d #> 97 s d #> 98 t d #> 99 u d #> 100 v d #> 101 w d #> 102 x d #> 103 y d #> 104 z d #> 105 a e #> 106 b e #> 107 c e #> 108 d e #> 109 e e #> 110 f e #> 111 g e #> 112 h e #> 113 i e #> 114 j e #> 115 k e #> 116 l e #> 117 m e #> 118 n e #> 119 o e #> 120 p e #> 121 q e #> 122 r e #> 123 s e #> 124 t e #> 125 u e #> 126 v e #> 127 w e #> 128 x e #> 129 y e #> 130 z e #> 131 a f #> 132 b f #> 133 c f #> 134 d f #> 135 e f #> 136 f f #> 137 g f #> 138 h f #> 139 i f #> 140 j f #> 141 k f #> 142 l f #> 143 m f #> 144 n f #> 145 o f #> 146 p f #> 147 q f #> 148 r f #> 149 s f #> 150 t f #> 151 u f #> 152 v f #> 153 w f #> 154 x f #> 155 y f #> 156 z f #> 157 a g #> 158 b g #> 159 c g #> 160 d g #> 161 e g #> 162 f g #> 163 g g #> 164 h g #> 165 i g #> 166 j g #> 167 k g #> 168 l g #> 169 m g #> 170 n g #> 171 o g #> 172 p g #> 173 q g #> 174 r g #> 175 s g #> 176 t g #> 177 u g #> 178 v g #> 179 w g #> 180 x g #> 181 y g #> 182 z g #> 183 a h #> 184 b h #> 185 c h #> 186 d h #> 187 e h #> 188 f h #> 189 g h #> 190 h h #> 191 i h #> 192 j h #> 193 k h #> 194 l h #> 195 m h #> 196 n h #> 197 o h #> 198 p h #> 199 q h #> 200 r h #> 201 s h #> 202 t h #> 203 u h #> 204 v h #> 205 w h #> 206 x h #> 207 y h #> 208 z h #> 209 a i #> 210 b i #> 211 c i #> 212 d i #> 213 e i #> 214 f i #> 215 g i #> 216 h i #> 217 i i #> 218 j i #> 219 k i #> 220 l i #> 221 m i #> 222 n i #> 223 o i #> 224 p i #> 225 q i #> 226 r i #> 227 s i #> 228 t i #> 229 u i #> 230 v i #> 231 w i #> 232 x i #> 233 y i #> 234 z i #> 235 a j #> 236 b j #> 237 c j #> 238 d j #> 239 e j #> 240 f j #> 241 g j #> 242 h j #> 243 i j #> 244 j j #> 245 k j #> 246 l j #> 247 m j #> 248 n j #> 249 o j #> 250 p j #> 251 q j #> 252 r j #> 253 s j #> 254 t j #> 255 u j #> 256 v j #> 257 w j #> 258 x j #> 259 y j #> 260 z j #> 261 a k #> 262 b k #> 263 c k #> 264 d k #> 265 e k #> 266 f k #> 267 g k #> 268 h k #> 269 i k #> 270 j k #> 271 k k #> 272 l k #> 273 m k #> 274 n k #> 275 o k #> 276 p k #> 277 q k #> 278 r k #> 279 s k #> 280 t k #> 281 u k #> 282 v k #> 283 w k #> 284 x k #> 285 y k #> 286 z k #> 287 a l #> 288 b l #> 289 c l #> 290 d l #> 291 e l #> 292 f l #> 293 g l #> 294 h l #> 295 i l #> 296 j l #> 297 k l #> 298 l l #> 299 m l #> 300 n l #> 301 o l #> 302 p l #> 303 q l #> 304 r l #> 305 s l #> 306 t l #> 307 u l #> 308 v l #> 309 w l #> 310 x l #> 311 y l #> 312 z l #> 313 a m #> 314 b m #> 315 c m #> 316 d m #> 317 e m #> 318 f m #> 319 g m #> 320 h m #> 321 i m #> 322 j m #> 323 k m #> 324 l m #> 325 m m #> 326 n m #> 327 o m #> 328 p m #> 329 q m #> 330 r m #> 331 s m #> 332 t m #> 333 u m #> 334 v m #> 335 w m #> 336 x m #> 337 y m #> 338 z m #> 339 a n #> 340 b n #> 341 c n #> 342 d n #> 343 e n #> 344 f n #> 345 g n #> 346 h n #> 347 i n #> 348 j n #> 349 k n #> 350 l n #> 351 m n #> 352 n n #> 353 o n #> 354 p n #> 355 q n #> 356 r n #> 357 s n #> 358 t n #> 359 u n #> 360 v n #> 361 w n #> 362 x n #> 363 y n #> 364 z n #> 365 a o #> 366 b o #> 367 c o #> 368 d o #> 369 e o #> 370 f o #> 371 g o #> 372 h o #> 373 i o #> 374 j o #> 375 k o #> 376 l o #> 377 m o #> 378 n o #> 379 o o #> 380 p o #> 381 q o #> 382 r o #> 383 s o #> 384 t o #> 385 u o #> 386 v o #> 387 w o #> 388 x o #> 389 y o #> 390 z o #> 391 a p #> 392 b p #> 393 c p #> 394 d p #> 395 e p #> 396 f p #> 397 g p #> 398 h p #> 399 i p #> 400 j p #> 401 k p #> 402 l p #> 403 m p #> 404 n p #> 405 o p #> 406 p p #> 407 q p #> 408 r p #> 409 s p #> 410 t p #> 411 u p #> 412 v p #> 413 w p #> 414 x p #> 415 y p #> 416 z p #> 417 a q #> 418 b q #> 419 c q #> 420 d q #> 421 e q #> 422 f q #> 423 g q #> 424 h q #> 425 i q #> 426 j q #> 427 k q #> 428 l q #> 429 m q #> 430 n q #> 431 o q #> 432 p q #> 433 q q #> 434 r q #> 435 s q #> 436 t q #> 437 u q #> 438 v q #> 439 w q #> 440 x q #> 441 y q #> 442 z q #> 443 a r #> 444 b r #> 445 c r #> 446 d r #> 447 e r #> 448 f r #> 449 g r #> 450 h r #> 451 i r #> 452 j r #> 453 k r #> 454 l r #> 455 m r #> 456 n r #> 457 o r #> 458 p r #> 459 q r #> 460 r r #> 461 s r #> 462 t r #> 463 u r #> 464 v r #> 465 w r #> 466 x r #> 467 y r #> 468 z r #> 469 a s #> 470 b s #> 471 c s #> 472 d s #> 473 e s #> 474 f s #> 475 g s #> 476 h s #> 477 i s #> 478 j s #> 479 k s #> 480 l s #> 481 m s #> 482 n s #> 483 o s #> 484 p s #> 485 q s #> 486 r s #> 487 s s #> 488 t s #> 489 u s #> 490 v s #> 491 w s #> 492 x s #> 493 y s #> 494 z s #> 495 a t #> 496 b t #> 497 c t #> 498 d t #> 499 e t #> 500 f t #> 501 g t #> 502 h t #> 503 i t #> 504 j t #> 505 k t #> 506 l t #> 507 m t #> 508 n t #> 509 o t #> 510 p t #> 511 q t #> 512 r t #> 513 s t #> 514 t t #> 515 u t #> 516 v t #> 517 w t #> 518 x t #> 519 y t #> 520 z t #> 521 a u #> 522 b u #> 523 c u #> 524 d u #> 525 e u #> 526 f u #> 527 g u #> 528 h u #> 529 i u #> 530 j u #> 531 k u #> 532 l u #> 533 m u #> 534 n u #> 535 o u #> 536 p u #> 537 q u #> 538 r u #> 539 s u #> 540 t u #> 541 u u #> 542 v u #> 543 w u #> 544 x u #> 545 y u #> 546 z u #> 547 a v #> 548 b v #> 549 c v #> 550 d v #> 551 e v #> 552 f v #> 553 g v #> 554 h v #> 555 i v #> 556 j v #> 557 k v #> 558 l v #> 559 m v #> 560 n v #> 561 o v #> 562 p v #> 563 q v #> 564 r v #> 565 s v #> 566 t v #> 567 u v #> 568 v v #> 569 w v #> 570 x v #> 571 y v #> 572 z v #> 573 a w #> 574 b w #> 575 c w #> 576 d w #> 577 e w #> 578 f w #> 579 g w #> 580 h w #> 581 i w #> 582 j w #> 583 k w #> 584 l w #> 585 m w #> 586 n w #> 587 o w #> 588 p w #> 589 q w #> 590 r w #> 591 s w #> 592 t w #> 593 u w #> 594 v w #> 595 w w #> 596 x w #> 597 y w #> 598 z w #> 599 a x #> 600 b x #> 601 c x #> 602 d x #> 603 e x #> 604 f x #> 605 g x #> 606 h x #> 607 i x #> 608 j x #> 609 k x #> 610 l x #> 611 m x #> 612 n x #> 613 o x #> 614 p x #> 615 q x #> 616 r x #> 617 s x #> 618 t x #> 619 u x #> 620 v x #> 621 w x #> 622 x x #> 623 y x #> 624 z x #> 625 a y #> 626 b y #> 627 c y #> 628 d y #> 629 e y #> 630 f y #> 631 g y #> 632 h y #> 633 i y #> 634 j y #> 635 k y #> 636 l y #> 637 m y #> 638 n y #> 639 o y #> 640 p y #> 641 q y #> 642 r y #> 643 s y #> 644 t y #> 645 u y #> 646 v y #> 647 w y #> 648 x y #> 649 y y #> 650 z y #> 651 a z #> 652 b z #> 653 c z #> 654 d z #> 655 e z #> 656 f z #> 657 g z #> 658 h z #> 659 i z #> 660 j z #> 661 k z #> 662 l z #> 663 m z #> 664 n z #> 665 o z #> 666 p z #> 667 q z #> 668 r z #> 669 s z #> 670 t z #> 671 u z #> 672 v z #> 673 w z #> 674 x z #> 675 y z #> 676 z z ## Another fast method; See ## https://stackoverflow.com/questions/10405637/use-outer-instead-of-expand-grid expand.grid.jc <- function(seq1, seq2) { cbind( Var1 = rep.int(seq1, length(seq2)), Var2 = rep.int(seq2, rep.int(length(seq1), length(seq2))) ) } # \\donttest{ microbenchmark::microbenchmark(rxExpandGrid(letters, letters), expand.grid.jc(letters, letters)) #> Unit: microseconds #> expr min lq mean median uq #> rxExpandGrid(letters, letters) 23.343 24.0050 43.61157 25.2075 26.936 #> expand.grid.jc(letters, letters) 15.820 17.2575 212.45933 18.6850 20.303 #> max neval #> 1158.995 100 #> 4112.022 100 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand grid internal function — rxExpandGrid_","title":"Expand grid internal function — rxExpandGrid_","text":"Expand grid internal function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand grid internal function — rxExpandGrid_","text":"","code":"rxExpandGrid_(c1, c2, type)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand grid internal function — rxExpandGrid_","text":"c1 character vector items expanded c2 second character vector items expanded type 0 typical data frame, 1 symengine sensitivity expansion","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand grid internal function — rxExpandGrid_","text":"data frame (type = 0) symengine string (type=1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"Expand /else clauses multiple different types lines.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"","code":"rxExpandIfElse(model, removeInis = TRUE, removePrint = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"model Model can character, rxode2 model. needs normalized syntax, (...){} line. else statement must line closing bracket statement previous line. else statment must also contain opening bracket, like code else {} removeInis boolean indicating parameter initializations removed model. removePrint boolean indicating printing statements removed model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"named character vector. names vector logical conditions, values lines satisfy logical conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand second order sensitivity — rxExpandSens2_","title":"Expand second order sensitivity — rxExpandSens2_","text":"Expand second order sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand second order sensitivity — rxExpandSens2_","text":"","code":"rxExpandSens2_(state, s1, s2)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand second order sensitivity — rxExpandSens2_","text":"state state expand s1 variables calculate sensitivity s2 variables calculate second order sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand second order sensitivity — rxExpandSens2_","text":"string symengine second order sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand sensitivity — rxExpandSens_","title":"Expand sensitivity — rxExpandSens_","text":"Expand sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand sensitivity — rxExpandSens_","text":"","code":"rxExpandSens_(state, calcSens)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand sensitivity — rxExpandSens_","text":"state state expand calcSens variables calculate sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand sensitivity — rxExpandSens_","text":"symengine string expanded sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply the fixed population estimated parameters — rxFixPop","title":"Apply the fixed population estimated parameters — rxFixPop","text":"Apply fixed population estimated parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply the fixed population estimated parameters — rxFixPop","text":"","code":"rxFixPop(ui, returnNull = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply the fixed population estimated parameters — rxFixPop","text":"ui rxode2 ui function returnNull boolean unchanged values return original ui (FALSE) null (TRUE)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply the fixed population estimated parameters — rxFixPop","text":"returnNull TRUE, NULL nothing changed, changed model ui. returnNull FALSE, return ui matter changed .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Apply the fixed population estimated parameters — rxFixPop","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Apply the fixed population estimated parameters — rxFixPop","text":"","code":"One.comp.transit.allo <- function() { ini({ # Where initial conditions/variables are specified lktr <- log(1.15) #log k transit (/h) lcl <- log(0.15) #log Cl (L/hr) lv <- log(7) #log V (L) ALLC <- fix(0.75) #allometric exponent cl ALLV <- fix(1.00) #allometric exponent v prop.err <- 0.15 #proportional error (SD/mean) add.err <- 0.6 #additive error (mg/L) eta.ktr ~ 0.5 eta.cl ~ 0.1 eta.v ~ 0.1 }) model({ #Allometric scaling on weight cl <- exp(lcl + eta.cl + ALLC * logWT70) v <- exp(lv + eta.v + ALLV * logWT70) ktr <- exp(lktr + eta.ktr) # RxODE-style differential equations are supported d/dt(depot) = -ktr * depot d/dt(central) = ktr * trans - (cl/v) * central d/dt(trans) = ktr * depot - ktr * trans ## Concentration is calculated cp = central/v # And is assumed to follow proportional and additive error cp ~ prop(prop.err) + add(add.err) }) } m <- rxFixPop(One.comp.transit.allo) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments m #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> lktr lcl lv prop.err add.err #> 0.1397619 -1.8971200 1.9459101 0.1500000 0.6000000 #> #> Omega ($omega): #> eta.ktr eta.cl eta.v #> eta.ktr 0.5 0.0 0.0 #> eta.cl 0.0 0.1 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 central #> 3 3 trans #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 lcl eta.cl id #> 2 lv eta.v id #> 3 lktr eta.ktr id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> lktr <- 0.139761942375159 #> lcl <- -1.89711998488588 #> lv <- 1.94591014905531 #> prop.err <- c(0, 0.15) #> add.err <- c(0, 0.6) #> eta.ktr ~ 0.5 #> eta.cl ~ 0.1 #> eta.v ~ 0.1 #> }) #> model({ #> cl <- exp(lcl + eta.cl + 0.75 * logWT70) #> v <- exp(lv + eta.v + 1 * logWT70) #> ktr <- exp(lktr + eta.ktr) #> d/dt(depot) = -ktr * depot #> d/dt(central) = ktr * trans - (cl/v) * central #> d/dt(trans) = ktr * depot - ktr * trans #> cp = central/v #> cp ~ prop(prop.err) + add(add.err) #> }) #> } # now everything is already fixed, so calling again will do nothing rxFixPop(m) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> lktr lcl lv prop.err add.err #> 0.1397619 -1.8971200 1.9459101 0.1500000 0.6000000 #> #> Omega ($omega): #> eta.ktr eta.cl eta.v #> eta.ktr 0.5 0.0 0.0 #> eta.cl 0.0 0.1 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 central #> 3 3 trans #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 lcl eta.cl id #> 2 lv eta.v id #> 3 lktr eta.ktr id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> lktr <- 0.139761942375159 #> lcl <- -1.89711998488588 #> lv <- 1.94591014905531 #> prop.err <- c(0, 0.15) #> add.err <- c(0, 0.6) #> eta.ktr ~ 0.5 #> eta.cl ~ 0.1 #> eta.v ~ 0.1 #> }) #> model({ #> cl <- exp(lcl + eta.cl + 0.75 * logWT70) #> v <- exp(lv + eta.v + 1 * logWT70) #> ktr <- exp(lktr + eta.ktr) #> d/dt(depot) = -ktr * depot #> d/dt(central) = ktr * trans - (cl/v) * central #> d/dt(trans) = ktr * depot - ktr * trans #> cp = central/v #> cp ~ prop(prop.err) + add(add.err) #> }) #> } # if you call it with returnNull=TRUE when no changes have been # performed, the function will return NULL rxFixPop(m, returnNull=TRUE) #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":null,"dir":"Reference","previous_headings":"","what":"Clear memoise cache for rxode2 — rxForget","title":"Clear memoise cache for rxode2 — rxForget","text":"Clear memoise cache rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Clear memoise cache for rxode2 — rxForget","text":"","code":"rxForget()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Clear memoise cache for rxode2 — rxForget","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Clear memoise cache for rxode2 — rxForget","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":null,"dir":"Reference","previous_headings":"","what":"Add/Create C functions for use in rxode2 — rxFun","title":"Add/Create C functions for use in rxode2 — rxFun","text":"Add/Create C functions use rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add/Create C functions for use in rxode2 — rxFun","text":"","code":"rxFun(name, args, cCode) rxRmFun(name)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add/Create C functions for use in rxode2 — rxFun","text":"name can either give name user function simple R function wish convert C. rxode2 convert R function C, name function match function name provided number arguments match R function provided. Hence, providing R function conversion C, rest arguments implied. args gives arguments user function cCode C-code new function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add/Create C functions for use in rxode2 — rxFun","text":"","code":"# \\donttest{ # Right now rxode2 is not aware of the function fun # Therefore it cannot translate it to symengine or # Compile a model with it. try(rxode2(\"a=fun(a,b,c)\")) #> #> #> Error : syntax errors (see above) # Note for this approach to work, it cannot interfere with C # function names or reserved rxode2 special terms. Therefore # f(x) would not work since f is an alias for bioavailability. fun <- \" double fun(double a, double b, double c) { return a*a+b*a+c; } \" # C-code for function rxFun(\"fun\", c(\"a\", \"b\", \"c\"), fun) ## Added function # Now rxode2 knows how to translate this function to symengine rxToSE(\"fun(a,b,c)\") #> [1] \"fun(a,b,c)\" # And will take a central difference when calculating derivatives rxFromSE(\"Derivative(fun(a,b,c),a)\") #> [1] \"(fun((a)+6.05545445239334e-06,b,c)-fun(a,b,c))/6.05545445239334e-06\" ## Of course, you could specify the derivative table manually rxD(\"fun\", list( function(a, b, c) { paste0(\"2*\", a, \"+\", b) }, function(a, b, c) { return(a) }, function(a, b, c) { return(\"0.0\") } )) rxFromSE(\"Derivative(fun(a,b,c),a)\") #> [1] \"2*a+b\" # You can also remove the functions by `rxRmFun` rxRmFun(\"fun\") # you can also use R functions directly in rxode2 gg <- function(x, y) { x + y } f <- rxode2({ z = gg(x, y) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(1:10) |> as.data.frame() e$x <- 1:10 e$y <- 21:30 rxSolve(f, e) #> Warning: not thread safe method, using 1 core #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time z x y #> #> 1 1 22 1 21 #> 2 2 24 2 22 #> 3 3 26 3 23 #> 4 4 28 4 24 #> 5 5 30 5 25 #> 6 6 32 6 26 #> # ℹ 4 more rows # Note that since it touches R, it can only run single-threaded. # There are also requirements for the function: # # 1. It accepts one value per argument (numeric) # # 2. It returns one numeric value # If it is a simple function (like gg) you can also convert it to C # using rxFun and load it into rxode2 rxFun(gg) #> → finding duplicate expressions in d(gg)/d(x)... #> → finding duplicate expressions in d(gg)/d(y)... #> converted R function 'gg' to C (will now use in rxode2) #> converted R function 'rx_gg_d_x' to C (will now use in rxode2) #> converted R function 'rx_gg_d_y' to C (will now use in rxode2) #> Added derivative table for 'gg' rxSolve(f, e) #> compiled with R user function 'gg'; now there is a clashing C user function #> triggered a recompile to use the C user function (they are always preferred) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time z x y #> #> 1 1 22 1 21 #> 2 2 24 2 22 #> 3 3 26 3 23 #> 4 4 28 4 24 #> 5 5 30 5 25 #> 6 6 32 6 26 #> # ℹ 4 more rows # to stop the recompile simply reassign the function f <- rxode2(f) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ rxSolve(f, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time z x y #> #> 1 1 22 1 21 #> 2 2 24 2 22 #> 3 3 26 3 23 #> 4 4 28 4 24 #> 5 5 30 5 25 #> 6 6 32 6 26 #> # ℹ 4 more rows rxRmFun(\"gg\") rm(gg) rm(f) # You can also automatically convert a R function to R code (and # calculate first derivatives) fun <- function(a, b, c) { a^2+b*a+c } rxFun(fun) #> → finding duplicate expressions in d(fun)/d(a)... #> → finding duplicate expressions in d(fun)/d(b)... #> → finding duplicate expressions in d(fun)/d(c)... #> converted R function 'fun' to C (will now use in rxode2) #> converted R function 'rx_fun_d_a' to C (will now use in rxode2) #> converted R function 'rx_fun_d_b' to C (will now use in rxode2) #> converted R function 'rx_fun_d_c' to C (will now use in rxode2) #> Added derivative table for 'fun' # You can see the R code if you want with rxC message(rxC(\"fun\")) #> double fun(double a, double b, double c) { #> double _lastValue=NA_REAL; #> _lastValue = R_pow_di(a,2)+b*a+c; #> return _lastValue; #> } # you can also remove both the function and the # derivatives with rxRmFun(\"fun\") rxRmFun(\"fun\") # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":null,"dir":"Reference","previous_headings":"","what":"Add user function to rxode2 — rxFunParse","title":"Add user function to rxode2 — rxFunParse","text":"adds user function rxode2 can called. needed, functions can differentiated numerical differences adding derivatives rxode2's internal derivative table rxode2's rxD function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add user function to rxode2 — rxFunParse","text":"","code":"rxFunParse(name, args, cCode) rxRmFunParse(name)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add user function to rxode2 — rxFunParse","text":"name gives name user function args gives arguments user function cCode C-code new function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add user function to rxode2 — rxFunParse","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add user function to rxode2 — rxFunParse","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":null,"dir":"Reference","previous_headings":"","what":"rxGetControl option from ui — rxGetControl","title":"rxGetControl option from ui — rxGetControl","text":"rxGetControl option ui","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxGetControl option from ui — rxGetControl","text":"","code":"rxGetControl(ui, option, default)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxGetControl option from ui — rxGetControl","text":"ui rxode2 ui object option Option get default Default value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxGetControl option from ui — rxGetControl","text":"Option (present) default value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxGetControl option from ui — rxGetControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":null,"dir":"Reference","previous_headings":"","what":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"S3 method getting distribution lines rxode2 simulation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"","code":"rxGetDistributionSimulationLines(line) # S3 method for class 'norm' rxGetDistributionSimulationLines(line) # S3 method for class 'dnorm' rxGetDistributionSimulationLines(line) # S3 method for class 't' rxGetDistributionSimulationLines(line) # S3 method for class 'cauchy' rxGetDistributionSimulationLines(line) # S3 method for class 'ordinal' rxGetDistributionSimulationLines(line) # Default S3 method rxGetDistributionSimulationLines(line) # S3 method for class 'rxUi' rxGetDistributionSimulationLines(line)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"line Parsed rxode2 model environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"Lines simulation ipred dv. based idea focei parameters defined","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the linear compartment model true function — rxGetLin","title":"Get the linear compartment model true function — rxGetLin","text":"Get linear compartment model true function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the linear compartment model true function — rxGetLin","text":"","code":"rxGetLin( model, linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), verbose = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the linear compartment model true function — rxGetLin","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . linCmtSens method calculate linCmt() solutions verbose TRUE verbose linear compartmental model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the linear compartment model true function — rxGetLin","text":"model linCmt() replaced linCmtA()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the linear compartment model true function — rxGetLin","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get model properties without compiling it. — rxGetModel","title":"Get model properties without compiling it. — rxGetModel","text":"Get model properties without compiling .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get model properties without compiling it. — rxGetModel","text":"","code":"rxGetModel( model, calcSens = NULL, calcJac = NULL, collapseModel = NULL, indLin = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get model properties without compiling it. — rxGetModel","text":"model rxode2 specification calcSens boolean indicating rxode2 calculate sensitivities according specified ODEs. calcJac boolean indicating rxode2 calculate Jacobain according specified ODEs. collapseModel boolean indicating rxode2 remove LHS variables calculating sensitivities. indLin Calculate inductive linearization matrices compile inductive linearization support.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get model properties without compiling it. — rxGetModel","text":"rxode2 trans list","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get model properties without compiling it. — rxGetModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 seed — rxGetSeed","title":"Get the rxode2 seed — rxGetSeed","text":"Get rxode2 seed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 seed — rxGetSeed","text":"","code":"rxGetSeed()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 seed — rxGetSeed","text":"rxode2 seed state -1 seed set","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the rxode2 seed — rxGetSeed","text":"","code":"# without setting seed rxGetSeed() #> [1] -1 # Now set the seed rxSetSeed(42) rxGetSeed() #> [1] 42 rxnorm() #> [1] -0.640542 rxGetSeed() #> [1] 44 # don't use the rxode2 seed again rxSetSeed(-1) rxGetSeed() #> [1] -1 rxnorm() #> [1] -0.6812928 rxGetSeed() #> [1] -1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Get rxode2 model from object — rxGetrxode2","title":"Get rxode2 model from object — rxGetrxode2","text":"Get rxode2 model object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get rxode2 model from object — rxGetrxode2","text":"","code":"rxGetrxode2(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get rxode2 model from object — rxGetrxode2","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get rxode2 model from object — rxGetrxode2","text":"rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":null,"dir":"Reference","previous_headings":"","what":"Format rxSolve and related objects as html. — rxHtml","title":"Format rxSolve and related objects as html. — rxHtml","text":"Format rxSolve related objects html.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Format rxSolve and related objects as html. — rxHtml","text":"","code":"rxHtml(x, ...) # S3 method for class 'rxSolve' rxHtml(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Format rxSolve and related objects as html. — rxHtml","text":"x rxode2 object ... Extra arguments sent kable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Format rxSolve and related objects as html. — rxHtml","text":"html code rxSolve object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Format rxSolve and related objects as html. — rxHtml","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the preferred factoring by state — rxIndLinState","title":"Set the preferred factoring by state — rxIndLinState","text":"Set preferred factoring state","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the preferred factoring by state — rxIndLinState","text":"","code":"rxIndLinState(preferred = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the preferred factoring by state — rxIndLinState","text":"preferred list state's preferred factorization","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the preferred factoring by state — rxIndLinState","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set the preferred factoring by state — rxIndLinState","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":null,"dir":"Reference","previous_headings":"","what":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"one state ODE separated specifies incorporated matrix exponential.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"","code":"rxIndLinStrategy(strategy = c(\"curState\", \"split\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"strategy strategy inductive linearization matrix building curState Prefer parameterizing terms current state, followed first state observed term. split Split parameterization states term dividing number states term adding matrix term state.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":null,"dir":"Reference","previous_headings":"","what":"Initial Values and State values for a rxode2 object — rxInits","title":"Initial Values and State values for a rxode2 object — rxInits","text":"Returns initial values rxDll object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Initial Values and State values for a rxode2 object — rxInits","text":"","code":"rxInits( obj, vec = NULL, req = NULL, defaultValue = 0, noerror = FALSE, noini = FALSE, rxLines = FALSE ) rxInit( obj, vec = NULL, req = NULL, defaultValue = 0, noerror = FALSE, noini = FALSE, rxLines = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Initial Values and State values for a rxode2 object — rxInits","text":"obj rxDll, rxode2, named vector representing default initial arguments vec supplied, named vector model. req Required names, required order ODE solver defaultValue number NA representing default value parameters missing vec, required req. noerror boolean specifying error thrown missing parameter values default = NA","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Initial Values and State values for a rxode2 object — rxInits","text":"Initial values rxDll object","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Initial Values and State values for a rxode2 object — rxInits","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a positive base — rxIntToBase","title":"Convert a positive base — rxIntToBase","text":"Convert positive base","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a positive base — rxIntToBase","text":"","code":"rxIntToBase(x, base = 36L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a positive base — rxIntToBase","text":"x integer convert base can 2 36","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a positive base — rxIntToBase","text":"sequence letters representing number(s) input","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a positive base — rxIntToBase","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a positive base — rxIntToBase","text":"","code":"rxIntToBase(1:100) #> [1] \"1\" \"2\" \"3\" \"4\" \"5\" \"6\" \"7\" \"8\" \"9\" \"a\" \"b\" \"c\" \"d\" \"e\" \"f\" #> [16] \"g\" \"h\" \"i\" \"j\" \"k\" \"l\" \"m\" \"n\" \"o\" \"p\" \"q\" \"r\" \"s\" \"t\" \"u\" #> [31] \"v\" \"w\" \"x\" \"y\" \"z\" \"10\" \"11\" \"12\" \"13\" \"14\" \"15\" \"16\" \"17\" \"18\" \"19\" #> [46] \"1a\" \"1b\" \"1c\" \"1d\" \"1e\" \"1f\" \"1g\" \"1h\" \"1i\" \"1j\" \"1k\" \"1l\" \"1m\" \"1n\" \"1o\" #> [61] \"1p\" \"1q\" \"1r\" \"1s\" \"1t\" \"1u\" \"1v\" \"1w\" \"1x\" \"1y\" \"1z\" \"20\" \"21\" \"22\" \"23\" #> [76] \"24\" \"25\" \"26\" \"27\" \"28\" \"29\" \"2a\" \"2b\" \"2c\" \"2d\" \"2e\" \"2f\" \"2g\" \"2h\" \"2i\" #> [91] \"2j\" \"2k\" \"2l\" \"2m\" \"2n\" \"2o\" \"2p\" \"2q\" \"2r\" \"2s\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a positive integer to a letter series — rxIntToLetter","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"Convert positive integer letter series","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"","code":"rxIntToLetter(x, base = 26L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"x integer convert base can 2 26","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"sequence letters representing number(s) input","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"","code":"rxIntToLetter(1:100) #> [1] \"b\" \"c\" \"d\" \"e\" \"f\" \"g\" \"h\" \"i\" \"j\" \"k\" \"l\" \"m\" \"n\" \"o\" \"p\" #> [16] \"q\" \"r\" \"s\" \"t\" \"u\" \"v\" \"w\" \"x\" \"y\" \"z\" \"ba\" \"bb\" \"bc\" \"bd\" \"be\" #> [31] \"bf\" \"bg\" \"bh\" \"bi\" \"bj\" \"bk\" \"bl\" \"bm\" \"bn\" \"bo\" \"bp\" \"bq\" \"br\" \"bs\" \"bt\" #> [46] \"bu\" \"bv\" \"bw\" \"bx\" \"by\" \"bz\" \"ca\" \"cb\" \"cc\" \"cd\" \"ce\" \"cf\" \"cg\" \"ch\" \"ci\" #> [61] \"cj\" \"ck\" \"cl\" \"cm\" \"cn\" \"co\" \"cp\" \"cq\" \"cr\" \"cs\" \"ct\" \"cu\" \"cv\" \"cw\" \"cx\" #> [76] \"cy\" \"cz\" \"da\" \"db\" \"dc\" \"dd\" \"de\" \"df\" \"dg\" \"dh\" \"di\" \"dj\" \"dk\" \"dl\" \"dm\" #> [91] \"dn\" \"do\" \"dp\" \"dq\" \"dr\" \"ds\" \"dt\" \"du\" \"dv\" \"dw\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":null,"dir":"Reference","previous_headings":"","what":"Invert matrix using RcppArmadillo. — rxInv","title":"Invert matrix using RcppArmadillo. — rxInv","text":"Invert matrix using RcppArmadillo.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Invert matrix using RcppArmadillo. — rxInv","text":"","code":"rxInv(matrix)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Invert matrix using RcppArmadillo. — rxInv","text":"matrix matrix inverted.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Invert matrix using RcppArmadillo. — rxInv","text":"inverse pseudo inverse matrix.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":null,"dir":"Reference","previous_headings":"","what":"Check the type of an object using Rcpp — rxIs","title":"Check the type of an object using Rcpp — rxIs","text":"Check type object using Rcpp","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check the type of an object using Rcpp — rxIs","text":"","code":"rxIs(obj, cls)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check the type of an object using Rcpp — rxIs","text":"obj Object check cls Type class. s3 classes lists/environments primitive classes checked. matrix types distinguished numeric.matrix, integer.matrix, logical.matrix, character.matrix well traditional matrix class. Additionally checks event.data.frame data.frame object time, evid amt. (UPPER, lower Title cases accepted)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check the type of an object using Rcpp — rxIs","text":"boolean indicating object member class.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check the type of an object using Rcpp — rxIs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":null,"dir":"Reference","previous_headings":"","what":"Checks if the rxode2 object was built with the current build — rxIsCurrent","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"Checks rxode2 object built current build","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"","code":"rxIsCurrent(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"boolean indicating built current rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"Determine DLL associated rxode2 object loaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"","code":"rxIsLoaded(obj) rxDllLoaded(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"Boolean returning rxode2 library loaded.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":null,"dir":"Reference","previous_headings":"","what":"Left handed Variables — rxLhs","title":"Left handed Variables — rxLhs","text":"returns model calculated variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Left handed Variables — rxLhs","text":"","code":"rxLhs(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Left handed Variables — rxLhs","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Left handed Variables — rxLhs","text":"character vector listing calculated parameters","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Left handed Variables — rxLhs","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":null,"dir":"Reference","previous_headings":"","what":"Lock/unlocking of rxode2 dll file — rxLock","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"Lock/unlocking rxode2 dll file","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"","code":"rxLock(obj) rxUnlock(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the md5 of an rxode2 object or file — rxMd5","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"md5 based model possibly extra c code supplied model. addition md5 based syntax options, compiled rxode2 library md5, rxode2 version/repository.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"","code":"rxMd5(model, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . ... ignored arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"rxode2 object, return named list: file_md5 model's file's md5 parsed_md5 parsed model's file's md5. Otherwise return md5 based arguments provided","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":null,"dir":"Reference","previous_headings":"","what":"All model variables for a rxode2 object — rxModelVars","title":"All model variables for a rxode2 object — rxModelVars","text":"Return known model variables specified rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"All model variables for a rxode2 object — rxModelVars","text":"","code":"rxModelVars(obj) rxModelVarsS3(obj) # S3 method for class 'rxUi' rxModelVarsS3(obj) # Default S3 method rxModelVarsS3(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"All model variables for a rxode2 object — rxModelVars","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"All model variables for a rxode2 object — rxModelVars","text":"list rxode2 model properties including: params character vector names model parameters lhs character vector names model calculated parameters state character vector compartments rxode2 object trans named vector translated model properties including type jacobian specified, C function prefixes, well C functions names called compiled model. md5 named vector gives digest model (file_md5) parsed model (parsed_md5) model named vector giving input model (model), normalized model (comments standard syntax parsing, normModel), interim code used generate final C file parseModel","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"All model variables for a rxode2 object — rxModelVars","text":"items calculated compilation; built-rxode2 compiled DLL. allow extension, s3 hook added function rxModelVarsS3.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"All model variables for a rxode2 object — rxModelVars","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxModels information — rxModels_","title":"Get the rxModels information — rxModels_","text":"Get rxModels information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxModels information — rxModels_","text":"","code":"rxModels_(env = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the rxModels information — rxModels_","text":"env boolean returns environment models stored (TRUE), currently assigned rxode2 model variables (FALSE).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxModels information — rxModels_","text":"internal rxModels information environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the normalized model — rxNorm","title":"Get the normalized model — rxNorm","text":"get syntax preferred model processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the normalized model — rxNorm","text":"","code":"rxNorm(obj, condition = NULL, removeInis, removeJac, removeSens)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the normalized model — rxNorm","text":"obj rxode2 family objects condition Character string logical condition use subsetting normalized model. missing, condition set via rxCondition, return whole code conditional settings intact. condition set rxCondition, use condition. removeInis boolean indicating parameter initialization removed model removeJac boolean indicating Jacobians removed. removeSens boolean indicating sensitivities removed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the normalized model — rxNorm","text":"Normalized Normal syntax (comments)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the normalized model — rxNorm","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":null,"dir":"Reference","previous_headings":"","what":"Optimize rxode2 for computer evaluation — rxOptExpr","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"optimizes rxode2 code computer evaluation calculating redundant expressions .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"","code":"rxOptExpr(x, msg = \"model\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"x rxode2 model can accessed rxNorm msg name type object rxode2 optimizing message optimizing. example \"model\" produce following message optimizing model: finding duplicate expressions model...","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"Optimized rxode2 model text. order type lhs state variables maintained evaluation sped . parameters names maintained, order may modified.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":null,"dir":"Reference","previous_headings":"","what":"Parameters specified by the model — rxParams","title":"Parameters specified by the model — rxParams","text":"returns model's parameters required solve ODE system, can used pipe parameters rxode2 solve","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parameters specified by the model — rxParams","text":"","code":"rxParams(obj, ...) # S3 method for class 'rxode2' rxParams( obj, constants = TRUE, ..., params = NULL, inits = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, dfSub = NULL, sigma = NULL, dfObs = NULL, nSub = NULL, nStud = NULL ) # S3 method for class 'rxSolve' rxParams( obj, constants = TRUE, ..., params = NULL, inits = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, dfSub = NULL, sigma = NULL, dfObs = NULL, nSub = NULL, nStud = NULL ) # S3 method for class 'rxEt' rxParams( obj, ..., params = NULL, inits = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, dfSub = NULL, sigma = NULL, dfObs = NULL, nSub = NULL, nStud = NULL ) rxParam(obj, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parameters specified by the model — rxParams","text":"obj rxode2 family objects ... arguments including scaling factors compartment. includes S# = numeric scale compartment # dividing compartment amount scale factor, like NONMEM. constants boolean indicting constants included list parameters. Currently rxode2 parses constants variables case wish change without recompiling rxode2 model. params numeric named vector values every parameter ODE system; names must correspond parameter identifiers used ODE specification; inits vector initial values state variables (e.g., amounts compartment), order vector must state variables (e.g., PK/PD compartments); iCov data frame individual non-time varying covariates combine events dataset. iCov dataset one covariate per ID match event table keep Columns keep either input dataset iCov dataset. iCov dataset, column kept per line. input dataset, records added data LOCF (Last Observation Carried forward) imputation performed. thetaMat Named theta matrix. omega Estimate Covariance matrix. omega list, assume block matrix convert full matrix simulations. omega NA using rxode2 ui model, subject variability described omega matrix set zero. dfSub Degrees freedom sample subject variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. sigma Named sigma covariance Cholesky decomposition covariance matrix. names columns indicate parameters simulated. simulated every observation solved system. sigma NA using rxode2 ui model, unexplained variability described sigma matrix set zero. dfObs Degrees freedom sample unexplained variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. nSub Number subject variabilities (ETAs) simulated every realization parameters. nStud Number virtual studies characterize uncertainty estimated parameters.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parameters specified by the model — rxParams","text":"extracting parameters rxode2 model, character vector listing parameters model.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parameters specified by the model — rxParams","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Prepare Error function for inclusion in rxode2 — rxParseErr","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"Prepare Error function inclusion rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"","code":"rxParseErr( x, baseTheta, ret = \"rx_r_\", init = NULL, addProp = c(\"combined2\", \"combined1\") )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"x error function baseTheta Base theta start numbering add(.) prop(.) . ret Internal return type. changed user... init Initialization vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"rxode2 transformed text","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":null,"dir":"Reference","previous_headings":"","what":"Parse PK function for inclusion in rxode2 — rxParsePk","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"Parse PK function inclusion rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"","code":"rxParsePk(x, init = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"x PK function init Initialization vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"rxode2 transformed text.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":null,"dir":"Reference","previous_headings":"","what":"Prepare Pred function for inclusion in rxode2 — rxParsePred","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"Prepare Pred function inclusion rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"","code":"rxParsePred(x, init = NULL, err = NULL, addProp = c(\"combined2\", \"combined1\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"x pred function init Initialization vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"rxode2 transformed text.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"Silence rxode2's C/C++ messages","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"","code":"rxParseSetSilentErr(silent)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"silent can 0L \"noisy\" 1L \"silent\"","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"TRUE; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":null,"dir":"Reference","previous_headings":"","what":"Respect suppress messages — rxParseSuppressMsg","title":"Respect suppress messages — rxParseSuppressMsg","text":"turns silent REprintf C suppressMessages() turned . makes REprintf act like messages R, can suppressed suppressMessages()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Respect suppress messages — rxParseSuppressMsg","text":"","code":"rxParseSuppressMsg()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Respect suppress messages — rxParseSuppressMsg","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Respect suppress messages — rxParseSuppressMsg","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Respect suppress messages — rxParseSuppressMsg","text":"","code":"# rxParseSuppressMsg() is called with rxode2() # Note the errors are output to the console try(rxode2parse(\"d/dt(matt)=/3\"), silent = TRUE) #> # When using suppressMessages, the output is suppressed suppressMessages(try(rxode2parse(\"d/dt(matt)=/3\"), silent = TRUE)) # In rxode2, we use REprintf so that interrupted threads do not crash R # if there is a user interrupt. This isn't captured by R's messages, but # This interface allows the `suppressMessages()` to suppress the C printing # as well # If you want to suppress messages from rxode2 in other packages, you can use # this function"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates a package from compiled rxode2 models — rxPkg","title":"Creates a package from compiled rxode2 models — rxPkg","text":"Creates package compiled rxode2 models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates a package from compiled rxode2 models — rxPkg","text":"","code":"rxPkg( ..., package, wd = getwd(), action = c(\"install\", \"build\", \"binary\", \"create\"), license = c(\"gpl3\", \"lgpl\", \"mit\", \"agpl3\"), name = \"Firstname Lastname\", fields = list() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates a package from compiled rxode2 models — rxPkg","text":"... Models build package package String package name create wd character string working directory create subdirectory according modName. specified, subdirectory named “modName.d” created populated C file, dynamic loading library, plus various working files. missing, files created (removed) temporary directory, rxode2 DLL model created current directory named rx_????_platform, example rx_129f8f97fb94a87ca49ca8dafe691e1e_i386.dll action Type action take package created license type license package. name Full name author fields named list fields add DESCRIPTION, potentially overriding default values. See use_description() can set personalized defaults using package options.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates a package from compiled rxode2 models — rxPkg","text":"function returns nothing used side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Creates a package from compiled rxode2 models — rxPkg","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate a from a Poisson process — rxPp","title":"Simulate a from a Poisson process — rxPp","text":"Simulate Poisson process","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate a from a Poisson process — rxPp","text":"","code":"rxPp( n, lambda, gamma = 1, prob = NULL, t0 = 0, tmax = Inf, randomOrder = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate a from a Poisson process — rxPp","text":"n Number time points simulate Poisson process lambda Rate Poisson process gamma Asymmetry rate Poisson process. gamma=1.0, simulates homogenous Poisson process. gamma<1.0, Poisson process events early, gamma > 1.0, Poisson process events late process. gamma non-zero, tmax infinite indicate end Poisson process simulated. pharamcometric cases, end study. Internally uses rate : l(t) = lambdagamma(t/tmax)^(gamma-1) prob specified, probability function one argument, time, gives probability Poisson time t accepted rejection time. t0 starting time Poisson process tmax maximum time Poisson process randomOrder TRUE randomize order Poisson events. default (FALSE) returns Poisson process order events occurred.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate a from a Poisson process — rxPp","text":"returns vector Poisson process times; dropout >= tmax, rest times = tmax indicate dropout equal tmax.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate a from a Poisson process — rxPp","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate a from a Poisson process — rxPp","text":"","code":"## Sample homogenous Poisson process of rate 1/10 rxPp(10, 1 / 10) #> [1] 12.38682 13.16377 27.35351 30.27454 34.06746 39.23769 58.13355 #> [8] 72.97714 102.32911 113.87403 ## Sample inhomogenous Poisson rate of 1/10 rxPp(10, 1 / 10, gamma = 2, tmax = 100) #> [1] 60.28221 61.96611 62.71870 76.52984 87.25892 94.17678 100.00000 #> [8] 100.00000 100.00000 100.00000 ## Typically the Poisson process times are in a sequential order, ## using randomOrder gives the Poisson process in random order rxPp(10, 1 / 10, gamma = 2, tmax = 10, randomOrder = TRUE) #> [1] 10 10 10 10 10 10 10 10 10 10 ## This uses an arbitrary function to sample a non-homogenous Poisson process rxPp(10, 1 / 10, prob = function(x) { 1/(1+abs(x)) }) #> [1] 149.2766 291.7273 377.5511 497.7551 625.0034 666.2430 791.0833 #> [8] 846.1187 867.2486 1088.2302"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":null,"dir":"Reference","previous_headings":"","what":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"determined internal preferred condition name list .errIdenticalDists","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"","code":"rxPreferredDistributionName(dist)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"dist input distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"Preferred distribution term","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"","code":"rxPreferredDistributionName(\"dt\") #> [1] \"t\" rxPreferredDistributionName(\"add\") #> [1] \"add\" # can be vectorized rxPreferredDistributionName(c(\"add\",\"dt\")) #> add dt #> \"add\" \"t\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":null,"dir":"Reference","previous_headings":"","what":"rxode2 progress bar functions — rxProgress","title":"rxode2 progress bar functions — rxProgress","text":"rxProgress sets progress bar","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxode2 progress bar functions — rxProgress","text":"","code":"rxProgress(num, core = 0L) rxTick() rxProgressStop(clear = TRUE) rxProgressAbort(error = \"Aborted calculation\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxode2 progress bar functions — rxProgress","text":"num Tot number operations track core Number cores show. 1, show number cores clear Boolean telling clear progress bar completion (displayed). default TRUE error rxProgressAbort error displayed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxode2 progress bar functions — rxProgress","text":"return NULL invisibly.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"rxode2 progress bar functions — rxProgress","text":"rxTick progress bar tick rxProgressStop stop progress bar rxProgressAbort shows abort rxProgressStop called.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxode2 progress bar functions — rxProgress","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"rxode2 progress bar functions — rxProgress","text":"","code":"f <- function() { on.exit({ rxProgressAbort() }) rxProgress(100) for (i in 1:100) { rxTick() Sys.sleep(1 / 100) } rxProgressStop() } # \\donttest{ f() # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":null,"dir":"Reference","previous_headings":"","what":"Prune branches (ie if/else) from rxode2 — rxPrune","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"prunes branches (ie /else) rxode2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"","code":"rxPrune(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"x rxode2 model can accessed rxNorm","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"Pruned rxode2 model text.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates a rxRateDur object — rxRateDur","title":"Creates a rxRateDur object — rxRateDur","text":"primarily display information rate","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates a rxRateDur object — rxRateDur","text":"","code":"rxRateDur(x) # S3 method for class 'rxRateDur' x[...] as.rxRateDur(x) # S3 method for class 'rxRateDur' as.character(x, ...) # S3 method for class 'rxRateDur' x[[...]]"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates a rxRateDur object — rxRateDur","text":"x rxRateDur data ... parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates a rxRateDur object — rxRateDur","text":"rxRateDur object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":null,"dir":"Reference","previous_headings":"","what":"Reload rxode2 DLL — rxReload","title":"Reload rxode2 DLL — rxReload","text":"Can useful debugging","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reload rxode2 DLL — rxReload","text":"","code":"rxReload()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reload rxode2 DLL — rxReload","text":"boolean object reloaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Reload rxode2 DLL — rxReload","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":null,"dir":"Reference","previous_headings":"","what":"rxRemoveControl options for UI object — rxRemoveControl","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"rxRemoveControl options UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"","code":"rxRemoveControl(ui)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"ui rxode2 ui object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":null,"dir":"Reference","previous_headings":"","what":"Rename items inside of a rxode2 ui model — rxRename","title":"Rename items inside of a rxode2 ui model — rxRename","text":"rxRename() changes names individual variables, lhs, ode states using new_name = old_name syntax","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rename items inside of a rxode2 ui model — rxRename","text":"","code":"rxRename(.data, ..., envir = parent.frame()) .rxRename(.data, ..., envir = parent.frame()) rename.rxUi(.data, ...) rename.function(.data, ...) # S3 method for class 'rxUi' rxRename(.data, ...) # S3 method for class '`function`' rxRename(.data, ...) # Default S3 method rxRename(.data, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rename items inside of a rxode2 ui model — rxRename","text":".data rxode2 ui function, named data consistent dplyr::rename() ... rename items envir Environment evaluation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Rename items inside of a rxode2 ui model — rxRename","text":"New model items renamed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rename items inside of a rxode2 ui model — rxRename","text":"similar dplyr's rename() function. dplyr loaded, s3 methods work ui objects. Note .rxRename() internal function called renaming likely need call unless writing extension function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Rename items inside of a rxode2 ui model — rxRename","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rename items inside of a rxode2 ui model — rxRename","text":"","code":"ocmt <- function() { ini({ tka <- exp(0.45) # Ka tcl <- exp(1) # Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- exp(3.45) # log V ## the label(\"Label name\") works with all models add.sd <- 0.7 }) model({ ka <- tka cl <- tcl v <- tv d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } ocmt %>% rxRename(cpParent=cp) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 1.568312 2.718282 31.500392 0.700000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cpParent = center/v #> cpParent ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":null,"dir":"Reference","previous_headings":"","what":"Rep R0 for foce — rxRepR0_","title":"Rep R0 for foce — rxRepR0_","text":"Rep R0 foce","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rep R0 for foce — rxRepR0_","text":"","code":"rxRepR0_(neta)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rep R0 for foce — rxRepR0_","text":"neta ETA substitute","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Rep R0 for foce — rxRepR0_","text":"Returns string R code substitute rx_r expression symengine environment .s","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":null,"dir":"Reference","previous_headings":"","what":"Require namespace, otherwise throw error. — rxReq","title":"Require namespace, otherwise throw error. — rxReq","text":"Require namespace, otherwise throw error.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Require namespace, otherwise throw error. — rxReq","text":"","code":"rxReq(pkg)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Require namespace, otherwise throw error. — rxReq","text":"pkg Package required function work.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Require namespace, otherwise throw error. — rxReq","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Require namespace, otherwise throw error. — rxReq","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReservedKeywords.html","id":null,"dir":"Reference","previous_headings":"","what":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","title":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","text":"list description rxode2 supported reserved keywords","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReservedKeywords.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","text":"","code":"rxReservedKeywords"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReservedKeywords.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","text":"data frame 3 columns 31 rows Reserved Name Reserved Keyword Name Meaning Reserved Keyword Meaning Alias Keyword Alias","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxResidualError.html","id":null,"dir":"Reference","previous_headings":"","what":"A description of Rode2 supported residual errors — rxResidualError","title":"A description of Rode2 supported residual errors — rxResidualError","text":"description Rode2 supported residual errors","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxResidualError.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A description of Rode2 supported residual errors — rxResidualError","text":"","code":"rxResidualError"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxResidualError.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A description of Rode2 supported residual errors — rxResidualError","text":"data frame 6 columns 181 rows Error model description type residual error Functional Form additive proportional functional form used Transformation type transformation done DV prediction code Example code residual error type addProp type add+prop residual error default equivalent lhs left handed side specification represents, either response variable, compartment specification","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate from a (truncated) multivariate normal — rxRmvn","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"simulated fast, thread-safe threefry simulator can use multiple cores generate random deviates.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"","code":"rxRmvn( n, mu = NULL, sigma, lower = -Inf, upper = Inf, ncores = 1, isChol = FALSE, keepNames = TRUE, a = 0.4, tol = 2.05, nlTol = 1e-10, nlMaxiter = 100L )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"n Number random row vectors simulated matrix use simulation (faster). mu mean vector sigma Covariance matrix multivariate normal list covariance matrices. list covariance matrix, matrix simulate n matrices combine full matrix lower vector lower bound truncated multivariate norm upper vector upper bound truncated multivariate norm ncores Number cores used simulation isChol boolean indicating sigma cholesky decomposition covariance matrix. keepNames Keep names either mean covariance matrix. threshold switching methods; can tuned maximum speed; three cases considered: case 1: < l < u case 2: l < u < -case 3: otherwise l=lower u = upper tol case 3 used possibilities, tol value controls acceptance rejection inverse-transformation; abs(u-l)>tol, uses accept-reject randn nlTol Tolerance newton line-search nlMaxiter Maximum iterations newton line-search","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"n==integer (default) output (n x d) matrix -th row -th simulated vector. .matrix(n) random vector store n, provided user, function returns NULL invisibly.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"John K. Salmon, Mark . Moraes, Ron O. Dror, David E. Shaw (2011). Parallel Random Numbers: Easy 1, 2, 3. D. E. Shaw Research, New York, NY 10036, USA. thread safe multivariate normal inspired mvnfast package Matteo Fasiolo https://CRAN.R-project.org/package=mvnfast concept truncated multivariate normal taken Zdravko Botev Botev (2017) doi:10.1111/rssb.12162 Botev L'Ecuyer (2015) doi:10.1109/WSC.2015.7408180 converted thread safe simulation;","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"Matthew Fidler, Zdravko Botev Matteo Fasiolo","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"","code":"## From mvnfast ## Unlike mvnfast, uses threefry simulation d <- 5 mu <- 1:d # Creating covariance matrix tmp <- matrix(rnorm(d^2), d, d) mcov <- tcrossprod(tmp, tmp) set.seed(414) rxRmvn(4, 1:d, mcov) #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 2.483107 6.938897 6.910732 7.5964797 #> [2,] -0.9739857 3.041282 6.229306 -1.526767 3.8730490 #> [3,] 2.4207266 3.456173 3.313576 5.525857 7.6456551 #> [4,] 1.2860568 1.475712 3.326761 -2.651293 0.7908656 set.seed(414) rxRmvn(4, 1:d, mcov) #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 2.483107 6.938897 6.910732 7.5964797 #> [2,] -0.9739857 3.041282 6.229306 -1.526767 3.8730490 #> [3,] 2.4207266 3.456173 3.313576 5.525857 7.6456551 #> [4,] 1.2860568 1.475712 3.326761 -2.651293 0.7908656 set.seed(414) rxRmvn(4, 1:d, mcov, ncores = 2) # r.v. generated on the second core are different #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 1.8084689 4.297630 7.977365 7.564832 #> [2,] 5.5150470 0.3966498 8.007903 8.341058 6.026243 #> [3,] -0.9739857 2.4356366 4.731163 3.460645 5.831939 #> [4,] 0.4524881 3.0939983 2.584720 2.797358 5.528742 ###### Here we create the matrix that will hold the simulated # random variables upfront. A <- matrix(NA, 4, d) class(A) <- \"numeric\" # This is important. We need the elements of A to be of class \"numeric\". set.seed(414) rxRmvn(A, 1:d, mcov, ncores = 2) # This returns NULL ... A # ... but the result is here #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 1.8084689 4.297630 7.977365 7.564832 #> [2,] 5.5150470 0.3966498 8.007903 8.341058 6.026243 #> [3,] -0.9739857 2.4356366 4.731163 3.460645 5.831939 #> [4,] 0.4524881 3.0939983 2.584720 2.797358 5.528742 ## You can also simulate from a truncated normal: rxRmvn(10, 1:d, mcov, lower = 1:d - 1, upper = 1:d + 1) #> [,1] [,2] [,3] [,4] [,5] #> [1,] 0.8049130 1.636456 3.048092 4.282005 4.797902 #> [2,] 1.0226637 1.667080 3.507530 4.459110 4.714118 #> [3,] 1.0579423 1.467899 3.121131 3.239619 4.934069 #> [4,] 0.6999089 2.048211 3.245750 3.275490 4.816539 #> [5,] 1.1674782 2.062341 2.755494 4.859300 5.170974 #> [6,] 1.1400382 1.626747 3.147992 4.157155 4.714692 #> [7,] 1.0986637 2.477932 2.562834 3.159794 5.327605 #> [8,] 0.9468902 1.995504 2.550678 4.921664 4.993267 #> [9,] 1.0225550 2.512505 2.996419 3.260261 4.891580 #> [10,] 0.7723391 2.080293 3.388499 4.736703 4.847944 # You can also simulate from different matrices (if they match # dimensions) by using a list of matrices. matL <- lapply(1:4, function(...) { tmp <- matrix(rnorm(d^2), d, d) tcrossprod(tmp, tmp) }) rxRmvn(4, setNames(1:d, paste0(\"a\", 1:d)), matL) #> a1 a2 a3 a4 a5 #> [1,] 3.8274046 2.1035743 0.5028009 4.5098402 5.189021 #> [2,] -0.9871330 3.8835057 6.0910523 5.1594862 4.132973 #> [3,] 3.4611290 6.9818905 2.4784421 5.1440327 8.310619 #> [4,] -2.6283293 -5.0190437 2.8076771 -0.5884730 1.060942 #> [5,] 0.3451536 0.5718889 3.7057607 4.3772555 3.829498 #> [6,] -1.1689889 1.9051966 4.0675628 2.0180889 5.571646 #> [7,] -1.7018538 -0.7786124 5.4574824 3.9037163 6.126236 #> [8,] -3.9766942 -0.8582446 5.4820712 -0.5706566 4.047896 #> [9,] 0.8420574 -0.4096991 3.9764994 4.7655857 4.167223 #> [10,] 1.3644751 5.2068446 1.3430378 3.6687705 8.175402 #> [11,] 1.5705584 3.1771677 1.9140454 6.9388794 5.757319 #> [12,] 0.6404211 11.0776336 5.3814729 10.6267879 6.349803 #> [13,] 0.2352059 0.8413157 -0.6291679 3.7003445 4.517157 #> [14,] 3.7622838 -1.0087429 0.1514493 0.7595107 4.988589 #> [15,] 0.4968318 3.1695539 6.2533925 3.9780854 5.781146 #> [16,] -3.7275917 2.3933661 1.3926983 6.3064293 2.905874"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":null,"dir":"Reference","previous_headings":"","what":"Load a model into a symengine environment — rxS","title":"Load a model into a symengine environment — rxS","text":"Load model symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Load a model into a symengine environment — rxS","text":"","code":"rxS(x, doConst = TRUE, promoteLinSens = FALSE, envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Load a model into a symengine environment — rxS","text":"x rxode2 object doConst Load constants environment well. promoteLinSens Promote solved linear compartment systems sensitivity-based solutions. envir default NULL; Environment put symengine variables .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Load a model into a symengine environment — rxS","text":"rxode2/symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Load a model into a symengine environment — rxS","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":null,"dir":"Reference","previous_headings":"","what":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"seeds engine based number cores used random number generation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"","code":"rxSeedEng(ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"ncores number cores use.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"","code":"rxSeedEng() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":null,"dir":"Reference","previous_headings":"","what":"rxSetControl options for UI object — rxSetControl","title":"rxSetControl options for UI object — rxSetControl","text":"rxSetControl options UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxSetControl options for UI object — rxSetControl","text":"","code":"rxSetControl(ui, control)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxSetControl options for UI object — rxSetControl","text":"ui rxode2 ui object control Default value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxSetControl options for UI object — rxSetControl","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxSetControl options for UI object — rxSetControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign covariates for piping — rxSetCovariateNamesForPiping","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"Assign covariates piping","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"","code":"rxSetCovariateNamesForPiping(covariates = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"covariates NULL (covariates), list covariates. nlmixr uses function set covariates pipe nlmixr fit.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"","code":"# First set the name of known covariates # Note this is case sensitive rxSetCovariateNamesForPiping(c(\"WT\",\"HT\", \"TC\")) one.compartment <- function() { ini({ tka <- 0.45 ; label(\"Log Ka\") tcl <- 1 ; label(\"Log Cl\") tv <- 3.45 ; label(\"Log V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.err <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d / dt(depot) <- -ka * depot d/dt(depot) <- -ka * depot d / dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.err) }) } # now TC is detected as a covariate instead of a population parameter one.compartment %>% model({ka <- exp(tka + eta.ka + TC * cov_C)}) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ add covariate `TC` (known covariate) #> ℹ add population parameter `cov_C` and set estimate to 1 #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.err cov_C #> 0.45 1.00 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tka eta.ka id TC*cov_C #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Log Ka\") #> tcl <- 1 #> label(\"Log Cl\") #> tv <- 3.45 #> label(\"Log V\") #> add.err <- c(0, 0.7) #> cov_C <- 1 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka + TC * cov_C) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.err) #> }) #> } # You can turn it off by simply adding it back rxSetCovariateNamesForPiping() one.compartment %>% model({ka <- exp(tka + eta.ka + TC * cov_C)}) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ add population parameter `TC` and set estimate to 1 #> ℹ add population parameter `cov_C` and set estimate to 1 #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.err TC cov_C #> 0.45 1.00 3.45 0.70 1.00 1.00 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Log Ka\") #> tcl <- 1 #> label(\"Log Cl\") #> tv <- 3.45 #> label(\"Log V\") #> add.err <- c(0, 0.7) #> TC <- 1 #> cov_C <- 1 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka + TC * cov_C) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.err) #> }) #> } # The covariates you set with `rxSetCovariateNamesForPiping()` # are turned off every time you solve (or fit in nlmixr)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":null,"dir":"Reference","previous_headings":"","what":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"Set Initial conditions time zero instead first observed/dosed time","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"","code":"rxSetIni0(ini0 = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"ini0 TRUE (default), set initial conditions time zero. Otherwise initial conditions first observed time.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"boolean ini0, though called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"Set variables model piping automatic covarite selection","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"","code":"rxSetPipingAuto( thetamodelVars = rex::rex(or(\"tv\", \"t\", \"pop\", \"POP\", \"Pop\", \"TV\", \"T\", \"cov\", \"err\", \"eff\")), covariateExceptions = rex::rex(start, or(\"wt\", \"sex\", \"crcl\", \"kout\"), end), etaParts = c(\"eta\", \"ETA\", \"Eta\", \"ppv\", \"PPV\", \"Ppv\", \"iiv\", \"Iiv\", \"bsv\", \"Bsv\", \"BSV\", \"bpv\", \"Bpv\", \"BPV\", \"psv\", \"PSV\", \"Psv\") )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"thetamodelVars prefixes theta model variables regular expression covariateExceptions regular expression covariates always covariates etaParts list eta prefixes/post-fixes identify variable subject variability","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"called startup set defaults, though can change wish piping can work differently individual setup","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":null,"dir":"Reference","previous_headings":"","what":"Defunct setting of product — rxSetProd","title":"Defunct setting of product — rxSetProd","text":"Defunct setting product","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Defunct setting of product — rxSetProd","text":"","code":"rxSetProd(type = c(\"long double\", \"double\", \"logify\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Defunct setting of product — rxSetProd","text":"type used type product","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Defunct setting of product — rxSetProd","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":null,"dir":"Reference","previous_headings":"","what":"Set timing for progress bar — rxSetProgressBar","title":"Set timing for progress bar — rxSetProgressBar","text":"Set timing progress bar","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set timing for progress bar — rxSetProgressBar","text":"","code":"rxSetProgressBar(seconds = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set timing for progress bar — rxSetProgressBar","text":"seconds sets number seconds need elapse drawing next segment progress bar. zero turns progress bar.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set timing for progress bar — rxSetProgressBar","text":"nothing, used side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set timing for progress bar — rxSetProgressBar","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the parallel seed for rxode2 random number generation — rxSetSeed","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"sets seed rxode2 parallel random number generation. set, whenever seed set threefry vandercorput simulation engine, use seed, increment number seeds continue sequence next time random number generator called.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"","code":"rxSetSeed(seed)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"seed integer represents rxode2 parallel internal random number generator seed. positive, use seed random number generation increment reseed parallel new engines called. negative, turn rxode2 seed generate seed R's uniform random number generator. Best practice set seed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"contrast, called, time vandercorput threefry simulation engines seeded comes uniform random number generated standard R random seed. may cause duplicate seed based R seed state. means correlations simulations exist avoid birthday problem picking exactly seed using seed state R random number generator. times seed called, likely becomes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"JD Cook. (2016). Random number generator seed mistakes. https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"","code":"rxSetSeed(42) # seed with generator 42 rxnorm() #> [1] -0.640542 # Use R's random number generator rnorm(1) #> [1] 0.04863385 rxSetSeed(42) # reproduces the same number rxnorm() #> [1] -0.640542 # But R's random number is not the same rnorm(1) #> [1] 1.220873 # If we reset this to use the R's seed # (internally rxode2 uses a uniform random number to span seeds) # This can lead to duplicate sequences and seeds rxSetSeed(-1) # Now set seed works for both. # This is not recommended, but illustrates the different types of # seeds that can be generated. set.seed(42) rxnorm() #> [1] 0.235007 rnorm(1) #> [1] -0.5646982 set.seed(42) rxnorm() #> [1] 0.235007 rnorm(1) #> [1] -0.5646982"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"Silence rxode2's C/C++ messages","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"","code":"rxSetSilentErr(silent)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"silent can 0L \"noisy\" 1L \"silent\"","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"TRUE; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":null,"dir":"Reference","previous_headings":"","what":"Defunct setting of sum — rxSetSum","title":"Defunct setting of sum — rxSetSum","text":"Defunct setting sum","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Defunct setting of sum — rxSetSum","text":"","code":"rxSetSum(type = c(\"pairwise\", \"fsum\", \"kahan\", \"neumaier\", \"c\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Defunct setting of sum — rxSetSum","text":"type used type product","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Defunct setting of sum — rxSetSum","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Setup the initial conditions. — rxSetupIni","title":"Setup the initial conditions. — rxSetupIni","text":"Setup initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Setup the initial conditions. — rxSetupIni","text":"","code":"rxSetupIni(obj, inits = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Setup the initial conditions. — rxSetupIni","text":"obj rxode2 object inits numeric vector initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Setup the initial conditions. — rxSetupIni","text":"initial conditions setup","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Setup the initial conditions. — rxSetupIni","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":null,"dir":"Reference","previous_headings":"","what":"Setup the initial conditions. — rxSetupScale","title":"Setup the initial conditions. — rxSetupScale","text":"Setup initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Setup the initial conditions. — rxSetupScale","text":"","code":"rxSetupScale(obj, scale = NULL, extraArgs = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Setup the initial conditions. — rxSetupScale","text":"obj rxode2 object scale numeric vector scales extraArgs list extra args parse initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Setup the initial conditions. — rxSetupScale","text":"setup scale changing compartment values","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Setup the initial conditions. — rxSetupScale","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":null,"dir":"Reference","previous_headings":"","what":"Use Shiny to help develop an rxode2 model — rxShiny","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"Use Shiny help develop rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"","code":"rxShiny( object, params = NULL, events = NULL, inits = NULL, ..., data = data.frame() ) # S3 method for class 'rxSolve' rxShiny( object, params = NULL, events = NULL, inits = NULL, ..., data = data.frame() ) # Default S3 method rxShiny( object = NULL, params = NULL, events = NULL, inits = NULL, ..., data = data.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"object rxode2 family objects. supplied 2-compartment indirect effect model used. supplied, use model associated rxode2 object model exploration. params Initial parameters model events Event information (currently ignored) inits Initial estimates model ... arguments passed rxShiny. Currently anything. data data like plot. data time variable well compartment calculated variable matches rxode2 model, data added plot specific compartment calculated variable.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"Nothing; Starts shiny server","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"Zufar Mulyukov Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"Simulate Parameters Theta/Omega specification","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"","code":"rxSimThetaOmega( params = NULL, omega = NULL, omegaDf = NULL, omegaLower = as.numeric(c(R_NegInf)), omegaUpper = as.numeric(c(R_PosInf)), omegaIsChol = FALSE, omegaSeparation = \"auto\", omegaXform = 1L, nSub = 1L, thetaMat = NULL, thetaLower = as.numeric(c(R_NegInf)), thetaUpper = as.numeric(c(R_PosInf)), thetaDf = NULL, thetaIsChol = FALSE, nStud = 1L, sigma = NULL, sigmaLower = as.numeric(c(R_NegInf)), sigmaUpper = as.numeric(c(R_PosInf)), sigmaDf = NULL, sigmaIsChol = FALSE, sigmaSeparation = \"auto\", sigmaXform = 1L, nCoresRV = 1L, nObs = 1L, dfSub = 0, dfObs = 0, simSubjects = TRUE, simVariability = as.logical(c(NA_LOGICAL)) )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"params Named Vector rxode2 model parameters omega Estimate Covariance matrix. omega list, assume block matrix convert full matrix simulations. omega NA using rxode2 ui model, subject variability described omega matrix set zero. omegaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. omegaLower Lower bounds simulated ETAs (default -Inf) omegaUpper Upper bounds simulated ETAs (default Inf) omegaIsChol Indicates omega supplied Cholesky decomposed matrix instead traditional symmetric matrix. omegaSeparation Omega separation strategy Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. omegaXform taking omega values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. nSub Number subject variabilities (ETAs) simulated every realization parameters. thetaMat Named theta matrix. thetaLower Lower bounds simulated population parameter variability (default -Inf) thetaUpper Upper bounds simulated population unexplained variability (default Inf) thetaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. thetaIsChol Indicates theta supplied Cholesky decomposed matrix instead traditional symmetric matrix. nStud Number virtual studies characterize uncertainty estimated parameters. sigma Named sigma covariance Cholesky decomposition covariance matrix. names columns indicate parameters simulated. simulated every observation solved system. sigma NA using rxode2 ui model, unexplained variability described sigma matrix set zero. sigmaLower Lower bounds simulated unexplained variability (default -Inf) sigmaUpper Upper bounds simulated unexplained variability (default Inf) sigmaDf Degrees freedom sigma t-distribution. default equivalent Inf, normal distribution. sigmaIsChol Boolean indicating sigma Cholesky decomposition instead symmetric covariance sigmaSeparation separation strategy sigma; Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. sigmaXform taking sigma values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. nCoresRV Number cores used simulation sigma variables. default 1. reproduce results need run platform number cores. reason set one, regardless number cores used threaded ODE solving. nObs Number observations simulate (sigma matrix) dfSub Degrees freedom sample subject variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. dfObs Degrees freedom sample unexplained variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. simSubjects boolean indicated rxode2 simulate subjects studies (TRUE, default) studies (FALSE) simVariability determines variability simulated. NA (default) determined solver.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"data frame simulated subjects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Options, Solving & Simulation of an ODE/solved system — rxSolve","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"uses rxode2 family objects, file, model specification solve ODE system. many options solved rxode2 model, first required object, events -times optional params inits.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"","code":"rxSolve( object, params = NULL, events = NULL, inits = NULL, scale = NULL, method = c(\"liblsoda\", \"lsoda\", \"dop853\", \"indLin\"), sigdig = NULL, atol = 1e-08, rtol = 1e-06, maxsteps = 70000L, hmin = 0, hmax = NA_real_, hmaxSd = 0, hini = 0, maxordn = 12L, maxords = 5L, ..., cores, covsInterpolation = c(\"locf\", \"linear\", \"nocb\", \"midpoint\"), naInterpolation = c(\"locf\", \"nocb\"), keepInterpolation = c(\"na\", \"locf\", \"nocb\"), addCov = TRUE, sigma = NULL, sigmaDf = NULL, sigmaLower = -Inf, sigmaUpper = Inf, nCoresRV = 1L, sigmaIsChol = FALSE, sigmaSeparation = c(\"auto\", \"lkj\", \"separation\"), sigmaXform = c(\"identity\", \"variance\", \"log\", \"nlmixrSqrt\", \"nlmixrLog\", \"nlmixrIdentity\"), nDisplayProgress = 10000L, amountUnits = NA_character_, timeUnits = \"hours\", theta = NULL, thetaLower = -Inf, thetaUpper = Inf, eta = NULL, addDosing = FALSE, stateTrim = Inf, updateObject = FALSE, omega = NULL, omegaDf = NULL, omegaIsChol = FALSE, omegaSeparation = c(\"auto\", \"lkj\", \"separation\"), omegaXform = c(\"variance\", \"identity\", \"log\", \"nlmixrSqrt\", \"nlmixrLog\", \"nlmixrIdentity\"), omegaLower = -Inf, omegaUpper = Inf, nSub = 1L, thetaMat = NULL, thetaDf = NULL, thetaIsChol = FALSE, nStud = 1L, dfSub = 0, dfObs = 0, returnType = c(\"rxSolve\", \"matrix\", \"data.frame\", \"data.frame.TBS\", \"data.table\", \"tbl\", \"tibble\"), seed = NULL, nsim = NULL, minSS = 10L, maxSS = 1000L, infSSstep = 12, strictSS = TRUE, istateReset = TRUE, subsetNonmem = TRUE, maxAtolRtolFactor = 0.1, from = NULL, to = NULL, by = NULL, length.out = NULL, iCov = NULL, keep = NULL, indLinPhiTol = 1e-07, indLinPhiM = 0L, indLinMatExpType = c(\"expokit\", \"Al-Mohy\", \"arma\"), indLinMatExpOrder = 6L, drop = NULL, idFactor = TRUE, mxhnil = 0, hmxi = 0, warnIdSort = TRUE, warnDrop = TRUE, ssAtol = 1e-08, ssRtol = 1e-06, safeZero = TRUE, safeLog = TRUE, safePow = TRUE, sumType = c(\"pairwise\", \"fsum\", \"kahan\", \"neumaier\", \"c\"), prodType = c(\"long double\", \"double\", \"logify\"), sensType = c(\"advan\", \"autodiff\", \"forward\", \"central\"), linDiff = c(tlag = 1.5e-05, f = 1.5e-05, rate = 1.5e-05, dur = 1.5e-05, tlag2 = 1.5e-05, f2 = 1.5e-05, rate2 = 1.5e-05, dur2 = 1.5e-05), linDiffCentral = c(tlag = TRUE, f = TRUE, rate = TRUE, dur = TRUE, tlag2 = TRUE, f2 = TRUE, rate2 = TRUE, dur2 = TRUE), resample = NULL, resampleID = TRUE, maxwhile = 1e+05, atolSens = 1e-08, rtolSens = 1e-06, ssAtolSens = 1e-08, ssRtolSens = 1e-06, simVariability = NA, nLlikAlloc = NULL, useStdPow = FALSE, naTimeHandle = c(\"ignore\", \"warn\", \"error\"), addlKeepsCov = FALSE, addlDropSs = TRUE, ssAtDoseTime = TRUE, ss2cancelAllPending = FALSE, envir = parent.frame() ) # S3 method for class '`function`' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'rxUi' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'rxode2tos' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'nlmixr2FitData' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'nlmixr2FitCore' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # Default S3 method rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'rxSolve' update(object, ...) # S3 method for class 'rxode2' predict(object, ...) # S3 method for class '`function`' predict(object, ...) # S3 method for class 'rxUi' predict(object, ...) # S3 method for class 'rxSolve' predict(object, ...) # S3 method for class 'rxEt' predict(object, ...) # S3 method for class 'rxParams' predict(object, ...) # S3 method for class 'rxode2' simulate(object, nsim = 1L, seed = NULL, ...) # S3 method for class 'rxSolve' simulate(object, nsim = 1L, seed = NULL, ...) # S3 method for class 'rxParams' simulate(object, nsim = 1L, seed = NULL, ...) # S3 method for class 'rxSolve' solve(a, b, ...) # S3 method for class 'rxUi' solve(a, b, ...) # S3 method for class '`function`' solve(a, b, ...) # S3 method for class 'rxode2' solve(a, b, ...) # S3 method for class 'rxParams' solve(a, b, ...) # S3 method for class 'rxEt' solve(a, b, ...) rxControl( ..., params = NULL, events = NULL, inits = NULL, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"object either rxode2 family objects, file-name rxode2 model specification, string rxode2 model specification. params numeric named vector values every parameter ODE system; names must correspond parameter identifiers used ODE specification; events eventTable object describing input (e.g., doses) dynamic system observation sampling time points (see eventTable()); inits vector initial values state variables (e.g., amounts compartment), order vector must state variables (e.g., PK/PD compartments); scale numeric named vector scaling ode parameters system. names must correspond parameter identifiers ODE specification. ODE variables divided scaling factor. example scale=c(center=2) divide center ODE variable 2. method method solving ODEs. Currently supports: \"liblsoda\" thread safe lsoda. supports parallel thread-based solving, ignores user Jacobian specification. \"lsoda\" – LSODA solver. support parallel thread-based solving, allows user Jacobian specification. \"dop853\" – DOP853 solver. support parallel thread-based solving user Jacobian specification \"indLin\" – Solving inductive linearization. rxode2 dll must setup specially use solving routine. sigdig Specifies \"significant digits\" ode solving requests. specified controls relative absolute tolerances ODE solvers. default tolerance 0.5*10^(-sigdig-2) regular ODEs. sensitivity equations default 0.5*10\\^(-sigdig-1.5) (sensitivity changes applicable liblsoda). also controls atol/rtol steady state solutions. ssAtol/ssRtol 0.5*10\\^(-sigdig) sensitivities 0.5*10\\^(-sigdig+0.625). default unspecified (NULL) uses standard atol/rtol. atol numeric absolute tolerance (1e-8 default) used ODE solver determine good solution achieved; also used solved linear model check prior doses add anything solution. rtol numeric relative tolerance (1e-6 default) used ODE solver determine good solution achieved. also used solved linear model check prior doses add anything solution. maxsteps maximum number (internally defined) steps allowed one call solver. (5000 default) hmin minimum absolute step size allowed. default value 0. hmax maximum absolute step size allowed. hmax=NA (default), uses average difference + hmaxSd*sd times sampling events. hmaxSd user specified parameter defaults zero. hmax=NULL rxode2 uses maximum difference times sampling events. value 0 equivalent infinite maximum absolute step size. hmaxSd number standard deviations time difference add hmax. default 0 hini step size attempted first step. default value determined solver (hini = 0) maxordn maximum order allowed nonstiff (Adams) method. default 12. can 1 12. maxords maximum order allowed stiff (BDF) method. default value 5. can 1 5. ... arguments including scaling factors compartment. includes S# = numeric scale compartment # dividing compartment amount scale factor, like NONMEM. cores Number cores used parallel ODE solving. equivalent calling setRxThreads() covsInterpolation specifies interpolation method time-varying covariates. solving ODEs often samples times outside sampling time specified events. happens, time varying covariates interpolated. Currently can : \"linear\" interpolation, interpolates covariate solving line observed covariates extrapolating new covariate value. \"locf\" – Last observation carried forward (default). \"nocb\" – Next Observation Carried Backward. method NONMEM uses. \"midpoint\" Last observation carried forward midpoint; Next observation carried backward midpoint. time-varying covariates missing value present, interpolation method use either \"locf\" \"nocb\" throughout type covariate interpolation selected. using linear midpoint interpolation, lower point interpolation use locf interpolate missing covariates upper point use nocb interpolate missing covariates. naInterpolation specifies interpolation method time-varying covariates instantaneous value NA (explicit interpolation) covsInterpolation either \"midpoint\" \"linear\". can : \"locf\" – last observation carried forward (default) \"nocb\" – next observation carried backward. look prior value (backwards/locf) instantaneously missing, next value instantaneously missing. covariates missing find end/beginning individual record, switch direction. really missing, return missing. keepInterpolation specifies interpolation method variables keep column. nlmixr2 creates mtime, addl doses etc, items originally dataset. interpolation methods can choose : \"locf\" – last observation carried forward (default) \"nocb\" – next observation carried backward. \"na\" – interpolation, simply put NA interpolated keep covariates. addCov boolean indicating covariates added output matrix data frame. default disabled. sigma Named sigma covariance Cholesky decomposition covariance matrix. names columns indicate parameters simulated. simulated every observation solved system. sigma NA using rxode2 ui model, unexplained variability described sigma matrix set zero. sigmaDf Degrees freedom sigma t-distribution. default equivalent Inf, normal distribution. sigmaLower Lower bounds simulated unexplained variability (default -Inf) sigmaUpper Upper bounds simulated unexplained variability (default Inf) nCoresRV Number cores used simulation sigma variables. default 1. reproduce results need run platform number cores. reason set one, regardless number cores used threaded ODE solving. sigmaIsChol Boolean indicating sigma Cholesky decomposition instead symmetric covariance sigmaSeparation separation strategy sigma; Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. sigmaXform taking sigma values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. nDisplayProgress integer indicating minimum number c-based solves progress bar shown. default 10,000. amountUnits supplies dose units data frame supplied instead event table. importing data rxode2 event table. timeUnits supplies time units data frame supplied instead event table. importing data rxode2 event table. theta vector parameters named THETA\\[#\\] added parameters thetaLower Lower bounds simulated population parameter variability (default -Inf) thetaUpper Upper bounds simulated population unexplained variability (default Inf) eta vector parameters named ETA\\[#\\] added parameters addDosing Boolean indicating solve add rxode2 EVID related columns. also include dosing information estimates doses. default, rxode2 includes estimates observations. (default FALSE). addDosing NULL, include EVID=0 solve exclude model-times EVID=2. addDosing NA classic rxode2 EVID events returned. addDosing TRUE add event information NONMEM-style format; subsetNonmem=FALSE rxode2 also include extra event types (EVID) ending infusion modeled times: EVID=-1 modeled rate infusions turned (matches rate=-1) EVID=-2 modeled duration infusions turned (matches rate=-2) EVID=-10 specified rate infusions turned (matches rate>0) EVID=-20 specified dur infusions turned (matches dur>0) EVID=101,102,103,... Modeled time 101 first model time, 102 second etc. stateTrim amounts/concentrations one states value, trim value. default Inf. Also trims -stateTrim large negative amounts/concentrations. want trim range say c(0, 2000000) may specify 2 values lower upper range make sure state values reasonable range. updateObject internally used flag update rxode2 solved object (supplying rxode2 solved object) well returning new object. probably modify FALSE default unless willing unexpected results. omega Estimate Covariance matrix. omega list, assume block matrix convert full matrix simulations. omega NA using rxode2 ui model, subject variability described omega matrix set zero. omegaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. omegaIsChol Indicates omega supplied Cholesky decomposed matrix instead traditional symmetric matrix. omegaSeparation Omega separation strategy Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. omegaXform taking omega values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. omegaLower Lower bounds simulated ETAs (default -Inf) omegaUpper Upper bounds simulated ETAs (default Inf) nSub Number subject variabilities (ETAs) simulated every realization parameters. thetaMat Named theta matrix. thetaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. thetaIsChol Indicates theta supplied Cholesky decomposed matrix instead traditional symmetric matrix. nStud Number virtual studies characterize uncertainty estimated parameters. dfSub Degrees freedom sample subject variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. dfObs Degrees freedom sample unexplained variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. returnType tells type object returned. currently supported types : \"rxSolve\" (default) return reactive data frame can change easily change different pieces solve update data frame. currently standard solving method rxode2, used rxSolve(object, ...), solve(object,...), \"data.frame\" – returns plain, non-reactive data frame; Currently slightly faster returnType=\"matrix\" \"matrix\" – returns plain matrix column names attached solved object. used object$run well object$solve \"data.table\" – returns data.table; data.table created reference (ie setDt()), fast. \"tbl\" \"tibble\" returns tibble format. seed object specifying random number generator initialized nsim represents number simulations. rxode2, supply single subject event tables (created [eventTable()]) minSS Minimum number iterations steady-state dose maxSS Maximum number iterations steady-state dose infSSstep Step size determining constant infusion reached steady state. default large value, 12. strictSS Boolean indicating strict steady-state required. strict steady-state (TRUE) required least minSS doses administered total number steady states doses continue maxSS reached, atol rtol every compartment reached. However, ODE solving problems occur minSS reached whole subject considered invalid solve. strictSS FALSE long minSS reached last good solve ODE solving problems occur considered steady state, even though either atol, rtol maxSS achieved. istateReset TRUE, reset ISTATE variable 1 lsoda liblsoda doses, like deSolve; FALSE, reset ISTATE variable doses. subsetNonmem subset NONMEM compatible EVIDs . default TRUE. maxAtolRtolFactor maximum atol/rtol FOCEi routines may adjust . default 0.1 observations event table, start observations value. default zero. observations event table, end observations value. default 24 + maximum dose time. observations event table, amount increment observations . length.number observations create observations event table. default 200. iCov data frame individual non-time varying covariates combine events dataset. iCov dataset one covariate per ID match event table keep Columns keep either input dataset iCov dataset. iCov dataset, column kept per line. input dataset, records added data LOCF (Last Observation Carried forward) imputation performed. indLinPhiTol requested accuracy tolerance exponential matrix. indLinPhiM maximum size Krylov basis indLinMatExpType matrix exponential type use rxode2. Currently following supported: Al-Mohy Uses exponential matrix method Al-Mohy Higham (2009) arma Use exponential matrix RcppArmadillo expokit Use exponential matrix Roger B. Sidje (1998) indLinMatExpOrder integer, order approximation used, Al-Mohy expokit values. best value depends machine precision (slightly matrix). use 6 default. drop Columns drop output idFactor boolean indicates original ID values maintained. changes default sequentially ordered ID factor original ID values original dataset. default enabled. mxhnil maximum number messages printed (per problem) warning T + H = T step (H = step size). must positive result non-default value. default value 0 (infinite). hmxi inverse maximum absolute value H used. hmxi = 0.0 allowed corresponds infinite hmax1 (default). hminandhmximay changed time, take effect next change ofHis considered. option considered withmethod=\"liblsoda\"`. warnIdSort Warn ID present rxode2 assumes order parameters/iCov order parameters input dataset. warnDrop Warn column(s) supposed dropped, present. ssAtol Steady state atol convergence factor. Can vector based state. ssRtol Steady state rtol convergence factor. Can vector based state. safeZero Use safe zero divide. default turned may turn wish. safeLog Use safe log. enabled value taking log() negative zero, return log(machine epsilon). default turned . safePow Use safe powers. enabled power negative base zero, return machine epsilon^(negative power). default turned . sumType Sum type use sum() rxode2 code blocks. pairwise uses pairwise sum (fast, default) fsum uses PreciseSum package's fsum function (accurate) kahan uses Kahan correction neumaier uses Neumaier correction c uses correction: default/native summing prodType Product use prod() rxode2 blocks long double converts long double, performs multiplication converts back. double uses standard double scale multiplication. sensType Sensitivity type linCmt() model: advan Use direct advan solutions autodiff Use autodiff advan solutions forward Use forward difference solutions central Use central differences linDiff gives linear difference amount types linear compartment model parameters sensitivities calculated. named components numeric vector : \"lag\" Central compartment lag \"f\" Central compartment bioavailability \"rate\" Central compartment modeled rate \"dur\" Central compartment modeled duration \"lag2\" Depot compartment lag \"f2\" Depot compartment bioavailability \"rate2\" Depot compartment modeled rate \"dur2\" Depot compartment modeled duration linDiffCentral gives parameters use central differences linear compartment model parameters. components linDiff resample character vector model variables resample input dataset; sampling done replacement. NULL FALSE resampling done. TRUE resampling done covariates input dataset resampleID boolean representing resampling done individual basis TRUE (ie. whole patient selected) covariate resampled independent subject identifier FALSE. resampleID=TRUE correlations parameters retained, resampleID=FALSE ignores patient covariate correaltions. Hence default resampleID=TRUE. maxwhile represents maximum times loop evaluated exiting. default 100000 atolSens Sensitivity atol, can different atol liblsoda. allows less accurate solve gradients (desired) rtolSens Sensitivity rtol, can different rtol liblsoda. allows less accurate solve gradients (desired) ssAtolSens Sensitivity absolute tolerance (atol) calculating steady state achieved sensitivity compartments. ssRtolSens Sensitivity relative tolerance (rtol) calculating steady state achieved sensitivity compartments. simVariability determines variability simulated. NA (default) determined solver. nLlikAlloc number log likelihood endpoints used model. allows independent log likelihood per endpoint focei nlmixr2. likely set, though hurt anything (just may take memory larger allocations). useStdPow uses C's pow exponentiation instead R's R_pow R_pow_di. default FALSE naTimeHandle Determines time handling happens time becomes NA: current options : ignore ignores NA time input passes . warn (default) produce warning end solve, continues solving passing NA time error stop solve parallel solved ODE (otherwise stopping can crash R) addlKeepsCov determines additional dosing items repeats dose (FALSE) keeps covariates record dose (TRUE) addlDropSs steady state doses addl specification steady state flag dropped repeated doses (TRUE) retained (FALSE) ssAtDoseTime Boolean TRUE back calculates steady concentration actual time dose, otherwise FALSE doses shifted ss2cancelAllPending TRUE SS=2 event type cancels pending doses like SS=1. FALSE pending doses canceled SS=2 (infusions started SS=2 occurred canceled, though). envir environment look R user functions (defaults parent environment) using solve(), equivalent object argument. specify object later argument list overwrites parameter. b using solve(), equivalent params argument. specify params named argument, overwrites output","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"“rxSolve” solve object stores solved value special data.frame type determined returnType. default many rows sampled time points many columns system variables (defined ODEs additional assignments rxode2 model code). also stores information call allow dynamic updating solved object. operations object similar data-frame, expand $ [[\"\"]] access operators assignment operators resolve based different parameter values, initial conditions, solver parameters, events (updating time variable). can call eventTable() methods solved object update event table resolve system equations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"rest document focus different ODE solving methods, followed core solving method's options, rxode2 event handling options, rxode2's numerical stability options, rxode2's output options, finally internal rxode2 options compatibility options.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"\"New Scaling Squaring Algorithm Matrix Exponential\", Awad H. Al-Mohy Nicholas J. Higham, August 2009 Roger B. Sidje (1998). EXPOKIT: Software package computing matrix exponentials. ACM - Transactions Mathematical Software 24(1), 130-156. Hindmarsh, . C. ODEPACK, Systematized Collection ODE Solvers. Scientific Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pp. 55-64. Petzold, L. R. Automatic Selection Methods Solving Stiff Nonstiff Systems Ordinary Differential Equations. Siam J. Sci. Stat. Comput. 4 (1983), pp. 136-148. Hairer, E., Norsett, S. P., Wanner, G. Solving ordinary differential equations , nonstiff problems. 2nd edition, Springer Series Computational Mathematics, Springer-Verlag (1993).","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"Matthew Fidler, Melissa Hallow Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveFree.html","id":null,"dir":"Reference","previous_headings":"","what":"Free the C solving/parsing information. — rxSolveFree","title":"Free the C solving/parsing information. — rxSolveFree","text":"Take ODE C system free .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveFree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Free the C solving/parsing information. — rxSolveFree","text":"","code":"rxSolveFree()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveFree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Free the C solving/parsing information. — rxSolveFree","text":"logical indicating memory successfully freed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":null,"dir":"Reference","previous_headings":"","what":"See if the memory is installed for a solve — rxSolveSetup","title":"See if the memory is installed for a solve — rxSolveSetup","text":"See memory installed solve","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"See if the memory is installed for a solve — rxSolveSetup","text":"","code":"rxSolveSetup()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"See if the memory is installed for a solve — rxSolveSetup","text":"boolean saying memnory currently free rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"See if the memory is installed for a solve — rxSolveSetup","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":null,"dir":"Reference","previous_headings":"","what":"This function splits a function based on + or - terms — rxSplitPlusQ","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"uses parser disturb terms within functions. example:","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"","code":"rxSplitPlusQ(x, level = 0, mult = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"x Quoted R expression splitting level Internal level parsing mult boolean split based * / expressions instead. default turned .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"character vector split expressions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"aexp(b+c)+dlog(e-f)-g*f return c(\"* exp(b + c)\", \"d * log(e - f)\", \"- g * f\")","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":null,"dir":"Reference","previous_headings":"","what":"Stack a solved object for things like default ggplot2 plot — rxStack","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"Stack solved object things like default ggplot2 plot","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"","code":"rxStack(data, vars = NULL, doSim = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"data rxode2 object stacked. vars Variables include stacked data; default variables vars NULL. vars sim comes rxode2 ui simulation multiple endpoints (ie CMT simulation), rework data stacked based value based compartments multiple endpoint model. vars sim.endpoint1 subset stack endpoint1, can also `c(\"sim.endpoint1\", \"sim.endpoint2\") \"stack\" subset endpoint1 endpoint2. specify sim type variables prefixed sim otherwise, stack treat differently. doSim boolean determines \"sim\" variable rxSolve dataset actually \"stacking\" based endpoint (TRUE) simply treating sim variable.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"Stacked data value trt, value values trt state lhs variables.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":null,"dir":"Reference","previous_headings":"","what":"State variables — rxState","title":"State variables — rxState","text":"returns model's compartments states.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"State variables — rxState","text":"","code":"rxState(obj = NULL, state = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"State variables — rxState","text":"obj rxode2 family objects state string indicating state compartment like lookup.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"State variables — rxState","text":"state missing, return character vector states. state string, return compartment number named state.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"State variables — rxState","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Recast model in terms of sum/prod — rxSumProdModel","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"Recast model terms sum/prod","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"","code":"rxSumProdModel(model, expand = FALSE, sum = TRUE, prod = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"model rxode2 model expand Boolean indicating expression expanded. sum Use sum(...) prod Use prod(...)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"model string prod(.) sum(.) operations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":null,"dir":"Reference","previous_headings":"","what":"Get list of supported functions — rxSupportedFuns","title":"Get list of supported functions — rxSupportedFuns","text":"Get list supported functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get list of supported functions — rxSupportedFuns","text":"","code":"rxSupportedFuns()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get list of supported functions — rxSupportedFuns","text":"list supported functions rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get list of supported functions — rxSupportedFuns","text":"","code":"rxSupportedFuns() #> [1] \"gammafn\" \"lgammafn\" \"lgamma\" #> [4] \"loggamma\" \"digamma\" \"trigamma\" #> [7] \"tetragamma\" \"pentagamma\" \"cospi\" #> [10] \"sinpi\" \"tanpi\" \"log1p\" #> [13] \"expm1\" \"factorial\" \"lfactorial\" #> [16] \"lgamma1p\" \"log10\" \"log2\" #> [19] \"log1pexp\" \"phi\" \"pnorm\" #> [22] \"normcdf\" \"qnorm\" \"fabs\" #> [25] \"pow\" \"R_pow\" \"R_pow_di\" #> [28] \"Rx_pow_di\" \"Rx_pow\" \"lbeta\" #> [31] \"abs\" \"acos\" \"acosh\" #> [34] \"asin\" \"asinh\" \"atan\" #> [37] \"atan2\" \"atanh\" \"beta\" #> [40] \"cos\" \"cosh\" \"erf\" #> [43] \"erfc\" \"exp\" \"gamma\" #> [46] \"linCmtA\" \"linCmtC\" \"linCmtB\" #> [49] \"log\" \"polygamma\" \"rxTBS\" #> [52] \"rxTBSi\" \"rxTBSd\" \"rxTBSd2\" #> [55] \"sin\" \"sinh\" \"sqrt\" #> [58] \"tan\" \"tanh\" \"gammap\" #> [61] \"floor\" \"round\" \"ceil\" #> [64] \"trunc\" \"bessel_i\" \"bessel_j\" #> [67] \"bessel_k\" \"bessel_y\" \"logspace_add\" #> [70] \"logspace_sub\" \"fmax2\" \"fmin2\" #> [73] \"sign\" \"fsign\" \"fprec\" #> [76] \"fround\" \"ftrunc\" \"transit\" #> [79] \"gammaq\" \"gammapDer\" \"gammapInv\" #> [82] \"gammapInva\" \"gammaqInv\" \"gammaqInva\" #> [85] \"lowergamma\" \"uppergamma\" \"max\" #> [88] \"min\" \"logit\" \"expit\" #> [91] \"probit\" \"probitInv\" \"tlast\" #> [94] \"tfirst\" \"lag\" \"lead\" #> [97] \"dose\" \"podo\" \"dabs\" #> [100] \"dabs2\" \"abs1\" \"dabs1\" #> [103] \"erfinv\" \"abs0\" \"dosenum\" #> [106] \"first\" \"last\" \"diff\" #> [109] \"is.nan\" \"is.na\" \"is.finite\" #> [112] \"is.infinite\" \"llikPois\" \"llikPoisDlambda\" #> [115] \"llikBinom\" \"llikBinomDprob\" \"llikNbinom\" #> [118] \"llikNbinomDprob\" \"llikNbinomMu\" \"llikNbinomMuDmu\" #> [121] \"llikBeta\" \"llikBetaDshape1\" \"llikBetaDshape2\" #> [124] \"llikT\" \"llikTDdf\" \"llikTDmean\" #> [127] \"llikTDsd\" \"llikChisq\" \"llikChisqDdf\" #> [130] \"llikExp\" \"llikExpDrate\" \"llikF\" #> [133] \"llikFDdf1\" \"llikFDdf2\" \"llikGeom\" #> [136] \"llikGeomDprob\" \"llikUnif\" \"llikUnifDalpha\" #> [139] \"llikUnifDbeta\" \"llikWeibull\" \"llikWeibullDshape\" #> [142] \"llikWeibullDscale\" \"llikGamma\" \"llikGammaDshape\" #> [145] \"llikGammaDrate\" \"llikCauchy\" \"llikCauchyDlocation\" #> [148] \"llikCauchyDscale\" \"llikNorm\" \"llikNormDmean\" #> [151] \"llikNormDsd\" \"llikXPois\" \"llikXPoisDlambda\" #> [154] \"llikXBinom\" \"llikXBinomDprob\" \"llikXNbinomMu\" #> [157] \"llikXNbinomMuDmu\" \"llikXNbinom\" \"llikXNbinomDprob\" #> [160] \"llikXBeta\" \"llikXBetaDshape1\" \"llikXBetaDshape2\" #> [163] \"llikXT\" \"llikXTDdf\" \"llikXTDmean\" #> [166] \"llikXTDsd\" \"llikXChisq\" \"llikXChisqDdf\" #> [169] \"llikXExp\" \"llikXExpDrate\" \"llikXF\" #> [172] \"llikXFDdf1\" \"llikXFDdf2\" \"llikXGeom\" #> [175] \"llikXGeomDprob\" \"llikXUnif\" \"llikXUnifDalpha\" #> [178] \"llikXUnifDbeta\" \"llikXWeibull\" \"llikXWeibullDshape\" #> [181] \"llikXWeibullDscale\" \"llikXGamma\" \"llikXGammaDshape\" #> [184] \"llikXGammaDrate\" \"llikXCauchy\" \"llikXCauchyDlocation\" #> [187] \"llikXCauchyDscale\" \"llikXNorm\" \"llikXNormDmean\" #> [190] \"llikXNormDsd\" \"ReLU\" \"dReLU\" #> [193] \"GELU\" \"dGELU\" \"d2GELU\" #> [196] \"d3GELU\" \"d4GELU\" \"ELU\" #> [199] \"dELU\" \"d2ELU\" \"d2aELU\" #> [202] \"dELUa\" \"d2ELUa\" \"softplus\" #> [205] \"dsoftplus\" \"d2softplus\" \"d3softplus\" #> [208] \"d4softplus\" \"SELU\" \"dSELU\" #> [211] \"lReLU\" \"dlReLU\" \"PReLU\" #> [214] \"dPReLU\" \"d2PReLU\" \"dPReLUa\" #> [217] \"dPReLUa1\" \"Swish\" \"dSwish\" #> [220] \"linCmt\" \"rnorm\" \"rxnorm\" #> [223] \"rxbinom\" \"rbinom\" \"rxcauchy\" #> [226] \"rcauchy\" \"rchisq\" \"rxchisq\" #> [229] \"rexp\" \"rxexp\" \"rbeta\" #> [232] \"rxbeta\" \"rgeom\" \"rxgeom\" #> [235] \"rxpois\" \"rpois\" \"rxt\" #> [238] \"rt\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":null,"dir":"Reference","previous_headings":"","what":"Respect suppress messages — rxSuppressMsg","title":"Respect suppress messages — rxSuppressMsg","text":"turns silent REprintf C suppressMessages() turned . makes REprintf act like messages R, can suppressed suppressMessages()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Respect suppress messages — rxSuppressMsg","text":"","code":"rxSuppressMsg()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Respect suppress messages — rxSuppressMsg","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Respect suppress messages — rxSuppressMsg","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Respect suppress messages — rxSuppressMsg","text":"","code":"# rxSupressMsg() is called with rxode2() # Note the errors are output to the console try(rxode2(\"d/dt(matt)=/3\"), silent = TRUE) #> #> # When using suppressMessages, the output is suppressed suppressMessages(try(rxode2(\"d/dt(matt)=/3\"), silent = TRUE)) # In rxode2, we use REprintf so that interrupted threads do not crash R # if there is a user interrupt. This isn't captured by R's messages, but # This interface allows the `suppressMessages()` to suppress the C printing # as well # If you want to suppress messages from rxode2 in other packages, you can use # this function"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Omega^-1 and derivatives — rxSymInvChol","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"Get Omega^-1 derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"","code":"rxSymInvChol( invObjOrMatrix, theta = NULL, type = \"cholOmegaInv\", thetaNumber = 0L )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"invObjOrMatrix Object inverse-type calculations. matrix, setup object inversion rxSymInvCholCreate() default arguments return reactive s3 object. Otherwise, use inversion object calculate requested derivative/inverse. theta Thetas used calculation. missing (NULL), special s3 class created returned access Omega^1 objects needed cache based theta used. type type object. Currently following types supported: cholOmegaInv gives Cholesky decomposition Omega Inverse matrix. omegaInv gives Omega Inverse matrix. d(omegaInv) gives d(Omega^-1) withe respect theta parameter specified thetaNumber. d(D) gives d(diagonal(Omega^-1)) respect theta parameter specified thetaNumber parameter thetaNumber types d(omegaInv) d(D), theta number derivative taken . must positive 1 number thetas defining Omega matrix.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"Matrix based parameters environment matrixes calculated variables omega, omegaInv, dOmega, dOmegaInv.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"Creates object calculating Omega/Omega^-1 derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"","code":"rxSymInvCholCreate( mat, diag.xform = c(\"sqrt\", \"log\", \"identity\"), create.env = TRUE, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"mat Initial Omega matrix diag.xform transformation diagonal elements OMEGA. chol(Omega^-1) create.env – Create environment calculate inverses. (default TRUE) envir – Environment evaluate function, bu default parent frame.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"rxSymInv object rxSymInv environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholN.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","title":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","text":"Return dimension built-derivatives/inverses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","text":"","code":"rxSymInvCholN()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","text":"dimension built-derivatives/inverses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":null,"dir":"Reference","previous_headings":"","what":"Sync options with rxode2 variables — rxSyncOptions","title":"Sync options with rxode2 variables — rxSyncOptions","text":"Accessing rxode2 options via getOption slows solving. allows options synced variables.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sync options with rxode2 variables — rxSyncOptions","text":"","code":"rxSyncOptions(setDefaults = c(\"none\", \"permissive\", \"strict\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sync options with rxode2 variables — rxSyncOptions","text":"setDefaults setup rxode2's default solving options following options: \"none\" leave options alone \"permissive\" permissive option set similar R language specifications. \"strict\" strict option set similar original rxode2(). requires semicolons end lines equals assignment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sync options with rxode2 variables — rxSyncOptions","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Sync options with rxode2 variables — rxSyncOptions","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyntaxFunctions.html","id":null,"dir":"Reference","previous_headings":"","what":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","title":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","text":"list description Rode supported syntax functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyntaxFunctions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","text":"","code":"rxSyntaxFunctions"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyntaxFunctions.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","text":"data frame 3 columns 102 rows Function Reserved function Name Description Description function Aliases Function Aliases","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTempDir.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 temporary directory — rxTempDir","title":"Get the rxode2 temporary directory — rxTempDir","text":"Get rxode2 temporary directory","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTempDir.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 temporary directory — rxTempDir","text":"","code":"rxTempDir()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTempDir.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 temporary directory — rxTempDir","text":"rxode2 temporary directory.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":null,"dir":"Reference","previous_headings":"","what":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"rxTheme ggplot2 theme rxode2 plots","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"","code":"rxTheme( base_size = 11, base_family = \"\", base_line_size = base_size/22, base_rect_size = base_size/22, grid = TRUE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"base_size base font size, given pts. base_family base font family base_line_size base size line elements base_rect_size base size rect elements grid Boolean indicating grid (TRUE) (FALSE). also character indicating x y.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"ggplot2 theme used rxode2","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":null,"dir":"Reference","previous_headings":"","what":"rxode2 to symengine environment — rxToSE","title":"rxode2 to symengine environment — rxToSE","text":"rxode2 symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxode2 to symengine environment — rxToSE","text":"","code":"rxToSE( x, envir = NULL, progress = FALSE, promoteLinSens = TRUE, parent = parent.frame() ) .rxToSE(x, envir = NULL, progress = FALSE) rxFromSE( x, unknownDerivatives = c(\"forward\", \"central\", \"error\"), parent = parent.frame() ) .rxFromSE(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxode2 to symengine environment — rxToSE","text":"x expression envir default NULL; Environment put symengine variables . progress shows progress bar true. promoteLinSens Promote solved linear compartment systems sensitivity-based solutions. parent parent environment look R-based user functions unknownDerivatives handling derivatives unknown functions, translator translate different types numeric derivatives. currently supported methods :","code":"- `forward` for forward differences - `central` for central differences - `error` for throwing an error for unknown derivatives"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxode2 to symengine environment — rxToSE","text":"rxode2 symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxode2 to symengine environment — rxToSE","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate the model to C code if needed — rxTrans","title":"Translate the model to C code if needed — rxTrans","text":"function translates model C code, needed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate the model to C code if needed — rxTrans","text":"","code":"rxTrans( model, modelPrefix = \"\", md5 = \"\", modName = NULL, modVars = FALSE, ... ) # Default S3 method rxTrans( model, modelPrefix = \"\", md5 = \"\", modName = NULL, modVars = FALSE, ... ) # S3 method for class 'character' rxTrans( model, modelPrefix = \"\", md5 = \"\", modName = NULL, modVars = FALSE, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate the model to C code if needed — rxTrans","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . modelPrefix Prefix model functions compiled make sure multiple rxode2 objects can coexist R session. md5 md5 model parsing, used embed md5 DLL, provide functions like rxModelVars(). modName string used model name. string used naming various aspects computations, including generating C symbol names, dynamic libraries, etc. Therefore, necessary modName consists simple ASCII alphanumeric characters starting letter. modVars returns model variables instead named vector translated properties. ... Ignored parameters.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Translate the model to C code if needed — rxTrans","text":"named vector translated model properties including type jacobian specified, C function prefixes, well C functions names called compiled model.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Translate the model to C code if needed — rxTrans","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":null,"dir":"Reference","previous_headings":"","what":"This function is called when processing rxode2 user functions from the models — rxUdfUi","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"function called processing rxode2 user functions models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"","code":"rxUdfUi(fun)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"fun function needs parsed changed. R language expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"needs return list following elements: iniDf – modified initial estimate data.frame – model code needs added current line – model code needs added current line replace – replacement code user function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the control that is being processed or setup control for processing — rxUdfUiControl","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"Return control processed setup control processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"","code":"rxUdfUiControl(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"value specified, assigns control processed, resets assigning NULL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"value data.frame processed NULL.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"","code":"rxUdfUiControl()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"Return data.frame processed setup data.frame processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"","code":"rxUdfUiData(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"value specified, assigns data.frame processed, resets assigning NULL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"value data.frame processed NULL.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"","code":"rxUdfUiData() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the current estimation method for the UI processing — rxUdfUiEst","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"Return current estimation method UI processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"","code":"rxUdfUiEst(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"value specified, assigns character value estimation method NULL nothing estimated","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"value estimation method processed NULL","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"","code":"rxUdfUiEst() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"Get rxode2 iniDf current UI processed (return NULL)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"","code":"rxUdfUiIniDf()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"Initial data.frame processed NULL nothing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"","code":"rxUdfUiIniDf() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the lhs parsed language expression — rxUdfUiIniLhs","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"Return lhs parsed language expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"","code":"rxUdfUiIniLhs()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"lhs language expression NULL","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"","code":"rxUdfUiIniLhs() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"Return model variables processed setup model variables processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"","code":"rxUdfUiMv(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"value specified, assigns model variables processed, resets assigning NULL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"value modelVariables processed NULL.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"","code":"rxUdfUiMv() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":null,"dir":"Reference","previous_headings":"","what":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"called outside function parsing input unexpected returns 1L. useful writing replacement UI functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"","code":"rxUdfUiNum()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"integer greater 1L","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"","code":"rxUdfUiNum() #> [1] 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":null,"dir":"Reference","previous_headings":"","what":"Returns if the current ui function is being parsed — rxUdfUiParsing","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"Returns current ui function parsed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"","code":"rxUdfUiParsing()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"logical current ui function parsed","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"","code":"rxUdfUiParsing() #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":null,"dir":"Reference","previous_headings":"","what":"Reset the rxode2 ui environment variables — rxUdfUiReset","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"Reset rxode2 ui environment variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"","code":"rxUdfUiReset()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"NULL silently","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"","code":"rxUdfUiReset()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":null,"dir":"Reference","previous_headings":"","what":"Compress/Decompress rxode2 ui — rxUiDecompress","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"Compress/Decompress rxode2 ui","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"","code":"rxUiDecompress(ui) rxUiCompress(ui)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"ui rxode2 ui object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"compressed decompressed rxui object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"","code":"one.cmt <- function() { ini({ ## You may label each parameter with a comment tka <- 0.45 # Log Ka tcl <- log(c(0, 2.7, 100)) # Log Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- 3.45; label(\"log V\") ## the label(\"Label name\") works with all models eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) | tmp }) } f <- rxode2(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(class(f)) #> [1] \"rxUi\" \"raw\" print(is.environment(f)) #> [1] FALSE f <- rxUiDecompress(f) print(class(f)) #> [1] \"rxUi\" print(is.environment(f)) #> [1] TRUE f <- rxUiCompress(f) print(class(f)) #> [1] \"rxUi\" \"raw\" print(is.environment(f)) #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":null,"dir":"Reference","previous_headings":"","what":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"generic function deparsing certain objects printing rxode2 object. Currently used meta-information rxUiDeparse.rxControl(rxControl(covsInterpolation=\"linear\", method=\"dop853\", naInterpolation=\"nocb\", keepInterpolation=\"nocb\", sigmaXform=\"variance\", omegaXform=\"variance\", returnType=\"data.frame\", sumType=\"fsum\", prodType=\"logify\", sensType=\"central\"), \"ctl\")","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"","code":"rxUiDeparse(object, var) # S3 method for class 'lotriFix' rxUiDeparse(object, var) # Default S3 method rxUiDeparse(object, var) # S3 method for class 'rxControl' rxUiDeparse(object, var)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"object object deparsed var variable name assigned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"parsed R expression can used printing .function() calls.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"","code":"mat <- matrix(c(1, 0.1, 0.1, 1), 2, 2, dimnames=list(c(\"a\", \"b\"), c(\"a\", \"b\"))) rxUiDeparse(matrix(c(1, 0.1, 0.1, 1), 2, 2, dimnames=list(c(\"a\", \"b\"), c(\"a\", \"b\"))), \"x\") #> x <- lotri({ #> a ~ 1 #> b ~ c(0.1, 1) #> })"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":null,"dir":"Reference","previous_headings":"","what":"S3 for getting information from UI model — rxUiGet.cmtLines","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"S3 getting information UI model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"","code":"# S3 method for class 'cmtLines' rxUiGet(x, ...) # S3 method for class 'dvidLine' rxUiGet(x, ...) # S3 method for class 'paramsLine' rxUiGet(x, ...) # S3 method for class 'interpLines' rxUiGet(x, ...) # S3 method for class 'simulationSigma' rxUiGet(x, ...) # S3 method for class 'simulationModel' rxUiGet(x, ...) # S3 method for class 'symengineModelNoPrune' rxUiGet(x, ...) # S3 method for class 'symengineModelPrune' rxUiGet(x, ...) # S3 method for class 'simulationIniModel' rxUiGet(x, ...) rxUiGet(x, ...) # S3 method for class 'levels' rxUiGet(x, ...) # S3 method for class 'state' rxUiGet(x, ...) # S3 method for class 'stateDf' rxUiGet(x, ...) # S3 method for class 'statePropDf' rxUiGet(x, ...) # S3 method for class 'props' rxUiGet(x, ...) # S3 method for class 'theta' rxUiGet(x, ...) # S3 method for class 'lstChr' rxUiGet(x, ...) # S3 method for class 'omega' rxUiGet(x, ...) # S3 method for class 'funTxt' rxUiGet(x, ...) # S3 method for class 'allCovs' rxUiGet(x, ...) # S3 method for class 'muRefTable' rxUiGet(x, ...) # S3 method for class 'multipleEndpoint' rxUiGet(x, ...) # S3 method for class 'funPrint' rxUiGet(x, ...) # S3 method for class 'fun' rxUiGet(x, ...) # S3 method for class 'md5' rxUiGet(x, ...) # S3 method for class 'ini' rxUiGet(x, ...) # S3 method for class 'iniFun' rxUiGet(x, ...) # S3 method for class 'modelFun' rxUiGet(x, ...) # S3 method for class 'model' rxUiGet(x, ...) # S3 method for class 'modelDesc' rxUiGet(x, ...) # S3 method for class 'thetaLower' rxUiGet(x, ...) # S3 method for class 'thetaUpper' rxUiGet(x, ...) # S3 method for class 'lhsVar' rxUiGet(x, ...) # S3 method for class 'varLhs' rxUiGet(x, ...) # S3 method for class 'lhsEta' rxUiGet(x, ...) # S3 method for class 'lhsTheta' rxUiGet(x, ...) # S3 method for class 'lhsCov' rxUiGet(x, ...) # S3 method for class 'etaLhs' rxUiGet(x, ...) # S3 method for class 'thetaLhs' rxUiGet(x, ...) # S3 method for class 'covLhs' rxUiGet(x, ...) # Default S3 method rxUiGet(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"x list (UIenvironment, exact). UI environment parsed function rxode2. exact boolean says exact match required. ... arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"value requested UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":null,"dir":"Reference","previous_headings":"","what":"Unloads all rxode2 compiled DLLs — rxUnloadAll","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"Unloads rxode2 compiled DLLs","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"","code":"rxUnloadAll()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"List rxode2 dlls still loaded boolean rxode2 dlls unloaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"","code":"print(rxUnloadAll()) #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":null,"dir":"Reference","previous_headings":"","what":"Use model object in your package — rxUse","title":"Use model object in your package — rxUse","text":"Use model object package","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use model object in your package — rxUse","text":"","code":"rxUse(obj, overwrite = TRUE, compress = \"bzip2\", internal = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use model object in your package — rxUse","text":"obj model save. overwrite default, use_data() overwrite existing files. really want , set TRUE. compress Choose type compression used save(). one \"gzip\", \"bzip2\", \"xz\". internal run internally. default FALSE","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use model object in your package — rxUse","text":"Nothing; used side effects called user","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"Validate rxode2 allows easy validation/qualification nlmixr running testing suite system.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"","code":"rxValidate(type = NULL, skipOnCran = TRUE) rxTest(type = NULL, skipOnCran = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"type Type test filter test type, expression, evaluate contents, respecting skipOnCran skipOnCran TRUE skip test CRAN.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":null,"dir":"Reference","previous_headings":"","what":"Version and repository for this dparser package. — rxVersion","title":"Version and repository for this dparser package. — rxVersion","text":"Version repository dparser package.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Version and repository for this dparser package. — rxVersion","text":"","code":"rxVersion( extra = \"\", echo = FALSE, version = sessionInfo()$otherPkgs$rxode2$Version )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Version and repository for this dparser package. — rxVersion","text":"extra extra text display logo echo Boolean echo text logo, default FALSE version Version display/return","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Version and repository for this dparser package. — rxVersion","text":"character vector version repository.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Version and repository for this dparser package. — rxVersion","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":null,"dir":"Reference","previous_headings":"","what":"Preserved seed and possibly set the seed — rxWithSeed","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"Preserved seed possibly set seed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"","code":"rxWithSeed( seed, code, rxseed = rxGetSeed(), kind = \"default\", normal.kind = \"default\", sample.kind = \"default\" ) rxWithPreserveSeed(code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"seed R seed use session code code evaluate rxseed rxode2 seed preserved kind character NULL. kind character string, set R's RNG kind desired. Use \"default\" return R default. See ‘Details’ interpretation NULL. normal.kind character string NULL. character string, set method Normal generation. Use \"default\" return R default. NULL makes change. sample.kind character string NULL. character string, set method discrete uniform generation (used sample, instance). Use \"default\" return R default. NULL makes change.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"returns whatever code returning","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"","code":"rxGetSeed() #> [1] -1 rxWithSeed(1, { print(rxGetSeed()) rxnorm() print(rxGetSeed()) rxnorm() }, rxseed=3) #> [1] 3 #> [1] 5 #> [1] 0.03291887"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate beta variable from threefry generator — rxbeta","title":"Simulate beta variable from threefry generator — rxbeta","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate beta variable from threefry generator — rxbeta","text":"","code":"rxbeta(shape1, shape2, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate beta variable from threefry generator — rxbeta","text":"shape1, shape2 non-negative parameters Beta distribution. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate beta variable from threefry generator — rxbeta","text":"beta random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate beta variable from threefry generator — rxbeta","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate beta variable from threefry generator — rxbeta","text":"","code":"# \\donttest{ ## Use threefry engine rxbeta(0.5, 0.5, n = 10) # with rxbeta you have to explicitly state n #> [1] 0.9751436 0.8066829 0.6867814 0.1676561 0.8103795 0.8134501 0.9044609 #> [8] 0.7324404 0.9892094 0.7416432 rxbeta(5, 1, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0.8376103 0.9432711 0.8377976 0.8982240 0.9394283 0.9803640 0.8456714 #> [8] 0.9485357 0.9446755 0.7302775 rxbeta(1, 3) #> [1] 0.3928258 ## This example uses `rxbeta` directly in the model rx <- function() { model({ a <- rxbeta(2, 2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Binomial variable from threefry generator — rxbinom","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"","code":"rxbinom(size, prob, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"size number trials (zero ). prob probability success trial. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"binomial random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"","code":"# \\donttest{ ## Use threefry engine rxbinom(10, 0.9, n = 10) # with rxbinom you have to explicitly state n #> [1] 10 8 10 9 9 10 10 9 8 8 rxbinom(3, 0.5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0 2 0 1 0 1 1 1 0 2 rxbinom(4, 0.7) #> [1] 3 ## This example uses `rxbinom` directly in the model rx <- function() { model({ a <- rxbinom(1, 0.5) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Cauchy variable from threefry generator — rxcauchy","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"","code":"rxcauchy(location = 0, scale = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"location, scale location scale parameters. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"Cauchy random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"","code":"# \\donttest{ ## Use threefry engine rxcauchy(0, 1, n = 10) # with rxcauchy you have to explicitly state n #> [1] -0.07832339 -36.79536681 -0.44862838 -0.91199161 1.35994336 #> [6] 0.71195151 1.12467847 0.19022288 -0.14384748 -35.11349418 rxcauchy(0.5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 2.3081782 -1.6757353 -1.5814166 2.7834458 -1.7317520 -1.4832631 #> [7] 0.7836702 2.3110191 6.1635863 1.0042132 rxcauchy(3) #> [1] 3.17419 ## This example uses `rxcauchy` directly in the model rx <- function() { model({ a <- rxcauchy(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate chi-squared variable from threefry generator — rxchisq","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"","code":"rxchisq(df, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"df degrees freedom (non-negative, can non-integer). n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"chi squared random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"","code":"# \\donttest{ ## Use threefry engine rxchisq(0.5, n = 10) # with rxchisq you have to explicitly state n #> [1] 2.478676e-04 3.793880e+00 3.611712e-01 6.995257e-03 1.813673e-02 #> [6] 1.366023e+00 1.688298e-08 6.037984e-01 5.611175e-07 8.675588e-01 rxchisq(5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 7.507190 3.189117 2.854665 8.483108 4.130562 3.109122 11.201978 #> [8] 1.807320 1.445311 9.652453 rxchisq(1) #> [1] 3.842503 ## This example uses `rxchisq` directly in the model rx <- function() { model({ a <- rxchisq(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate exponential variable from threefry generator — rxexp","title":"Simulate exponential variable from threefry generator — rxexp","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate exponential variable from threefry generator — rxexp","text":"","code":"rxexp(rate, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate exponential variable from threefry generator — rxexp","text":"rate vector rates. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate exponential variable from threefry generator — rxexp","text":"exponential random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate exponential variable from threefry generator — rxexp","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate exponential variable from threefry generator — rxexp","text":"","code":"# \\donttest{ ## Use threefry engine rxexp(0.5, n = 10) # with rxexp you have to explicitly state n #> [1] 1.8431326 2.3134014 1.0244110 9.4904981 0.1855463 1.1523872 5.0281027 #> [8] 0.9111772 0.1942877 2.1240707 rxexp(5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0.15460877 0.02735520 0.02760776 0.11097349 0.37481604 0.03355450 #> [7] 0.13232471 0.04647764 0.02074676 0.32458266 rxexp(1) #> [1] 1.288496 ## This example uses `rxexp` directly in the model rx <- function() { model({ a <- rxexp(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate F variable from threefry generator — rxf","title":"Simulate F variable from threefry generator — rxf","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate F variable from threefry generator — rxf","text":"","code":"rxf(df1, df2, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate F variable from threefry generator — rxf","text":"df1, df2 degrees freedom. Inf allowed. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate F variable from threefry generator — rxf","text":"f random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate F variable from threefry generator — rxf","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate F variable from threefry generator — rxf","text":"","code":"# \\donttest{ ## Use threefry engine rxf(0.5, 0.5, n = 10) # with rxf you have to explicitly state n #> [1] 9.532075e+06 2.863912e-03 8.063576e+02 1.395311e+03 1.557960e-01 #> [6] 2.507246e+00 7.619383e-04 5.365288e-03 2.802578e+00 5.726426e-01 rxf(5, 1, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 1.12047876 33.11303293 0.08921512 0.94479061 2.93182906 #> [6] 102.35326116 11.89705769 0.25498389 0.56572119 9.37865399 rxf(1, 3) #> [1] 2.070798 ## This example uses `rxf` directly in the model rx <- function() { model({ a <- rxf(2, 2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate gamma variable from threefry generator — rxgamma","title":"Simulate gamma variable from threefry generator — rxgamma","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate gamma variable from threefry generator — rxgamma","text":"","code":"rxgamma(shape, rate = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate gamma variable from threefry generator — rxgamma","text":"shape shape gamma random variable rate alternative way specify scale. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate gamma variable from threefry generator — rxgamma","text":"gamma random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate gamma variable from threefry generator — rxgamma","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate gamma variable from threefry generator — rxgamma","text":"","code":"# \\donttest{ ## Use threefry engine rxgamma(0.5, n = 10) # with rxgamma you have to explicitly state n #> [1] 2.16924972 0.32791780 1.43186446 0.24403811 0.20138156 0.16797717 #> [7] 0.01839832 0.01034082 0.02523000 1.21501823 rxgamma(5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 4.922548 6.106389 3.663807 8.652605 6.790443 1.782911 3.534744 4.323610 #> [9] 5.659426 4.379179 rxgamma(1) #> [1] 1.166406 ## This example uses `rxbeta` directly in the model rx <- function() { model({ a <- rxgamma(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate geometric variable from threefry generator — rxgeom","title":"Simulate geometric variable from threefry generator — rxgeom","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate geometric variable from threefry generator — rxgeom","text":"","code":"rxgeom(prob, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate geometric variable from threefry generator — rxgeom","text":"prob probability success trial. 0 < prob <= 1. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate geometric variable from threefry generator — rxgeom","text":"geometric random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate geometric variable from threefry generator — rxgeom","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate geometric variable from threefry generator — rxgeom","text":"","code":"# \\donttest{ ## Use threefry engine rxgeom(0.5, n = 10) # with rxgeom you have to explicitly state n #> [1] 2 1 0 2 0 1 0 0 1 2 rxgeom(0.25, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0 1 9 8 8 16 4 1 3 0 rxgeom(0.75) #> [1] 0 ## This example uses `rxgeom` directly in the model rx <- function() { model({ a <- rxgeom(0.24) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Binomial variable from threefry generator — rxnbinom","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"","code":"rxnbinom(size, prob, n = 1L, ncores = 1L) rxnbinomMu(size, mu, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"size target number successful trials, dispersion parameter (shape parameter gamma mixing distribution). Must strictly positive, need integer. prob probability success trial. 0 < prob <= 1. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks mu alternative parametrization via mean: see ‘Details’.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"negative binomial random deviates. Note rxbinom2 uses mu parameterization rxbinom uses prob parameterization (mu=size/(prob+size))","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"","code":"# \\donttest{ ## Use threefry engine rxnbinom(10, 0.9, n = 10) # with rxbinom you have to explicitly state n #> [1] 9 10 8 9 9 10 9 9 8 9 rxnbinom(3, 0.5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 2 2 2 3 2 3 3 1 3 3 rxnbinom(4, 0.7) #> [1] 4 # use mu parameter rxnbinomMu(40, 40, n=10) #> [1] 17 23 23 16 19 21 21 25 17 20 ## This example uses `rxbinom` directly in the model rx <- function() { model({ a <- rxnbinom(10, 0.5) }) } et <- et(1, id = 1:100) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ rx <- function() { model({ a <- rxnbinomMu(10, 40) }) } s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate random normal variable from threefry generator — rxnormV","title":"Simulate random normal variable from threefry generator — rxnormV","text":"Simulate random normal variable threefry generator","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate random normal variable from threefry generator — rxnormV","text":"","code":"rxnormV(mean = 0, sd = 1, n = 1L, ncores = 1L) rxnorm(mean = 0, sd = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate random normal variable from threefry generator — rxnormV","text":"mean vector means. sd vector standard deviations. n number observations ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate random normal variable from threefry generator — rxnormV","text":"normal random number deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate random normal variable from threefry generator — rxnormV","text":"","code":"# \\donttest{ ## Use threefry engine rxnorm(n = 10) # with rxnorm you have to explicitly state n #> [1] 1.06365331 0.06274718 0.98492357 1.16700626 -1.90329250 0.76076741 #> [7] -0.23922302 -0.03627662 1.41384359 2.17594017 rxnorm(n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] -0.23843298 -0.05239444 -0.70639357 -0.14133078 1.05044169 -0.42083889 #> [7] -1.51691623 -0.16579079 0.88339314 -1.17662267 rxnorm(2, 3) ## The first 2 arguments are the mean and standard deviation #> [1] -1.230823 ## This example uses `rxnorm` directly in the model rx <- function() { model({ a <- rxnorm() }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"Set function body rxUi object retaining object information (like data)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"","code":"rxode2(x, envir = environment(x)) <- value # S3 method for class '`function`' rxode2(x, envir = environment(x)) <- value # Default S3 method rxode2(x, envir = environment(x)) <- value rxode(x, envir = environment(x)) <- value RxODE(x, envir = environment(x)) <- value"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"x rxUi object envir environment assignment ocurs value value assigned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"rxode2 ui/function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"","code":"one.compartment <- function() { ini({ tka <- log(1.57); label(\"Ka\") tcl <- log(2.72); label(\"Cl\") tv <- log(31.5); label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } two.compartment <- function() { ini({ lka <- 0.45 ; label(\"Absorption rate (Ka)\") lcl <- 1 ; label(\"Clearance (CL)\") lvc <- 3 ; label(\"Central volume of distribution (V)\") lvp <- 5 ; label(\"Peripheral volume of distribution (Vp)\") lq <- 0.1 ; label(\"Intercompartmental clearance (Q)\") propSd <- 0.5 ; label(\"Proportional residual error (fraction)\") }) model({ ka <- exp(lka) cl <- exp(lcl) vc <- exp(lvc) vp <- exp(lvp) q <- exp(lq) kel <- cl/vc k12 <- q/vc k21 <- q/vp d/dt(depot) <- -ka*depot d/dt(central) <- ka*depot - kel*central - k12*central + k21*peripheral1 d/dt(peripheral1) <- k12*central - k21*peripheral1 cp <- central / vc cp ~ prop(propSd) }) } ui <- rxode2(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments rxode2(ui) <- two.compartment"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an ODE-based model specification — rxode2","title":"Create an ODE-based model specification — rxode2","text":"Create dynamic ODE-based model object suitably translation fast C code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an ODE-based model specification — rxode2","text":"","code":"rxode2( model, modName = basename(wd), wd = getwd(), filename = NULL, extraC = NULL, debug = FALSE, calcJac = NULL, calcSens = NULL, collapseModel = FALSE, package = NULL, ..., linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), indLin = FALSE, verbose = FALSE, fullPrint = getOption(\"rxode2.fullPrint\", FALSE), envir = parent.frame() ) RxODE( model, modName = basename(wd), wd = getwd(), filename = NULL, extraC = NULL, debug = FALSE, calcJac = NULL, calcSens = NULL, collapseModel = FALSE, package = NULL, ..., linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), indLin = FALSE, verbose = FALSE, fullPrint = getOption(\"rxode2.fullPrint\", FALSE), envir = parent.frame() ) rxode( model, modName = basename(wd), wd = getwd(), filename = NULL, extraC = NULL, debug = FALSE, calcJac = NULL, calcSens = NULL, collapseModel = FALSE, package = NULL, ..., linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), indLin = FALSE, verbose = FALSE, fullPrint = getOption(\"rxode2.fullPrint\", FALSE), envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an ODE-based model specification — rxode2","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . modName string used model name. string used naming various aspects computations, including generating C symbol names, dynamic libraries, etc. Therefore, necessary modName consists simple ASCII alphanumeric characters starting letter. wd character string working directory create subdirectory according modName. specified, subdirectory named “modName.d” created populated C file, dynamic loading library, plus various working files. missing, files created (removed) temporary directory, rxode2 DLL model created current directory named rx_????_platform, example rx_129f8f97fb94a87ca49ca8dafe691e1e_i386.dll filename file name connection object ODE-based model specification resides. one model filename may specified. extraC Extra c code include model. can useful specify functions model. C functions usually take double precision arguments, return double precision values. debug boolean indicating executable compiled verbose debugging information turned . calcJac boolean indicating rxode2 calculate Jacobain according specified ODEs. calcSens boolean indicating rxode2 calculate sensitivities according specified ODEs. collapseModel boolean indicating rxode2 remove LHS variables calculating sensitivities. package Package name pre-compiled binaries. ... ignored arguments. linCmtSens method calculate linCmt() solutions indLin Calculate inductive linearization matrices compile inductive linearization support. verbose TRUE verbose linear compartmental model fullPrint using printf within model, TRUE print every step (except /indLin), otherwise FALSE print calculating d/dt envir environment look R user functions (defaults parent environment)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an ODE-based model specification — rxode2","text":"object (environment) class rxode2 (see Chambers Temple Lang (2001)) consisting following list strings functions:","code":"* `model` a character string holding the source model specification. * `get.modelVars`a function that returns a list with 3 character vectors, `params`, `state`, and `lhs` of variable names used in the model specification. These will be output when the model is computed (i.e., the ODE solved by integration). * `solve`{this function solves (integrates) the ODE. This is done by passing the code to [rxSolve()]. This is as if you called `rxSolve(rxode2object, ...)`, but returns a matrix instead of a rxSolve object. `params`: a numeric named vector with values for every parameter in the ODE system; the names must correspond to the parameter identifiers used in the ODE specification; `events`: an `eventTable` object describing the input (e.g., doses) to the dynamic system and observation sampling time points (see [eventTable()]); `inits`: a vector of initial values of the state variables (e.g., amounts in each compartment), and the order in this vector must be the same as the state variables (e.g., PK/PD compartments); `stiff`: a logical (`TRUE` by default) indicating whether the ODE system is stiff or not. For stiff ODE systems (`stiff = TRUE`), `rxode2` uses the LSODA (Livermore Solver for Ordinary Differential Equations) Fortran package, which implements an automatic method switching for stiff and non-stiff problems along the integration interval, authored by Hindmarsh and Petzold (2003). For non-stiff systems (`stiff = FALSE`), `rxode2` uses `DOP853`, an explicit Runge-Kutta method of order 8(5, 3) of Dormand and Prince as implemented in C by Hairer and Wanner (1993). `trans_abs`: a logical (`FALSE` by default) indicating whether to fit a transit absorption term (TODO: need further documentation and example); `atol`: a numeric absolute tolerance (1e-08 by default); `rtol`: a numeric relative tolerance (1e-06 by default). The output of \\dQuote{solve} is a matrix with as many rows as there are sampled time points and as many columns as system variables (as defined by the ODEs and additional assignments in the rxode2 model code).} * `isValid` a function that (naively) checks for model validity, namely that the C object code reflects the latest model specification. * `version` a string with the version of the `rxode2` object (not the package). * `dynLoad` a function with one `force = FALSE` argument that dynamically loads the object code if needed. * `dynUnload` a function with no argument that unloads the model object code. * `delete` removes all created model files, including C and DLL files. The model object is no longer valid and should be removed, e.g., `rm(m1)`. * `run` deprecated, use `solve`. * `get.index` deprecated. * `getObj` internal (not user callable) function."},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create an ODE-based model specification — rxode2","text":"Rx name rxode2 meant suggest abbreviation Rx medical prescription, thus suggest package emphasis pharmacometrics modeling, including pharmacokinetics (PK), pharmacodynamics (PD), disease progression, drug-disease modeling, etc. ODE-based model specification may coded inside four places: Inside rxode2({}) block statements: Inside rxode2(\"\") string statement: file name loaded rxode2: model function can parsed rxode2: block statement, character string text file internal rxode2 compilation manager translates ODE system C, compiles loads R session. call rxode2 produces object class rxode2 consists list-like structure (environment) various member functions. last type model (model function), call rxode2 creates parsed rxode2 ui can translated rxode2 compilation model. type function required nlmixr2 estimation can extended modified model piping. reason focused documentation. basic model specification consists one statements optionally terminated semi-colons ; optional comments (comments delimited # end--line). block statements set statements delimited curly braces, { ... }. Statements can either assignments, conditional /else /else, loops (can exited break), special statements, printing statements (debugging/testing). Assignment statements can : simple assignments, left hand identifier (.e., variable). includes string assignments special time-derivative assignments, left hand specifies change amount corresponding state variable (compartment) respect time e.g., d/dt(depot): special initial-condition assignments left hand specifies compartment initial condition specified, e.g. depot(0) = 0 special model event changes including bioavailability (f(depot)=1), lag time (alag(depot)=0), modeled rate (rate(depot)=2) modeled duration (dur(depot)=2). example model features event specification modeled infusions rxode2 data specification found rxode2 events vignette. special change point syntax, model times. model times specified mtime(var)=time special Jacobian-derivative assignments, left hand specifies change compartment ode respect variable. example, d/dt(y) = dy, Jacobian compartment can specified df(y)/dy(dy) = 1. may advantage obtaining solution specifying Jacobian stiff ODE systems. However, stiff systems tried LSODA, actually slightly slowed solving. Special string value declarations tell values string variable take within rxode2 solving structure. values cause factor created variable solving rxode2 model. , declared much way R, : labels() <- c(\"a1\", \"a2\"). Note assignment can done =, <- ~. assigning ~ operator, simple assignments time-derivative assignments output. Note rxode2 model functions assignment ~ can also overloaded residual distribution specification. Special statements can : Compartment declaration statements, can change default dosing compartment assumed compartment number(s) well add extra compartment names end (useful multiple-endpoint nlmixr models); specified cmt(compartmentName) Parameter declaration statements, can make sure input parameters certain order instead ordering parameters order parsed. useful keeping parameter order using 2 different ODE models. specified param(par1, par2,...) Variable interpolation statements, tells interpolation specific covariates. include locf(cov1, cov2, ...) last observation carried forward, nocb(cov1, cov2, ...) next observation carried backward, linear(cov1, cov2, ...) linear interpolation midpoint(cov1, cov2, ...) midpoint interpolation. example model shown : Expressions assignment statements can numeric logical. Numeric expressions can include following numeric operators +, -, *, /, ^ mathematical functions defined C R math libraries (e.g., fabs, exp, log, sin, abs). may also access R’s functions R math libraries, like lgammafn log gamma function. rxode2 syntax case-sensitive, .e., ABC different abc, Abc, ABc, etc.","code":"library(rxode2) mod <- rxode2({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) mod <- rxode2(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \") writeLines(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \", \"modelFile.rxode2\") mod <- rxode2(filename='modelFile.rxode2') unlink(\"modelFile.rxode2\") mod <- function() { model({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) } mod <- rxode2(mod) # or simply mod() if the model is at the end of the function # These model functions often have residual components and initial # (`ini({})`) conditions attached as well. For example the # theophylline model can be written as: one.compartment <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } # after parsing the model mod <- one.compartment() mod$simulationModel # or mod$simulationIniModel # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3;"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"identifiers","dir":"Reference","previous_headings":"","what":"Identifiers","title":"Create an ODE-based model specification — rxode2","text":"Like R, Identifiers (variable names) may consist one alphanumeric, underscore _ period . characters, first character digit underscore _. Identifiers model specification can refer : State variables dynamic system (e.g., compartments pharmacokinetics model). Implied input variable, t (time), tlast (last time point), podo (oral dose, undocumented case absorption transit models). Special constants like pi R’s predefined constants. Model parameters (e.g., ka rate absorption, CL clearance, etc.) Others, created assignments part model specification; referred LHS (left-hand side) variable. Currently, rxode2 modeling language recognizes system state variables “parameters”, thus, values need passed R ODE model (e.g., age) either passed params argument integrator function rxSolve() supplied event data-set. certain variable names rxode2 event tables. avoid confusion, following event table-related items assigned, used state can accessed rxode2 code: cmt dvid addl ss amt dur rate Rprintf print printf id However following variables used model specification: evid ii Sometimes rxode2 generates variables fed back rxode2. Similarly, nlmixr2 generates variables used nlmixr estimation simulation. variables start either rx nlmixr prefixes. avoid problems, suggested use variables starting either rx nlmixr prefixes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"logical-operators","dir":"Reference","previous_headings":"","what":"Logical Operators","title":"Create an ODE-based model specification — rxode2","text":"Logical operators support standard R operators ==, != >= <= > <. Like R can () () statements, ifelse() expressions. Additionally can standard assignment. instance, following valid: Notice can also use character expressions comparisons. convenience comes cost since character comparisons slower numeric expressions. Unlike R, .numeric .integer logical statements needed, cause syntax error try use function.","code":"cov1 = covm*(sexf == \"female\") + covm*(sexf != \"female\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"supported-functions","dir":"Reference","previous_headings":"","what":"Supported functions","title":"Create an ODE-based model specification — rxode2","text":"supported functions rxode2 can seen rxSupportedFuns(). brief description built-functions following table: Note lag(cmt) = equivalent alag(cmt) = = lag(wt)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"reserved-keywords","dir":"Reference","previous_headings":"","what":"Reserved keywords","title":"Create an ODE-based model specification — rxode2","text":"reserved keywords rxode2 model. following table: Note rxFlag always output 11 calc_lhs since final variables calculated, though can tweak test certain parts rxode2 using flag.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"residual-functions-when-using-rxode-functions","dir":"Reference","previous_headings":"","what":"Residual functions when using rxode2 functions","title":"Create an ODE-based model specification — rxode2","text":"addition ~ hiding output certain types output, also used specify residual output endpoint input rxode2 model function (includes residual model({}) block). specifications form: Indicating variable var variable represents individual central tendencies model also represents compartment specification data-set. can also change compartment name using | syntax, : case var represents central tendency cmt represents compartment dvid specification.","code":"var ~ add(add.sd) var ~ add(add.sd) | cmt"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"transformations","dir":"Reference","previous_headings":"","what":"Transformations","title":"Create an ODE-based model specification — rxode2","text":"normal related distributions, can apply transformation sides using keywords/functions apply transformations. default likelihood transformations calculated untransformed scale. bounded variables like logit-normal probit-normal low high values defaulted 0 1 missing. models wish proportional model one transformation can replace standard deviation NA allow transformations, lnorm(), probitNorm() logitNorm() can combined variance stabilizing yeoJohnson() transformation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"normal-and-t-related-distributions","dir":"Reference","previous_headings":"","what":"Normal and t-related distributions","title":"Create an ODE-based model specification — rxode2","text":"normal t-related distributions, wanted keep ability use skewed distributions additive proportional t/cauchy-space, distributions specified differently comparison supported distributions within nlmixr2: Note normal t-related distributions nlmixr2 calculate cwres npde normal assumption help assess goodness fit model. Also note +dnorm() mostly testing purposes slow estimation procedure nlmixr2. suggest adding (except explicit testing). multiple endpoint models mix non-normal normal distributions, whole problem shifted log-likelihood method estimation nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"notes-on-additive-proportional-models","dir":"Reference","previous_headings":"","what":"Notes on additive + proportional models","title":"Create an ODE-based model specification — rxode2","text":"two different ways specify additive proportional models, call combined1 combined2, way Monolix calls two distributions (avoid software differences naming). first, combined1, assumes additive proportional differences standard deviation scale, : y=f+(+b* f^c)*err second, combined2, assumes additive proportional differences combined variance scale: y=f+[sqrt(^2+b^2 *f^(2c))]*err default nlmixr2/rxode2 otherwise specified combined2 since mirrors adding 2 normal distributions statistics add variances (standard deviations). However, combined1 can describe data possibly even better combined2 possible options rxode2/nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"distributions-of-known-likelihoods","dir":"Reference","previous_headings":"","what":"Distributions of known likelihoods","title":"Create an ODE-based model specification — rxode2","text":"residuals related normal, t-distribution cauchy, often residual specification form: compartment specification left handed side specification. generalized likelihood can specify:","code":"cmt ~ dbeta(alpha, beta) ll(cmt) ~ llik specification"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"ordinal-likelihoods","dir":"Reference","previous_headings":"","what":"Ordinal likelihoods","title":"Create an ODE-based model specification — rxode2","text":"Finally, ordinal likelihoods/simulations can specified 2 ways. first : err represents compartment p0 probability specific category: model ensure sum p values less 1. Additionally can write arbitrary number categories ordinal model described . seems little p0 probability category 1 sometimes scores non-whole numbers. can modeled follows: numeric categories specified explicitly, probabilities remain :","code":"err ~ c(p0, p1, p2) err ~ c(p0=0, p1=1, p2=2, 3)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"general-table-of-supported-residual-distributions","dir":"Reference","previous_headings":"","what":"General table of supported residual distributions","title":"Create an ODE-based model specification — rxode2","text":"general supported following table (available rxode2::rxResidualError)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"creating-rxode-models","dir":"Reference","previous_headings":"","what":"Creating rxode2 models","title":"Create an ODE-based model specification — rxode2","text":"NA","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"note-on-strings-in-rxode-","dir":"Reference","previous_headings":"","what":"Note on strings in rxode2","title":"Create an ODE-based model specification — rxode2","text":"Strings converted double values inside rxode2, hence can refer integer corresponding string value string value . covariates calculated fly based data likely try , though aware. strings defined model, fixed used. example: also replaced : Since \"Med\" already defined wanted can pre-declare levels (order) give better control : can see number changed since declaration change numbers variable tAPGAR. levels() statements need declared variable occurs ensure numbering consistent declared.","code":"if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- \"Med\" } if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- 3 } levels(tAPGAR) <- c(\"Med\", \"Low\", \"High\") if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- 3 } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- 2 } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- 1 } else { tAPGAR<- 1 }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Create an ODE-based model specification — rxode2","text":"Chamber, J. M. Temple Lang, D. (2001) Object Oriented Programming R. R News, Vol. 1, . 3, September 2001. https://cran.r-project.org/doc/Rnews/Rnews_2001-3.pdf. Hindmarsh, . C. ODEPACK, Systematized Collection ODE Solvers. Scientific Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pp. 55-64. Petzold, L. R. Automatic Selection Methods Solving Stiff Nonstiff Systems Ordinary Differential Equations. Siam J. Sci. Stat. Comput. 4 (1983), pp. 136-148. Hairer, E., Norsett, S. P., Wanner, G. Solving ordinary differential equations , nonstiff problems. 2nd edition, Springer Series Computational Mathematics, Springer-Verlag (1993). Plevyak, J. dparser, https://dparser.sourceforge.net/. Web. 12 Oct. 2015.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Create an ODE-based model specification — rxode2","text":"Melissa Hallow, Wenping Wang Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an ODE-based model specification — rxode2","text":"","code":"# \\donttest{ mod <- function() { ini({ KA <- .291 CL <- 18.6 V2 <- 40.2 Q <- 10.5 V3 <- 297.0 Kin <- 1.0 Kout <- 1.0 EC50 <- 200.0 }) model({ # A 4-compartment model, 3 PK and a PD (effect) compartment # (notice state variable names 'depot', 'centr', 'peri', 'eff') C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot; d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) <- Q*C2 - Q*C3; d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff; eff(0) <- 1 }) } m1 <- rxode2(mod) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(m1) #> ── rxode2-based free-form 4-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> KA CL V2 Q V3 Kin Kout EC50 #> 0.291 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 centr #> 3 3 peri #> 4 4 eff #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> KA <- 0.291 #> CL <- 18.6 #> V2 <- 40.2 #> Q <- 10.5 #> V3 <- 297 #> Kin <- 1 #> Kout <- 1 #> EC50 <- 200 #> }) #> model({ #> C2 <- centr/V2 #> C3 <- peri/V3 #> d/dt(depot) <- -KA * depot #> d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) <- Q * C2 - Q * C3 #> d/dt(eff) <- Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) <- 1 #> }) #> } # Step 2 - Create the model input as an EventTable, # including dosing and observation (sampling) events # QD (once daily) dosing for 5 days. qd <- et(amountUnits = \"ug\", timeUnits = \"hours\") %>% et(amt = 10000, addl = 4, ii = 24) # Sample the system hourly during the first day, every 8 hours # then after qd <- qd %>% et(0:24) %>% et(from = 24 + 8, to = 5 * 24, by = 8) # Step 3 - solve the system qd.cp <- rxSolve(m1, qd) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ head(qd.cp) #> time C2 C3 depot centr peri eff #> 1 0 [h] 0.00000 0.0000000 10000.000 0.000 0.0000 1.000000 #> 2 1 [h] 43.99334 0.9113641 7475.157 1768.532 270.6751 1.083968 #> 3 2 [h] 54.50866 2.6510696 5587.797 2191.248 787.3677 1.179529 #> 4 3 [h] 51.65163 4.4243597 4176.966 2076.396 1314.0348 1.227523 #> 5 4 [h] 44.37513 5.9432612 3122.347 1783.880 1765.1486 1.233503 #> 6 5 [h] 36.46382 7.1389804 2334.004 1465.845 2120.2772 1.214084 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal translation to get model variables list — rxode2parse","title":"Internal translation to get model variables list — rxode2parse","text":"Internal translation get model variables list","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal translation to get model variables list — rxode2parse","text":"","code":"rxode2parse( model, linear = FALSE, linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), verbose = FALSE, code = NULL, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal translation to get model variables list — rxode2parse","text":"model Model (either file name string) linear boolean indicating linear compartment model generated linCmt() (default FALSE) linCmtSens Linear compartment model sensitivity type verbose boolean indicating type model detected linCmt() parsing code file name c code written (testing purposes mostly, needs rxode2 anything fancy) envir environment look R user functions (defaults parent environment)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal translation to get model variables list — rxode2parse","text":"rxModelVars object model variables rxode2 syntax expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Internal translation to get model variables list — rxode2parse","text":"","code":"rxode2parse(\"a=3\") #> #> rxode2 model variables (see str to see all variables) #> value$params: a"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":null,"dir":"Reference","previous_headings":"","what":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"Control packages loaded rxode2 model dll loaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"","code":"rxode2parseGetPackagesToLoad() rxode2parseAssignPackagesToLoad(pkgs = rxode2parseGetPackagesToLoad())"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"pkgs packages make sure loaded every time load rxode2 model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"List packages load","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"","code":"rxode2parseGetPackagesToLoad() #> [1] \"rxode2ll\" \"lotri\" rxode2parseAssignPackagesToLoad(rxode2parseGetPackagesToLoad()) #> [1] \"rxode2ll\" \"lotri\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":null,"dir":"Reference","previous_headings":"","what":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"sets function gets currently assigned function pointer assignments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"","code":"rxode2parseAssignPointerTranslation(var)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"var List packages pointer assignment called.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"","code":"rxode2parseAssignPointerTranslation(\"rxode2\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":null,"dir":"Reference","previous_headings":"","what":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"assigns c level linkages roxde2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"","code":"rxode2parseAssignTranslation(df)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"df data frame containing character column names rxFun, fun, type, package, packageFun integer column names argMin argMax","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"Nothing called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"","code":"rxode2parseAssignTranslation(rxode2parseGetTranslation())"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":null,"dir":"Reference","previous_headings":"","what":"This gives the derivative table for rxode2 — rxode2parseD","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"help allow registration functions rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"","code":"rxode2parseD()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"Derivative table environment rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"environment derivative table; example: Derivative(f(,b,c), ) = fa() Derivative(f(,b,c), b) = fb() Derivative(f(,b,c), c) = fc() derivative table f : assign(\"f\", list(fa(,b,c), fb(,b,c), fc(,b,c)), rxode2parseD()) fa translates arguments derivative respect fb translates arguments derivative respect b list NULL rxode2 know take derivative respect argument. list shorter length arguments argument derivative arguments specified taken.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":null,"dir":"Reference","previous_headings":"","what":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"function gets currently assigned function pointer assignments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"","code":"rxode2parseGetPointerAssignment()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"currently assigned pointer assignments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"","code":"rxode2parseGetTranslation() #> rxFun fun type package #> 1 linCmtA linCmtA linCmtA_p rxode2 #> 2 linCmtB linCmtB linCmtB_p rxode2 #> 3 linCmtC linCmtC linCmtA_p rxode2 #> 4 rxnorm rxnorm rxode2i_fn2 rxode2 #> 5 rxbinom rxbinom rxode2i_rxbinom rxode2 #> 6 rxnbinom rxnbinom rxode2i_rxbinom rxode2 #> 7 rxnbinomMu rxnbinomMu rxode2i_rxbinom rxode2 #> 8 rxcauchy rxcauchy rxode2i_fn2 rxode2 #> 9 rxchisq rxchisq rxode2i_fn rxode2 #> 10 rxexp rxexp rxode2i_fn rxode2 #> 11 rxf rxf rxode2i_fn2 rxode2 #> 12 rxgeom rxgeom rxode2i_ifn rxode2 #> 13 rxgamma rxgamma rxode2i_fn2 rxode2 #> 14 rxbeta rxbeta rxode2i_fn2 rxode2 #> 15 rxpois rxpois rxode2i_ifn rxode2 #> 16 rxt_ rxt_ rxode2i_fn rxode2 #> 17 rxunif rxunif rxode2i_fn2 rxode2 #> 18 rxweibull rxweibull rxode2i_fn2 rxode2 #> 19 rinorm rinorm rxode2i2_fn2 rxode2 #> 20 ribinom ribinom rxode2i2_ribinom rxode2 #> 21 rinbinom rinbinom rxode2i2_ribinom rxode2 #> 22 rinbinomMu rinbinomMu rxode2i2_ribinom rxode2 #> 23 ricauchy ricauchy rxode2i2_fn2 rxode2 #> 24 richisq richisq rxode2i2_fn rxode2 #> 25 riexp riexp rxode2i2_fn rxode2 #> 26 rif rif rxode2i2_fn2 rxode2 #> 27 rigeom rigeom rxode2i2_ifn rxode2 #> 28 rigamma rigamma rxode2i2_fn2 rxode2 #> 29 ribeta ribeta rxode2i2_fn2 rxode2 #> 30 ripois ripois rxode2i2_ifn rxode2 #> 31 rit_ rit_ rxode2i2_fn rxode2 #> 32 riunif riunif rxode2i2_fn2 rxode2 #> 33 riweibull riweibull rxode2i2_fn2 rxode2 #> 34 ReLU ReLU rxode2_fn rxode2 #> 35 dReLU dReLU rxode2_fn rxode2 #> 36 GELU GELU rxode2_fn rxode2 #> 37 dGELU dGELU rxode2_fn rxode2 #> 38 d2GELU d2GELU rxode2_fn rxode2 #> 39 d3GELU d3GELU rxode2_fn rxode2 #> 40 d4GELU d4GELU rxode2_fn rxode2 #> 41 softplus softplus rxode2_fn rxode2 #> 42 dsoftplus dsoftplus rxode2_fn rxode2 #> 43 d2softplus d2softplus rxode2_fn rxode2 #> 44 d3softplus d3softplus rxode2_fn rxode2 #> 45 d4softplus d4softplus rxode2_fn rxode2 #> 46 SELU SELU rxode2_fn rxode2 #> 47 dSELU dSELU rxode2_fn rxode2 #> 48 lReLU lReLU rxode2_fn rxode2 #> 49 dlReLU dlReLU rxode2_fn rxode2 #> 50 Swish Swish rxode2_fn rxode2 #> 51 dSwish dSwish rxode2_fn rxode2 #> 52 PReLU PReLU rxode2_fn2 rxode2 #> 53 dPReLU dPReLU rxode2_fn2 rxode2 #> 54 dPReLUa dPReLUa rxode2_fn2 rxode2 #> 55 dPReLUa1 dPReLUa1 rxode2_fn2 rxode2 #> 56 ELU ELU rxode2_fn2 rxode2 #> 57 dELU dELU rxode2_fn2 rxode2 #> 58 d2ELU d2ELU rxode2_fn2 rxode2 #> 59 d2aELU d2aELU rxode2_fn2 rxode2 #> 60 dELUa dELUa rxode2_fn2 rxode2 #> 61 d2ELUa d2ELUa rxode2_fn2 rxode2 #> 62 phi phi rxode2_fn rxode2 #> 63 gammap gammap rxode2_fn2 rxode2 #> 64 gammaq gammaq rxode2_fn2 rxode2 #> 65 gammapInv gammapInv rxode2_fn2 rxode2 #> 66 gammapInva gammapInva rxode2_fn2 rxode2 #> 67 gammaqInv gammaqInv rxode2_fn2 rxode2 #> 68 gammaqInva gammaqInva rxode2_fn2 rxode2 #> 69 uppergamma uppergamma rxode2_fn2 rxode2 #> 70 lowergamma lowergamma rxode2_fn2 rxode2 #> 71 gammapDer gammapDer rxode2_fn2 rxode2 #> 72 logit logit rxode2_fn3 rxode2 #> 73 expit expit rxode2_fn3 rxode2 #> 74 simeta simeta _simfun rxode2 #> 75 simeps simeps _simfun rxode2 #> 76 llikNorm _llikNorm rxode2_llikNormFun rxode2ll #> 77 llikNormDmean _llikNormDmean rxode2_llikNormFun rxode2ll #> 78 llikNormDsd _llikNormDsd rxode2_llikNormFun rxode2ll #> 79 llikPois _llikPois rxode2_llikPoisFun rxode2ll #> 80 llikPoisDlambda _llikPoisDlambda rxode2_llikPoisFun rxode2ll #> 81 llikBinom _llikBinom rxode2_llikBinomFun rxode2ll #> 82 llikBinomDprob _llikBinomDprob rxode2_llikBinomFun rxode2ll #> 83 llikNbinom _llikNbinom rxode2_llikBinomFun rxode2ll #> 84 llikNbinomDprob _llikNbinomDprob rxode2_llikBinomFun rxode2ll #> 85 llikNbinomMu _llikNbinomMu rxode2_llikBinomFun rxode2ll #> 86 llikNbinomMuDmu _llikNbinomMuDmu rxode2_llikBinomFun rxode2ll #> 87 llikBeta _llikBeta rxode2_llikBetaFun rxode2ll #> 88 llikBetaDshape1 _llikBetaDshape1 rxode2_llikBetaFun rxode2ll #> 89 llikBetaDshape2 _llikBetaDshape2 rxode2_llikBetaFun rxode2ll #> 90 llikT _llikT rxode2_llikTFun rxode2ll #> 91 llikTDdf _llikTDdf rxode2_llikTFun rxode2ll #> 92 llikTDmean _llikTDmean rxode2_llikTFun rxode2ll #> 93 llikTDsd _llikTDsd rxode2_llikTFun rxode2ll #> 94 llikChisq _llikChisq rxode2_llikChisqFun rxode2ll #> 95 llikChisqDdf _llikChisqDdf rxode2_llikChisqFun rxode2ll #> 96 llikExp _llikExp rxode2_llikExpFun rxode2ll #> 97 llikExpDrate _llikExpDrate rxode2_llikExpFun rxode2ll #> 98 llikF _llikF rxode2_llikFFun rxode2ll #> 99 llikFDdf1 _llikFDdf1 rxode2_llikFFun rxode2ll #> 100 llikFDdf2 _llikFDdf2 rxode2_llikFFun rxode2ll #> 101 llikGeom _llikGeom rxode2_llikGeomFun rxode2ll #> 102 llikGeomDp _llikGeomDp rxode2_llikGeomFun rxode2ll #> 103 llikUnif _llikUnif rxode2_llikUnifFun rxode2ll #> 104 llikUnifDalpha _llikUnifDalpha rxode2_llikUnifFun rxode2ll #> 105 llikUnifDbeta _llikUnifDbeta rxode2_llikUnifFun rxode2ll #> 106 llikWeibull _llikWeibull rxode2_llikWeibullFun rxode2ll #> 107 llikWeibullDshape _llikWeibullDshape rxode2_llikWeibullFun rxode2ll #> 108 llikWeibullDscale _llikWeibullDscale rxode2_llikWeibullFun rxode2ll #> 109 llikGamma _llikGamma rxode2_llikGammaFun rxode2ll #> 110 llikGammaDshape _llikGammaDshape rxode2_llikGammaFun rxode2ll #> 111 llikGammaDrate _llikGammaDrate rxode2_llikGammaFun rxode2ll #> 112 llikCauchy _llikCauchy rxode2_llikCauchyFun rxode2ll #> 113 llikCauchyDlocation _llikCauchyDlocation rxode2_llikCauchyFun rxode2ll #> 114 llikCauchyDscale _llikCauchyDscale rxode2_llikCauchyFun rxode2ll #> packageFun argMin argMax threadSafe #> 1 linCmtA 20 20 1 #> 2 linCmtB 21 21 1 #> 3 linCmtC 20 20 1 #> 4 rxnorm NA NA 1 #> 5 rxbinom NA NA 1 #> 6 rxnbinom NA NA 1 #> 7 rxnbinomMu NA NA 1 #> 8 rxcauchy NA NA 1 #> 9 rxchisq NA NA 1 #> 10 rxexp NA NA 1 #> 11 rxf NA NA 1 #> 12 rxgeom NA NA 1 #> 13 rxgamma NA NA 1 #> 14 rxbeta NA NA 1 #> 15 rxpois NA NA 1 #> 16 rxt_ NA NA 1 #> 17 rxunif NA NA 1 #> 18 rxweibull NA NA 1 #> 19 rinorm NA NA 1 #> 20 ribinom NA NA 1 #> 21 rinbinom NA NA 1 #> 22 rinbinomMu NA NA 1 #> 23 ricauchy NA NA 1 #> 24 richisq NA NA 1 #> 25 riexp NA NA 1 #> 26 rif NA NA 1 #> 27 rigeom NA NA 1 #> 28 rigamma NA NA 1 #> 29 ribeta NA NA 1 #> 30 ripois NA NA 1 #> 31 rit_ NA NA 1 #> 32 riunif NA NA 1 #> 33 riweibull NA NA 1 #> 34 ReLU 1 1 1 #> 35 dReLU 1 1 1 #> 36 GELU 1 1 1 #> 37 dGELU 1 1 1 #> 38 d2GELU 1 1 1 #> 39 d3GELU 1 1 1 #> 40 d4GELU 1 1 1 #> 41 softplus 1 1 1 #> 42 dsoftplus 1 1 1 #> 43 d2softplus 1 1 1 #> 44 d3softplus 1 1 1 #> 45 d4softplus 1 1 1 #> 46 SELU 1 1 1 #> 47 dSELU 1 1 1 #> 48 lReLU 1 1 1 #> 49 dlReLU 1 1 1 #> 50 Swish 1 1 1 #> 51 dSwish 1 1 1 #> 52 PReLU 2 2 1 #> 53 dPReLU 2 2 1 #> 54 dPReLUa 2 2 1 #> 55 dPReLUa1 2 2 1 #> 56 ELU 2 2 1 #> 57 dELU 2 2 1 #> 58 d2ELU 2 2 1 #> 59 d2aELU 2 2 1 #> 60 dELUa 2 2 1 #> 61 d2ELUa 2 2 1 #> 62 phi NA NA 1 #> 63 gammap 2 2 1 #> 64 gammaq 2 2 1 #> 65 gammapInv 2 2 1 #> 66 gammapInva 2 2 1 #> 67 gammaqInv 2 2 1 #> 68 gammaqInva 2 2 1 #> 69 uppergamma 2 2 1 #> 70 lowergamma 2 2 1 #> 71 gammapDer 2 2 1 #> 72 logit NA NA 1 #> 73 expit NA NA 1 #> 74 simeta NA NA 1 #> 75 simeps NA NA 1 #> 76 rxLlikNorm 3 3 1 #> 77 rxLlikNormDmean 3 3 1 #> 78 rxLlikNormDsd 3 3 1 #> 79 rxLlikPois 2 2 1 #> 80 rxLlikPoisDlambda 2 2 1 #> 81 rxLlikBinom 3 3 1 #> 82 rxLlikBinomDprob 3 3 1 #> 83 rxLlikNbinom 3 3 1 #> 84 rxLlikNbinomDprob 3 3 1 #> 85 rxLlikNbinomMu 3 3 1 #> 86 rxLlikNbinomMuDmu 3 3 1 #> 87 rxLlikBeta 3 3 1 #> 88 rxLlikBetaDshape1 3 3 1 #> 89 rxLlikBetaDshape2 3 3 1 #> 90 rxLlikT 4 4 1 #> 91 rxLlikTDdf 4 4 1 #> 92 rxLlikTDmean 4 4 1 #> 93 rxLlikTDsd 4 4 1 #> 94 rxLlikChisq 2 2 1 #> 95 rxLlikChisqDdf 2 2 1 #> 96 rxLlikExp 2 2 1 #> 97 rxLlikExpDrate 2 2 1 #> 98 rxLlikF 3 3 1 #> 99 rxLlikFDdf1 3 3 1 #> 100 rxLlikFDdf2 3 3 1 #> 101 rxLlikGeom 2 2 1 #> 102 rxLlikGeomDp NA NA 1 #> 103 rxLlikUnif 3 3 1 #> 104 rxLlikUnifDalpha 3 3 1 #> 105 rxLlikUnifDbeta 3 3 1 #> 106 rxLlikWeibull 3 3 1 #> 107 rxLlikWeibullDshape 3 3 1 #> 108 rxLlikWeibullDscale 3 3 1 #> 109 rxLlikGamma 3 3 1 #> 110 rxLlikGammaDshape 3 3 1 #> 111 rxLlikGammaDrate 3 3 1 #> 112 rxLlikCauchy 3 3 1 #> 113 rxLlikCauchyDlocation 3 3 1 #> 114 rxLlikCauchyDscale 3 3 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":null,"dir":"Reference","previous_headings":"","what":"This function gets the currently assigned translations — rxode2parseGetTranslation","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"function gets currently assigned translations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"","code":"rxode2parseGetTranslation()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"currently assigned translations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"","code":"rxode2parseGetTranslation() #> rxFun fun type package #> 1 linCmtA linCmtA linCmtA_p rxode2 #> 2 linCmtB linCmtB linCmtB_p rxode2 #> 3 linCmtC linCmtC linCmtA_p rxode2 #> 4 rxnorm rxnorm rxode2i_fn2 rxode2 #> 5 rxbinom rxbinom rxode2i_rxbinom rxode2 #> 6 rxnbinom rxnbinom rxode2i_rxbinom rxode2 #> 7 rxnbinomMu rxnbinomMu rxode2i_rxbinom rxode2 #> 8 rxcauchy rxcauchy rxode2i_fn2 rxode2 #> 9 rxchisq rxchisq rxode2i_fn rxode2 #> 10 rxexp rxexp rxode2i_fn rxode2 #> 11 rxf rxf rxode2i_fn2 rxode2 #> 12 rxgeom rxgeom rxode2i_ifn rxode2 #> 13 rxgamma rxgamma rxode2i_fn2 rxode2 #> 14 rxbeta rxbeta rxode2i_fn2 rxode2 #> 15 rxpois rxpois rxode2i_ifn rxode2 #> 16 rxt_ rxt_ rxode2i_fn rxode2 #> 17 rxunif rxunif rxode2i_fn2 rxode2 #> 18 rxweibull rxweibull rxode2i_fn2 rxode2 #> 19 rinorm rinorm rxode2i2_fn2 rxode2 #> 20 ribinom ribinom rxode2i2_ribinom rxode2 #> 21 rinbinom rinbinom rxode2i2_ribinom rxode2 #> 22 rinbinomMu rinbinomMu rxode2i2_ribinom rxode2 #> 23 ricauchy ricauchy rxode2i2_fn2 rxode2 #> 24 richisq richisq rxode2i2_fn rxode2 #> 25 riexp riexp rxode2i2_fn rxode2 #> 26 rif rif rxode2i2_fn2 rxode2 #> 27 rigeom rigeom rxode2i2_ifn rxode2 #> 28 rigamma rigamma rxode2i2_fn2 rxode2 #> 29 ribeta ribeta rxode2i2_fn2 rxode2 #> 30 ripois ripois rxode2i2_ifn rxode2 #> 31 rit_ rit_ rxode2i2_fn rxode2 #> 32 riunif riunif rxode2i2_fn2 rxode2 #> 33 riweibull riweibull rxode2i2_fn2 rxode2 #> 34 ReLU ReLU rxode2_fn rxode2 #> 35 dReLU dReLU rxode2_fn rxode2 #> 36 GELU GELU rxode2_fn rxode2 #> 37 dGELU dGELU rxode2_fn rxode2 #> 38 d2GELU d2GELU rxode2_fn rxode2 #> 39 d3GELU d3GELU rxode2_fn rxode2 #> 40 d4GELU d4GELU rxode2_fn rxode2 #> 41 softplus softplus rxode2_fn rxode2 #> 42 dsoftplus dsoftplus rxode2_fn rxode2 #> 43 d2softplus d2softplus rxode2_fn rxode2 #> 44 d3softplus d3softplus rxode2_fn rxode2 #> 45 d4softplus d4softplus rxode2_fn rxode2 #> 46 SELU SELU rxode2_fn rxode2 #> 47 dSELU dSELU rxode2_fn rxode2 #> 48 lReLU lReLU rxode2_fn rxode2 #> 49 dlReLU dlReLU rxode2_fn rxode2 #> 50 Swish Swish rxode2_fn rxode2 #> 51 dSwish dSwish rxode2_fn rxode2 #> 52 PReLU PReLU rxode2_fn2 rxode2 #> 53 dPReLU dPReLU rxode2_fn2 rxode2 #> 54 dPReLUa dPReLUa rxode2_fn2 rxode2 #> 55 dPReLUa1 dPReLUa1 rxode2_fn2 rxode2 #> 56 ELU ELU rxode2_fn2 rxode2 #> 57 dELU dELU rxode2_fn2 rxode2 #> 58 d2ELU d2ELU rxode2_fn2 rxode2 #> 59 d2aELU d2aELU rxode2_fn2 rxode2 #> 60 dELUa dELUa rxode2_fn2 rxode2 #> 61 d2ELUa d2ELUa rxode2_fn2 rxode2 #> 62 phi phi rxode2_fn rxode2 #> 63 gammap gammap rxode2_fn2 rxode2 #> 64 gammaq gammaq rxode2_fn2 rxode2 #> 65 gammapInv gammapInv rxode2_fn2 rxode2 #> 66 gammapInva gammapInva rxode2_fn2 rxode2 #> 67 gammaqInv gammaqInv rxode2_fn2 rxode2 #> 68 gammaqInva gammaqInva rxode2_fn2 rxode2 #> 69 uppergamma uppergamma rxode2_fn2 rxode2 #> 70 lowergamma lowergamma rxode2_fn2 rxode2 #> 71 gammapDer gammapDer rxode2_fn2 rxode2 #> 72 logit logit rxode2_fn3 rxode2 #> 73 expit expit rxode2_fn3 rxode2 #> 74 simeta simeta _simfun rxode2 #> 75 simeps simeps _simfun rxode2 #> 76 llikNorm _llikNorm rxode2_llikNormFun rxode2ll #> 77 llikNormDmean _llikNormDmean rxode2_llikNormFun rxode2ll #> 78 llikNormDsd _llikNormDsd rxode2_llikNormFun rxode2ll #> 79 llikPois _llikPois rxode2_llikPoisFun rxode2ll #> 80 llikPoisDlambda _llikPoisDlambda rxode2_llikPoisFun rxode2ll #> 81 llikBinom _llikBinom rxode2_llikBinomFun rxode2ll #> 82 llikBinomDprob _llikBinomDprob rxode2_llikBinomFun rxode2ll #> 83 llikNbinom _llikNbinom rxode2_llikBinomFun rxode2ll #> 84 llikNbinomDprob _llikNbinomDprob rxode2_llikBinomFun rxode2ll #> 85 llikNbinomMu _llikNbinomMu rxode2_llikBinomFun rxode2ll #> 86 llikNbinomMuDmu _llikNbinomMuDmu rxode2_llikBinomFun rxode2ll #> 87 llikBeta _llikBeta rxode2_llikBetaFun rxode2ll #> 88 llikBetaDshape1 _llikBetaDshape1 rxode2_llikBetaFun rxode2ll #> 89 llikBetaDshape2 _llikBetaDshape2 rxode2_llikBetaFun rxode2ll #> 90 llikT _llikT rxode2_llikTFun rxode2ll #> 91 llikTDdf _llikTDdf rxode2_llikTFun rxode2ll #> 92 llikTDmean _llikTDmean rxode2_llikTFun rxode2ll #> 93 llikTDsd _llikTDsd rxode2_llikTFun rxode2ll #> 94 llikChisq _llikChisq rxode2_llikChisqFun rxode2ll #> 95 llikChisqDdf _llikChisqDdf rxode2_llikChisqFun rxode2ll #> 96 llikExp _llikExp rxode2_llikExpFun rxode2ll #> 97 llikExpDrate _llikExpDrate rxode2_llikExpFun rxode2ll #> 98 llikF _llikF rxode2_llikFFun rxode2ll #> 99 llikFDdf1 _llikFDdf1 rxode2_llikFFun rxode2ll #> 100 llikFDdf2 _llikFDdf2 rxode2_llikFFun rxode2ll #> 101 llikGeom _llikGeom rxode2_llikGeomFun rxode2ll #> 102 llikGeomDp _llikGeomDp rxode2_llikGeomFun rxode2ll #> 103 llikUnif _llikUnif rxode2_llikUnifFun rxode2ll #> 104 llikUnifDalpha _llikUnifDalpha rxode2_llikUnifFun rxode2ll #> 105 llikUnifDbeta _llikUnifDbeta rxode2_llikUnifFun rxode2ll #> 106 llikWeibull _llikWeibull rxode2_llikWeibullFun rxode2ll #> 107 llikWeibullDshape _llikWeibullDshape rxode2_llikWeibullFun rxode2ll #> 108 llikWeibullDscale _llikWeibullDscale rxode2_llikWeibullFun rxode2ll #> 109 llikGamma _llikGamma rxode2_llikGammaFun rxode2ll #> 110 llikGammaDshape _llikGammaDshape rxode2_llikGammaFun rxode2ll #> 111 llikGammaDrate _llikGammaDrate rxode2_llikGammaFun rxode2ll #> 112 llikCauchy _llikCauchy rxode2_llikCauchyFun rxode2ll #> 113 llikCauchyDlocation _llikCauchyDlocation rxode2_llikCauchyFun rxode2ll #> 114 llikCauchyDscale _llikCauchyDscale rxode2_llikCauchyFun rxode2ll #> packageFun argMin argMax threadSafe #> 1 linCmtA 20 20 1 #> 2 linCmtB 21 21 1 #> 3 linCmtC 20 20 1 #> 4 rxnorm NA NA 1 #> 5 rxbinom NA NA 1 #> 6 rxnbinom NA NA 1 #> 7 rxnbinomMu NA NA 1 #> 8 rxcauchy NA NA 1 #> 9 rxchisq NA NA 1 #> 10 rxexp NA NA 1 #> 11 rxf NA NA 1 #> 12 rxgeom NA NA 1 #> 13 rxgamma NA NA 1 #> 14 rxbeta NA NA 1 #> 15 rxpois NA NA 1 #> 16 rxt_ NA NA 1 #> 17 rxunif NA NA 1 #> 18 rxweibull NA NA 1 #> 19 rinorm NA NA 1 #> 20 ribinom NA NA 1 #> 21 rinbinom NA NA 1 #> 22 rinbinomMu NA NA 1 #> 23 ricauchy NA NA 1 #> 24 richisq NA NA 1 #> 25 riexp NA NA 1 #> 26 rif NA NA 1 #> 27 rigeom NA NA 1 #> 28 rigamma NA NA 1 #> 29 ribeta NA NA 1 #> 30 ripois NA NA 1 #> 31 rit_ NA NA 1 #> 32 riunif NA NA 1 #> 33 riweibull NA NA 1 #> 34 ReLU 1 1 1 #> 35 dReLU 1 1 1 #> 36 GELU 1 1 1 #> 37 dGELU 1 1 1 #> 38 d2GELU 1 1 1 #> 39 d3GELU 1 1 1 #> 40 d4GELU 1 1 1 #> 41 softplus 1 1 1 #> 42 dsoftplus 1 1 1 #> 43 d2softplus 1 1 1 #> 44 d3softplus 1 1 1 #> 45 d4softplus 1 1 1 #> 46 SELU 1 1 1 #> 47 dSELU 1 1 1 #> 48 lReLU 1 1 1 #> 49 dlReLU 1 1 1 #> 50 Swish 1 1 1 #> 51 dSwish 1 1 1 #> 52 PReLU 2 2 1 #> 53 dPReLU 2 2 1 #> 54 dPReLUa 2 2 1 #> 55 dPReLUa1 2 2 1 #> 56 ELU 2 2 1 #> 57 dELU 2 2 1 #> 58 d2ELU 2 2 1 #> 59 d2aELU 2 2 1 #> 60 dELUa 2 2 1 #> 61 d2ELUa 2 2 1 #> 62 phi NA NA 1 #> 63 gammap 2 2 1 #> 64 gammaq 2 2 1 #> 65 gammapInv 2 2 1 #> 66 gammapInva 2 2 1 #> 67 gammaqInv 2 2 1 #> 68 gammaqInva 2 2 1 #> 69 uppergamma 2 2 1 #> 70 lowergamma 2 2 1 #> 71 gammapDer 2 2 1 #> 72 logit NA NA 1 #> 73 expit NA NA 1 #> 74 simeta NA NA 1 #> 75 simeps NA NA 1 #> 76 rxLlikNorm 3 3 1 #> 77 rxLlikNormDmean 3 3 1 #> 78 rxLlikNormDsd 3 3 1 #> 79 rxLlikPois 2 2 1 #> 80 rxLlikPoisDlambda 2 2 1 #> 81 rxLlikBinom 3 3 1 #> 82 rxLlikBinomDprob 3 3 1 #> 83 rxLlikNbinom 3 3 1 #> 84 rxLlikNbinomDprob 3 3 1 #> 85 rxLlikNbinomMu 3 3 1 #> 86 rxLlikNbinomMuDmu 3 3 1 #> 87 rxLlikBeta 3 3 1 #> 88 rxLlikBetaDshape1 3 3 1 #> 89 rxLlikBetaDshape2 3 3 1 #> 90 rxLlikT 4 4 1 #> 91 rxLlikTDdf 4 4 1 #> 92 rxLlikTDmean 4 4 1 #> 93 rxLlikTDsd 4 4 1 #> 94 rxLlikChisq 2 2 1 #> 95 rxLlikChisqDdf 2 2 1 #> 96 rxLlikExp 2 2 1 #> 97 rxLlikExpDrate 2 2 1 #> 98 rxLlikF 3 3 1 #> 99 rxLlikFDdf1 3 3 1 #> 100 rxLlikFDdf2 3 3 1 #> 101 rxLlikGeom 2 2 1 #> 102 rxLlikGeomDp NA NA 1 #> 103 rxLlikUnif 3 3 1 #> 104 rxLlikUnifDalpha 3 3 1 #> 105 rxLlikUnifDbeta 3 3 1 #> 106 rxLlikWeibull 3 3 1 #> 107 rxLlikWeibullDshape 3 3 1 #> 108 rxLlikWeibullDscale 3 3 1 #> 109 rxLlikGamma 3 3 1 #> 110 rxLlikGammaDshape 3 3 1 #> 111 rxLlikGammaDrate 3 3 1 #> 112 rxLlikCauchy 3 3 1 #> 113 rxLlikCauchyDlocation 3 3 1 #> 114 rxLlikCauchyDscale 3 3 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate ordinal value — rxord","title":"Simulate ordinal value — rxord","text":"Simulate ordinal value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate ordinal value — rxord","text":"","code":"rxord(...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate ordinal value — rxord","text":"... probabilities simulated. sum number one.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate ordinal value — rxord","text":"number 1 (number probabilities specified + 1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate ordinal value — rxord","text":"values entered 'rxord' simulation simulate probability falling group. falls outside specified probabilities, simulate group (number probabilities specified + 1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate ordinal value — rxord","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate ordinal value — rxord","text":"","code":"# This will give values 1, and 2 rxord(0.5) #> [1] 1 rxord(0.5) #> [1] 1 rxord(0.5) #> [1] 2 rxord(0.5) #> [1] 1 # This will give values 1, 2 and 3 rxord(0.3, 0.3) #> [1] 1 rxord(0.3, 0.3) #> [1] 2 rxord(0.3, 0.3) #> [1] 3"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate random Poisson variable from threefry generator — rxpois","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"","code":"rxpois(lambda, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"lambda vector (non-negative) means. n number random values return. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"poission random number deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"","code":"# \\donttest{ ## Use threefry engine rxpois(lambda = 3, n = 10) # with rxpois you have to explicitly state n #> [1] 3 3 1 2 3 3 1 0 2 0 rxpois(lambda = 3, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 7 4 3 1 4 2 5 4 1 2 rxpois(4) ## The first arguments are the lambda parameter #> [1] 5 ## This example uses `rxpois` directly in the model rx <- function() { model({ a <- rxpois(3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate student t variable from threefry generator — rxt","title":"Simulate student t variable from threefry generator — rxt","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate student t variable from threefry generator — rxt","text":"","code":"rxt(df, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate student t variable from threefry generator — rxt","text":"df degrees freedom (\\(> 0\\), maybe non-integer). df = Inf allowed. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate student t variable from threefry generator — rxt","text":"t-distribution random numbers","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate student t variable from threefry generator — rxt","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate student t variable from threefry generator — rxt","text":"","code":"# \\donttest{ ## Use threefry engine rxt(df = 3, n = 10) # with rxt you have to explicitly state n #> [1] 1.6094795 -1.3710940 -0.9229834 1.0161250 -2.0310447 -0.8507196 #> [7] 0.2127626 -0.6144251 -0.2323978 0.3797032 rxt(df = 3, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] -0.446762682 -1.056179821 -1.156572073 -0.008248407 -1.100226271 #> [6] -3.805767432 -1.119541966 -0.043513549 -0.532069970 -1.022693743 rxt(4) ## The first argument is the df parameter #> [1] -0.5747198 ## This example uses `rxt` directly in the model rx <- function() { model({ a <- rxt(3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate uniform variable from threefry generator — rxunif","title":"Simulate uniform variable from threefry generator — rxunif","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate uniform variable from threefry generator — rxunif","text":"","code":"rxunif(min = 0, max = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate uniform variable from threefry generator — rxunif","text":"min, max lower upper limits distribution. Must finite. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate uniform variable from threefry generator — rxunif","text":"uniform random numbers","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate uniform variable from threefry generator — rxunif","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate uniform variable from threefry generator — rxunif","text":"","code":"# \\donttest{ ## Use threefry engine rxunif(min = 0, max = 4, n = 10) # with rxunif you have to explicitly state n #> [1] 1.3061140 1.2325494 3.5528744 0.7267568 2.6946057 3.9863650 0.8839350 #> [8] 0.6969313 3.2520449 2.0732372 rxunif(min = 0, max = 4, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 1.7674899 2.6858923 3.7162267 1.0223610 0.5648740 1.2287296 0.4351249 #> [8] 1.3137895 3.4122299 2.2783367 rxunif() #> [1] 0.2577899 ## This example uses `rxunif` directly in the model rx <- function() { model({ a <- rxunif(0, 3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Weibull variable from threefry generator — rxweibull","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"","code":"rxweibull(shape, scale = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"shape, scale shape scale parameters, latter defaulting 1. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"Weibull random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"","code":"# \\donttest{ ## Use threefry engine # with rxweibull you have to explicitly state n rxweibull(shape = 1, scale = 4, n = 10) #> [1] 3.38395126 6.19722188 3.84734369 2.21973549 10.37015755 0.61922145 #> [7] 15.36768019 1.22637210 0.09650896 2.16265536 # You can parallelize the simulation using openMP rxweibull(shape = 1, scale = 4, n = 10, ncores = 2) #> [1] 2.36399417 1.76052260 2.00263924 0.48001680 1.10358707 0.09843464 #> [7] 2.00454395 1.69938698 3.09457548 7.49950264 rxweibull(3) #> [1] 1.120598 ## This example uses `rxweibull` directly in the model rx <- function() { model({ a <- rxweibull(1, 3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":null,"dir":"Reference","previous_headings":"","what":"Softplus Activation Function — softplus","title":"Softplus Activation Function — softplus","text":"Softplus Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Softplus Activation Function — softplus","text":"","code":"softplus(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Softplus Activation Function — softplus","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Softplus Activation Function — softplus","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Softplus Activation Function — softplus","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Softplus Activation Function — softplus","text":"","code":"softplus(c(-1, 0, 1, 2)) #> [1] 0.3132617 0.6931472 1.3132617 2.1269280 # You can use rxode2 too: r <- rxode2({ s <- softplus(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time s #> #> 1 -1 0.313 #> 2 0 0.693 #> 3 1 1.31 #> 4 2 2.13"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":null,"dir":"Reference","previous_headings":"","what":"Dosing/Amt geom/stat — stat_amt","title":"Dosing/Amt geom/stat — stat_amt","text":"dosing geom shows vertical lines dose occurs","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dosing/Amt geom/stat — stat_amt","text":"","code":"stat_amt( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, ... ) geom_amt( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dosing/Amt geom/stat — stat_amt","text":"mapping Set aesthetic mappings created aes(). specified inherit.aes = TRUE (default), combined default mapping top level plot. must supply mapping plot mapping. data data displayed layer. three options: NULL, default, data inherited plot data specified call ggplot(). data.frame, object, override plot data. objects fortified produce data frame. See fortify() variables created. function called single argument, plot data. return value must data.frame, used layer data. function can created formula (e.g. ~ head(.x, 10)). position position adjustment use data layer. can used various ways, including prevent overplotting improving display. position argument accepts following: result calling position function, position_jitter(). method allows passing extra arguments position. string naming position adjustment. give position string, strip function name position_ prefix. example, use position_jitter(), give position \"jitter\". information ways specify position, see layer position documentation. show.legend logical. layer included legends? NA, default, includes aesthetics mapped. FALSE never includes, TRUE always includes. can also named logical vector finely select aesthetics display. inherit.aes FALSE, overrides default aesthetics, rather combining . useful helper functions define data aesthetics inherit behaviour default plot specification, e.g. borders(). ... arguments passed layer()'s params argument. arguments broadly fall one 4 categories . Notably, arguments position argument, aesthetics required can passed .... Unknown arguments part 4 categories ignored. Static aesthetics mapped scale, fixed value apply layer whole. example, colour = \"red\" linewidth = 3. geom's documentation Aesthetics section lists available options. 'required' aesthetics passed params. Please note passing unmapped aesthetics vectors technically possible, order required length guaranteed parallel input data. constructing layer using stat_*() function, ... argument can used pass parameters geom part layer. example stat_density(geom = \"area\", outline.type = \"\"). geom's documentation lists parameters can accept. Inversely, constructing layer using geom_*() function, ... argument can used pass parameters stat part layer. example geom_area(stat = \"density\", adjust = 0.5). stat's documentation lists parameters can accept. key_glyph argument layer() may also passed .... can one functions described key glyphs, change display layer legend.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Dosing/Amt geom/stat — stat_amt","text":"returns stat_amt context ggplot2 plot","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Dosing/Amt geom/stat — stat_amt","text":"Requires following aesthetics: x representing x values, usually time amt representing dosing values; missing zero dose given","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Dosing/Amt geom/stat — stat_amt","text":"","code":"# \\donttest{ library(rxode2) library(units) #> udunits database from /usr/share/xml/udunits/udunits2.xml ## Model from RxODE tutorial mod1 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") %>% et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") %>% et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) %>% et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et, addDosing=TRUE) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # by default dotted and under-stated plot(bidQd, C2) + geom_amt(aes(amt=amt)) # of course you can make it a bit more visible plot(bidQd, C2) + geom_amt(aes(amt=amt), col=\"red\", lty=1, linewidth=1.2) # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":null,"dir":"Reference","previous_headings":"","what":"Censoring geom/stat — stat_cens","title":"Censoring geom/stat — stat_cens","text":"censoring geom shows left right censoring specified nlmixr input data-set fit","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Censoring geom/stat — stat_cens","text":"","code":"stat_cens( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, width = 0.01, ... ) geom_cens( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, width = 0.01, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Censoring geom/stat — stat_cens","text":"mapping Set aesthetic mappings created aes(). specified inherit.aes = TRUE (default), combined default mapping top level plot. must supply mapping plot mapping. data data displayed layer. three options: NULL, default, data inherited plot data specified call ggplot(). data.frame, object, override plot data. objects fortified produce data frame. See fortify() variables created. function called single argument, plot data. return value must data.frame, used layer data. function can created formula (e.g. ~ head(.x, 10)). position position adjustment use data layer. can used various ways, including prevent overplotting improving display. position argument accepts following: result calling position function, position_jitter(). method allows passing extra arguments position. string naming position adjustment. give position string, strip function name position_ prefix. example, use position_jitter(), give position \"jitter\". information ways specify position, see layer position documentation. show.legend logical. layer included legends? NA, default, includes aesthetics mapped. FALSE never includes, TRUE always includes. can also named logical vector finely select aesthetics display. inherit.aes FALSE, overrides default aesthetics, rather combining . useful helper functions define data aesthetics inherit behaviour default plot specification, e.g. borders(). width represents width (\\ censoring box ... arguments passed layer()'s params argument. arguments broadly fall one 4 categories . Notably, arguments position argument, aesthetics required can passed .... Unknown arguments part 4 categories ignored. Static aesthetics mapped scale, fixed value apply layer whole. example, colour = \"red\" linewidth = 3. geom's documentation Aesthetics section lists available options. 'required' aesthetics passed params. Please note passing unmapped aesthetics vectors technically possible, order required length guaranteed parallel input data. constructing layer using stat_*() function, ... argument can used pass parameters geom part layer. example stat_density(geom = \"area\", outline.type = \"\"). geom's documentation lists parameters can accept. Inversely, constructing layer using geom_*() function, ... argument can used pass parameters stat part layer. example geom_area(stat = \"density\", adjust = 0.5). stat's documentation lists parameters can accept. key_glyph argument layer() may also passed .... can one functions described key glyphs, change display layer legend.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Censoring geom/stat — stat_cens","text":"returns ggplot2 stat","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Censoring geom/stat — stat_cens","text":"Requires following aesthetics: x Represents independent variable, often time scale y represents dependent variable CENS censoring information; (-1 right censored, 0 censoring 1 left censoring) LIMIT represents corresponding limit () add boxes representing areas fit censored.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":null,"dir":"Reference","previous_headings":"","what":"Summary of rxDll object — summary.rxDll","title":"Summary of rxDll object — summary.rxDll","text":"gives expanded information rxDll object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summary of rxDll object — summary.rxDll","text":"","code":"# S3 method for class 'rxDll' summary(object, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summary of rxDll object — summary.rxDll","text":"object RxDll object ... arguments. Includes noprint, logical telling object print rxDll object first. default FALSE","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summary of rxDll object — summary.rxDll","text":"object returned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summary of rxDll object — summary.rxDll","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Print expanded information about the rxode2 object. — summary.rxode2","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"prints expanded information rxode2 object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"","code":"# S3 method for class 'rxode2' summary(object, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"object rxode2 object ... Ignored parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"object returned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":null,"dir":"Reference","previous_headings":"","what":"Swaps the matrix list with a cube — swapMatListWithCube","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"Swaps matrix list cube","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"","code":"swapMatListWithCube(matrixListOrCube)"},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"matrixListOrCube Either list 2-dimensional matrices cube matrices","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"list cube (opposite format input)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"","code":"# Create matrix list matLst <- cvPost(10, lotri::lotri(a+b~c(1, 0.25, 1)), 3) print(matLst) #> [[1]] #> a b #> a 0.90286405 0.02935214 #> b 0.02935214 0.40145363 #> #> [[2]] #> a b #> a 1.0020557 0.1998196 #> b 0.1998196 2.4359680 #> #> [[3]] #> a b #> a 1.47206777 -0.05884101 #> b -0.05884101 1.04139365 #> # Convert to cube matCube <- swapMatListWithCube(matLst) print(matCube) #> , , 1 #> #> a b #> a 0.90286405 0.02935214 #> b 0.02935214 0.40145363 #> #> , , 2 #> #> a b #> a 1.0020557 0.1998196 #> b 0.1998196 2.4359680 #> #> , , 3 #> #> a b #> a 1.47206777 -0.05884101 #> b -0.05884101 1.04139365 #> # Convert back to list matLst2 <- swapMatListWithCube(matCube) print(matLst2) #> [[1]] #> a b #> a 0.90286405 0.02935214 #> b 0.02935214 0.40145363 #> #> [[2]] #> a b #> a 1.0020557 0.1998196 #> b 0.1998196 2.4359680 #> #> [[3]] #> a b #> a 1.47206777 -0.05884101 #> b -0.05884101 1.04139365 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":null,"dir":"Reference","previous_headings":"","what":"This function tests if this object is a iniDf as needed by the UI — testIniDf","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"function tests object iniDf needed UI","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"","code":"testIniDf(iniDf) assertIniDf(iniDf, extra = \"\", .var.name = .vname(iniDf), null.ok = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"iniDf object test rxode2 ui iniDf data.frame extra information append error message .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname. null.ok [logical(1)] set TRUE, x may also NULL. case type check x performed, additional checks disabled.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"boolean, indicating object valid initialization data frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"assertIniDf(): Assert object valid rxode2 ui initialization data frame","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"","code":"testIniDf(TRUE) #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":null,"dir":"Reference","previous_headings":"","what":"Test if rxode2 uses linear solved systems — testRxLinCmt","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"Test rxode2 uses linear solved systems","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"","code":"testRxLinCmt(ui, extra = \"\", .var.name = .vname(ui)) assertRxLinCmt(ui, extra = \"\", .var.name = .vname(ui))"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"ui rxode2 model extra Extra text append error message (like \"focei\") .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"TRUE model uses linear solved systems, FALSE otherwise","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"assertRxLinCmt(): Assert rxode2 uses linear solved systems","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"","code":"one.cmt <- function() { ini({ ## You may label each parameter with a comment tka <- 0.45 # Log Ka tcl <- log(c(0, 2.7, 100)) # Log Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- 3.45; label(\"log V\") ## the label(\"Label name\") works with all models eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } testRxLinCmt(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":null,"dir":"Reference","previous_headings":"","what":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"Test rxode2 model parameters user defined boundaries","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"","code":"testRxUnbounded(ui) assertRxUnbounded(ui, extra = \"\", .var.name = .vname(ui)) warnRxBounded(ui, extra = \"\", .var.name = .vname(ui))"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"ui rxode2 ui extra extra information append error message .var.name variable name","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"boolean indicating parameters user defined boundaries","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"assertRxUnbounded(): Assert rxode2 model parameters user defined boundaries warnRxBounded(): Warn rxode2 model parameters user defined boundaries","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"","code":"one.cmt <- function() { ini({ tka <- 0.45; label(\"Ka\") tcl <- log(c(0, 2.7, 100)); label(\"Cl\") tv <- 3.45; label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } testRxUnbounded(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] FALSE try(assertRxUnbounded(one.cmt)) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> Error : 'one.cmt' can not have user defined boundaries warnRxBounded(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> Warning: 'one.cmt' has the following user-defined boundaries: tcl"},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"Convert event data trial duration data helper function create custom event table. observation time start first event time (baseline) end trial duration. interval spacing observation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"","code":"toTrialDuration(ev, trialEnd, interval, writeDir = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"ev event data trialEnd extend trial duration. Must time unit event data interval observation interval. Must time unit event data writeDir NULL, write output csv file","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"Omar Elashkar","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"","code":"# Create event table with unique time for each ID ev = et(data.frame(id = rep(1:10, 3), time = runif(min = 10, max = 20, n = 30))) # select the duration and spacing interval (assuming time is in years) toTrialDuration(ev, trialEnd = 1.5, interval = 0.2) #> ── EventTable with 80 records ── #> 0 dosing records (see value$get.dosing(); add with add.dosing or et) #> 80 observation times (see value$get.sampling(); add with add.sampling or et) #> ── First part of value: ── #> # A tibble: 80 × 4 #> id time amt evid #> #> 1 1 12.6 NA 0:Observation #> 2 1 12.8 NA 0:Observation #> 3 1 13.0 NA 0:Observation #> 4 1 13.2 NA 0:Observation #> 5 1 13.4 NA 0:Observation #> 6 1 13.6 NA 0:Observation #> 7 1 13.8 NA 0:Observation #> 8 1 14.0 NA 0:Observation #> 9 2 11.4 NA 0:Observation #> 10 2 11.6 NA 0:Observation #> # ℹ 70 more rows"},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":null,"dir":"Reference","previous_headings":"","what":"Update for rxUi — update.rxUi","title":"Update for rxUi — update.rxUi","text":"Update rxUi","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update for rxUi — update.rxUi","text":"","code":"# S3 method for class 'rxUi' update(object, ..., envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update for rxUi — update.rxUi","text":"object rxode2 UI object ... Lines update envir Environment evaluating ini() style calls","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update for rxUi — update.rxUi","text":"new rxode2 updated UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":null,"dir":"Reference","previous_headings":"","what":"uppergamma: upper incomplete gamma function — uppergamma","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"tgamma boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"","code":"uppergamma(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"numeric '' parameter upper incomplete gamma z numeric 'z' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"uppergamma results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"uppergamma function given : \\(uppergamma(, z) = \\int_{z}^{\\infty}t^{-1}\\cdot e^{-t} dt\\)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"","code":"uppergamma(1, 3) #> [1] 0.04978707 uppergamma(1:3, 3) #> [1] 0.04978707 0.19914827 0.84638016 uppergamma(1, 1:3) #> [1] 0.36787944 0.13533528 0.04978707"},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":null,"dir":"Reference","previous_headings":"","what":"Set random effects and residual error to zero — zeroRe","title":"Set random effects and residual error to zero — zeroRe","text":"Set random effects residual error zero","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set random effects and residual error to zero — zeroRe","text":"","code":"zeroRe(object, which = c(\"omega\", \"sigma\"), fix = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set random effects and residual error to zero — zeroRe","text":"object model modify types parameters set zero fix parameters fixed zero value?","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set random effects and residual error to zero — zeroRe","text":"object parameters set zero","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set random effects and residual error to zero — zeroRe","text":"Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set random effects and residual error to zero — zeroRe","text":"","code":"one.compartment <- function() { ini({ tka <- log(1.57); label(\"Ka\") tcl <- log(2.72); label(\"Cl\") tv <- log(31.5); label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } zeroRe(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.4510756 1.0006319 3.4499875 0.0000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0 0 0 #> eta.cl 0 0 0 #> eta.v 0 0 0 #> attr(,\"lotriFix\") #> eta.ka eta.cl eta.v #> eta.ka TRUE FALSE FALSE #> eta.cl FALSE TRUE FALSE #> eta.v FALSE FALSE TRUE #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.451075619360217 #> label(\"Ka\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- fix(0, 0) #> eta.ka ~ fix(0) #> eta.cl ~ fix(0) #> eta.v ~ fix(0) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-development-version","dir":"Changelog","previous_headings":"","what":"rxode2 (development version)","title":"rxode2 (development version)","text":"Add getRxNpars api. allows development version babelmixr2 better check model loaded unload/reload necessary. Add rxUdfUiControl() rxode2 user function get control information something like nlmixr2","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-302","dir":"Changelog","previous_headings":"","what":"rxode2 3.0.2","title":"rxode2 3.0.2","text":"CRAN release: 2024-10-30 Bug fix api, censoring function pointer updated (#801). Query rxode2.verbose.pipe run time instead requiring set loading rxode2. correct values boundaries logit, expit, probit, probitInv (instead NA). cases break anything. Add new style user function modifies ui parsing just using function (presence data). Used new user function interface allow random functions rxode2 ui functions named. example, can use rxnorm(sd=3) instead use rxnorm(0, 3), although rxnorm() still works.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-301","dir":"Changelog","previous_headings":"","what":"rxode2 3.0.1","title":"rxode2 3.0.1","text":"CRAN release: 2024-09-22 Explicitly initialize order vector stop valgrind warning (requested CRAN)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-300","dir":"Changelog","previous_headings":"","what":"rxode2 3.0.0","title":"rxode2 3.0.0","text":"CRAN release: 2024-09-18","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"breaking-changes-3-0-0","dir":"Changelog","previous_headings":"","what":"Breaking Changes","title":"rxode2 3.0.0","text":"model properties moved $params $props conflict low level rxode2 model $params Error specifying wd without modName Linear midpoint time two points, rxode2 handles missing values changed. missing value lower requested time, look backward finds first non-missing value (missing start looking forward). missing value higher requested time, algorithm look forward finds first non-missing value (missing, start looking backward). order ODEs now determined order cmt() d/dt(). Compartment properties, tad() compartment related variables longer affect compartment sorting. option rxode2.syntax.require.ode.first longer anything. handling zeros “safely” changed (see #775) safeZero=TRUE denominator division expression zero, use Machine’s small number/eps (can see value .Machine$double.eps) saveLog=TRUE x log(x) less equal zero, change log(eps) safePow=TRUE expression x^y zero x negative number y replace x eps. Since protection divide zero changed, results also change. conservative protection mechanism applied previously. Random numbers rxode2 different using dop853, lsoda indLin methods. now seed random numbers way liblsoda, random number provided different solving methods. arguments saved rxSolve items like thetaMat reduced matrices used solving, full matrices (likely break many items)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"possible-breaking-changes-though-unlikely-3-0-0","dir":"Changelog","previous_headings":"","what":"Possible breaking changes (though unlikely)","title":"rxode2 3.0.0","text":"iCov longer merged event dataset. makes solving iCov slightly faster (#743)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-3-0-0","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 3.0.0","text":"can remove covariances every omega piping %>% ini(diag()) can bit granular removing covariances either eta.ka eta.cl : %>% ini(diag(eta.ka, eta.cl)) anything correlations eta.cl %>% ini(diag(eta.cl)) can also remove individual covariances %>% ini(-cov(, b)) %>% ini(-cor(,b)). can specify type interpolation applied added dosing records (added records) columns kept keep= option rxSolve(). new option keepInterpolation can locf last observation carried forward, nocb next observation carried backward, well NA puts NA imputed data rows. See #756. Note: interpolation linear/midpoint factors/characters changes locf warning (#759) Also note, default keep interpolation na Now can specify interpolation method per covariate model: linear(var1, var2) says var1 var2 use linear interpolation time-varying covariate. also use linear(var1) locf() declares variables using last observation carried forward nocb() declares variables using next observation carried backward midpoint() declares variables using midpoint interpolation linear(), locf(), locb(), midpoint(), params(), cmt() dvid() declarations now ignored loading rxode2 model rxS() Strings can assigned variables rxode2. Strings can now enclosed single quote well double quote. limitation rxode2 using string since R-parser changes single quotes double quotes. (impact rxode2({}) ui/function form). robust string encoding symengine (adapted utils::URLencode() utils::URLdecode()) Empty arguments rxRename() give warning (#688) Promoting covariates parameters model piping (via ini()) now allows setting bounds (#692) Added assertCompartmentName(), assertCompartmentExists(), assertCompartmentNew(), testCompartmentExists(), assertVariableExists() testVariableExists(), assertVariableNew(), assertVariableName(), assertParameterValue() verify value valid nlmixr2 compartment name, nlmixr2 compartment/variable exists model, variable name, parameter value (#726; #733) Added assertRxUnbounded(), testRxUnbounded(), warnRxBounded() allow nlmixr2 warn methods ignore boundaries #760 Added functions tad0(), tafd0(), tlast0() tfirst0() give 0 instead NA dose administered yet. useful use ODEs since NAs break solving (can used bit robustly models like Weibull absorption). rxode2 binary link lotri, means changes lotri package require rxode2 recompiled (cases) crash system. rxode2 also binary linkage PreciseSums binary linkage dparser reduced C structures , making changes dparser less likely cause segmentation faults rxode2 wasn’t recompiled. new model property added $props$cmtProp $statePropDf. data-frames showing compartment properties (currently ini, f, alag, rate dur) rxode2 ui model. comes lower level model variable $stateProp information encoded integers state. new generic method rxUiDeparse can used deparse meta information readable expressions; currently default supports lower triangular matrices lotri, can extended support types objects like ’nlmixr2’s foceiControl() instance.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-3-0-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 3.0.0","text":"Fix ui$props$endpoint ui endpoint defined terms ode instead lhs. See #754 Fix ui$props ui linear compartment model without ka defined. Model extraction modelExtract() now extract model properties. Note model property alag(cmt) lag(cmt) give value. See #745 assigning reserved variables, parser error. See #744 Linear interpolation now adjust times well values NA values observed. Fix keeping data NA values crash R; Also fixed incorrect NA interpolations. See #756 using cmt() sometimes next statement corrupted normalized syntax (like instance locf); bug fixed (#763) keep now error trying keep items rxode2 output data-frame calculated (#764)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"big-change-3-0-0","dir":"Changelog","previous_headings":"","what":"Big change","title":"rxode2 3.0.0","text":"request CRAN, combine rxode2parse, rxode2random, rxode2et package; changes packages now placed :","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.13","title":"rxode2 3.0.0","text":"Fix import data NA times","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-1","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.12","title":"rxode2 3.0.0","text":"Fix formatting issues identified m1mac, requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-2","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.11","title":"rxode2 3.0.0","text":"Make stacking flexible help rxode2 types plots Add toTrialDuration Omar Elashkar convert event data trial duration data Fix Issue #23 prefer variable values NSE values","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-3","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.10","title":"rxode2 3.0.0","text":"Fix dollar sign accessing objects (like data frames), pointed @frbrz (issue #16) Use rxode2parse functions internal event table creation (moved ). Dropped C++14 let system decide.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-4","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.9","title":"rxode2 3.0.0","text":"Split et(), eventTable() related functions. Also split rxStack() rxCbindStudyIndividual() package. Added NEWS.md file track changes package.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-before-merge-3-0-0","dir":"Changelog","previous_headings":"Big change","what":"rxode2random (before merge)","title":"rxode2 3.0.0","text":"Fix bug simulating nested variables (#25)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.1.0","title":"rxode2 3.0.0","text":"Breaking Change changed distributions standard C++ boost::random. Since dependent compiler, makes random numbers generated Mac, Windows Linux every distribution. Unfortunately new random number transformation, simulation results likely different . exception uniform number, always platforms.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-1","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.13","title":"rxode2 3.0.0","text":"Fixed formatting issues (requested CRAN identified m1mac)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-2","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.12","title":"rxode2 3.0.0","text":"Added function dfWishart gives (simulation) approximation degrees freedom Wishart match rse value. Added function swapMatListWithCube swaps omegaList omegaCube values Ensure outputs integers (instead long integers) requested CRAN checking functions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-3","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.11","title":"rxode2 3.0.0","text":"Fix qassert LTO","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-4","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.10","title":"rxode2 3.0.0","text":"Moved fast factor rxode2parse allow etTrans moved ","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-5","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.9","title":"rxode2 3.0.0","text":"Initial release rxode2random, separates parallel safe, random number generation ‘rxode2’ separate package reduce ‘rxode2’ compilation time. make CRAN maintenance bit easier. Added NEWS.md file track changes package.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-fixed-before-merging-3-0-0","dir":"Changelog","previous_headings":"Big change","what":"rxode2parse (fixed before merging)","title":"rxode2 3.0.0","text":"requested CRAN remove C code SET_TYPEOF longer part C R API.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.19","title":"rxode2 3.0.0","text":"Added evid suffix 60 cases evid=2 adds event (fixes tad() calculation certain edge cases) Initialize variables NA","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-1","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.18","title":"rxode2 3.0.0","text":"Removed linear compartment solutions gradients rxode2parse (rxode2) compiled intel c++ compiler (since crashes compiling). Fixed m1mac string issues requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-2","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.17","title":"rxode2 3.0.0","text":"Added ability query R user functions rxode2 model (force single threaded solve) Moved core rxFunParse rxRmFunParse C R user function clashes can handled Model variables now tracks compartments lag-time defined compartment steady state doses (NONMEM equivalent SS=1, SS=2), additional tracking time-point added track time lagged dose given. upshot, lagged dose start steady state concentration shifted + ii - lag rxode2 (currently ode systems ) release calculates non bio-availability adjusted duration rates instead trying figure rate duration solving. Make double assignment error, ie <- b <- NA times ignored (warning) Steady state bolus doses addl treated non steady state events (like observed NONMEM) Timsort upgraded; drop radix support rxode2 structure etTrans now supports keeping logical vectors (appropriate version rxode2). Security fixes applied requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-3","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.16","title":"rxode2 3.0.0","text":"Import data.table explicitly R code (imported C/C++ code)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-4","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.15","title":"rxode2 3.0.0","text":"Updates make flags support CXX17.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-5","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.14","title":"rxode2 3.0.0","text":"‘linCmt()’ translations ‘alpha’, ‘beta’, ‘gamma’, ‘k21’, ‘k31’, ‘vc’ now error instead ignoring ‘gamma’ ‘k31’ give 2 cmt solution transit compartment internal code now changes dose 0.0 dose administered depot compartment. way dosing central compartment (without dosing transit compartment) give NA depot compartment (consequently central compartment) Moved rxDerived added tests well. Moved etTransParse added tests well (makes etTrans). addition following changes made etTransParse()/etTrans(): internal translation (etTrans()) drop times infusions stop. , infusion stopped last observation time infusion stopped dropped. interferes linCmt() models. Breaking change/bug fix evid=2 considered observations translating data internal rxode2 event structure Fix edge case find infusion duration first item dosing record time 0. Fixed bug certain infusions rate, ii /ss data items dropped output addDosing=TRUE Also internal functions convert classic NONMEM events rxode2 events internal function gives information linear compartmental model translation type, useful babelmixr2 ‘time’ model now case insensitive Use function declaration rxode2parseGetTranslation() determine thread safety functions available rxode2 Add check correct number function arguments parser. Like R, known functions can assigned variable function can still called (changing variable value). example can variable gamma well function gamma(). Fix garbled error messages occur certain messages. Fixed errors occurred using capitalized AMT variables model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-6","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.13","title":"rxode2 3.0.0","text":"Version bump dparser (binaries built correctly)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-7","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.12","title":"rxode2 3.0.0","text":"Bug fix strict prototypes Removed sprintf noted CRAN Made rxode2parse dll binary independent rxode2()","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-8","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.11","title":"rxode2 3.0.0","text":"Bug fix strict aliasing requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-9","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.10","title":"rxode2 3.0.0","text":"Use strict aliasing requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-10","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.9","title":"rxode2 3.0.0","text":"Initial release split rxode2parse rxode2 reduce compilation time ‘rxode2’","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-213","dir":"Changelog","previous_headings":"","what":"rxode2 2.1.3","title":"rxode2 2.1.3","text":"CRAN release: 2024-05-28","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-1-3","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.1.3","text":"Make sure object uncompressed rxode2 ui solving rxSolve (See #661) Fix #670 using last simulated observation residual trailing doses.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-1-3","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.1.3","text":"Create function see rxode2 solve loaded memory (rxode2::rxSolveSetup()) Create new function fixes rxode2 population values model (drops initial estimates); rxFixPop()","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"other-changes-2-1-3","dir":"Changelog","previous_headings":"","what":"Other changes","title":"rxode2 2.1.3","text":"Pendantic -remap (requested CRAN) gcc USBAN fix (requested CRAN)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-212","dir":"Changelog","previous_headings":"","what":"rxode2 2.1.2","title":"rxode2 2.1.2","text":"CRAN release: 2024-01-30","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"other-changes-2-1-2","dir":"Changelog","previous_headings":"","what":"Other changes","title":"rxode2 2.1.2","text":"rxUi compression now defaults fast compression Fixes String literal formatting issues identified CRAN (#643) Removes linear compartment solutions gradients intel c++ compiler (since crash compiler).","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-210","dir":"Changelog","previous_headings":"","what":"rxode2 2.1.0","title":"rxode2 2.1.0","text":"CRAN release: 2023-12-11","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"breaking-changes-2-1-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"rxode2 2.1.0","text":"Steady state lag times longer shifted lag time solved steady state default. addition steady state original time dosing also back-calculated. want old behavior can bring back option ssAtDoseTime=FALSE. “dop853” now uses hmax/h0 values rxControl() rxSolve(). may change ODE solving using “dop853” specified (xgxr available), x axis longer assumed hours","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-1-0","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.1.0","text":"User defined functions can now R functions. many R functions can converted C rxFun() (can see C code afterwards rxC(\"funName\")) Parallel solving models require sorting (like modeled lag times, modeled duration etc) now solve parallel instead downgrading single threaded solving Steady state infusions duration infusions greater inter-dose interval now supported. Added $symengineModelNoPrune $symengineModelPrune loading models rxode2 rxS() plotting creating confidence intervals multiple endpoint models simulated rxode2 ui model, can plot/summarize endpoint sim. (ie. confint(model, \"sim\") plot(model, sim)). want summarize subset endpoints, can focus endpoint pre-pending endpoint sim. example wanted plot/summarize endpoint eff use sim.eff. (ie confint(model, \"sim.eff\") plot(model, sim.eff)) Added model$simulationIniModel prepend initial conditions ini({}) block classic rxode2({}) model. Now model$simulationModel model$simulationIniModel save use initialization values compiled model, solve original ui model. Allow ini(model) <- NULL drop ini block .ini(NULL) gives ini({}) (Issue #523) Add function modelExtract() extract model lines allow modifying changing model piping simply assigning modified lines model(ui) <- newModifiedLines Add Algebraic mu-referencing detection (mu2) allows express mu-referenced covariates : Instead previously required (log.WT.div.70.5 calculated data) mu expressions. ui now information allow transformation data internally transformation old mu-referencing style run optimization. Allow steady state infusions duration infusion greater inter-dose interval solved. Solves now possibly print information issuing “solve system” error function rxSetPipingAuto() now exported change way affect piping individual setup Allow covariates specified model piping, mod %>% model(=var+3, cov=\"var\") add \"var\" covariate. calculating confidence intervals rxode2 simulated objects can now use stratify simulation summary. example can now stratify gender race : confint(sim, \"sim\", =c(\"race\", \"gender\")) calculating intervals rxode2 simulated objects can now use ci=FALSE calculates default intervals without bands percentiles; can also choose match secondary bands limits levels use ci=0.99 instance new function introduced meanProbs() calculates mean expected confidence bands either normal t distribution related new function introduced calculates mean confidence bands Bernoulli/Binomial distribution (binomProbs()) calculating intervals rxode2 simulated objects can also use mean=TRUE use mean first level confidence using meanProbs(). confidence interval can override n used confidence interval using n=#. can also change prediction interval instead using pred=TRUE. Also calculating intervals rxode2 simulated object can also use mean=\"binom\" use binomial distributional information (ci) first level confidence using binomProbs(). confidence interval can override n used confidence interval using n=#. can also change prediction interval instead using pred=TRUE. pred=TRUE can override number predicted samples m=# plotting confint derived intervals rxode2 simulation, can now subset based simulated value like plot(ci, Cc) plot variable Cc summarized even also summarized eff (instance). rxode2 ui compressed ui object, can modify ini block $ini <- modify model block $model <-. equivalent ini(model) <- model(model) <-, respectively. Otherwise, object added user defined components function (ie $meta). object uncompressed, simply assigns environment instead (just like ). printing meta information happens lotri compatible matrix, use lotri express instead default R expression. Allow character vectors converted expressions piping (#552) rxAppendModel() now take arbitrary number models append together; also better handling models duplicate parameters models without ini() blocks (#617 / #573 / #575). keep now also keep attributes input data (special handling levels); means broader variety classes kept carrying information (example ordered factors, data frame columns unit information, etc) Piping arguments append ini() model() aligned perform similarly. Therefore ini(append=) now can take expressions instead simply strings model(append=) can also take strings. Also model piping now can specify integer line number modified just like ini() . Also model(append=FALSE) changed model(append=NULL). behavior don’t specify argument, behavior changed align ini() piping. Hence model(append=TRUE) append model(append=FALSE) now pre-pend model. model(append=NULL) modify lines like behavior ini(append=NULL). default model(line) modifying line -place still applies. breaking change, code perform . Labels can now dropped ini(param=label(NULL)). Also parameters can dropped idiom model(param=NULL) ini(param=NULL) changes parameter covariate align idiom dropping parameters rxRename refactored run faster","code":"cl <- exp(tcl + eta.cl + wt_cl * log(WT/70.5)) cl <- exp(tcl + eta.cl + wt_cl * log.WT.div.70.5)"},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"internal-new-features-2-1-0","dir":"Changelog","previous_headings":"","what":"Internal new features","title":"rxode2 2.1.0","text":"Add .model() list expressions, implies model(ui) <- ui$lstExpr assign model components. also robustly work character vectors Simulated objects rxSolve now can access model variables $rxModelVars Simulation models UI now use rxerr.endpoint instead err.endpoint sigma residual error. align convention internally generated variables start rx nlmixr Sorting uses timsort now, upgraded latest version Morwenn","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-1-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.1.0","text":"Simulating/solving functions/ui now prefers params omega sigma model (#632) Piping add constants initial estimates constants specified model({}) block (like k <- 1), ini block Bug fix geom_amt() aes transformation x Bug fix covariate updates may affect multiple compartment models (like issue #581)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"maintenance-fixes-2-1-0","dir":"Changelog","previous_headings":"","what":"Maintenance fixes","title":"rxode2 2.1.0","text":"Modify plot code work development xgxr","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2014","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.14","title":"rxode2 2.0.14","text":"CRAN release: 2023-10-07 CRAN requested FORTRAN kind changed portable; commented code, simply removed comment. Bug-fix geom_amt(); also now uses linewidth least ggplot2 3.4.0 documentation cleaned rxode2 2.0.13","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2013","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.13","title":"rxode2 2.0.13","text":"CRAN release: 2023-04-22","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-0-13","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.0.13","text":"bug fixed zeroRe() function works correlated omega values. bug fixed rename() function works initial conditions compartments (cmt(0))","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-0-13","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.0.13","text":"new function zeroRe() allows simple setting omega /sigma values zero model (#456) Diagonal zeros omega sigma matrices treated zeros model. corresponding omega sigma matrices drop columns/rows diagonals zero create new omega sigma matrix simulation. idiom NONMEM uses simulation matrices. Add ability pipe model estimates another model parentModel %>% ini(modelWithNewEsts) Add ability append model statements piping using %>% model(x=3, append=d/dt(depot)), still supports appending append=TRUE pre-pending append=NA (default replace lines append=FALSE) rxSolve’s keep argument now maintain character factor classes input data class (#190) Parameter labels may now modified via ini(param = label(\"text\")) (#351). Parameter order may modified via append argument ini() piping model. example, ini(param = 1, append = 0) ini(param = label(\"text\"), append = \"param2\") (#352).","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"internal-changes-2-0-13","dir":"Changelog","previous_headings":"","what":"Internal changes","title":"rxode2 2.0.13","text":"lower/upper bounds outside required bounds, adjustment displayed. initial values piped break model’s boundary condition reset boundary unbounded message boundary reset. Added .rxUi() function convert following objects rxUi objects: rxode2, rxModelVars, function. Converting nlmixr2 fits rxUi placed s3 method corresponding package. assertRxUi(x) now uses .rxUi() can extended outside rxode2/nlmixr2. rxode2 now supports addl ss doses Moved rxDerived rxode2parse (re-exported ). Added test transit compartment solving absence dosing transit compartment (fixed rxode2parse solving tested ) Using ini() without arguments rxode2 type function return ini() block. Also added method ini(mod) <- iniBlock modify ini block wish. iniBlock expression. Using model() without arguments rxode2 type function return model() block. Also added new method model(mod) <- modelBlock Added new method rxode2(mod) <- modFunction allows replacing function new function maintaining meta information ui (like information comes nonmem2rx models). modFunction body new function, new function, new rxode2 ui. rxode2 ui objects now $sticky item inside internal (compressed) environment. $sticky tells variables keep “significant” change ui piping sort model change. respected model piping, modifying model ini(mod)<-, model(mod)<-, rxode2(mod)<-. significant change change model block, change number estimates, change value estimates. Estimate bounds, weather estimate fixed estimate label changes considered significant. Added .ini() method convert various formats ini expression. used internally ini(mod)<-. want assign something new can convert ini expression, add method .ini(). Added .model() method convert various formats model expression. used internally model(mod)<-. want assign something new can convert model expression, add method .model().","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2011","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.11","title":"rxode2 2.0.11","text":"CRAN release: 2022-11-01 Give meaningful error ‘rxode2’ ui models error expressions Break ABI requirement roxde2() rxode2parse() new rxode2parse fix sprintf exclusion shown CRAN.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2010","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.10","title":"rxode2 2.0.10","text":"CRAN release: 2022-10-20 Time invariant covariates can now contain ‘NA’ values. column ‘NA’ entire id, now ‘rxode2’ warns id column instead just id. fix CRAN issues ‘nlmixr2est’, make version dependency explicit.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-209","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.9","title":"rxode2 2.0.9","text":"CRAN release: 2022-10-19 Remove log likelihoods ‘rxode2’ reduce compilation time increase maintainability ‘rxode2’. transferred ‘rxode2ll’ (requested CRAN). Remove parsing ‘rxode2’ solved linear compartment code move ‘rxode2parse’ reduce compilation time (requested CRAN). Remove random number generation ‘rxode2’ move ‘rxode2random’ reduce compilation time (requested CRAN). Remove event table translation generation ‘rxode2’ move ‘rxode2et’ reduce compilation time (requested CRAN). Change rxode2 ui object compressed, serialized object default. reduce C stack size problem occurs many environments R. Warn ignoring items simulations Export method change ‘rxode2’ solve methods internal integers Bug fix time invariant covariates identified time variant covariate individual’s time starts 0.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-208","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.8","title":"rxode2 2.0.8","text":"CRAN release: 2022-09-23","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"breaking-changes-2-0-8","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"rxode2 2.0.8","text":"rxgamma now allows rate input. aligns internal rxode2 version rxgamma clarifies used. also aligned llikGamma function used generalized likelihood estimation. ui cauchy simulations now follow ui normal t distributions, means can combine transformations. cauchy t distribution one degree freedom. ui dnorm() norm() longer equivalent add(). Now allows use loglik llikNorm() instead standard nlmixr2 style focei likelihood. done adding dnorm() end line. also means dnorm() now doesn’t take arguments. Vandercorput normal removed (non-random number generator)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-0-8","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.0.8","text":"Allow models nlmixr2 form without ini({}) block Allow model piping omega matrix f %>% ini(omegaMatrix) Standard models created rxode2() can piped model function Families log-likelihood added rxode2 mixed likelihood nonlinear mixed effects models may specified run. memory footprint rxode2 solving reduced Piping now allow named strings (issue #249)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-0-8","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.0.8","text":"rxode2’s symengine convert sqrt(2) M_SQRT_2 M_SQRT2. fixed; noticeable nlmixr2 log-likelihood estimation methods rxode2 treats DV non-covariate etTran (last time duplicate model). noticeable nlmixr2 log-likelihood estimation methods.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-0-8-1","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.0.8","text":"new flag (rxFlag) created tell rxode2 solving process . useful debugging. outputting variable always 11 calculating left handed equations. using conjunction printf() methods, double variable formatted \"%f\". additional option fullPrint added rxode2() allows rprintf() used almost rxode2() steps (inductive linearization matrix exponential exception ) instead just integration ddt step. defaults FALSE.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-207","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.7","title":"rxode2 2.0.7","text":"CRAN release: 2022-05-17 Removed accidental ^S news requested CRAN. Bug fix complicated mu-referencing. Change rxode2 md5 depend C/C++/Fortran code headers R files. way binary compatibility nlmixr2est rxode2, new version nlmixr2est need submitted CRAN.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-206","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.6","title":"rxode2 2.0.6","text":"CRAN release: 2022-05-09","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"solving-controls-2-0-6","dir":"Changelog","previous_headings":"Breaking changes","what":"Solving controls","title":"rxode2 2.0.6","text":"options rxControl rxSolve strict. camelCase now always used. Old options like add.cov transit_abs longer supported, addCov supported. new option, sigdig added rxControl(), controls common significant figure options like atol, rtol, ssAtol, ssRtol, single option.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"simulations-2-0-6","dir":"Changelog","previous_headings":"Breaking changes","what":"Simulations","title":"rxode2 2.0.6","text":"simulations, $simulationSigma now assumes diagonal matrix. sigma values assumed standard normal, uncorrelated endpoints. Simulation uncertainty still draw identity diagonal matrix Parallel solving now seeds simulation per individual based initial seed plus simulation id. makes simulation reproducible regardless number cores running simulation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"other-breaking-changes-2-0-6","dir":"Changelog","previous_headings":"Breaking changes","what":"Other breaking changes","title":"rxode2 2.0.6","text":"Solved objects now access underlying rxode model $rxode2 instead $rxode Since change names, rxode2, rxode RxODE perform function. Options changed RxODE.syntax rxode2.syntax. Assigning states rxode2.syntax.assign.state (RxODE.syntax.assign.state) longer supported. Enforcing “pure” assignment syntax = syntax longer supported rxode2.syntax.assign longer supported (RxODE.syntax.assign). Since R supports ** exponentiation operator, pure syntax without ** can longer enabled. Hence rxode2.syntax.star.pow (RxODE.syntax.star.pow) longer effect. “pure” syntax requires semicolon can longer enabled. Therefore rxode2.syntax.require.semicolon (RxODE.syntax.require.semicolon) longer effect. syntax state(0) can longer turned . rxode2.syntax.allow.ini0 (RxODE.syntax.allow.ini0) removed. Variable dots variable state names like state.name works R. Therefore, “pure” syntax excluding . values variables enforced rxode2.syntax.allow.dots (RxODE.syntax.allow.dots). mnemonic et(rate=model) et(dur=model) mnemonics removed. rate needs set -1 -2 manually instead. function rxode2Test() removed favor using testthat directly. Transit compartments need use new evid, evid=7. said, transitAbs option longer supported. ID columns input parameter data frames sorted merged original dataset ; underlying assumption ID order now checked outside rxode2(). Note event data frame still sorted.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"additional-features-2-0-6","dir":"Changelog","previous_headings":"","what":"Additional features","title":"rxode2 2.0.6","text":"UI functions nlmixr ported work rxode2 directly. rxModelVars({}) now supported. may now combine 2 models rxode2 rxAppendModel(). fact, long first value rxode2 evaluated ui model, can use c/rbind bind 2 models together. may now append model lines piping using %>% model(lines, append=TRUE) can also pre-pend lines %>% model(lines, append=NA) may now rename model variables, states defined parameters %>% rxRename(new=old) dplyr loaded: %>% rename(new=old) can fix parameters %>% ini(tcl=fix) %>% ini(fix(tcl)) well unfix parameters %>% ini(tcl=unfix) %>% ini(unfix(tcl))","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"internal-changes-2-0-6","dir":"Changelog","previous_headings":"","what":"Internal changes","title":"rxode2 2.0.6","text":"Strict R headers enforced places Since many changes incompatible, version renamed rxode2 rxode2() printout longer uses rules centered headings make display better larger variety systems.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-0-6","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.0.6","text":"tad() related time features reset start infusion (opposed starting beginning end infusion)","code":""}] +[{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"user-defined-functions","dir":"Articles","previous_headings":"","what":"User Defined Functions","title":"Integrating User Defined Functions into rxode2","text":"defining models may wished write small R function make function integrate rxode2 somehow. article discusses 4 ways : R-based user function can loaded simple function certain circumstances translated C run efficiently C function define integrate code user defined function changes rxode2 ui code replacing function rxode2 code. can presence absence data simulation estimation.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()`"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"r-based-user-functions","dir":"Articles","previous_headings":"","what":"R based user functions","title":"Integrating User Defined Functions into rxode2","text":"R-based user function convenient include ODE, slower done written C , C++ compiled language. requested github appropriate example; However, use simple example simply illustrate concepts. Now ODE compiled R functions called solving ODE. Since calling R, forces parallization turned since R single-threaded. also takes time solve since shuttling back forth R C. Lets see simple function performs: terribly bad, even though shuffling R C. can make better converting functions C: C version almost twice fast R version. may noticed conversion also created C versions first derivative. done automatically gives just C versions function, C versions derivatives registers rxode2. allows C versions work rxode2 nlmixr2 models. function setup advance allow type conversion. general derivatives calculated return() statement user defined function. means simply let R return last value instead explictly calling return(). Many people prefer method coding. Even return function, function converted C. github issue, used function convert derivatives: still helpful functions early returns, nlmixr2 models requiring derivatives calculated non-optimized finite differences occurs. gets internals rxode2 nlmixr2 can see easily calculating derivatives: Whereas originally defined function newAbs() use new derivatives calculated well: circumstances, conversion C possible, though can still use R function. requirements R functions integrated rxode2 system: function must set number arguments, variable arguments like f(…) currently allowed. function given argument single number, function return single number requirements met can use R function rxode2. Additional requirements conversion C include: functions use within R function must understood available rxode2. Practically speaking fun2() refers fun1(), fun1() must changed C code available rxode2 changing function fun2() C. functions can include /else assignments simple return statements (either returning value value line ). Special R control structures functions (like lapply) present. function refer package functions mentioned, return() statement present, derivative C functions rxode2’s derivative table updated.","code":"newAbs <- function(x) { if (x < 0) { -x } else { x } } f <- rxode2({ a <- newAbs(time) }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(-10, 10, length.out=40) mb1 <- microbenchmark::microbenchmark(withoutC=suppressWarnings(rxSolve(f,e))) library(ggplot2) autoplot(mb1) + rxTheme() # Create C functions automatically with `rxFun()` rxFun(newAbs) #> → finding duplicate expressions in d(newAbs)/d(x)... #> [====|====|====|====|====|====|====|====|====|====] 0:00:00 #> → optimizing duplicate expressions in d(newAbs)/d(x)... #> [====|====|====|====|====|====|====|====|====|====] 0:00:00 #> converted R function 'newAbs' to C (will now use in rxode2) #> converted R function 'rx_newAbs_d_x' to C (will now use in rxode2) #> Added derivative table for 'newAbs' # Recompile to use the C functions # Note it would recompile anyway if you didn't do this step, # it just makes sure that it doesn't recompile every step in # the benchmark f <- rxode2({ a <- newAbs(time) }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ mb2 <- microbenchmark::microbenchmark(withC=rxSolve(f,e, cores=1)) mb <- rbind(mb1, mb2) autoplot(mb) + rxTheme() + xgxr::xgx_scale_y_log10() #> Scale for y is already present. #> Adding another scale for y, which will replace the existing scale. print(mb) #> Unit: milliseconds #> expr min lq mean median uq max neval #> withoutC 9.136057 9.239820 9.883065 9.297273 9.40287 15.966970 100 #> withC 2.885046 2.960412 3.269299 3.002866 3.56147 8.106835 100 # Light f_R <- function(actRad, k_0, a_k) { photfac <- a_k * actRad + k_0 if (photfac > 1) { photfac = 1 } return(photfac) } rxFun(f_R) #> function contains return statement; derivatives not calculated #> converted R function 'f_R' to C (will now use in rxode2) rxFromSE(\"Derivative(f_R(actRad, k_0, a_k),k_0)\") #> [1] \"(f_R(actRad,(k_0)+6.05545445239334e-06,a_k)-f_R(actRad,k_0,a_k))/6.05545445239334e-06\" rxFromSE(\"Derivative(newAbs(x),x)\") #> [1] \"rx_newAbs_d_x(x)\""},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"c-based-functions","dir":"Articles","previous_headings":"","what":"C based functions","title":"Integrating User Defined Functions into rxode2","text":"can add C functions directly rxode2 well using rxFun(): wanted also use C functions expressions derivatives using rxD() function: Removing function rxRmFun() also remove derivative table:","code":"fun <- \" double fun(double a, double b, double c) { return a*a+b*a+c; } \" ## C-code for function rxFun(\"fun\", c(\"a\", \"b\", \"c\"), fun) rxD(\"fun\", list( function(a, b, c) { # derivative of arg1: a paste0(\"2*\", a, \"+\", b) }, function(a, b, c) { # derivative of arg2: b return(a) }, function(a, b, c) { # derivative of arg3: c return(\"0.0\") } )) rxRmFun(\"fun\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"functions-to-insert-rxode2-code-into-the-current-model","dir":"Articles","previous_headings":"","what":"Functions to insert rxode2 code into the current model","title":"Integrating User Defined Functions into rxode2","text":"replaces rxode2 code current model expansion. can allow R-like functions inside rxode2 ui models, well adding approximating functions like polynomials, splines neural networks. example allows R-like functions : accomplished combination two functions, highly commented: general list function needs return can : $replace – text replaced $– lines placed model current function found $– lines added model current function found $iniDf – initial estimates data.frame problem. calling function, can retrieve initial conditions currently used parsing can get prior value rxUdfUiIniDf() can modify inside function return new data.frame list element. allows add/delete initial estimates model well modify model lines . $uiUseData – TRUE, instructs rxode2 nlmixr2est re-parse function presence data, means bit function setup need done. $uiUseMv – TRUE instructs rxode2 re-parse function initial model variables calculated. addition rxUdfUiIniDf() can get information parser: rxUdfUiParsing() returns rxode2 ui function parsed currently (allows function overloaded udf calling rxode2 well function modifying model). rxUdfUiNum() parsing function calling (example rxpois() can called multiple times. gives number function model order (first give 1 second, 2, etc). can used create unique variables functions like rxIntToLetter() rxIntToBase(). rxUdfUiIniLhs() gives left-handed side equation function found. also R language object. rxUdfUiIniMv() gives model variables parsing (can used functions like linCmt()) rxUdfUiData() specifies data used simulate, estimate, etc. rxUdfUiEst() gives estimation/simulation method used model. example, simulation rxSolve.","code":"f <- function() { model({ a <- rxpois(lambda=lam) }) } # Which will evaluate into a standard rxode2 function that does not # support named arguments (since it is translated to C) f() # Which is still true in the standard rxode2: try(rxode2({ a <- rxpois(lambda=lam) })) rxUdfUi.rxpois <- function(fun) { # Fun is the language object (ie quoted R object) to be evaluated or # changed in the code .fun <- fun # Since the `rxpois` function is built into the rxode2 we need to # have a function with a different conflicts. In this case, I take # the function name (fun[[1]]), and prepend a \".\", which follows # `rxode2`'s naming convention of un-exported functions. # # This next evaluation changes the expression function to .rxpois() .fun[[1]] <- str2lang(paste0(\".\", deparse1(fun[[1]]))) # Since this is still a R expression, you can then evaluate the # function .rxpois to produce the proper code: eval(.fun) } # The above s3 method can be registered in a package or you can use # the following code to register it in your session: rxode2::.s3register(\"rxode2::rxUdfUi\", \"rxpois\") # This is the function that changes the code as needed .rxpois <- function(lambda) { # The first part of this code tries to change the value into a # character. This handles cases like rxpois(lambda=lam), # rxpois(lam), rxpois(\"lam\"). It also tries to evaluate the # argument supplied to lambda in case it comes from a different # location. .lam <- as.character(substitute(lambda)) .tmp <- try(force(lambda), silent=TRUE) if (!inherits(.tmp, \"try-error\")) { if (is.character(.tmp)) { .lam <- lambda } } # This part creates a list with the replacement text, in this case # it woulb be rxpois(lam) where there is no equals included, as # required by `rxode2`: list(replace=paste0(\"rxpois(\", .lam, \")\")) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"using-model-variables-in-rxode2-ui-models","dir":"Articles","previous_headings":"Functions to insert rxode2 code into the current model","what":"Using model variables in rxode2 ui models","title":"Integrating User Defined Functions into rxode2","text":"can also take change model take consideration rxode2 model variables full ui completed parsing. rxode2 model variables information might change variables make names variables. example left hand side equations ($lhs), input parameters ($params) ODE states ($state)). using approach, likely need following steps: data processed, need put function rxode2 acceptable form, named arguments, strings, numbers variables output. number arguments output needs declared S3 method adding attribute \"nargs\" method. example, built testMod1() ui modification function uses one argument parsed commented example model variables example:","code":"testMod1 <- function(val=1) { # This converts the val to a character if it is somthing like testMod1(b) .val <- as.character(substitute(val)) .tmp <- suppressWarnings(try(force(val), silent = TRUE)) if (!inherits(.tmp, \"try-error\")) { if (is.character(.tmp)) { .val <- val } } # This does the UI parsing if (rxUdfUiParsing()) { # See if the model variables are available .mv <- rxUdfUiMv() if (is.null(.mv)) { # Put this in a rxode2 low level acceptible form, no complex # expressions, no named arguments, something that is suitable # for C. # # The `uiUsMv` tells the parser this needs to be reparsed when # the model variables become avaialble during parsing. return(list(replace=paste0(\"testMod1(\", .val, \")\"), uiUseMv=TRUE)) } else { # Now that we have the model variables, we can then do something # about this .vars <- .mv$params if (length(.vars) > 0) { # If there is parameters available, this dummy function times # the first input function by the value specified return(list(replace=paste0(.vars[1], \"*\", .val))) } else { # If the value isn't availble, simply replace the function # with the value. return(list(replace=.val)) } } } stop(\"This function is only for use in rxode2 ui models\", call.=FALSE) } rxUdfUi.testMod1 <- function(fun) { eval(fun) } # To allow this to go to the next step, you need to declare how many # arguments this argument has, in this case 1. Bu adding the # attribute \"nargs\", rxode2 lower level parser knows how to handle # this new function. This allows rxode2 to generate the model # variables and send it to the next step. attr(rxUdfUi.testMod1, \"nargs\") <- 1L # If you are in a package, you can use the rxoygen tag @export to # register this as a rxode2 model definition. # # If you are using this in your own script, you need to register the s3 function # One way to do this is: rxode2::.s3register(\"rxode2::rxUdfUi\", \"testMod1\") ## These are some examples of this function in use: f <- function() { model({ a <- b + testMod1(3) }) } f <- f() print(f) #> ── rxode2-based Pred model ───────────────────────────────────────────────────── #> ── Model (Normalized Syntax): ── #> function() { #> model({ #> a <- b + (b * 3) #> }) #> } f <- function() { model({ a <- testMod1(c) }) } f <- f() print(f) #> ── rxode2-based Pred model ───────────────────────────────────────────────────── #> ── Model (Normalized Syntax): ── #> function() { #> model({ #> a <- (c * c) #> }) #> } f <- function() { model({ a <- testMod1(1) }) } f <- f() print(f) #> ── rxode2-based Pred model ───────────────────────────────────────────────────── #> ── Model (Normalized Syntax): ── #> function() { #> model({ #> a <- 1 #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Integrating-User-Defined-Functions-into-rxode2.html","id":"using-data-for-rxode2-ui-modification-models","dir":"Articles","previous_headings":"Functions to insert rxode2 code into the current model","what":"Using data for rxode2 ui modification models","title":"Integrating User Defined Functions into rxode2","text":"steps needed use data model replacement; can use data model replace values inside model. worked example linMod() included ability use: model variables, put lines model, add initial conditions use data initial estimates","code":"# You can print the code: linMod #> function (variable, power, dv = \"dv\", intercept = TRUE, type = c(\"replace\", #> \"before\", \"after\"), num = NULL, iniDf = NULL, data = FALSE, #> mv = FALSE) #> { #> .dv <- as.character(substitute(dv)) #> .tmp <- suppressWarnings(try(force(dv), silent = TRUE)) #> if (!inherits(.tmp, \"try-error\")) { #> if (is.character(.tmp)) { #> .dv <- dv #> } #> } #> .var <- as.character(substitute(variable)) #> .tmp <- try(force(variable), silent = TRUE) #> .doExp3 <- FALSE #> if (!inherits(.tmp, \"try-error\")) { #> if (is.character(.tmp)) { #> .var <- variable #> } #> else if (!inherits(.tmp, \"formula\")) { #> .dv <- as.character(substitute(dv)) #> .tmp <- suppressWarnings(try(force(dv), silent = TRUE)) #> if (!inherits(.tmp, \"try-error\")) { #> if (is.character(.tmp)) { #> .dv <- dv #> } #> } #> } #> else if (length(variable) == 2) { #> if (!identical(variable[[1]], quote(`~`))) { #> stop(\"unexpected formula, needs to be the form ~x^3\", #> call. = FALSE) #> } #> .doExp3 <- TRUE #> .exp3 <- variable[[2]] #> } #> else { #> if (length(variable) != 3) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> if (!identical(variable[[1]], quote(`~`))) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> .dv <- as.character(variable[[2]]) #> data <- TRUE #> .exp3 <- variable[[3]] #> .doExp3 <- TRUE #> } #> if (.doExp3) { #> if (length(.exp3) == 1) { #> .var <- variable <- as.character(.exp3) #> power <- 1 #> } #> else if (length(.exp3) == 3) { #> if (!identical(.exp3[[1]], quote(`^`))) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> if (!is.numeric(.exp3[[3]])) { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> .var <- variable <- as.character(.exp3[[2]]) #> power <- .exp3[[3]] #> } #> else { #> stop(\"unexpected formula, needs to be the form dv~x^3\", #> call. = FALSE) #> } #> } #> } #> checkmate::assertCharacter(.var, len = 1L, any.missing = FALSE, #> pattern = \"^[.]*[a-zA-Z]+[a-zA-Z0-9._]*$\", min.chars = 1L, #> .var.name = \"variable\") #> checkmate::assertCharacter(.dv, len = 1L, any.missing = FALSE, #> pattern = \"^[.]*[a-zA-Z]+[a-zA-Z0-9._]*$\", min.chars = 1L, #> .var.name = \"dv\") #> checkmate::assertLogical(intercept, len = 1L, any.missing = FALSE) #> checkmate::assertIntegerish(power, lower = ifelse(intercept, #> 0L, 1L), len = 1L) #> if (is.null(num)) { #> num <- rxUdfUiNum() #> } #> checkmate::assertIntegerish(num, lower = 1, any.missing = FALSE, #> len = 1) #> if (mv && is.null(rxUdfUiMv())) { #> if (intercept) { #> return(list(replace = paste0(\"linModM(\", .var, \", \", #> power, \")\"), uiUseMv = TRUE)) #> } #> else { #> return(list(replace = paste0(\"linModM0(\", .var, \", \", #> power, \")\"), uiUseMv = TRUE)) #> } #> } #> if (data && is.null(rxUdfUiData())) { #> if (intercept) { #> return(list(replace = paste0(\"linModD(\", .var, \", \", #> power, \", \", .dv, \")\"), uiUseData = TRUE)) #> } #> else { #> return(list(replace = paste0(\"linModD0(\", .var, \", \", #> power, \",\", .dv, \")\"), uiUseData = TRUE)) #> } #> } #> if (is.null(iniDf)) { #> iniDf <- rxUdfUiIniDf() #> } #> assertIniDf(iniDf, null.ok = TRUE) #> type <- match.arg(type) #> .mv <- rxUdfUiMv() #> if (!is.null(.mv)) { #> .varsMv <- c(.mv$lhs, .mv$params, .mv$state) #> .pre <- paste0(.var, num, rxIntToLetter(seq_len(power + #> ifelse(intercept, 1L, 0L)) - 1L)) #> .pre <- vapply(.pre, function(v) { #> if (v %in% .varsMv) { #> paste0(\"rx.linMod.\", v) #> } #> else { #> v #> } #> }, character(1), USE.NAMES = FALSE) #> } #> else { #> .pre <- paste0(\"rx.linMod.\", .var, num, rxIntToLetter(seq_len(power + #> ifelse(intercept, 1L, 0L)) - 1L)) #> } #> if (!is.null(iniDf)) { #> .theta <- iniDf[!is.na(iniDf$ntheta), , drop = FALSE] #> if (length(.theta$ntheta) > 0L) { #> .maxTheta <- max(.theta$ntheta) #> .theta1 <- .theta[1, ] #> } #> else { #> .maxTheta <- 0L #> .theta1 <- .rxBlankIni(\"theta\") #> } #> .theta1$lower <- -Inf #> .theta1$upper <- Inf #> .theta1$fix <- FALSE #> .theta1$label <- NA_character_ #> .theta1$backTransform <- NA_character_ #> .theta1$condition <- NA_character_ #> .theta1$err <- NA_character_ #> .est <- rep(0, length(.pre)) #> if (data) { #> .dat <- rxUdfUiData() #> .wdv <- which(tolower(names(.dat)) == tolower(.dv)) #> if (length(.wdv) == 0L) { #> warning(.dv, \"not found in data, so no initial estimates will be set to zero\") #> } #> else { #> names(.dat)[.wdv] <- .dv #> .model <- stats::lm(stats::as.formula(paste0(.dv, #> \" ~ stats::poly(\", .var, \",\", power, \")\", ifelse(intercept, #> \"\", \"+0\"))), data = rxUdfUiData()) #> .est <- coef(.model) #> } #> } #> .cur <- c(list(.theta), lapply(seq_along(.pre), function(i) { #> .cur <- .theta1 #> .cur$name <- .pre[i] #> .cur$est <- .est[i] #> .cur$ntheta <- .maxTheta + i #> .cur #> })) #> .theta <- do.call(rbind, .cur) #> .eta <- iniDf[is.na(iniDf$neta), , drop = FALSE] #> .iniDf <- rbind(.theta, .eta) #> } #> else { #> .iniDf <- NULL #> } #> .linMod <- paste(vapply(seq_along(.pre), function(i) { #> if (intercept) { #> if (i == 1) #> return(.pre[i]) #> if (i == 2) #> return(paste0(.pre[i], \"*\", .var)) #> paste0(.pre[i], \"*\", paste0(.var, \"^\", i - 1L)) #> } #> else { #> if (i == 1) #> return(paste0(.pre[i], \"*\", .var)) #> paste0(.pre[i], \"*\", paste0(.var, \"^\", i)) #> } #> }, character(1)), collapse = \"+\") #> if (type == \"replace\") { #> list(replace = .linMod, iniDf = .iniDf) #> } #> else if (type == \"before\") { #> .replace <- paste0(\"rx.linMod.\", .var, \".f\", num) #> list(before = paste0(.replace, \" <- \", .linMod), replace = .replace, #> iniDf = .iniDf) #> } #> else if (type == \"after\") { #> .replace <- paste0(\"rx.linMod.\", .var, \".f\", num) #> list(after = paste0(.replace, \" <- \", .linMod), replace = \"0\", #> iniDf = .iniDf) #> } #> } #> #> # You can also print the s3 method that is used for this method rxode2:::rxUdfUi.linMod #> function (fun) #> { #> eval(fun) #> } #> #> #> attr(,\"nargs\") #> [1] 2"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"modifying-model","dir":"Articles","previous_headings":"","what":"Modifying model","title":"Modifying Models","text":"tasks might want overall model: Change line model Add line model Rename parameters model Combine different models Create functions add certain model features model go model piping functions can use modify models even add functions modify models. cover model modification functions nlmixr2lib","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"modifying-a-model-line","dir":"Articles","previous_headings":"Modifying model","what":"Modifying a model line","title":"Modifying Models","text":"opinion, modifying lines model likely common task modifying model. may wish modify model subject variability add covariate effects. begin course need base model modify. Let’s start simple PK example, using single-dose theophylline dataset generously provided Dr. Robert . Upton University California, San Francisco: believed enough absorption support subject variability can change line drop subject modifying single line. simply type line want model piping expression: expected, line modified. Also can notice initial estimate subject variability dropped since longer part model. reason wanted add back model can modify model add back: modification, eta.ka automatically assumed subject variability parameter. Also since eta.ka mu-referenced rxode2 points . automatic detection eta.ka name follows convention. Parameters starting ending following names assumed subject variability parameters: eta (NONMEM convention) ppv (per patient variability) psv (per subject variability) iiv (inter-individual variability) bsv (subject variability) bpv (patient variability) functioning correctly can change covariate can add type initial estimate later: seen , eta.ka model assumed data-input parameter covariate instead estimated parameter. can also note WT automatically recognized covariate covWt automatically recognized covariate parameter. general covariates typical/population parameters automatically converted estimated parameters based parameter name starting (ending ): tv (typical value) t (also typical value) pop (population parameter) err (error parameter) eff (effect parameter) cov (covariate parameters) notable exceptions parameters like (wt, sex crcl) assumed covariates. don’t want automatic variable conversion, can also use auto=FALSE: case additional parameters (eta.ka, WT, covWt) assumed parameters dataset.","code":"one.compartment <- function() { ini({ tka <- 0.45; label(\"Ka\") tcl <- 1; label(\"Cl\") tv <- 3.45; label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } mod <- one.compartment |> model(ka <- exp(tka)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ! remove between subject variability `eta.ka` print(mod) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } mod2 <- mod |> model(ka <- tka * exp(eta.ka)) #> ℹ add between subject variability `eta.ka` and set estimate to 1 print(mod2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v eta.ka #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.ka 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.ka ~ 1 #> }) #> model({ #> ka <- tka * exp(eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } mod2 <- mod |> model(ka <- tka * exp(eta.ka) + WT * covWt, cov=\"eta.ka\") #> ℹ add covariate `eta.ka` (as requested by cov option) #> ℹ add covariate `WT` #> ℹ add population parameter `covWt` and set estimate to 1 print(mod2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd covWt #> 0.45 1.00 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> covWt <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- tka * exp(eta.ka) + WT * covWt #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } mod3 <- mod |> model(ka <- tka * exp(eta.ka) + WT * covWt, auto=FALSE) #> ℹ add covariate `eta.ka` #> ℹ add covariate `WT` #> ℹ add covariate `covWt` print(mod3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- tka * exp(eta.ka) + WT * covWt #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"note-on-automatic-detection-of-variables","dir":"Articles","previous_headings":"Modifying model","what":"Note on automatic detection of variables","title":"Modifying Models","text":"automatic detection variables convenient many models may suit style; like can always change using options(): option disabled, variables assumed covariates promote population parameters ini block last example option enabled none variables starting t added model course use turn back : can use withr::with_options(list(rxode2.autoVarPiping=FALSE), ...) turn option temporarily. don’t like defaults changing variables change well rxSetPipingAuto() example wanted variables starting ending te can change : requested population parameters starting te added ini block. want reset defaults simply call rxSetPipingAuto() without arguments:","code":"options(rxode2.autoVarPiping=FALSE) mod7 <- mod3 |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) print(mod7) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- tka * exp(eta.ka) + WT * covWt #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } options(rxode2.autoVarPiping=TRUE) mod8 <- mod |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 #> ℹ promote `tkin` to population parameter with initial estimate 1 #> ℹ promote `tkout` to population parameter with initial estimate 1 print(mod8) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } rxSetPipingAuto(thetamodelVars = rex::rex(\"te\")) mod9 <- mod |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 print(mod9) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 tec50 #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } rxSetPipingAuto() mod10 <- mod |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 #> ℹ promote `tkin` to population parameter with initial estimate 1 #> ℹ promote `tkout` to population parameter with initial estimate 1"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"adding-model-lines","dir":"Articles","previous_headings":"Modifying model","what":"Adding model lines","title":"Modifying Models","text":"three ways insert lines rxode2/nlmixr2 model. can add lines end model, expression beginning model controlled append option. Let’s assume two different assays run compound noticed different variability. can modify model adding lines end model using append=TRUE: Perhaps instead may want add indirect response model addition concentrations, can choose add : append=lhsVar lhsVar left handed variable want insert new lines: last type insertion may wish add lines beginning model using append=FALSE:","code":"mod4 <- mod |> model({ cp2 <- cp cp2 ~ lnorm(lnorm.sd) }, append=TRUE) #> ℹ add residual parameter `lnorm.sd` and set estimate to 1 print(mod4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd lnorm.sd #> 0.45 1.00 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.cl eta.v #> eta.cl 0.3 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 cp ~ … cmt='cp' or cmt=3 dvid='cp' or dvid=1 #> 2 cp2 ~ … cmt='cp2' or cmt=4 dvid='cp2' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tcl eta.cl id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> lnorm.sd <- c(0, 1) #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> cp2 <- cp #> cp2 ~ lnorm(lnorm.sd) #> }) #> } mod5 <- mod |> model({ PD <- 1-emax*cp/(ec50+cp) ## effect(0) <- e0 kin <- e0*kout d/dt(effect) <- kin*PD -kout*effect }, append=d/dt(center)) mod6 <- mod5 |> model({ emax <- exp(temax) e0 <- exp(te0 + eta.e0) ec50 <- exp(tec50) kin <- exp(tkin) kout <- exp(tkout) }, append=FALSE) #> ℹ promote `temax` to population parameter with initial estimate 1 #> ℹ promote `te0` to population parameter with initial estimate 1 #> ℹ promote `eta.e0` to between subject variability with initial estimate 1 #> ℹ promote `tec50` to population parameter with initial estimate 1 #> ℹ promote `tkin` to population parameter with initial estimate 1 #> ℹ promote `tkout` to population parameter with initial estimate 1 print(mod6) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 effect #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> PD <- 1 - emax * cp/(ec50 + cp) #> effect(0) <- e0 #> kin <- e0 * kout #> d/dt(effect) <- kin * PD - kout * effect #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"remove-lines-in-the-model","dir":"Articles","previous_headings":"Modifying model","what":"Remove lines in the model","title":"Modifying Models","text":"lines model can removed one 2 ways either use -param param <- NULL model piping:","code":"mod7 <- mod6 |> model(-emax) #> ! remove population parameter `temax` print(mod7) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 effect #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> PD <- 1 - emax * cp/(ec50 + cp) #> effect(0) <- e0 #> kin <- e0 * kout #> d/dt(effect) <- kin * PD - kout * effect #> cp = center/v #> cp ~ add(add.sd) #> }) #> } # Equivalently mod8 <- mod6 |> model(emax <- NULL) #> ! remove population parameter `temax` print(mod8) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd te0 tec50 tkin tkout #> 0.45 1.00 3.45 0.70 1.00 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 effect #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tkout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> PD <- 1 - emax * cp/(ec50 + cp) #> effect(0) <- e0 #> kin <- e0 * kout #> d/dt(effect) <- kin * PD - kout * effect #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"rename-parameters-in-a-model","dir":"Articles","previous_headings":"Modifying model","what":"Rename parameters in a model","title":"Modifying Models","text":"may want rename parameters model, easy rxRename(). dplyr loaded can even replace rename(). semantics similar two functions, assigning newVar=oldVar. example: can see every instance variable named model renamed inside model ini block. completeness can see dplyr verb (since S3 method):","code":"mod11 <- mod10 |> rxRename(drug1kout=kout, tv.drug1kout=tkout) print(mod11) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 #> 0.45 1.00 3.45 0.70 1.00 1.00 #> tec50 tkin tv.drug1kout #> 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tv.drug1kout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> drug1kout <- exp(tv.drug1kout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union mod12 <- mod10 |> rename(drug1kout=kout, tv.drug1kout=tkout) print(mod12) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd temax te0 #> 0.45 1.00 3.45 0.70 1.00 1.00 #> tec50 tkin tv.drug1kout #> 1.00 1.00 1.00 #> #> Omega ($omega): #> eta.cl eta.v eta.e0 #> eta.cl 0.3 0.0 0 #> eta.v 0.0 0.1 0 #> eta.e0 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 te0 eta.e0 id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Ka\") #> tcl <- 1 #> label(\"Cl\") #> tv <- 3.45 #> label(\"V\") #> add.sd <- c(0, 0.7) #> temax <- 1 #> te0 <- 1 #> tec50 <- 1 #> tkin <- 1 #> tv.drug1kout <- 1 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> eta.e0 ~ 1 #> }) #> model({ #> emax <- exp(temax) #> e0 <- exp(te0 + eta.e0) #> ec50 <- exp(tec50) #> kin <- exp(tkin) #> drug1kout <- exp(tv.drug1kout) #> ka <- exp(tka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"combine-different-models","dir":"Articles","previous_headings":"Modifying model","what":"Combine different models","title":"Modifying Models","text":"can also combine different models rxAppendModel(). general need variables common combine. generally want models link . example pk pd model done renaming cp first model ceff second model: get error try combine models without variables common: want combine models without respecting variables common, can use common=FALSE:","code":"ocmt <- function() { ini({ tka <- exp(0.45) # Ka tcl <- exp(1) # Cl tv <- exp(3.45); # log V ## the label(\"Label name\") works with all models add.sd <- 0.7 }) model({ ka <- tka cl <- tcl v <- tv d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.sd) }) } idr <- function() { ini({ tkin <- log(1) tkout <- log(1) tic50 <- log(10) gamma <- fix(1) idr.sd <- 1 }) model({ kin <- exp(tkin) kout <- exp(tkout) ic50 <- exp(tic50) d/dt(eff) <- kin - kout*(1-ceff^gamma/(ic50^gamma+ceff^gamma)) eff ~ add(idr.sd) }) } rxAppendModel(ocmt %>% rxRename(ceff=cp), idr) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd tkin tkout tic50 gamma #> 1.568312 2.718282 31.500392 0.700000 0.000000 0.000000 2.302585 1.000000 #> idr.sd #> 1.000000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 eff #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 ceff ~ … cmt='ceff' or cmt=4 dvid='ceff' or dvid=1 #> 2 eff ~ … cmt='eff' or cmt=3 dvid='eff' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> tkin <- 0 #> tkout <- 0 #> tic50 <- 2.30258509299405 #> gamma <- fix(1) #> idr.sd <- c(0, 1) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> ceff <- center/v #> ceff ~ add(add.sd) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ic50 <- exp(tic50) #> d/dt(eff) <- kin - kout * (1 - ceff^gamma/(ic50^gamma + #> ceff^gamma)) #> eff ~ add(idr.sd) #> }) #> } try(rxAppendModel(ocmt, idr)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> Error : not all the models have variables in common (use `common=FALSE` to allow this) mod2 <- rxAppendModel(ocmt, idr, common=FALSE) |> model(ceff=cp, append=ic50) # here we add the translation after the #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # ic50 line to make it reasonable print(mod2) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd tkin tkout tic50 gamma #> 1.568312 2.718282 31.500392 0.700000 0.000000 0.000000 2.302585 1.000000 #> idr.sd #> 1.000000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 eff #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 cp ~ … cmt='cp' or cmt=4 dvid='cp' or dvid=1 #> 2 eff ~ … cmt='eff' or cmt=3 dvid='eff' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> tkin <- 0 #> tkout <- 0 #> tic50 <- 2.30258509299405 #> gamma <- fix(1) #> idr.sd <- c(0, 1) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> kin <- exp(tkin) #> kout <- exp(tkout) #> ic50 <- exp(tic50) #> ceff <- cp #> d/dt(eff) <- kin - kout * (1 - ceff^gamma/(ic50^gamma + #> ceff^gamma)) #> eff ~ add(idr.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"creating-more-complex-model-modification-functions","dir":"Articles","previous_headings":"Modifying model","what":"Creating more complex model modification functions","title":"Modifying Models","text":"pretty flexible, may want even , helper functions help create functions . discuss extract model function update . Lets start model: Lets assume moment want remove eta cl. First probably want get model lines. can modelExtract(): Now want worry cl line, can subset : Now wish change line “cl <- exp(tcl+eta.cl)” Note functions modify ini({}) block. may modify ini block first make valid rxode2/nlmixr2 model. particular case, using model piping easier, simply demonstrates two different way extract model information way add information final model. methods can tricky using model parsed correctly. means make sure parameters endpoints follow correct rules","code":"f <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 eta.ka ~ 0.6 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v }) } totLines <- modelExtract(f, endpoint=NA) # endpoints should be included #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(totLines) #> [1] \"ka <- exp(tka + eta.ka)\" #> [2] \"cl <- exp(tcl)\" #> [3] \"v <- exp(tv + eta.v)\" #> [4] \"d/dt(depot) <- -ka * depot\" #> [5] \"d/dt(center) <- ka * depot - cl/v * center\" #> [6] \"cp <- center/v\" clLine <- modelExtract(f, cl, lines=TRUE) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments line <- attr(clLine, \"lines\") totLines[line] <- \"cl <- exp(tcl+eta.cl)\" # For now lets remove the entire `ini` block (so you don't have to # worry about syncing parameters). # ini(f) <- NULL #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments model(f) <- totLines #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f) #> function () #> { #> ini({ #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> }) #> } #> "},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"modifying-initial-estimates","dir":"Articles","previous_headings":"","what":"Modifying initial estimates","title":"Modifying Models","text":"common items want initial estimates : Fix/Unfix parameter Change initial condition values bounds Change initial condition type Change labels transformations Reorder parameters Remove covariances parameters group parameters may wish create functions; discuss .","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"fixing-or-unfixing-a-parameter","dir":"Articles","previous_headings":"Modifying initial estimates","what":"Fixing or unfixing a parameter","title":"Modifying Models","text":"can fix model estimates two ways. first fix value whatever model function, done piping model parameter name (like tka) setting equal fix (%>% ini(tka=fix)). full example: can also fix parameter different value wish; similar can specify value fix inside fix pseudo-function follows: %>% ini(tka=fix(0.1)). fully worked example :","code":"f <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 add.sd <- c(0, 0.7) eta.ka ~ 0.6 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v cp ~ add(add.sd) }) } f2 <- f |> ini(tka=fix) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ fix `tka` to `0.45` print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.45) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 add.sd <- c(0, 0.7) eta.ka ~ 0.6 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v cp ~ add(add.sd) }) } f2 <- f |> ini(tka=fix(0.1)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ fix `tka` to `0.45` #> ℹ change initial estimate of `tka` to `0.1` print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"unfixing-parameters","dir":"Articles","previous_headings":"Modifying initial estimates","what":"Unfixing parameters","title":"Modifying Models","text":"unfix parameters similarly fixing. Instead using fix keyword, use unfix keyword. unfix parameter (keeping value) pipe model using (|> ini(tka=unfix)). Starting fixed model fully worked example : can also unfix change initial estimate ini(parameter=unfix(newEst)):","code":"print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f2 |> ini(tka=unfix) #> ℹ unfix `tka` keeping initial estimate `0.1` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } print(f2) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- fix(0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f2 |> ini(tka=unfix(10)) #> ℹ unfix `tka` keeping initial estimate `0.1` #> ℹ change initial estimate of `tka` to `10` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 10.00 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 10 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"multiple-parameter-assignment","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Multiple parameter assignment","title":"Modifying Models","text":"can also assign multiple parameters providing : vector/list multiple lines piped ini() block Using covariance matrix case vector can specify pipe model. example: can also added multiple lines commas separating estimates: also use matrix specify covariance:","code":"ini1 <- c(tka=0.1, tcl=1, tv=3) f4 <- f |> ini(ini1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` #> ℹ change initial estimate of `tcl` to `1` #> ℹ change initial estimate of `tv` to `3` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.1 1.0 3.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # or equivalently ini1 <- list(tka=0.1, tcl=1, tv=3) f4a <- f |> ini(ini1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` #> ℹ change initial estimate of `tcl` to `1` #> ℹ change initial estimate of `tv` to `3` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.1 1.0 3.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # commas separating values: f4 <- f |> ini(tka=0.1, tcl=1, tv=3) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` #> ℹ change initial estimate of `tcl` to `1` #> ℹ change initial estimate of `tv` to `3` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.1 1.0 3.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # multiple lines in {} f4 <- f |> ini({ tka <- 0.2 tcl <- 2 tv <- 6 }) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.2` #> ℹ change initial estimate of `tcl` to `2` #> ℹ change initial estimate of `tv` to `6` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.2 2.0 6.0 0.7 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.2 #> tcl <- 2 #> tv <- 6 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } ome <- lotri(eta.ka + eta.v ~ c(0.6, 0.01, 10.1)) f4 <- f |> ini(ome) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `eta.ka` to `0.6` #> ℹ add covariance between `eta.v` and `eta.ka` with initial estimate `0.01` #> ℹ change initial estimate of `eta.v` to `10.1` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.60 0.01 #> eta.v 0.01 10.10 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ c(0.01, 10.1) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # or equavialtly use the lotri-type syntax for the omega: f4 <- f |> ini(eta.ka + eta.v ~ c(0.6, 0.01, 0.2)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `eta.ka` to `0.6` #> ℹ add covariance between `eta.v` and `eta.ka` with initial estimate `0.01` #> ℹ change initial estimate of `eta.v` to `0.2` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.60 0.01 #> eta.v 0.01 0.20 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ c(0.01, 0.2) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"single-parameter-assignment","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Single parameter assignment","title":"Modifying Models","text":"simplest way change initial parameter estimates simply use ini(parameter=newValue). can also use <- ~ change value: fully worked example showing three types initial value modification : can change bounds like model specification using numeric vector c(low, estimate) c(low, estimate, hi). worked example: Note changing parameters default values might show parameter printout:","code":"f3 <- f |> ini(tka <- 0.1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` f4 <- f |> ini(tka=0.1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` f5 <- f |> ini(tka ~ 0.1) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.1` print(f5) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f |> ini(tka <- c(0, 0.1, 0.2)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate (0.1) and upper/lower bound (0 to 0.2) of `tka` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- c(0, 0.1, 0.2) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f |> ini(tka <- c(0, 0.1)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate (0.1) and lower bound (0) of `tka` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- c(0, 0.1) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f3 <- f |> ini(tka <- c(0, 0.1, 0.2)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate (0.1) and upper/lower bound (0 to 0.2) of `tka` print(f3) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- c(0, 0.1, 0.2) #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # Now reassign f4 <- f3 |> ini(tka <- c(-Inf, 0.1, Inf)) #> ℹ change initial estimate (0.1) and upper/lower bound (-Inf to Inf) of `tka` print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.10 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.1 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"changing-parameter-types","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Changing parameter types","title":"Modifying Models","text":"can change parameter type two operators either using -par convert parameter covariate ~par toggle population individual parameters. example 3:","code":"# Switch population parameter to between subject variability parameter: f4 <- f |> ini( ~ tcl) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ convert 'tcl' from population parameter to between subject variability print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v tcl #> eta.ka 0.6 0.0 0 #> eta.v 0.0 0.1 0 #> tcl 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> tcl ~ 1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # Switch back to population parameter f5 <- f4 |> ini( ~ tcl) #> ℹ convert 'tcl' from between subject variability to population parameter print(f5) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd tcl #> 0.45 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> tcl <- 1 #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # Change the variable to a covariate parameter (ie it doesn't have an # initial estimate so remove it with the `-` operator): f6 <- f4 |> ini(-tcl) #> ℹ changing between subject variability parameter 'tcl' to covariate parameter print(f6) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # You can change the covariate or remove the parameter estimate by # `tcl <- NULL`: f6 <- f4 |> ini(tcl <- NULL) #> ℹ changing between subject variability parameter 'tcl' to covariate parameter print(f6) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # to add it back as a between subject variability or population # parameter you can pipe it as follows: f7 <- f6 |> ini(tcl=4) #> ℹ promote `tcl` to population parameter with initial estimate 4 #> ℹ change initial estimate of `tcl` to `4` print(f7) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd tcl #> 0.45 3.45 0.70 4.00 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> tcl <- 4 #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f8 <- f6 |> ini(tcl ~ 0.1) #> ℹ promote `tcl` to between subject variability with initial estimate 0.1 #> ℹ change initial estimate of `tcl` to `0.1` print(f8) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tv add.sd #> 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v tcl #> eta.ka 0.6 0.0 0.0 #> eta.v 0.0 0.1 0.0 #> tcl 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> tcl ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"changing-parameter-labels","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Changing parameter labels","title":"Modifying Models","text":"want change/add parameter label assign parameter label(\"label add\"). example: can also change order performing operations: want remove labels can remove ini(par=label(NULL)); example:","code":"f4 <- f |> ini(tka=label(\"Typical Ka (1/hr)\")) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f4) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Typical Ka (1/hr)\") #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f5 <- f |> ini(tka=label(\"Typical Ka (1/hr)\"), append=tcl) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f5) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tcl tka tv add.sd #> 1.00 0.45 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tcl <- 1 #> tka <- 0.45 #> label(\"Typical Ka (1/hr)\") #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f6 <- f |> ini(tka=label(NULL)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f6) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"changing-parameter-transformations","dir":"Articles","previous_headings":"Modifying initial estimates > Changing the parameter values and possibly bounds","what":"Changing parameter transformations","title":"Modifying Models","text":"Back-transformations -ride back transformations nlmixr2 models. similar modification labels. use |> ini(tka=backTransform(exp)) add exponential back-transformation data: wish remove can also |> ini(tka=backTransform(NULL)):","code":"f7 <- f |> ini(tka=backTransform(exp)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f7) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> backTransform(\"exp\") #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } f8 <- f |> ini(tka=backTransform(NULL)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(f8) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"removing-covariances-between-between-subject-varaibilities","dir":"Articles","previous_headings":"Modifying initial estimates","what":"Removing covariances between between subject varaibilities","title":"Modifying Models","text":"two approaches removing covarinaces subject variabilities: diag() -cov(var1, var2) diag() removes either covariance elements (arguments) covariance elements included argument list:","code":"fd <- function() { ini({ tka <- 0.45 tcl <- 1 tv <- 3.45 add.sd <- c(0, 0.7) eta.ka ~ 0.6 eta.v ~ c(0.01, 0.1) eta.cl ~ c(0.01, 0.01, 1) }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl/v * center cp <- center/v cp ~ add(add.sd) }) } # If you want to remove all covariances you can use diag() with no # arguments fd %>% ini(diag()) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ remove covariance `(eta.ka,eta.v)` #> ℹ remove covariance `(eta.ka,eta.cl)` #> ℹ remove covariance `(eta.v,eta.cl)` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v eta.cl #> eta.ka 0.6 0.0 0 #> eta.v 0.0 0.1 0 #> eta.cl 0.0 0.0 1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> eta.cl ~ 1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # if you want to remove only covariances with eta.ka you can use: fd %>% ini(diag(eta.ka)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ remove covariance `(eta.ka,eta.v)` #> ℹ remove covariance `(eta.ka,eta.cl)` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.cl eta.v eta.ka #> eta.cl 1.00 0.01 0.0 #> eta.v 0.01 0.10 0.0 #> eta.ka 0.00 0.00 0.6 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.cl ~ 1 #> eta.v ~ c(0.01, 0.1) #> eta.ka ~ 0.6 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> } # if you want to remove only the covariances with eta.ka and eta.v you can use: fd %>% ini(-cov(eta.ka, eta.v)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ remove covariance `(eta.ka, eta.v)` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.45 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.v eta.cl eta.ka #> eta.v 0.10 0.01 0.00 #> eta.cl 0.01 1.00 0.01 #> eta.ka 0.00 0.01 0.60 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.v ~ 0.1 #> eta.cl ~ c(0.01, 1) #> eta.ka ~ c(0, 0.01, 0.6) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/Modifying-Models.html","id":"more-granular-access-of-initial-conditions","dir":"Articles","previous_headings":"Modifying initial estimates","what":"More granular access of initial conditions","title":"Modifying Models","text":"Just like model() can modify underlying data frame represents ini() block. case simply change initial estimate first parameter (tka):","code":"f <- rxode2(f) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments ini <- f$iniDf print(ini) #> ntheta neta1 neta2 name lower est upper fix label backTransform #> 1 1 NA NA tka -Inf 0.45 Inf FALSE #> 2 2 NA NA tcl -Inf 1.00 Inf FALSE #> 3 3 NA NA tv -Inf 3.45 Inf FALSE #> 4 4 NA NA add.sd 0 0.70 Inf FALSE #> 5 NA 1 1 eta.ka -Inf 0.60 Inf FALSE #> 6 NA 2 2 eta.v -Inf 0.10 Inf FALSE #> condition err #> 1 #> 2 #> 3 #> 4 cp add #> 5 id #> 6 id ini$est[1] <- 7 ini(f) <- ini print(f) #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 7.00 1.00 3.45 0.70 #> #> Omega ($omega): #> eta.ka eta.v #> eta.ka 0.6 0.0 #> eta.v 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 7 #> tcl <- 1 #> tv <- 3.45 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-cmt.html","id":"how-rxode2-assigns-compartment-numbers","dir":"Articles","previous_headings":"","what":"How rxode2 assigns compartment numbers","title":"Changing rxode2 compartment numbers","text":"rxode2 automatically assigns compartment numbers parsing. example, Mavoglurant PBPK model following model may used: look printout, can see rxode2 assigned compartment number(s) can also see classic rxode2 model. case use summary() function: case, Venous_Blood assigned compartment 15. Figuring can inconvenient also lead re-numbering compartment simulation estimation datasets. easy probably clearer specify compartment name, tools support compartment numbers. Therefore, way number compartment easily can lead less data modification multiple tools.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` pbpk <- function() { model({ KbBR = exp(lKbBR) KbMU = exp(lKbMU) KbAD = exp(lKbAD) CLint= exp(lCLint + eta.LClint) KbBO = exp(lKbBO) KbRB = exp(lKbRB) ## Regional blood flows # Cardiac output (L/h) from White et al (1968) CO = (187.00*WT^0.81)*60/1000 QHT = 4.0 *CO/100 QBR = 12.0*CO/100 QMU = 17.0*CO/100 QAD = 5.0 *CO/100 QSK = 5.0 *CO/100 QSP = 3.0 *CO/100 QPA = 1.0 *CO/100 QLI = 25.5*CO/100 QST = 1.0 *CO/100 QGU = 14.0*CO/100 # Hepatic artery blood flow QHA = QLI - (QSP + QPA + QST + QGU) QBO = 5.0 *CO/100 QKI = 19.0*CO/100 QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI) QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + QRB ## Organs' volumes = organs' weights / organs' density VLU = (0.76 *WT/100)/1.051 VHT = (0.47 *WT/100)/1.030 VBR = (2.00 *WT/100)/1.036 VMU = (40.00*WT/100)/1.041 VAD = (21.42*WT/100)/0.916 VSK = (3.71 *WT/100)/1.116 VSP = (0.26 *WT/100)/1.054 VPA = (0.14 *WT/100)/1.045 VLI = (2.57 *WT/100)/1.040 VST = (0.21 *WT/100)/1.050 VGU = (1.44 *WT/100)/1.043 VBO = (14.29*WT/100)/1.990 VKI = (0.44 *WT/100)/1.050 VAB = (2.81 *WT/100)/1.040 VVB = (5.62 *WT/100)/1.040 VRB = (3.86 *WT/100)/1.040 ## Fixed parameters BP = 0.61 # Blood:plasma partition coefficient fup = 0.028 # Fraction unbound in plasma fub = fup/BP # Fraction unbound in blood KbLU = exp(0.8334) KbHT = exp(1.1205) KbSK = exp(-.5238) KbSP = exp(0.3224) KbPA = exp(0.3224) KbLI = exp(1.7604) KbST = exp(0.3224) KbGU = exp(1.2026) KbKI = exp(1.3171) ##----------------------------------------- S15 = VVB*BP/1000 C15 = Venous_Blood/S15 ##----------------------------------------- d/dt(Lungs) = QLU*(Venous_Blood/VVB - Lungs/KbLU/VLU) d/dt(Heart) = QHT*(Arterial_Blood/VAB - Heart/KbHT/VHT) d/dt(Brain) = QBR*(Arterial_Blood/VAB - Brain/KbBR/VBR) d/dt(Muscles) = QMU*(Arterial_Blood/VAB - Muscles/KbMU/VMU) d/dt(Adipose) = QAD*(Arterial_Blood/VAB - Adipose/KbAD/VAD) d/dt(Skin) = QSK*(Arterial_Blood/VAB - Skin/KbSK/VSK) d/dt(Spleen) = QSP*(Arterial_Blood/VAB - Spleen/KbSP/VSP) d/dt(Pancreas) = QPA*(Arterial_Blood/VAB - Pancreas/KbPA/VPA) d/dt(Liver) = QHA*Arterial_Blood/VAB + QSP*Spleen/KbSP/VSP + QPA*Pancreas/KbPA/VPA + QST*Stomach/KbST/VST + QGU*Gut/KbGU/VGU - CLint*fub*Liver/KbLI/VLI - QLI*Liver/KbLI/VLI d/dt(Stomach) = QST*(Arterial_Blood/VAB - Stomach/KbST/VST) d/dt(Gut) = QGU*(Arterial_Blood/VAB - Gut/KbGU/VGU) d/dt(Bones) = QBO*(Arterial_Blood/VAB - Bones/KbBO/VBO) d/dt(Kidneys) = QKI*(Arterial_Blood/VAB - Kidneys/KbKI/VKI) d/dt(Arterial_Blood) = QLU*(Lungs/KbLU/VLU - Arterial_Blood/VAB) d/dt(Venous_Blood) = QHT*Heart/KbHT/VHT + QBR*Brain/KbBR/VBR + QMU*Muscles/KbMU/VMU + QAD*Adipose/KbAD/VAD + QSK*Skin/KbSK/VSK + QLI*Liver/KbLI/VLI + QBO*Bones/KbBO/VBO + QKI*Kidneys/KbKI/VKI + QRB*Rest_of_Body/KbRB/VRB - QLU*Venous_Blood/VVB d/dt(Rest_of_Body) = QRB*(Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) }) } pbpk <- pbpk() print(pbpk) #> -- rxode2-based free-form 16-cmt ODE model ------------------------------------- #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 Lungs #> 2 2 Heart #> 3 3 Brain #> 4 4 Muscles #> 5 5 Adipose #> 6 6 Skin #> 7 7 Spleen #> 8 8 Pancreas #> 9 9 Liver #> 10 10 Stomach #> 11 11 Gut #> 12 12 Bones #> 13 13 Kidneys #> 14 14 Arterial_Blood #> 15 15 Venous_Blood #> 16 16 Rest_of_Body #> -- Model (Normalized Syntax): -- #> function() { #> model({ #> KbBR = exp(lKbBR) #> KbMU = exp(lKbMU) #> KbAD = exp(lKbAD) #> CLint = exp(lCLint + eta.LClint) #> KbBO = exp(lKbBO) #> KbRB = exp(lKbRB) #> CO = (187 * WT^0.81) * 60/1000 #> QHT = 4 * CO/100 #> QBR = 12 * CO/100 #> QMU = 17 * CO/100 #> QAD = 5 * CO/100 #> QSK = 5 * CO/100 #> QSP = 3 * CO/100 #> QPA = 1 * CO/100 #> QLI = 25.5 * CO/100 #> QST = 1 * CO/100 #> QGU = 14 * CO/100 #> QHA = QLI - (QSP + QPA + QST + QGU) #> QBO = 5 * CO/100 #> QKI = 19 * CO/100 #> QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + #> QKI) #> QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + #> QRB #> VLU = (0.76 * WT/100)/1.051 #> VHT = (0.47 * WT/100)/1.03 #> VBR = (2 * WT/100)/1.036 #> VMU = (40 * WT/100)/1.041 #> VAD = (21.42 * WT/100)/0.916 #> VSK = (3.71 * WT/100)/1.116 #> VSP = (0.26 * WT/100)/1.054 #> VPA = (0.14 * WT/100)/1.045 #> VLI = (2.57 * WT/100)/1.04 #> VST = (0.21 * WT/100)/1.05 #> VGU = (1.44 * WT/100)/1.043 #> VBO = (14.29 * WT/100)/1.99 #> VKI = (0.44 * WT/100)/1.05 #> VAB = (2.81 * WT/100)/1.04 #> VVB = (5.62 * WT/100)/1.04 #> VRB = (3.86 * WT/100)/1.04 #> BP = 0.61 #> fup = 0.028 #> fub = fup/BP #> KbLU = exp(0.8334) #> KbHT = exp(1.1205) #> KbSK = exp(-0.5238) #> KbSP = exp(0.3224) #> KbPA = exp(0.3224) #> KbLI = exp(1.7604) #> KbST = exp(0.3224) #> KbGU = exp(1.2026) #> KbKI = exp(1.3171) #> S15 = VVB * BP/1000 #> C15 = Venous_Blood/S15 #> d/dt(Lungs) = QLU * (Venous_Blood/VVB - Lungs/KbLU/VLU) #> d/dt(Heart) = QHT * (Arterial_Blood/VAB - Heart/KbHT/VHT) #> d/dt(Brain) = QBR * (Arterial_Blood/VAB - Brain/KbBR/VBR) #> d/dt(Muscles) = QMU * (Arterial_Blood/VAB - Muscles/KbMU/VMU) #> d/dt(Adipose) = QAD * (Arterial_Blood/VAB - Adipose/KbAD/VAD) #> d/dt(Skin) = QSK * (Arterial_Blood/VAB - Skin/KbSK/VSK) #> d/dt(Spleen) = QSP * (Arterial_Blood/VAB - Spleen/KbSP/VSP) #> d/dt(Pancreas) = QPA * (Arterial_Blood/VAB - Pancreas/KbPA/VPA) #> d/dt(Liver) = QHA * Arterial_Blood/VAB + QSP * Spleen/KbSP/VSP + #> QPA * Pancreas/KbPA/VPA + QST * Stomach/KbST/VST + #> QGU * Gut/KbGU/VGU - CLint * fub * Liver/KbLI/VLI - #> QLI * Liver/KbLI/VLI #> d/dt(Stomach) = QST * (Arterial_Blood/VAB - Stomach/KbST/VST) #> d/dt(Gut) = QGU * (Arterial_Blood/VAB - Gut/KbGU/VGU) #> d/dt(Bones) = QBO * (Arterial_Blood/VAB - Bones/KbBO/VBO) #> d/dt(Kidneys) = QKI * (Arterial_Blood/VAB - Kidneys/KbKI/VKI) #> d/dt(Arterial_Blood) = QLU * (Lungs/KbLU/VLU - Arterial_Blood/VAB) #> d/dt(Venous_Blood) = QHT * Heart/KbHT/VHT + QBR * Brain/KbBR/VBR + #> QMU * Muscles/KbMU/VMU + QAD * Adipose/KbAD/VAD + #> QSK * Skin/KbSK/VSK + QLI * Liver/KbLI/VLI + QBO * #> Bones/KbBO/VBO + QKI * Kidneys/KbKI/VKI + QRB * Rest_of_Body/KbRB/VRB - #> QLU * Venous_Blood/VVB #> d/dt(Rest_of_Body) = QRB * (Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) #> }) #> } pbpk <- pbpk$simulationModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ summary(pbpk) #> rxode2 3.0.2.9000 model named rx_43aa3ce28ecc629a823bad63a11a330d model (ready). #> DLL: /tmp/Rtmp5gtyvB/rxode2/rx_43aa3ce28ecc629a823bad63a11a330d__.rxd/rx_43aa3ce28ecc629a823bad63a11a330d_.so #> NULL #> #> Calculated Variables: #> [1] \"KbBR\" \"KbMU\" \"KbAD\" \"CLint\" \"KbBO\" \"KbRB\" \"CO\" \"QHT\" \"QBR\" #> [10] \"QMU\" \"QAD\" \"QSK\" \"QSP\" \"QPA\" \"QLI\" \"QST\" \"QGU\" \"QHA\" #> [19] \"QBO\" \"QKI\" \"QRB\" \"QLU\" \"VLU\" \"VHT\" \"VBR\" \"VMU\" \"VAD\" #> [28] \"VSK\" \"VSP\" \"VPA\" \"VLI\" \"VST\" \"VGU\" \"VBO\" \"VKI\" \"VAB\" #> [37] \"VVB\" \"VRB\" \"fub\" \"KbLU\" \"KbHT\" \"KbSK\" \"KbSP\" \"KbPA\" \"KbLI\" #> [46] \"KbST\" \"KbGU\" \"KbKI\" \"S15\" \"C15\" #> -- rxode2 Model Syntax -- #> rxode2({ #> param(lKbBR, lKbMU, lKbAD, lCLint, eta.LClint, lKbBO, lKbRB, #> WT) #> KbBR = exp(lKbBR) #> KbMU = exp(lKbMU) #> KbAD = exp(lKbAD) #> CLint = exp(lCLint + eta.LClint) #> KbBO = exp(lKbBO) #> KbRB = exp(lKbRB) #> CO = (187 * WT^0.81) * 60/1000 #> QHT = 4 * CO/100 #> QBR = 12 * CO/100 #> QMU = 17 * CO/100 #> QAD = 5 * CO/100 #> QSK = 5 * CO/100 #> QSP = 3 * CO/100 #> QPA = 1 * CO/100 #> QLI = 25.5 * CO/100 #> QST = 1 * CO/100 #> QGU = 14 * CO/100 #> QHA = QLI - (QSP + QPA + QST + QGU) #> QBO = 5 * CO/100 #> QKI = 19 * CO/100 #> QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI) #> QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + QRB #> VLU = (0.76 * WT/100)/1.051 #> VHT = (0.47 * WT/100)/1.03 #> VBR = (2 * WT/100)/1.036 #> VMU = (40 * WT/100)/1.041 #> VAD = (21.42 * WT/100)/0.916 #> VSK = (3.71 * WT/100)/1.116 #> VSP = (0.26 * WT/100)/1.054 #> VPA = (0.14 * WT/100)/1.045 #> VLI = (2.57 * WT/100)/1.04 #> VST = (0.21 * WT/100)/1.05 #> VGU = (1.44 * WT/100)/1.043 #> VBO = (14.29 * WT/100)/1.99 #> VKI = (0.44 * WT/100)/1.05 #> VAB = (2.81 * WT/100)/1.04 #> VVB = (5.62 * WT/100)/1.04 #> VRB = (3.86 * WT/100)/1.04 #> BP = 0.61 #> fup = 0.028 #> fub = fup/BP #> KbLU = exp(0.8334) #> KbHT = exp(1.1205) #> KbSK = exp(-0.5238) #> KbSP = exp(0.3224) #> KbPA = exp(0.3224) #> KbLI = exp(1.7604) #> KbST = exp(0.3224) #> KbGU = exp(1.2026) #> KbKI = exp(1.3171) #> S15 = VVB * BP/1000 #> C15 = Venous_Blood/S15 #> d/dt(Lungs) = QLU * (Venous_Blood/VVB - Lungs/KbLU/VLU) #> d/dt(Heart) = QHT * (Arterial_Blood/VAB - Heart/KbHT/VHT) #> d/dt(Brain) = QBR * (Arterial_Blood/VAB - Brain/KbBR/VBR) #> d/dt(Muscles) = QMU * (Arterial_Blood/VAB - Muscles/KbMU/VMU) #> d/dt(Adipose) = QAD * (Arterial_Blood/VAB - Adipose/KbAD/VAD) #> d/dt(Skin) = QSK * (Arterial_Blood/VAB - Skin/KbSK/VSK) #> d/dt(Spleen) = QSP * (Arterial_Blood/VAB - Spleen/KbSP/VSP) #> d/dt(Pancreas) = QPA * (Arterial_Blood/VAB - Pancreas/KbPA/VPA) #> d/dt(Liver) = QHA * Arterial_Blood/VAB + QSP * Spleen/KbSP/VSP + #> QPA * Pancreas/KbPA/VPA + QST * Stomach/KbST/VST + QGU * #> Gut/KbGU/VGU - CLint * fub * Liver/KbLI/VLI - QLI * Liver/KbLI/VLI #> d/dt(Stomach) = QST * (Arterial_Blood/VAB - Stomach/KbST/VST) #> d/dt(Gut) = QGU * (Arterial_Blood/VAB - Gut/KbGU/VGU) #> d/dt(Bones) = QBO * (Arterial_Blood/VAB - Bones/KbBO/VBO) #> d/dt(Kidneys) = QKI * (Arterial_Blood/VAB - Kidneys/KbKI/VKI) #> d/dt(Arterial_Blood) = QLU * (Lungs/KbLU/VLU - Arterial_Blood/VAB) #> d/dt(Venous_Blood) = QHT * Heart/KbHT/VHT + QBR * Brain/KbBR/VBR + #> QMU * Muscles/KbMU/VMU + QAD * Adipose/KbAD/VAD + QSK * #> Skin/KbSK/VSK + QLI * Liver/KbLI/VLI + QBO * Bones/KbBO/VBO + #> QKI * Kidneys/KbKI/VKI + QRB * Rest_of_Body/KbRB/VRB - #> QLU * Venous_Blood/VVB #> d/dt(Rest_of_Body) = QRB * (Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) #> })"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-cmt.html","id":"changing-compartment-numbers-by-pre-declaring-the-compartments","dir":"Articles","previous_headings":"","what":"Changing compartment numbers by pre-declaring the compartments","title":"Changing rxode2 compartment numbers","text":"add compartments rxode2 model order desire simply need pre-declare compartments cmt. example specifying Venous_Blood Skin 1st 2nd compartments, respectively, simple: can see change simple printout first two compartments Venous_Blood followed Skin.","code":"pbpk2 <- function() { model({ ## Now this is the first compartment, ie cmt=1 cmt(Venous_Blood) ## Skin may be a compartment you wish to dose to as well, ## so it is now cmt=2 cmt(Skin) KbBR = exp(lKbBR) KbMU = exp(lKbMU) KbAD = exp(lKbAD) CLint= exp(lCLint + eta.LClint) KbBO = exp(lKbBO) KbRB = exp(lKbRB) ## Regional blood flows # Cardiac output (L/h) from White et al (1968)m CO = (187.00*WT^0.81)*60/1000; QHT = 4.0 *CO/100; QBR = 12.0*CO/100; QMU = 17.0*CO/100; QAD = 5.0 *CO/100; QSK = 5.0 *CO/100; QSP = 3.0 *CO/100; QPA = 1.0 *CO/100; QLI = 25.5*CO/100; QST = 1.0 *CO/100; QGU = 14.0*CO/100; QHA = QLI - (QSP + QPA + QST + QGU); # Hepatic artery blood flow QBO = 5.0 *CO/100; QKI = 19.0*CO/100; QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI); QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + QRB; ## Organs' volumes = organs' weights / organs' density VLU = (0.76 *WT/100)/1.051; VHT = (0.47 *WT/100)/1.030; VBR = (2.00 *WT/100)/1.036; VMU = (40.00*WT/100)/1.041; VAD = (21.42*WT/100)/0.916; VSK = (3.71 *WT/100)/1.116; VSP = (0.26 *WT/100)/1.054; VPA = (0.14 *WT/100)/1.045; VLI = (2.57 *WT/100)/1.040; VST = (0.21 *WT/100)/1.050; VGU = (1.44 *WT/100)/1.043; VBO = (14.29*WT/100)/1.990; VKI = (0.44 *WT/100)/1.050; VAB = (2.81 *WT/100)/1.040; VVB = (5.62 *WT/100)/1.040; VRB = (3.86 *WT/100)/1.040; ## Fixed parameters BP = 0.61; # Blood:plasma partition coefficient fup = 0.028; # Fraction unbound in plasma fub = fup/BP; # Fraction unbound in blood KbLU = exp(0.8334); KbHT = exp(1.1205); KbSK = exp(-.5238); KbSP = exp(0.3224); KbPA = exp(0.3224); KbLI = exp(1.7604); KbST = exp(0.3224); KbGU = exp(1.2026); KbKI = exp(1.3171); ##----------------------------------------- S15 = VVB*BP/1000; C15 = Venous_Blood/S15 ##----------------------------------------- d/dt(Lungs) = QLU*(Venous_Blood/VVB - Lungs/KbLU/VLU); d/dt(Heart) = QHT*(Arterial_Blood/VAB - Heart/KbHT/VHT); d/dt(Brain) = QBR*(Arterial_Blood/VAB - Brain/KbBR/VBR); d/dt(Muscles) = QMU*(Arterial_Blood/VAB - Muscles/KbMU/VMU); d/dt(Adipose) = QAD*(Arterial_Blood/VAB - Adipose/KbAD/VAD); d/dt(Skin) = QSK*(Arterial_Blood/VAB - Skin/KbSK/VSK); d/dt(Spleen) = QSP*(Arterial_Blood/VAB - Spleen/KbSP/VSP); d/dt(Pancreas) = QPA*(Arterial_Blood/VAB - Pancreas/KbPA/VPA); d/dt(Liver) = QHA*Arterial_Blood/VAB + QSP*Spleen/KbSP/VSP + QPA*Pancreas/KbPA/VPA + QST*Stomach/KbST/VST + QGU*Gut/KbGU/VGU - CLint*fub*Liver/KbLI/VLI - QLI*Liver/KbLI/VLI; d/dt(Stomach) = QST*(Arterial_Blood/VAB - Stomach/KbST/VST); d/dt(Gut) = QGU*(Arterial_Blood/VAB - Gut/KbGU/VGU); d/dt(Bones) = QBO*(Arterial_Blood/VAB - Bones/KbBO/VBO); d/dt(Kidneys) = QKI*(Arterial_Blood/VAB - Kidneys/KbKI/VKI); d/dt(Arterial_Blood) = QLU*(Lungs/KbLU/VLU - Arterial_Blood/VAB); d/dt(Venous_Blood) = QHT*Heart/KbHT/VHT + QBR*Brain/KbBR/VBR + QMU*Muscles/KbMU/VMU + QAD*Adipose/KbAD/VAD + QSK*Skin/KbSK/VSK + QLI*Liver/KbLI/VLI + QBO*Bones/KbBO/VBO + QKI*Kidneys/KbKI/VKI + QRB*Rest_of_Body/KbRB/VRB - QLU*Venous_Blood/VVB; d/dt(Rest_of_Body) = QRB*(Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB); }) } pbpk2 <- pbpk2() pbpk2 #> -- rxode2-based free-form 16-cmt ODE model ------------------------------------- #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 Venous_Blood #> 2 2 Skin #> 3 3 Lungs #> 4 4 Heart #> 5 5 Brain #> 6 6 Muscles #> 7 7 Adipose #> 8 8 Spleen #> 9 9 Pancreas #> 10 10 Liver #> 11 11 Stomach #> 12 12 Gut #> 13 13 Bones #> 14 14 Kidneys #> 15 15 Arterial_Blood #> 16 16 Rest_of_Body #> -- Model (Normalized Syntax): -- #> function() { #> model({ #> cmt(Venous_Blood) #> cmt(Skin) #> KbBR = exp(lKbBR) #> KbMU = exp(lKbMU) #> KbAD = exp(lKbAD) #> CLint = exp(lCLint + eta.LClint) #> KbBO = exp(lKbBO) #> KbRB = exp(lKbRB) #> CO = (187 * WT^0.81) * 60/1000 #> QHT = 4 * CO/100 #> QBR = 12 * CO/100 #> QMU = 17 * CO/100 #> QAD = 5 * CO/100 #> QSK = 5 * CO/100 #> QSP = 3 * CO/100 #> QPA = 1 * CO/100 #> QLI = 25.5 * CO/100 #> QST = 1 * CO/100 #> QGU = 14 * CO/100 #> QHA = QLI - (QSP + QPA + QST + QGU) #> QBO = 5 * CO/100 #> QKI = 19 * CO/100 #> QRB = CO - (QHT + QBR + QMU + QAD + QSK + QLI + QBO + #> QKI) #> QLU = QHT + QBR + QMU + QAD + QSK + QLI + QBO + QKI + #> QRB #> VLU = (0.76 * WT/100)/1.051 #> VHT = (0.47 * WT/100)/1.03 #> VBR = (2 * WT/100)/1.036 #> VMU = (40 * WT/100)/1.041 #> VAD = (21.42 * WT/100)/0.916 #> VSK = (3.71 * WT/100)/1.116 #> VSP = (0.26 * WT/100)/1.054 #> VPA = (0.14 * WT/100)/1.045 #> VLI = (2.57 * WT/100)/1.04 #> VST = (0.21 * WT/100)/1.05 #> VGU = (1.44 * WT/100)/1.043 #> VBO = (14.29 * WT/100)/1.99 #> VKI = (0.44 * WT/100)/1.05 #> VAB = (2.81 * WT/100)/1.04 #> VVB = (5.62 * WT/100)/1.04 #> VRB = (3.86 * WT/100)/1.04 #> BP = 0.61 #> fup = 0.028 #> fub = fup/BP #> KbLU = exp(0.8334) #> KbHT = exp(1.1205) #> KbSK = exp(-0.5238) #> KbSP = exp(0.3224) #> KbPA = exp(0.3224) #> KbLI = exp(1.7604) #> KbST = exp(0.3224) #> KbGU = exp(1.2026) #> KbKI = exp(1.3171) #> S15 = VVB * BP/1000 #> C15 = Venous_Blood/S15 #> d/dt(Lungs) = QLU * (Venous_Blood/VVB - Lungs/KbLU/VLU) #> d/dt(Heart) = QHT * (Arterial_Blood/VAB - Heart/KbHT/VHT) #> d/dt(Brain) = QBR * (Arterial_Blood/VAB - Brain/KbBR/VBR) #> d/dt(Muscles) = QMU * (Arterial_Blood/VAB - Muscles/KbMU/VMU) #> d/dt(Adipose) = QAD * (Arterial_Blood/VAB - Adipose/KbAD/VAD) #> d/dt(Skin) = QSK * (Arterial_Blood/VAB - Skin/KbSK/VSK) #> d/dt(Spleen) = QSP * (Arterial_Blood/VAB - Spleen/KbSP/VSP) #> d/dt(Pancreas) = QPA * (Arterial_Blood/VAB - Pancreas/KbPA/VPA) #> d/dt(Liver) = QHA * Arterial_Blood/VAB + QSP * Spleen/KbSP/VSP + #> QPA * Pancreas/KbPA/VPA + QST * Stomach/KbST/VST + #> QGU * Gut/KbGU/VGU - CLint * fub * Liver/KbLI/VLI - #> QLI * Liver/KbLI/VLI #> d/dt(Stomach) = QST * (Arterial_Blood/VAB - Stomach/KbST/VST) #> d/dt(Gut) = QGU * (Arterial_Blood/VAB - Gut/KbGU/VGU) #> d/dt(Bones) = QBO * (Arterial_Blood/VAB - Bones/KbBO/VBO) #> d/dt(Kidneys) = QKI * (Arterial_Blood/VAB - Kidneys/KbKI/VKI) #> d/dt(Arterial_Blood) = QLU * (Lungs/KbLU/VLU - Arterial_Blood/VAB) #> d/dt(Venous_Blood) = QHT * Heart/KbHT/VHT + QBR * Brain/KbBR/VBR + #> QMU * Muscles/KbMU/VMU + QAD * Adipose/KbAD/VAD + #> QSK * Skin/KbSK/VSK + QLI * Liver/KbLI/VLI + QBO * #> Bones/KbBO/VBO + QKI * Kidneys/KbKI/VKI + QRB * Rest_of_Body/KbRB/VRB - #> QLU * Venous_Blood/VVB #> d/dt(Rest_of_Body) = QRB * (Arterial_Blood/VAB - Rest_of_Body/KbRB/VRB) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-cmt.html","id":"appending-compartments-to-the-model","dir":"Articles","previous_headings":"","what":"Appending compartments to the model","title":"Changing rxode2 compartment numbers","text":"can also append “compartments” model. ODE solving internals, add fake compartments model differential equations defined. example legal: can see clearly underlying classic rxode2 model: compartments defined differential equations supported; model : give error:","code":"ode.1c.ka <- function(){ model({ C2 = center/V d / dt(depot) = -KA * depot d/dt(center) = KA * depot - CL*C2 cmt(eff) }) } ode.1c.ka <- ode.1c.ka() print(ode.1c.ka) #> -- rxode2-based free-form 2-cmt ODE model -------------------------------------- #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> -- Model (Normalized Syntax): -- #> function() { #> model({ #> C2 = center/V #> d/dt(depot) = -KA * depot #> d/dt(center) = KA * depot - CL * C2 #> cmt(eff) #> }) #> } ode.1c.ka$simulationModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_b1085748b7d9d449f6b1ffda7e15da9c model (ready). #> x$state: depot, center #> x$stateExtra: eff #> x$params: V, KA, CL #> x$lhs: C2 ode.1c.ka <- rxode2({ cmt(eff) C2 = center/V; d / dt(depot) = -KA * depot d/dt(center) = KA * depot - CL*C2 }) Error in rxModelVars_(obj) : Evaluation error: Compartment 'eff' needs differential equations defined."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-covariates.html","id":"individual-covariates","dir":"Articles","previous_headings":"","what":"Individual Covariates","title":"rxode2 Covariates","text":"individual covariate wish solve may specify iCov dataset:","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` library(units) ## udunits database from /usr/share/xml/udunits/udunits2.xml library(xgxr) mod3 <- function() { ini({ TKA <- 2.94E-01 ## Clearance with individuals TCL <- 1.86E+01 TV2 <-4.02E+01 TQ <-1.05E+01 TV3 <-2.97E+02 TKin <- 1 TKout <- 1 TEC50 <-200 }) model({ KA <- TKA CL <- TCL * (WT / 70) ^ 0.75 V2 <- TV2 Q <- TQ V3 <- TV3 Kin <- TKin Kout <- TKout EC50 <- TEC50 Tz <- 8 amp <- 0.1 C2 <- central/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(central) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 ## This specifies that the effect compartment starts at 1. }) } ev <- et(amount.units=\"mg\", time.units=\"hours\") %>% et(amt=10000, cmt=1) %>% et(0,48,length.out=100) %>% et(id=1:4) set.seed(10) rxSetSeed(10) ## Now use iCov to simulate a 4-id sample r1 <- solve(mod3, ev, # Create individual covariate data-frame iCov=data.frame(id=1:4, WT=rnorm(4, 70, 10))) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(r1) ## ── Solved rxode2 object ── ## ── Parameters ($params): ── ## TKA TCL TV2 TQ TV3 TKin TKout TEC50 Tz amp ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 8.000 0.100 ## ── Initial Conditions ($inits): ── ## depot central peri eff ## 0 0 0 1 ## ── First part of data (object): ── ## # A tibble: 400 × 17 ## id time KA CL V2 Q V3 Kin Kout EC50 C2 C3 depot ## [h] ## 1 1 0 0.294 18.6 40.2 10.5 297 1 1 200 0 0 10000 ## 2 1 0.485 0.294 18.6 40.2 10.5 297 1 1 200 27.8 0.257 8671. ## 3 1 0.970 0.294 18.6 40.2 10.5 297 1 1 200 43.7 0.873 7519. ## 4 1 1.45 0.294 18.6 40.2 10.5 297 1 1 200 51.7 1.68 6520. ## 5 1 1.94 0.294 18.6 40.2 10.5 297 1 1 200 54.7 2.56 5654. ## 6 1 2.42 0.294 18.6 40.2 10.5 297 1 1 200 54.5 3.45 4903. ## # ℹ 394 more rows ## # ℹ 4 more variables: central , peri , eff , WT plot(r1, C2, log=\"y\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-covariates.html","id":"time-varying-covariates","dir":"Articles","previous_headings":"","what":"Time Varying Covariates","title":"rxode2 Covariates","text":"Covariates easy specify rxode2, can specify variable. Time-varying covariates, like clock time circadian rhythm model, can also used. Extending indirect response model already discussed, : Now covariate present event dataset, system can solved combining dataset model: solving ODE equations, solver may sample times outside data. happens, ODE solver can use linear interpolation covariate values. equivalent R’s approxfun method=\"linear\". Note linear approximation case leads kinks solved system 24-hours covariate linear interpolation near 24 near 0. linear seems reasonable, cases like clock time make interpolation methods attractive. rxode2 default covariate interpolation last observation carried forward (locf), constant approximation. equivalent R’s approxfun method=\"constant\". gives following plots: case, plots seem smoother. can also use NONMEM’s preferred interpolation style next observation carried backward (NOCB): gives following plots:","code":"library(rxode2) library(units) mod4 <- mod3 %>% model(d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff) %>% model(-Kin) %>% model(Kin <- TKin + amp *cos(2*pi*(ctime-Tz)/24), append=C2, cov=\"ctime\") ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=1) %>% et(0,48,length.out=100) ## Create data frame of 8 am dosing for the first dose This is done ## with base R but it can be done with dplyr or data.table ev$ctime <- (ev$time+set_units(8,hr)) %% 24 ev$WT <- 70 r1 <- solve(mod4, ev, covsInterpolation=\"linear\") print(r1) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> TKA TCL TV2 TQ TV3 TKout TEC50 #> 0.294000 18.600000 40.200000 10.500000 297.000000 1.000000 200.000000 #> TKin Tz amp pi #> 1.000000 8.000000 0.100000 3.141593 #> ── Initial Conditions ($inits): ── #> depot central peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 100 × 17 #> time KA CL V2 Q V3 Kout EC50 C2 Kin C3 depot #> [h] #> 1 0 0.294 18.6 40.2 10.5 297 1 200 0 1.1 0 10000 #> 2 0.485 0.294 18.6 40.2 10.5 297 1 200 27.8 1.10 0.257 8671. #> 3 0.970 0.294 18.6 40.2 10.5 297 1 200 43.7 1.10 0.874 7519. #> 4 1.45 0.294 18.6 40.2 10.5 297 1 200 51.8 1.09 1.68 6520. #> 5 1.94 0.294 18.6 40.2 10.5 297 1 200 54.8 1.09 2.56 5654. #> 6 2.42 0.294 18.6 40.2 10.5 297 1 200 54.6 1.08 3.45 4903. #> # ℹ 94 more rows #> # ℹ 5 more variables: central , peri , eff , ctime [h], WT plot(r1,C2, ylab=\"Central Concentration\") plot(r1,eff) + ylab(\"Effect\") + xlab(\"Time\") r1 <- solve(mod4, ev,covsInterpolation=\"locf\") print(r1) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> TKA TCL TV2 TQ TV3 TKout TEC50 #> 0.294000 18.600000 40.200000 10.500000 297.000000 1.000000 200.000000 #> TKin Tz amp pi #> 1.000000 8.000000 0.100000 3.141593 #> ── Initial Conditions ($inits): ── #> depot central peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 100 × 17 #> time KA CL V2 Q V3 Kout EC50 C2 Kin C3 depot #> [h] #> 1 0 0.294 18.6 40.2 10.5 297 1 200 0 1.1 0 10000 #> 2 0.485 0.294 18.6 40.2 10.5 297 1 200 27.8 1.10 0.257 8671. #> 3 0.970 0.294 18.6 40.2 10.5 297 1 200 43.7 1.10 0.874 7519. #> 4 1.45 0.294 18.6 40.2 10.5 297 1 200 51.8 1.09 1.68 6520. #> 5 1.94 0.294 18.6 40.2 10.5 297 1 200 54.8 1.09 2.56 5654. #> 6 2.42 0.294 18.6 40.2 10.5 297 1 200 54.6 1.08 3.45 4903. #> # ℹ 94 more rows #> # ℹ 5 more variables: central , peri , eff , ctime [h], WT plot(r1,C2, ylab=\"Central Concentration\", xlab=\"Time\") plot(r1,eff, ylab=\"Effect\", xlab=\"Time\") r1 <- solve(mod4, ev,covsInterpolation=\"nocb\") print(r1) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> TKA TCL TV2 TQ TV3 TKout TEC50 #> 0.294000 18.600000 40.200000 10.500000 297.000000 1.000000 200.000000 #> TKin Tz amp pi #> 1.000000 8.000000 0.100000 3.141593 #> ── Initial Conditions ($inits): ── #> depot central peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 100 × 17 #> time KA CL V2 Q V3 Kout EC50 C2 Kin C3 depot #> [h] #> 1 0 0.294 18.6 40.2 10.5 297 1 200 0 1.1 0 10000 #> 2 0.485 0.294 18.6 40.2 10.5 297 1 200 27.8 1.10 0.257 8671. #> 3 0.970 0.294 18.6 40.2 10.5 297 1 200 43.7 1.10 0.874 7519. #> 4 1.45 0.294 18.6 40.2 10.5 297 1 200 51.8 1.09 1.68 6520. #> 5 1.94 0.294 18.6 40.2 10.5 297 1 200 54.8 1.09 2.56 5654. #> 6 2.42 0.294 18.6 40.2 10.5 297 1 200 54.6 1.08 3.45 4903. #> # ℹ 94 more rows #> # ℹ 5 more variables: central , peri , eff , ctime [h], WT plot(r1,C2, ylab=\"Central Concentration\", xlab=\"Time\") plot(r1,eff, ylab=\"Effect\", xlab=\"Time\")"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"creating-an-interactive-data-frame","dir":"Articles","previous_headings":"Using rxode2 data frames","what":"Creating an interactive data frame","title":"rxode2 Data Frames","text":"rxode2 supports returning solved object modified data-frame. done predict(), solve(), rxSolve() methods.","code":"library(rxode2) library(units) ## Setup example model mod1 <- function() { ini({ # central KA <- 2.94E-01 CL <- 1.86E+01 # peripheral V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 # effects Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) } ## Seup parameters and initial conditions ## Setup dosing event information ev <- et(amountUnits=\"mg\", timeUnits = \"hours\") %>% et(amt=10000, addl=9, ii=12) %>% et(amt=20000, addl=4, time=120, ii=24) %>% et(0:240) ## Now solve x <- predict(mod1, ev) x #> -- Solved rxode2 object -- #> -- Parameters (x$params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> -- Initial Conditions (x$inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 241 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # i 235 more rows"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"using-the-solved-object-as-a-simple-data-frame","dir":"Articles","previous_headings":"Using rxode2 data frames","what":"Using the solved object as a simple data frame","title":"rxode2 Data Frames","text":"solved object acts data.frame tbl can filtered dpylr. example filter easily.","code":"library(dplyr) ## You can drop units for comparisons and filtering x <- mod1 %>% solve(ev) %>% drop_units() %>% filter(time <= 3) %>% as_tibble() ## or keep them and compare with the proper units. x <- mod1 %>% solve(ev) %>% filter(time <= set_units(3, hr)) %>% as_tibble() x #> # A tibble: 4 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"updating-the-data-set-interactively","dir":"Articles","previous_headings":"","what":"Updating the data-set interactively","title":"rxode2 Data Frames","text":"However isn’t just simple data object. can use solved object update parameters fly, even change sampling time. First need recreate original solved system:","code":"x <- mod1 %>% solve(ev) print(x) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 241 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # i 235 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"modifying-observation-times-for-rxode2","dir":"Articles","previous_headings":"Updating the data-set interactively","what":"Modifying observation times for rxode2","title":"rxode2 Data Frames","text":"Notice initial effect now 2. can also change sampling times easily method changing t time. example:","code":"x$t <- seq(0,5,length.out=20) print(x) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 20 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 0.263 16.8 0.0817 9255. 677. 24.3 1.01 #> 3 0.526 29.5 0.299 8566. 1187. 88.7 1.03 #> 4 0.789 38.9 0.615 7929. 1562. 183. 1.06 #> 5 1.05 45.5 1.00 7338. 1830. 298. 1.09 #> 6 1.32 50.1 1.44 6792. 2013. 427. 1.12 #> # i 14 more rows plot(x)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-data-frame.html","id":"modifying-simulation-parameters","dir":"Articles","previous_headings":"Updating the data-set interactively","what":"Modifying simulation parameters","title":"rxode2 Data Frames","text":"can also access change parameters $ operator. example, accessing KA can done : may change assigning new value. can access/change parameters, initialization(s) events $params, $inits, $events accessor syntax, similar used . syntax makes easy update explore effect various parameters solved object.","code":"x$KA #> [1] 0.294 x$KA <- 1 print(x) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> KA CL V2 Q V3 Kin Kout EC50 #> 1.0 18.6 40.2 10.5 297.0 1.0 1.0 200.0 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> -- First part of data (object): -- #> # A tibble: 20 x 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 0.263 52.2 0.261 7686. 2098. 77.6 1.03 #> 3 0.526 83.3 0.900 5908. 3348. 267. 1.09 #> 4 0.789 99.8 1.75 4541. 4010. 519. 1.15 #> 5 1.05 106. 2.69 3490. 4273. 800. 1.21 #> 6 1.32 106. 3.66 2683. 4272. 1086. 1.26 #> # i 14 more rows plot(x)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"datasets-for-rxode2-nlmixr","dir":"Articles","previous_headings":"","what":"Datasets for rxode2 & nlmixr","title":"rxode2 Event Types","text":"Data input nlmixr type data input rxode2, similar data NONMEM (NONMEM-ready datasets can used directly nlmixr).","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"subject-identification-columns","dir":"Articles","previous_headings":"Columns Described by Type of Use","what":"Subject Identification Columns","title":"rxode2 Event Types","text":"subject identification column separates subjects identification random effects. ID: subject identifier may integer, character, factor.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"observation-columns","dir":"Articles","previous_headings":"Columns Described by Type of Use","what":"Observation Columns","title":"rxode2 Event Types","text":"Observation columns used indicate dependent variable use measure . DV: numeric column measurement CENS: numeric column indication censoring, limit quantification assay. LIMIT: numeric column helping indicate type censoring, limit quantification assay. MDV: indicator missing DV values CMT: name number compartment DVID: dependent variable identifier EVID event identifier","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dosing-columns","dir":"Articles","previous_headings":"Columns Described by Type of Use","what":"Dosing Columns","title":"rxode2 Event Types","text":"AMT: amount dose CMT: name number compartment EVID: event identifier ADDL: number additional doses RATE DUR: rate duration dose","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"details-for-specific-dataset-columns","dir":"Articles","previous_headings":"","what":"Details for Specific Dataset Columns","title":"rxode2 Event Types","text":"details sorted alphabetically column name. grouping use, see documentation .","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"amt-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"AMT Column","title":"rxode2 Event Types","text":"AMT column defines amount dose. observation rows, 0 NA. dosing rows, amount dose administered CMT. dose zero-order rate (constant infusion), infusion may setup using RATE DUR column.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"censlimit-columns","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"CENS/LIMIT Columns","title":"rxode2 Event Types","text":"CENS column indicator column indicating censoring occurred. pharmacokinetic modeling, censoring typically sample limit quantification. Internally rxode2 saves values nlmixr can use likelihood calculations. CENS = 0 indicates value DV measured without censoring. CENS = 1 indicates value left censored (limit quantitation) value DV censoring/quantitation limit. CENS = -1 indicates value right censored (limit quantitation) value DV censoring/quantitation limit. LIMIT additional information censoring handled nlmixr stored rxode2’s data structure well. value left censored, like limit 1 may also believe value certain threshold, like zero. case, limit 0 indicates censored value 0 1. short : CENS = 0 LIMIT ignored observation censored CENS = 1 value censored (LIMIT, DV) CENS = -1 value censored (DV, LIMIT)","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"cmt-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"CMT Column","title":"rxode2 Event Types","text":"CMT column indicates compartment event occurs. given character string factor (preferred method), matched name model. given integer, matched order compartments appear model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dur-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"DUR Column","title":"rxode2 Event Types","text":"DUR column defines duration infusion. used set duration zero-order rate infusion.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dv-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"DV Column","title":"rxode2 Event Types","text":"DV column indicates current measurement current compartment (see CMT) current measurement identifier (see DVID) may missing (see MDV) censored (see CENS).","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"dvid-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"DVID Column","title":"rxode2 Event Types","text":"TODO","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"evid-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"EVID Column","title":"rxode2 Event Types","text":"EVID column event identifier row data. observation records, 0. normal dosing records, 1. Many EVID values detailed rxode2 Event Types Classic rxode2 Events vignettes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"id-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"ID Column","title":"rxode2 Event Types","text":"ID column subject identifier. column used separate one individual (usually single person animal) another. model, ID column used separate individuals. numerical integrator re-initializes new individual, new values random effects selected.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-datasets.html","id":"rate-column","dir":"Articles","previous_headings":"Details for Specific Dataset Columns","what":"RATE Column","title":"rxode2 Event Types","text":"TODO","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"creating-rxode2s-event-tables","dir":"Articles","previous_headings":"","what":"Creating rxode2’s event tables","title":"Easy rxode2 Event Tables","text":"event table rxode2 specialized data frame acts container rxode2’s events observation times. create rxode2 event table may use code eventTable(), et(), even create data frame right event information contained . closely related types events rxode2 supports. event table can add sampling/observations doses piping direct access. short table two main functions create dosing Sampling times can added add.sampling( sampling times ) et( sampling times ). Dosing intervals sampling windows also supported. documentation using et() syntax, though supported. models, can illustrate using model shared rxode2 tutorial:","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` library(units) #> udunits database from /usr/share/xml/udunits/udunits2.xml (ev <- et()) #> -- EventTable with 0 records -- #> 0 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) (ev <- et()) #> -- EventTable with 0 records -- #> 0 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) ## Model from rxode2 tutorial m1 <-function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff; eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"adding-doses-to-the-event-table","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Adding doses to the event table","title":"Easy rxode2 Event Tables","text":"created can add dosing event table add.dosing(), et() functions. Using add.dosing() function : Notice units specified table. specified, units use units package keep track units convert needed. Additionally, ggforce uses label ggplot axes. set_units drop_units useful set drop rxode2 event table units. example, can see time axes labeled: familiar NONMEM/rxode2 event records, can also specify dosing using et dose elements directly: gives: shows easy creating event tables can .","code":"ev <- eventTable(amount.units=\"mg\", time.units=\"hr\") ## The methods ar attached to the event table, so you can use ## them directly ev$add.dosing(dose=10000, nbr.doses = 3)# loading doses ## Starts at time 0; Default dosing interval is 24 ## You can also pipe the event tables to these methods. ev <- ev %>% add.dosing(dose=5000, nbr.doses=14, dosing.interval=12)# maintenance ev #> -- EventTable with 2 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 2 x 5 #> time amt ii addl evid #> [h] [mg] [h] #> 1 0 10000 24 2 1:Dose (Add) #> 2 0 5000 12 13 1:Dose (Add) rxSolve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ev <- et(timeUnits=\"hr\") %>% et(amt=10000, until = set_units(3, days), ii=12) # loading doses ev #> -- EventTable with 1 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 1 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 10000 12 6 1:Dose (Add) rxSolve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"adding-sampling-to-an-event-table","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Adding sampling to an event table","title":"Easy rxode2 Event Tables","text":"notice examples, rxode2 generated default sampling times since sampling times. wish control sampling time, add samples rxode2 event table add.sampling et gives: use et can simply add similar way add.sampling: gives following rxode2 solve: Note jagged nature plots since sample times.","code":"ev <- eventTable(amount.units=\"mg\", time.units=\"hr\") ## The methods ar attached to the event table, so you can use them ## directly ev$add.dosing(dose=10000, nbr.doses = 3)# loading doses ev$add.sampling(seq(0,24,by=4)) ev #> -- EventTable with 8 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 7 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 8 x 5 #> time amt ii addl evid #> [h] [mg] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 24 2 1:Dose (Add) #> 3 4 NA NA NA 0:Observation #> 4 8 NA NA NA 0:Observation #> 5 12 NA NA NA 0:Observation #> 6 16 NA NA NA 0:Observation #> 7 20 NA NA NA 0:Observation #> 8 24 NA NA NA 0:Observation solve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, until = set_units(3, days), ii=12) %>% # loading doses et(seq(0,24,by=4)) ev #> -- EventTable with 8 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 7 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 8 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 6 1:Dose (Add) #> 3 4 NA NA NA 0:Observation #> 4 8 NA NA NA 0:Observation #> 5 12 NA NA NA 0:Observation #> 6 16 NA NA NA 0:Observation #> 7 20 NA NA NA 0:Observation #> 8 24 NA NA NA 0:Observation solve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"expand-the-event-table-to-a-multi-subject-event-table-","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Expand the event table to a multi-subject event table.","title":"Easy rxode2 Event Tables","text":"thing needed expand event table list IDs want expand; can see following simulation 4 individuals solved :","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, until = set_units(3, days), ii=12) %>% # loading doses et(seq(0,48,length.out=200)) %>% et(id=1:4) ev #> -- EventTable with 804 records -- #> 4 dosing records (see x$get.dosing(); add with add.dosing or et) #> 800 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 804 x 6 #> id time amt ii addl evid #> [h] [h] #> 1 1 0 NA NA NA 0:Observation #> 2 1 0 10000 12 6 1:Dose (Add) #> 3 1 0.241 NA NA NA 0:Observation #> 4 1 0.482 NA NA NA 0:Observation #> 5 1 0.724 NA NA NA 0:Observation #> 6 1 0.965 NA NA NA 0:Observation #> 7 1 1.21 NA NA NA 0:Observation #> 8 1 1.45 NA NA NA 0:Observation #> 9 1 1.69 NA NA NA 0:Observation #> 10 1 1.93 NA NA NA 0:Observation #> # i 794 more rows set.seed(42) rxSetSeed(42) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"add-doses-and-samples-within-a-sampling-window","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Add doses and samples within a sampling window","title":"Easy rxode2 Event Tables","text":"addition adding fixed doses fixed sampling times, can windows sample draw doses . dosing windows specify time ordered numerical vector lowest dosing time highest dosing time inside list. example, start dosing time 6 hour dosing window: can clearly see different dosing times following simulation: course reality dosing interval may 2 hours: sort thing can specified sampling times. specify sampling times terms sampling window, can create list sampling times. sampling time two element ordered numeric vector. shows flexibility dosing sampling rxode2 event tables allow.","code":"set.seed(42) rxSetSeed(42) ev <- et(timeUnits=\"hr\") %>% et(time=list(c(0,6)), amt=10000, until = set_units(2, days), ii=12) %>% # loading doses et(id=1:4) ev #> -- EventTable with 16 records -- #> 16 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 16 x 6 #> id low time high amt evid #> [h] [h] [h] #> 1 1 0 5.49 6 10000 1:Dose (Add) #> 2 1 12 17.0 18 10000 1:Dose (Add) #> 3 1 24 25.7 30 10000 1:Dose (Add) #> 4 1 36 41.6 42 10000 1:Dose (Add) #> 5 2 0 4.31 6 10000 1:Dose (Add) #> 6 2 12 14.7 18 10000 1:Dose (Add) #> 7 2 24 28.2 30 10000 1:Dose (Add) #> 8 2 36 39.9 42 10000 1:Dose (Add) #> 9 3 0 0.808 6 10000 1:Dose (Add) #> 10 3 12 16.4 18 10000 1:Dose (Add) #> 11 3 24 27.1 30 10000 1:Dose (Add) #> 12 3 36 39.9 42 10000 1:Dose (Add) #> 13 4 0 4.98 6 10000 1:Dose (Add) #> 14 4 12 13.7 18 10000 1:Dose (Add) #> 15 4 24 29.6 30 10000 1:Dose (Add) #> 16 4 36 41.5 42 10000 1:Dose (Add) ev <- ev %>% et(seq(0,48,length.out=200)) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments set.seed(42) rxSetSeed(42) ev <- et(timeUnits=\"hr\") %>% et(time=list(c(0,2)), amt=10000, until = set_units(2, days), ii=12) %>% # loading doses et(id=1:4) %>% et(seq(0,48,length.out=200)) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments rxSetSeed(42) set.seed(42) ev <- et(timeUnits=\"hr\") %>% et(time=list(c(0,2)), amt=10000, until = set_units(2, days), ii=12) %>% # loading doses et(id=1:4) ## Create 20 samples in the first 24 hours and 20 samples in the ## second 24 hours samples <- c(lapply(1:20, function(...){c(0,24)}), lapply(1:20, function(...){c(20,48)})) ## Add the random collection to the event table ev <- ev %>% et(samples) library(ggplot2) solve(m1, ev, params=data.frame(KA=0.294*exp(rnorm(4)), CL=18.6*exp(rnorm(4)))) %>% plot(C2) + geom_point() #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"combining-event-tables","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Combining event tables","title":"Easy rxode2 Event Tables","text":"Since can create dosing records sampling records, can create complex dosing regimen wish. addition, rxode2 allows combine event tables c, seq, rep, rbind.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"sequencing-event-tables","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Sequencing event tables","title":"Easy rxode2 Event Tables","text":"One way combine event table sequence c, seq etSeq. takes two dosing groups adds least one inter-dose interval : sequencing events, can also separate sequence period time; example wanted separate week, easily following sequence event tables: Note example time bid qd event tables exactly one week, 1 week plus 24 hours inter-dose interval. want behavior, can sequence using wait=\"+ii\". Also note, rxode2 assumes dosing want space event tables , clears sampling records combine event tables. true, can also use option samples=\"use\"","code":"## bid for 5 days bid <- et(timeUnits=\"hr\") %>% et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") %>% et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) %>% et(seq(0,11*24,length.out=100)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days followed by qd for 5 days et <- seq(bid,set_units(1, \"week\"), qd) %>% et(seq(0,18*24,length.out=100)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days followed by qd for 5 days et <- seq(bid,set_units(1, \"week\"), qd,wait=\"+ii\") %>% et(seq(0,18*24,length.out=100)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"repeating-event-tables","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Repeating event tables","title":"Easy rxode2 Event Tables","text":"can event table can repeat etRep rep. example 4 rounds 2 weeks QD therapy 1 week therapy can simply specified: simplified way use sequence event tables. Therefore, many options still apply; samples cleared unless use samples=\"use\", time event tables least inter-dose interval. can adjust timing wait option.","code":"qd <-et(timeUnits = \"hr\") %>% et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- rep(qd, times=4, wait=set_units(1,\"weeks\")) %>% add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"combining-event-tables-with-rbind","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Combining event tables with rbind","title":"Easy rxode2 Event Tables","text":"may combine event tables rbind. consider event times combining event tables, keeps times. space event tables waiting period, also consider inter-dose interval. Using previous seq can clearly see difference. sequence: bind together rbind Still waiting period applies (consider inter-dose interval) can also bind tables together make ID event table unique; can good combine cohorts different expected dosing sampling times. requires id=\"unique\" option; Using first example shows different case:","code":"## bid for 5 days bid <- et(timeUnits=\"hr\") %>% et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") %>% et(amt=20000,ii=24,until=set_units(5, \"days\")) et <- seq(bid,qd) %>% et(seq(0,18*24,length.out=500)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days et <- rbind(bid,qd) %>% et(seq(0,18*24,length.out=500)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments et <- rbind(bid,wait=set_units(10,days),qd) %>% et(seq(0,18*24,length.out=500)); rxSolve(m1, et) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## bid for 5 days et <- etRbind(bid,qd, id=\"unique\") %>% et(seq(0,150,length.out=500)); library(ggplot2) rxSolve(m1, et) %>% plot(C2) + facet_wrap( ~ id) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-table.html","id":"event-tables-in-rstudio-notebooks","dir":"Articles","previous_headings":"Creating rxode2’s event tables","what":"Event tables in Rstudio Notebooks","title":"Easy rxode2 Event Tables","text":"addition output console shown examples, Rstudio notebook output different can seen following screenshots; first screenshot shows event table looks evaluating Rstduio notebook simple dataframe allows page contents. click first box Rstudio notebook output, notes event table: ## Expanding events Event tables can expanded contain addl data item, like following example: can expand events addl items $expand() etExpand(ev): first, etExpand(ev) expands event table without modifying original data frame: can see addl events expanded, however original data frame remained intact: use ev$expand() modify ev object. similar object-oriented method:","code":"ev <- et() %>% et(dose=50, ii=8, until=48) ev #> -- EventTable with 1 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 1 x 5 #> time amt ii addl evid #> #> 1 0 50 8 6 1:Dose (Add) etExpand(ev) #> -- EventTable with 7 records -- #> 7 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 7 x 4 #> time amt ii evid #> #> 1 0 50 0 1:Dose (Add) #> 2 8 50 0 1:Dose (Add) #> 3 16 50 0 1:Dose (Add) #> 4 24 50 0 1:Dose (Add) #> 5 32 50 0 1:Dose (Add) #> 6 40 50 0 1:Dose (Add) #> 7 48 50 0 1:Dose (Add) print(ev) #> -- EventTable with 1 records -- #> 1 dosing records (see $get.dosing(); add with add.dosing or et) #> 0 observation times (see $get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with $expand(); or etExpand() #> -- First part of : -- #> # A tibble: 1 x 5 #> time amt ii addl evid #> #> 1 0 50 8 6 1:Dose (Add) ev$expand() ev #> -- EventTable with 7 records -- #> 7 dosing records (see x$get.dosing(); add with add.dosing or et) #> 0 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 7 x 4 #> time amt ii evid #> #> 1 0 50 0 1:Dose (Add) #> 2 8 50 0 1:Dose (Add) #> 3 16 50 0 1:Dose (Add) #> 4 24 50 0 1:Dose (Add) #> 5 32 50 0 1:Dose (Add) #> 6 40 50 0 1:Dose (Add) #> 7 48 50 0 1:Dose (Add)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"rxode2-event-tables","dir":"Articles","previous_headings":"","what":"rxode2 event tables","title":"rxode2 Event Types","text":"general, rxode2 event tables follow NONMEM dataset convention exceptions: may turn compartment negative compartment number “-cmt” cmt compartment name. compartment data item (cmt) can still number, number compartment defined appearance compartment name model. can tedious count, can specify compartment numbers easier using cmt(cmtName) beginning model. Bioavailability changes change rate infusion since dur/amt fixed input data. Similarly, specifying rate/amt infusion, bioavailability change infusion duration since rate/amt fixed input data. infrequent NONMEM columns supported: pcmt, call. evid=5 replace event; replaces value compartment value specified amt column. equivalent deSolve=replace. evid=6 multiply event; multiplies value compartment value specified amt column. equivalent deSolve=multiply. evid=7 transit compartment model/phantom event. puts dose dose() function calculates time since last dose tad() doesn’t actually put dose compartment. allows transit() function easily apply compartment. legal entries data table: notes: evid can classic RxODE (described ) NONMEM-style evid described . NONMEM’s DV required; rxode2 ODE solving framework. NONMEM’s MDV required, since captured EVID. Instead NONMEM-compatible data, can accept deSolve compatible data-frames. returning rxode2 solved data-set additional event ids (EVID) may see depending solving options: EVID = -1 modeled rate ends (corresponds rate = -1) EVID = -2 modeled duration ends (corresponds rate=-2) EVID = -10 rate specified zero-order infusion ends (corresponds rate > 0) EVID = -20 duration specified zero-order infusion ends (corresponds dur > 0) EVID = 101, 102, 103,... correspond 1, 2, 3, … modeled time (mtime). can accessed solving option combination addDosing=TRUE subsetNonmem=FALSE. want see classic EVID equivalents can use addDosing=NA. illustrate event types use model original rxode2 tutorial.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` ## Model from rxode2 tutorial m1 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"bolusadditive-doses","dir":"Articles","previous_headings":"","what":"Bolus/Additive Doses","title":"rxode2 Event Types","text":"bolus dose default type dose rxode2 requires amt/dose. Note uses convenience function et() described rxode2 event tables","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 2 1:Dose (Add) #> 3 0.242 NA NA NA 0:Observation #> 4 0.485 NA NA NA 0:Observation #> 5 0.727 NA NA NA 0:Observation #> 6 0.970 NA NA NA 0:Observation #> 7 1.21 NA NA NA 0:Observation #> 8 1.45 NA NA NA 0:Observation #> 9 1.70 NA NA NA 0:Observation #> 10 1.94 NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev) %>% plot(C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"infusion-doses","dir":"Articles","previous_headings":"","what":"Infusion Doses","title":"rxode2 Event Types","text":"different type infusions rxode2 supports: Constant Rate Infusion (rate) Constant Duration Infusion (dur) Estimated Rate Infusion Estimated Duration Infusion","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"constant-infusion-in-terms-of-duration-and-rate","dir":"Articles","previous_headings":"Infusion Doses","what":"Constant Infusion (in terms of duration and rate)","title":"rxode2 Event Types","text":"next type event infusion; two ways specify infusion; first dur keyword. example : can also specified rate component: exception bioavailability changes infusion. case modeling rate, bioavailability decrease, decreases infusion duration, NONMEM. example: Similarly increasing bioavailability increases infusion duration. rationale behavior rate amt specified event table, thing can change bioavailability increase duration infusion. specify amt dur components event table, bioavailability changes affect rate infusion. can see side--side comparison bioavailability changes affecting rate instead duration records following plots:","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, dur=8) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt ii addl evid dur #> [h] [h] [h] #> 1 0 NA NA NA 0:Observation NA #> 2 0 10000 12 2 1:Dose (Add) 8 #> 3 0.242 NA NA NA 0:Observation NA #> 4 0.485 NA NA NA 0:Observation NA #> 5 0.727 NA NA NA 0:Observation NA #> 6 0.970 NA NA NA 0:Observation NA #> 7 1.21 NA NA NA 0:Observation NA #> 8 1.45 NA NA NA 0:Observation NA #> 9 1.70 NA NA NA 0:Observation NA #> 10 1.94 NA NA NA 0:Observation NA #> # i 91 more rows rxSolve(m1, ev) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, rate=10000/8) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt rate ii addl evid #> [h] [h] #> 1 0 NA NA NA NA 0:Observation #> 2 0 10000 1250 12 2 1:Dose (Add) #> 3 0.242 NA NA NA NA 0:Observation #> 4 0.485 NA NA NA NA 0:Observation #> 5 0.727 NA NA NA NA 0:Observation #> 6 0.970 NA NA NA NA 0:Observation #> 7 1.21 NA NA NA NA 0:Observation #> 8 1.45 NA NA NA NA 0:Observation #> 9 1.70 NA NA NA NA 0:Observation #> 10 1.94 NA NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments rxSolve(m1, ev, c(fdepot=0.25)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments rxSolve(m1, ev, c(fdepot=1.25)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, dur=8) %>% et(seq(0, 24, length.out=100)) library(ggplot2) library(patchwork) p1 <- rxSolve(m1, ev, c(fdepot=1.25)) %>% plot(depot) + xlab(\"Time\") + ylim(0,5000) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments p2 <- rxSolve(m1, ev, c(fdepot=0.25)) %>% plot(depot) + xlab(\"Time\")+ ylim(0,5000) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ## Use patchwork syntax to combine plots p1 * p2"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"modeled-rate-and-duration-of-infusion","dir":"Articles","previous_headings":"Infusion Doses","what":"Modeled Rate and Duration of Infusion","title":"rxode2 Event Types","text":"can model duration, equivalent NONMEM’s rate=-2. Similarly, may also model rate. equivalent NONMEM’s rate=-1 rxode2’s event table specifies data item well.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, rate=-2) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt rate ii addl evid #> [h] [h] #> 1 0 NA NA NA NA 0:Observation #> 2 0 10000 -2:dur 12 2 1:Dose (Add) #> 3 0.242 NA NA NA NA 0:Observation #> 4 0.485 NA NA NA NA 0:Observation #> 5 0.727 NA NA NA NA 0:Observation #> 6 0.970 NA NA NA NA 0:Observation #> 7 1.21 NA NA NA NA 0:Observation #> 8 1.45 NA NA NA NA 0:Observation #> 9 1.70 NA NA NA NA 0:Observation #> 10 1.94 NA NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev, c(durDepot=7)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12,until=24, rate=-1) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 101 x 6 #> time amt rate ii addl evid #> [h] [h] #> 1 0 NA NA NA NA 0:Observation #> 2 0 10000 -1:rate 12 2 1:Dose (Add) #> 3 0.242 NA NA NA NA 0:Observation #> 4 0.485 NA NA NA NA 0:Observation #> 5 0.727 NA NA NA NA 0:Observation #> 6 0.970 NA NA NA NA 0:Observation #> 7 1.21 NA NA NA NA 0:Observation #> 8 1.45 NA NA NA NA 0:Observation #> 9 1.70 NA NA NA NA 0:Observation #> 10 1.94 NA NA NA NA 0:Observation #> # i 91 more rows rxSolve(m1, ev, c(rateDepot=10000/3)) %>% plot(depot, C2) + xlab(\"Time\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"steady-state","dir":"Articles","previous_headings":"","what":"Steady State","title":"rxode2 Event Types","text":"doses solved steady state reached constant inter-dose interval.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, ss=1) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 101 records -- #> 1 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> -- First part of x: -- #> # A tibble: 101 x 5 #> time amt ii evid ss #> [h] [h] #> 1 0 NA NA 0:Observation NA #> 2 0 10000 12 1:Dose (Add) 1 #> 3 0.242 NA NA 0:Observation NA #> 4 0.485 NA NA 0:Observation NA #> 5 0.727 NA NA 0:Observation NA #> 6 0.970 NA NA 0:Observation NA #> 7 1.21 NA NA 0:Observation NA #> 8 1.45 NA NA 0:Observation NA #> 9 1.70 NA NA 0:Observation NA #> 10 1.94 NA NA 0:Observation NA #> # i 91 more rows rxSolve(m1, ev) %>% plot(C2) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"steady-state-for-complex-dosing","dir":"Articles","previous_headings":"Steady State","what":"Steady state for complex dosing","title":"rxode2 Event Types","text":"using ss=2 flag, can use super-positioning principle linear kinetics get steady state nonstandard dosing (.e. morning 100 mg vs evening 150 mg). done : Saving state values Resetting states solving system steady state Adding back prior state values can see takes full dose cycle reach true complex steady state dosing.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=24, ss=1) %>% et(time=12, amt=15000, ii=24, ss=2) %>% et(time=24, amt=10000, ii=24, addl=3) %>% et(time=36, amt=15000, ii=24, addl=3) %>% et(seq(0, 64, length.out=500)) library(ggplot2) rxSolve(m1, ev,maxsteps=10000) %>% plot(C2) + annotate(\"rect\", xmin=0, xmax=24, ymin=-Inf, ymax=Inf, alpha=0.2) + annotate(\"text\", x=12.5, y=7, label=\"Initial Steady State Period\") + annotate(\"text\", x=44, y=7, label=\"Steady State AM/PM dosing\") #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"steady-state-for-constant-infusion-or-zero-order-processes","dir":"Articles","previous_headings":"Steady State","what":"Steady state for constant infusion or zero order processes","title":"rxode2 Event Types","text":"last type steady state rxode2 supports steady-state constant infusion rate. can specified way NONMEM, : inter-dose interval ii=0 steady state dose, ie ss=1 Either positive rate (rate>0) estimated rate rate=-1. zero dose, ie amt=0 steady-state constant infusion achieved, infusion turned using record, just like NONMEM. Note rate=-2 model duration infusion doesn’t make much sense since solving infusion steady state. duration specified steady state solution. Also note bioavailability changes steady state infusion also make sense neither change rate duration steady state infusion. Hence modeled bioavailability type dosing event ignored. example: can used PK, can used steady-state disease processes.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=0, ss=1,rate=10000/8) p1 <- rxSolve(m1, ev) %>% plot(C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=200000, rate=10000/8) %>% et(0, 250, length.out=1000) p2 <- rxSolve(m1, ev) %>% plot(C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments library(patchwork) p1 / p2"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"reset-events","dir":"Articles","previous_headings":"","what":"Reset Events","title":"rxode2 Event Types","text":"Reset events implemented evid=3 evid=reset, reset evid=4 reset dose. solving show happens system system reset 6 hours post-dose. can see compartments reset initial values. next dose start dosing cycle . case, whole system reset dose given","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, evid=reset) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 102 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 102 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 3 1:Dose (Add) #> 3 0.242 NA NA NA 0:Observation #> 4 0.485 NA NA NA 0:Observation #> 5 0.727 NA NA NA 0:Observation #> 6 0.970 NA NA NA 0:Observation #> 7 1.21 NA NA NA 0:Observation #> 8 1.45 NA NA NA 0:Observation #> 9 1.70 NA NA NA 0:Observation #> 10 1.94 NA NA NA 0:Observation #> # i 92 more rows rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, amt=10000, evid=4) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 102 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 102 x 5 #> time amt ii addl evid #> [h] [h] #> 1 0 NA NA NA 0:Observation #> 2 0 10000 12 3 1:Dose (Add) #> 3 0.242 NA NA NA 0:Observation #> 4 0.485 NA NA NA 0:Observation #> 5 0.727 NA NA NA 0:Observation #> 6 0.970 NA NA NA 0:Observation #> 7 1.21 NA NA NA 0:Observation #> 8 1.45 NA NA NA 0:Observation #> 9 1.70 NA NA NA 0:Observation #> 10 1.94 NA NA NA 0:Observation #> # i 92 more rows rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-event-types.html","id":"turning-off-compartments","dir":"Articles","previous_headings":"","what":"Turning off compartments","title":"rxode2 Event Types","text":"may also turn compartment, similar reset event. Solving shows system: case, depot turned , depot compartment concentrations set initial values compartment concentrations/levels reset. another dose depot administered depot compartment turned back . Note dose compartment turns back compartment dosed. Hence turn effect compartment, continues another dose depot. turn back compartment, zero-dose compartment evid=2 compartment needed.","code":"ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, cmt=\"-depot\", evid=2) %>% et(seq(0, 24, length.out=100)) ev #> -- EventTable with 102 records -- #> 2 dosing records (see x$get.dosing(); add with add.dosing or et) #> 100 observation times (see x$get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with x$expand(); or etExpand(x) #> -- First part of x: -- #> # A tibble: 102 x 6 #> time cmt amt ii addl evid #> [h] [h] #> 1 0 (obs) NA NA NA 0:Observation #> 2 0 (default) 10000 12 3 1:Dose (Add) #> 3 0.242 (obs) NA NA NA 0:Observation #> 4 0.485 (obs) NA NA NA 0:Observation #> 5 0.727 (obs) NA NA NA 0:Observation #> 6 0.970 (obs) NA NA NA 0:Observation #> 7 1.21 (obs) NA NA NA 0:Observation #> 8 1.45 (obs) NA NA NA 0:Observation #> 9 1.70 (obs) NA NA NA 0:Observation #> 10 1.94 (obs) NA NA NA 0:Observation #> # i 92 more rows rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, cmt=\"-eff\", evid=2) %>% et(seq(0, 24, length.out=100)) rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments ev <- et(timeUnits=\"hr\") %>% et(amt=10000, ii=12, addl=3) %>% et(time=6, cmt=\"-eff\", evid=2) %>% et(time=12,cmt=\"eff\",evid=2) %>% et(seq(0, 24, length.out=100)) rxSolve(m1, ev) %>% plot(depot,C2, eff) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"classic-rxode-evid-values","dir":"Articles","previous_headings":"","what":"Classic RxODE evid values","title":"Classic rxode2 Events","text":"Originally RxODE supported compound event IDs; rxode2 still supports parameters, often useful use normal NONMEM dataset standard used many modeling tools like NONMEM, Monolix nlmixr, described rxode2 types article. Classically, RxODE supported event coding single event id evid described following table. classic EVID concatenate numbers table, infusion compartment 1 10101 infusion compartment 199 119901. EVID = 0 (observations), EVID=2 (type event) EVID=3 supported. Internally EVID=9 non-observation event makes sure system initialized zero; EVID=9 manually set. EVID 10-99 represents modeled time interventions, similar NONMEM’s MTIME. along amount (amt) time columns specify events ODE system. infusions specified EVIDs > 100 amt column represents rate value. Infusion flags 1 2 +amt turn infusion specific compartment -amt turn infusion specific compartment. specify dose/duration place dosing records time duration starts stops. modeled rate/duration infusion flags infusion flag must followed infusion record. number concatenated together form full RxODE event ID, shown following examples:","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"bolus-dose-examples","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Bolus Dose Examples","title":"Classic rxode2 Events","text":"100 bolus dose compartment #1 time 0 100 bolus dose compartment #99 time 0 100 bolus dose compartment #199 time 0","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"infusion-event-examples","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Infusion Event Examples","title":"Classic rxode2 Events","text":"Bolus infusion rate 50 compartment 1 1.5 hr, (modeled bioavailability changes duration infusion) Bolus infusion rate 50 compartment 1 1.5 hr (modeled bioavailability changes rate infusion) Modeled rate amount 50 Modeled duration amount 50","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"steady-state-for-classic-rxode-evid-example","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Steady State for classic RxODE EVID example","title":"Classic rxode2 Events","text":"Steady state dose cmt 1 Steady State super-positioning principle 50 pm 100 dose","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"steady-state-with-lagged-dose-for-classic-rxode-evid","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Steady state with lagged dose for classic RxODE evid","title":"Classic rxode2 Events","text":"Steady state lagged dose bolus dose: time | evid | amt | ii | 0 | 109 | 100 | 24 | 0 | 101 | 100 | 0 | event 109 calculates trough amount steady state passed (ii-lag_time) event 101 applies next steady state dose. Steady state (=2) lagged bolus dose Steady state infusion lag time time | evid | amt | ii | 0 | 10109 | 5 | 24 | 0 | 10108 | -5 | 24 | 0 | 10101 | 5 | | 20 | 10101 | -5 | | case bolus, 10109 event calculates trough concentration ii=24, may (may ) still infusion running. infusion running 10108 event turn infusion appropriate time. infusion completed, 10108 event ignored. next 2 events 10101 represent event times (assuming bioavailability applied).","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-events-classic.html","id":"turning-off-a-compartment-with-classic-rxode-evid","dir":"Articles","previous_headings":"Classic RxODE evid values","what":"Turning off a compartment with classic RxODE EVID","title":"Classic rxode2 Events","text":"Turn first compartment time 12 Event coding rxode2 encoded single event number evid. compartments 100, coded : event 0 observation events. 100*(Compartment Number) + 1 dose captured amt 10000 + 100*(Compartment Number) + 1 infusion rate captured amt column infusion turned subtracting amt evid stop infusion. compartments greater equal 100, 100s place digits transferred 100,000th place digit. doses 99th compartment evid bolus dose 9901 evid infusion 19901. bolus dose 199th compartment evid bolus dose 109901. infusion dosing record 199th compartment 119901.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"Introduction to rxode2","text":"rxode2 R package facilitates simulation ODE models R. designed pharmacometrics models mind, can applied generally ODE model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"description-of-rxode2-illustrated-through-an-example","dir":"Articles","previous_headings":"","what":"Description of rxode2 illustrated through an example","title":"Introduction to rxode2","text":"model equations can specified text string, model file R expression. differential algebraic equations permitted. Differential equations specified d/dt(var_name) =. equation can separated semicolon. load rxode2 package compile model: Model parameters may specified ini({}) model block, initial conditions can specified within model cmt(0)= X, like model eff(0) <- 1. may also specify subject variability initial conditions residual error components just like nlmixr2. allows single interface nlmixr2/rxode2 models. Also note, classic rxode2 interface still works just like past (don’t worry breaking code time). fact, can get classic rxode2 model $simulationModel ui object:","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ # central KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 # peripheral Q=1.05E+01 V3=2.97E+02 # effects Kin=1 Kout=1 EC50=200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 eff(0) <- 1 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } mod1 <- mod1() # create the ui object (can also use `rxode2(mod1)`) mod1 summary(mod1$simulationModel)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"specify-dosing-and-sampling-in-rxode2","dir":"Articles","previous_headings":"Description of rxode2 illustrated through an example","what":"Specify Dosing and sampling in rxode2","title":"Introduction to rxode2","text":"rxode2 provides simple flexible way specify dosing sampling functions generate event table. First, empty event table generated “et()” function. interface similar NONMEM event tables: can see code, can dose compartment named rxode2 model. slight deviation NONMEM can reduce need compartment renumbering. events can also combined expanded (multi-subject events complex regimens) rbind, c, seq, rep. information creating complex dosing regimens using rxode2 see rxode2 events vignette.","code":"ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(0:240) # Add sampling"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-intro.html","id":"solving-odes","dir":"Articles","previous_headings":"Description of rxode2 illustrated through an example","what":"Solving ODEs","title":"Introduction to rxode2","text":"ODE can now solved using rxSolve: returns modified data frame. can see compartment values plot : , Note labels automatically labeled units initial event table. rxode2 extracts units label plot (present).","code":"x <- mod1 %>% rxSolve(ev) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ x #> ── Solved rxode2 object ── #> ── Parameters (x$params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions (x$inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows library(ggplot2) plot(x,C2) + ylab(\"Central Concentration\") plot(x,eff) + ylab(\"Effect\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-model-types.html","id":"prediction-only-models","dir":"Articles","previous_headings":"","what":"Prediction only models","title":"rxode2 additional model types","text":"Prediction models simple create. use rxode2 syntax without ODE systems . simple example one-compartment model. Solving rxode2 models saving simple ODE system, faster course.","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` mod <- function(){ model({ ipre <- 10 * exp(-ke * t) }) } et <- et(seq(0,24,length.out=50)) cmt1 <- rxSolve(mod,et,params=c(ke=0.5)) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ cmt1 ## -- Solved rxode2 object -- ## -- Parameters (x$params): -- ## ke ## 0.5 ## -- Initial Conditions (x$inits): -- ## named numeric(0) ## -- First part of data (object): -- ## # A tibble: 50 x 2 ## time ipre ## ## 1 0 10 ## 2 0.490 7.83 ## 3 0.980 6.13 ## 4 1.47 4.80 ## 5 1.96 3.75 ## 6 2.45 2.94 ## # i 44 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-model-types.html","id":"solved-compartment-models","dir":"Articles","previous_headings":"","what":"Solved compartment models","title":"rxode2 additional model types","text":"Solved models also simple create. simply place linCmt() psuedo-function code. linCmt() function figures type model use based parameter names specified. often, pharmacometric models parameterized terms volume clearances. Clearances specified NONMEM-style names CL, Q, Q1, Q2, etc. distributional clearances CLD, CLD2. Volumes specified Central (VC V), Peripheral/Tissue (VP, VT). translations available, example translations : Another popular parameterization terms micro-constants. rxode2 assumes compartment 1 central compartment. elimination constant specified K, Ke Kel. example translations : last parameterization possible using alpha V //B/C. example translations : linCmt() sleuthing complete, 1, 2 3 compartment model solution used value linCmt(). compartments can dose linear solved system depot central linear absorption constant model ka. Without additional ODEs, compartments numbered depot=1 central=2. absorption constant ka missing, may dose central compartment. Without additional ODEs compartment number central=1. compartments take sort events ODE model can take, discussed rxode2 events vignette. acts ODE model; specify dose depot compartment solve system:","code":"mod <- function() { ini({ kel <- 0.5 V <- 1 }) model({ ipre <- linCmt(V, kel) }) } et <- et(amt=10,time=0,cmt=depot) %>% et(seq(0,24,length.out=50)) cmt1 <- rxSolve(mod,et) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ cmt1 ## -- Solved rxode2 object -- ## -- Parameters (x$params): -- ## kel V ## 0.5 1.0 ## -- Initial Conditions (x$inits): -- ## named numeric(0) ## -- First part of data (object): -- ## # A tibble: 50 x 2 ## time ipre ## ## 1 0 10 ## 2 0.490 7.83 ## 3 0.980 6.13 ## 4 1.47 4.80 ## 5 1.96 3.75 ## 6 2.45 2.94 ## # i 44 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-model-types.html","id":"mixing-solved-systems-and-odes","dir":"Articles","previous_headings":"","what":"Mixing Solved Systems and ODEs","title":"rxode2 additional model types","text":"addition pure ODEs, may mix solved systems ODEs. prior 2-compartment indirect response model can simplified linCmt() function: allows indirect response model assign 2-compartment model C2 variable used indirect response model. mixing solved systems ODEs, solved system’s compartment always last compartment. solved system technically isn’t compartment solved. Adding dosing compartment end interfere actual ODE solved. Therefore,two-compartment indirect response model, effect compartment compartment #1 PK dosing compartment depot compartment #2. compartment model requires new event table since compartment number changed: can solved following command: Note solving require specifying effect compartment initial condition 1. Rather, already pre-specified eff(0)=1. can solved different initial conditions easily: rxode2 detective also require specify variables linCmt() function already defined block. Therefore, following function also work solve system. Note specify parameters solving system since built model, can override parameters:","code":"library(rxode2) ## Setup example model mod1 <-function() { model({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) =-KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## Seup parameters and initial conditions theta <- c(KA=2.94E-01, CL=1.86E+01, V2=4.02E+01, # central Q=1.05E+01, V3=2.97E+02, # peripheral Kin=1, Kout=1, EC50=200) # effects inits <- c(eff=1) ## Setup dosing event information ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9, ii=12) %>% et(amt=20000, addl=4, time=120, ii=24) %>% add.sampling(0:240) ## Setup a mixed solved/ode system: mod2 <- function() { model({ ## the order of variables do not matter, the type of compartmental ## model is determined by the parameters specified. C2 = linCmt(KA, CL, V2, Q, V3); eff(0) = 1 ## This specifies that the effect compartment starts at 1. d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; }) } ev <- et(amountUnits='mg', timeUnits='hours') %>% et(amt=10000, addl=9, ii=12, cmt=2) %>% et(amt=20000, addl=4, time=120, ii=24, cmt=2) %>% et(0:240) x <- mod2 %>% solve(theta, ev) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 ## -- Initial Conditions ($inits): -- ## eff ## 1 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 1 ## 2 1 121. 1.35 ## 3 2 60.3 1.38 ## 4 3 31.0 1.28 ## 5 4 17.0 1.18 ## 6 5 10.2 1.11 ## # i 235 more rows x <- mod2 %>% solve(theta, ev,c(eff=2)) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 ## -- Initial Conditions ($inits): -- ## eff ## 2 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 2 ## 2 1 121. 1.93 ## 3 2 60.3 1.67 ## 4 3 31.0 1.41 ## 5 4 17.0 1.23 ## 6 5 10.2 1.13 ## # i 235 more rows mod3 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ # Since the parameters are in the ini block, put them in linCmt so # that the model is detected correctly C2 <- linCmt(KA, CL, V2, Q, V3) eff(0) <- 1 ## This specifies that the effect compartment starts at 1. d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff; }) } x <- mod3 %>% solve(ev) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 ## -- Initial Conditions ($inits): -- ## eff ## 1 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 1 ## 2 1 121. 1.35 ## 3 2 60.3 1.38 ## 4 3 31.0 1.28 ## 5 4 17.0 1.18 ## 6 5 10.2 1.11 ## # i 235 more rows x <- mod3 %>% solve(c(KA=10),ev) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments print(x) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## KA CL V2 Q V3 Kin Kout EC50 ## 10.0 18.6 40.2 10.5 297.0 1.0 1.0 200.0 ## -- Initial Conditions ($inits): -- ## eff ## 1 ## -- First part of data (object): -- ## # A tibble: 241 x 3 ## time C2 eff ## [h] ## 1 0 249. 1 ## 2 1 121. 1.35 ## 3 2 60.3 1.38 ## 4 3 31.0 1.28 ## 5 4 17.0 1.18 ## 6 5 10.2 1.11 ## # i 235 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"nesting-in-rxode2","dir":"Articles","previous_headings":"","what":"Nesting in rxode2","title":"Nesting levels in rxode2","text":"one level nesting possible rxode2; example using following uncertainties sources variability:","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"event-table","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Event table","title":"Nesting levels in rxode2","text":"event table contains nesting variables: inv: investigator id id: subject id eye: eye id (left right) occ: occasion","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(seq(0, 240, by=4)) %>% # Assumes sampling when there is no dosing information et(seq(0, 240, by=4) + 0.1) %>% ## adds 0.1 for separate eye et(id=1:20) %>% ## Add an occasion per dose mutate(occ=cumsum(!is.na(amt))) %>% mutate(occ=ifelse(occ == 0, 1, occ)) %>% mutate(occ=2- occ %% 2) %>% mutate(eye=ifelse(round(time) == time, 1, 2)) %>% mutate(inv=ifelse(id < 10, 1, 2)) %>% as_tibble -> ev"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"rxode2-model","dir":"Articles","previous_headings":"Nesting in rxode2","what":"rxode2 model","title":"Nesting levels in rxode2","text":"creates rxode2 model multi-level nesting. Note variables inv.Cl, inv.Ka, eta.Cl etc; need one variable level nesting.","code":"mod <- rxode2({ ## Clearance with individuals eff(0) = 1 C2 = centr/V2*(1+prop.sd) C3 = peri/V3 CL = TCl*exp(eta.Cl + eye.Cl + iov.Cl + inv.Cl) KA = TKA * exp(eta.Ka + eye.Ka + iov.Cl + inv.Ka) d/dt(depot) =-KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff ef0 = eff + add.sd }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"uncertainty-in-model-parameters","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Uncertainty in Model parameters","title":"Nesting levels in rxode2","text":"","code":"theta <- c(\"TKA\"=0.294, \"TCl\"=18.6, \"V2\"=40.2, \"Q\"=10.5, \"V3\"=297, \"Kin\"=1, \"Kout\"=1, \"EC50\"=200) ## Creating covariance matrix tmp <- matrix(rnorm(8^2), 8, 8) tMat <- tcrossprod(tmp, tmp) / (8 ^ 2) dimnames(tMat) <- list(names(theta), names(theta)) tMat #> TKA TCl V2 Q V3 #> TKA 0.173571236 -0.1003204607 0.038185010 -0.004108928 -0.095032973 #> TCl -0.100320461 0.2195710868 -0.043849095 0.013295549 -0.007477895 #> V2 0.038185010 -0.0438490948 0.129784612 -0.017270432 -0.038004762 #> Q -0.004108928 0.0132955493 -0.017270432 0.022145634 0.020376451 #> V3 -0.095032973 -0.0074778948 -0.038004762 0.020376451 0.165568340 #> Kin -0.040867119 -0.0492597458 -0.003056722 -0.033468634 -0.003021883 #> Kout 0.035469225 0.0275087955 0.033725901 0.027668205 0.005497301 #> EC50 0.026158042 0.0009434711 0.039426946 -0.036283167 -0.093134292 #> Kin Kout EC50 #> TKA -0.040867119 0.035469225 0.0261580416 #> TCl -0.049259746 0.027508796 0.0009434711 #> V2 -0.003056722 0.033725901 0.0394269465 #> Q -0.033468634 0.027668205 -0.0362831667 #> V3 -0.003021883 0.005497301 -0.0931342922 #> Kin 0.226735493 -0.083447793 0.0659884544 #> Kout -0.083447793 0.117195570 -0.0291684598 #> EC50 0.065988454 -0.029168460 0.0928611407"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"nesting-variability","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Nesting Variability","title":"Nesting levels in rxode2","text":"specify multiple levels nesting, can specify nested lotri matrix; using approach use condition operator | specify variable nesting occurs ; Bayesian simulation need specify much information parameter; rxode2 nu parameter. case: - id, nu=100 model came 100 subjects - eye, nu=200 model came 200 eyes - occ, nu=200 model came 200 occasions - inv, nu=10 model came 10 investigators specify lotri can use | var(nu=X), :","code":"omega <- lotri(lotri(eta.Cl ~ 0.1, eta.Ka ~ 0.1) | id(nu=100), lotri(eye.Cl ~ 0.05, eye.Ka ~ 0.05) | eye(nu=200), lotri(iov.Cl ~ 0.01, iov.Ka ~ 0.01) | occ(nu=200), lotri(inv.Cl ~ 0.02, inv.Ka ~ 0.02) | inv(nu=10)) omega #> $id #> eta.Cl eta.Ka #> eta.Cl 0.1 0.0 #> eta.Ka 0.0 0.1 #> #> $eye #> eye.Cl eye.Ka #> eye.Cl 0.05 0.00 #> eye.Ka 0.00 0.05 #> #> $occ #> iov.Cl iov.Ka #> iov.Cl 0.01 0.00 #> iov.Ka 0.00 0.01 #> #> $inv #> inv.Cl inv.Ka #> inv.Cl 0.02 0.00 #> inv.Ka 0.00 0.02 #> #> Properties: nu"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"unexplained-variability","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Unexplained variability","title":"Nesting levels in rxode2","text":"last piece variability specify unexplained variability","code":"sigma <- lotri(prop.sd ~ .25, add.sd~ 0.125)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-nesting.html","id":"solving-the-problem","dir":"Articles","previous_headings":"Nesting in rxode2","what":"Solving the problem","title":"Nesting levels in rxode2","text":"multiple investigators study; investigator number individuals enrolled site. rxode2 automatically determines number investigators simulate effect investigator. output, inv.Cl(inv==1) inv.Cl investigator 1, inv.Cl(inv==2) inv.Cl investigator 2, etc. inv.Cl(inv==1), inv.Cl(inv==2), etc simulated study combined form investigator variability. equation form represent following: look simulated parameters can see inv.Cl(inv==1) inv.Cl(inv==2) s$params; study: eye variability occasion variability individual simulates number variables become eye occasion variability; case eye: look simulation variables (ie eye.Cl(eye==1), eye.Cl(eye==2), etc) change individual combined make eye variability occasion variability can seen pharamcometric models.","code":"s <- rxSolve(mod, theta, ev, thetaMat=tMat, omega=omega, sigma=sigma, sigmaDf=400, nStud=400) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> unhandled error message: EE:[lsoda] 70000 steps taken before reaching tout #> @(lsoda.c:754 #> Warning: some ID(s) could not solve the ODEs correctly; These values are #> replaced with 'NA' print(s) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> # A tibble: 8,000 x 24 #> sim.id id `inv.Cl(inv==1)` `inv.Cl(inv==2)` `inv.Ka(inv==1)` #> #> 1 1 1 0.00900 -0.117 0.312 #> 2 1 2 0.00900 -0.117 0.312 #> 3 1 3 0.00900 -0.117 0.312 #> 4 1 4 0.00900 -0.117 0.312 #> 5 1 5 0.00900 -0.117 0.312 #> 6 1 6 0.00900 -0.117 0.312 #> 7 1 7 0.00900 -0.117 0.312 #> 8 1 8 0.00900 -0.117 0.312 #> 9 1 9 0.00900 -0.117 0.312 #> 10 1 10 0.00900 -0.117 0.312 #> # i 7,990 more rows #> # i 19 more variables: `inv.Ka(inv==2)` , `eye.Cl(eye==1)` , #> # `eye.Cl(eye==2)` , `eye.Ka(eye==1)` , `eye.Ka(eye==2)` , #> # `iov.Cl(occ==1)` , `iov.Cl(occ==2)` , `iov.Ka(occ==1)` , #> # `iov.Ka(occ==2)` , V2 , V3 , TCl , eta.Cl , #> # TKA , eta.Ka , Q , Kin , Kout , EC50 #> -- Initial Conditions ($inits): -- #> depot centr peri eff #> 0 0 0 1 #> #> Simulation with uncertainty in: #> * parameters ($thetaMat for changes) #> * omega matrix ($omegaList) #> #> -- First part of data (object): -- #> # A tibble: 976,000 x 21 #> sim.id id time inv.Cl inv.Ka eye.Cl eye.Ka iov.Cl iov.Ka C2 C3 #> [h] #> 1 1 1 0 0.00900 0.312 -0.330 -0.0547 0.0370 0.139 0 0 #> 2 1 1 0.1 0.00900 0.312 0.0792 0.185 0.0370 0.139 10.9 0.0108 #> 3 1 1 4 0.00900 0.312 -0.330 -0.0547 0.0370 0.139 41.4 5.58 #> 4 1 1 4.1 0.00900 0.312 0.0792 0.185 0.0370 0.139 20.6 5.69 #> 5 1 1 8 0.00900 0.312 -0.330 -0.0547 0.0370 0.139 4.67 7.95 #> 6 1 1 8.1 0.00900 0.312 0.0792 0.185 0.0370 0.139 12.9 7.97 #> # i 975,994 more rows #> # i 10 more variables: CL , KA , ef0 , depot , centr , #> # peri , eff , occ , eye , inv inv.Cl = (inv == 1) * `inv.Cl(inv==1)` + (inv == 2) * `inv.Cl(inv==2)` print(head(s$params)) #> sim.id id inv.Cl(inv==1) inv.Cl(inv==2) inv.Ka(inv==1) inv.Ka(inv==2) #> 1 1 1 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 2 1 2 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 3 1 3 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 4 1 4 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 5 1 5 0.008995575 -0.1165083 0.3118205 -0.001926179 #> 6 1 6 0.008995575 -0.1165083 0.3118205 -0.001926179 #> eye.Cl(eye==1) eye.Cl(eye==2) eye.Ka(eye==1) eye.Ka(eye==2) iov.Cl(occ==1) #> 1 -0.33023666 0.079190835 -0.05471051 0.18487157 0.037021761 #> 2 -0.42211135 -0.006773841 -0.15399939 0.22463048 -0.007762485 #> 3 -0.05128596 0.123504458 0.18243012 0.13361259 -0.168921159 #> 4 -0.06360621 0.340443016 0.65606292 0.04807945 0.157027939 #> 5 0.08009126 -0.027627640 0.06662396 -0.05838949 -0.226341946 #> 6 -0.11937190 0.090540884 -0.17320340 0.02039840 -0.211648032 #> iov.Cl(occ==2) iov.Ka(occ==1) iov.Ka(occ==2) V2 V3 TCl #> 1 -0.19726803 0.13932112 0.088763868 40.26476 296.4748 19.25043 #> 2 0.04555116 0.07716277 0.049148937 40.26476 296.4748 19.25043 #> 3 0.17916513 0.08347085 -0.002990168 40.26476 296.4748 19.25043 #> 4 -0.13444417 0.24736740 -0.077647794 40.26476 296.4748 19.25043 #> 5 0.02049190 -0.09568733 0.054658457 40.26476 296.4748 19.25043 #> 6 0.12619350 -0.01547841 0.040206608 40.26476 296.4748 19.25043 #> eta.Cl TKA eta.Ka Q Kin Kout EC50 #> 1 0.09788109 0.2354877 -0.21526790 10.43157 0.9256189 1.044937 200.3679 #> 2 0.33302598 0.2354877 -0.01028112 10.43157 0.9256189 1.044937 200.3679 #> 3 0.08504325 0.2354877 0.37253705 10.43157 0.9256189 1.044937 200.3679 #> 4 0.16521678 0.2354877 -0.01859974 10.43157 0.9256189 1.044937 200.3679 #> 5 0.53131380 0.2354877 -0.37109644 10.43157 0.9256189 1.044937 200.3679 #> 6 -0.30786713 0.2354877 0.14897588 10.43157 0.9256189 1.044937 200.3679 print(head(s$params %>% filter(sim.id == 2))) #> sim.id id inv.Cl(inv==1) inv.Cl(inv==2) inv.Ka(inv==1) inv.Ka(inv==2) #> 1 2 1 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 2 2 2 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 3 2 3 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 4 2 4 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 5 2 5 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> 6 2 6 -0.07227613 -0.01884171 0.07620864 -0.01962499 #> eye.Cl(eye==1) eye.Cl(eye==2) eye.Ka(eye==1) eye.Ka(eye==2) iov.Cl(occ==1) #> 1 -0.25102634 0.1354374 -0.135230741 -0.01605664 0.081212198 #> 2 -0.24832622 0.2233348 -0.380770273 -0.37101991 0.207985292 #> 3 0.24081384 -0.3826770 0.133361609 -0.32496203 -0.099983807 #> 4 -0.11021791 0.3655308 0.009423897 0.08736599 -0.002580804 #> 5 0.21155058 0.3626918 0.194977611 -0.19452347 0.058392202 #> 6 0.03663028 -0.1003754 0.068047203 0.32368023 0.167658084 #> iov.Cl(occ==2) iov.Ka(occ==1) iov.Ka(occ==2) V2 V3 TCl #> 1 -0.06556217 -0.032678168 -0.061277262 40.21091 296.6424 18.86433 #> 2 -0.05016896 0.130258486 -0.103721118 40.21091 296.6424 18.86433 #> 3 0.06144127 -0.262726137 -0.104186144 40.21091 296.6424 18.86433 #> 4 0.03954265 -0.037289852 -0.021344468 40.21091 296.6424 18.86433 #> 5 0.12713682 -0.007530921 0.081238197 40.21091 296.6424 18.86433 #> 6 -0.02811353 0.026801132 -0.002702762 40.21091 296.6424 18.86433 #> eta.Cl TKA eta.Ka Q Kin Kout EC50 #> 1 0.19368101 0.5686675 0.26184170 10.54673 0.5434136 1.323825 200.09 #> 2 -0.16262369 0.5686675 0.12969487 10.54673 0.5434136 1.323825 200.09 #> 3 0.22164455 0.5686675 0.24501105 10.54673 0.5434136 1.323825 200.09 #> 4 0.05997662 0.5686675 0.03059399 10.54673 0.5434136 1.323825 200.09 #> 5 0.45691421 0.5686675 -0.20098716 10.54673 0.5434136 1.323825 200.09 #> 6 -0.19943300 0.5686675 -0.36846082 10.54673 0.5434136 1.323825 200.09 eye.Cl = (eye == 1) * `eye.Cl(eye==1)` + (eye == 2) * `eye.Cl(eye==2)`"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"setting-up-the-rxode2-model-for-the-pipeline","dir":"Articles","previous_headings":"","what":"Setting up the rxode2 model for the pipeline","title":"rxode2 in a pipeline","text":"example show use rxode2 simple pipeline. can start model can used different simulation workflows rxode2 can handle: tumor growth model described Ribba 2012. case, compiled model R object Ribba2012, though rxode2 simulation pipeline, assign compiled model object, though think makes sense.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` Ribba2012 <- function() { ini({ k = 100 tkde = 0.24 eta.tkde = 0 tkpq = 0.0295 eta.kpq = 0 tkqpp = 0.0031 eta.kqpp = 0 tlambdap = 0.121 eta.lambdap = 0 tgamma = 0.729 eta.gamma = 0 tdeltaqp = 0.00867 eta.deltaqp = 0 prop.sd <- 0 tpt0 = 7.13 eta.pt0 = 0 tq0 = 41.2 eta.q0 = 0 }) model({ kde ~ tkde*exp(eta.tkde) kpq ~ tkpq * exp(eta.kpq) kqpp ~ tkqpp * exp(eta.kqpp) lambdap ~ tlambdap*exp(eta.lambdap) gamma ~ tgamma*exp(eta.gamma) deltaqp ~ tdeltaqp*exp(eta.deltaqp) d/dt(c) = -kde * c d/dt(pt) = lambdap * pt *(1-pstar/k) + kqpp*qp - kpq*pt - gamma*c*kde*pt d/dt(q) = kpq*pt -gamma*c*kde*q d/dt(qp) = gamma*c*kde*q - kqpp*qp - deltaqp*qp ## initial conditions pt0 ~ tpt0*exp(eta.pt0) q0 ~ tq0*exp(eta.q0) pt(0) = pt0 q(0) = q0 pstar <- (pt+q+qp) pstar ~ prop(prop.sd) }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulating-one-event-table","dir":"Articles","previous_headings":"","what":"Simulating one event table","title":"rxode2 in a pipeline","text":"Simulating single event table quite simple: pipe rxode2 simulation object event table object et(). events completely specified, simply solve ODE system rxSolve(). case can pipe output plot() conveniently view results. pt (Proliferative Tissue), q (quiescent tissue) qp (DNA-Damaged quiescent tissue) pstar (total tumor tissue)","code":"Ribba2012 %>% # Use rxode2 et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve() %>% # Solve the simulation plot(pt, q, qp, pstar) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulating-with-between-subject-variability","dir":"Articles","previous_headings":"Simulating multiple subjects from a single event table","what":"Simulating with between subject variability","title":"rxode2 in a pipeline","text":"next sort simulation may useful simulating multiple patients treatments. case, use omega matrix specified paper: information, easy simulate 3 subjects model-based parameters: Note two different things added simulation: - nSub specify many subjects model - omega specify subject variability.","code":"## Add CVs from paper for individual simulation ## Uses exact formula: lognCv = function(x){log((x/100)^2+1)} library(lotri) ## Now create omega matrix ## I'm using lotri to quickly specify names/diagonals omega <- lotri(eta.pt0 ~ lognCv(94), eta.q0 ~ lognCv(54), eta.lambdap ~ lognCv(72), eta.kqp ~ lognCv(76), eta.kqpp ~ lognCv(97), eta.deltaqp ~ lognCv(115), eta.tkde ~ lognCv(70)) omega #> eta.pt0 eta.q0 eta.lambdap eta.kqp eta.kqpp eta.deltaqp #> eta.pt0 0.6331848 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 #> eta.q0 0.0000000 0.2558818 0.0000000 0.0000000 0.0000000 0.0000000 #> eta.lambdap 0.0000000 0.0000000 0.4176571 0.0000000 0.0000000 0.0000000 #> eta.kqp 0.0000000 0.0000000 0.0000000 0.4559047 0.0000000 0.0000000 #> eta.kqpp 0.0000000 0.0000000 0.0000000 0.0000000 0.6631518 0.0000000 #> eta.deltaqp 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.8426442 #> eta.tkde 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 #> eta.tkde #> eta.pt0 0.0000000 #> eta.q0 0.0000000 #> eta.lambdap 0.0000000 #> eta.kqp 0.0000000 #> eta.kqpp 0.0000000 #> eta.deltaqp 0.0000000 #> eta.tkde 0.3987761 set.seed(1089) rxSetSeed(1089) Ribba2012 %>% # Use rxode2 et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=3, omega=omega) %>% # Solve the simulation plot(pt, q, qp, pstar) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> Warning: multi-subject simulation without without 'omega'"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulation-with-unexplained-variability","dir":"Articles","previous_headings":"Simulating multiple subjects from a single event table","what":"Simulation with unexplained variability","title":"rxode2 in a pipeline","text":"can even add unexplained variability quite easily: case added sigma matrix unexplained variability pstar total tumor tissue. can even simulate uncertainty theta omega sigma values wish.","code":"Ribba2012 %>% # Use rxode2 ini(prop.sd=0.05) %>% # change variability et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=3, omega=omega) %>% plot(pt, q, qp, sim) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega' # note that sim is the simulated pstar since this is simulated from the # model with a nlmixr2 endpoint"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulation-with-uncertainty-in-all-the-parameters-by-matrices","dir":"Articles","previous_headings":"Simulating multiple subjects from a single event table","what":"Simulation with uncertainty in all the parameters (by matrices)","title":"rxode2 in a pipeline","text":"assume parameters came 95 subjects 8 observations apiece, degrees freedom omega matrix 95, degrees freedom sigma matrix 95*8=760 95 items informed omega matrix, 760 items informed sigma matrix. Often simulations full covariance matrix fixed effect parameters. case, matrix, specified thetaMat. full covariance matrix, can information diagonal elements covariance matrix model paper. can converted follows: Now thetaMat represent uncertainty theta matrix, well pieces simulation. Typically can put information simulation thetaMat matrix. large variability theta easy sample negative rate constant, make sense. example: correct problems simply need use truncated multivariate normal specify reasonable ranges parameters. theta specified thetaLower thetaUpper. Similar parameters matrices: omegaLower, omegaUpper, sigmaLower sigmaUpper. may named vectors, one numeric value, numeric vector matching number parameters specified thetaMat matrix. case simulation simply modified thetaLower=0 make sure rates positive:","code":"Ribba2012 %>% # Use rxode2 ini(prop.sd = 0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=3, nStud=3, omega=omega, dfSub=760, dfObs=95) %>% # Solve the simulation plot(pt, q, qp, sim) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega' rseVar <- function(est, rse){ return(est*rse/100)^2 } thetaMat <- lotri(tpt0 ~ rseVar(7.13,25), tq0 ~ rseVar(41.2,7), tlambdap ~ rseVar(0.121, 16), tkqpp ~ rseVar(0.0031, 35), tdeltaqp ~ rseVar(0.00867, 21), tgamma ~ rseVar(0.729, 37), tkde ~ rseVar(0.24, 33) ) thetaMat #> tpt0 tq0 tlambdap tkqpp tdeltaqp tgamma tkde #> tpt0 1.7825 0.000 0.00000 0.000000 0.0000000 0.00000 0.0000 #> tq0 0.0000 2.884 0.00000 0.000000 0.0000000 0.00000 0.0000 #> tlambdap 0.0000 0.000 0.01936 0.000000 0.0000000 0.00000 0.0000 #> tkqpp 0.0000 0.000 0.00000 0.001085 0.0000000 0.00000 0.0000 #> tdeltaqp 0.0000 0.000 0.00000 0.000000 0.0018207 0.00000 0.0000 #> tgamma 0.0000 0.000 0.00000 0.000000 0.0000000 0.26973 0.0000 #> tkde 0.0000 0.000 0.00000 0.000000 0.0000000 0.00000 0.0792 Ribba2012 %>% # Use rxode2 ini(prop.sd = 0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=2, nStud=2, omega=omega, thetaMat=thetaMat, dfSub=760, dfObs=95) %>% # Solve the simulation plot(pt, q, qp, pstar) # Plot it, plotting the variables of interest #> ℹ change initial estimate of `prop.sd` to `0.05` #> unhandled error message: EE:[lsoda] 70000 steps taken before reaching tout #> @(lsoda.c:750 #> Warning message: #> In rxSolve_(object, .ctl, .nms, .xtra, params, events, inits, setupOnly = .setupOnly) : #> Some ID(s) could not solve the ODEs correctly; These values are replaced with NA. Ribba2012 %>% # Use rxode2 ini(prop.sd = 0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=2, nStud=2, omega=omega, thetaMat=thetaMat, thetaLower=0, # Make sure the rates are reasonable dfSub=760, dfObs=95) %>% # Solve the simulation plot(pt, q, qp, sim) # Plot it, plotting the variables of interest #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega'"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"summarizing-the-simulation-output","dir":"Articles","previous_headings":"","what":"Summarizing the simulation output","title":"rxode2 in a pipeline","text":"easy use dplyr data.table perform summary simulations, rxode2 also provides ability confint function.","code":"## This takes a little more time; Most of the time is the summary ## time. sim0 <- Ribba2012 %>% # Use rxode2 ini(prop.sd=0.05) %>% et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(nSub=10, nStud=10, omega=omega, thetaMat=thetaMat, thetaLower=0, # Make sure the rates are reasonable dfSub=760, dfObs=95) %>% # Solve the simulation confint(c(\"pt\",\"q\",\"qp\",\"sim\"),level=0.90); # Create Simulation intervals #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `prop.sd` to `0.05` #> Warning: multi-subject simulation without without 'omega' #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done sim0 %>% plot() # Plot the simulation intervals"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-pipeline.html","id":"simulating-from-a-data-frame-of-parameters","dir":"Articles","previous_headings":"Summarizing the simulation output","what":"Simulating from a data-frame of parameters","title":"rxode2 in a pipeline","text":"simulation matrices can useful fast way simulate information, sometimes may want simulate complex scenarios. instance, may reason believe tkde needs tlambdap, therefore need simulated carefully. can generate data frame whatever way want. internal method simulating new parameters exported .","code":"library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union Ribba2012 <- Ribba2012() # Convert to classic rxode2 model with ini attached r <- Ribba2012$simulationIniModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ pars <- rxInits(r) pars <- pars[regexpr(\"(prop|eta)\",names(pars)) == -1] print(pars) #> k tkde tkpq tkqpp tlambdap tgamma #> 1.00e+02 2.40e-01 2.95e-02 3.10e-03 1.21e-01 7.29e-01 #> tdeltaqp tpt0 tq0 rxerr.pstar #> 8.67e-03 7.13e+00 4.12e+01 1.00e+00 ## This is the exported method for simulation of Theta/Omega internally in rxode2 df <- rxSimThetaOmega(params=pars, omega=omega,dfSub=760, thetaMat=thetaMat, thetaLower=0, nSub=60,nStud=60) %>% filter(tkde > tlambdap) %>% as_tibble() ## You could also simulate more and bind them together to a data frame. print(df) #> # A tibble: 2,100 × 17 #> k tkde tkpq tkqpp tlambdap tgamma tdeltaqp tpt0 tq0 rxerr.pstar #> #> 1 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 2 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 3 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 4 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 5 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 6 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 7 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 8 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 9 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> 10 100 0.468 0.0295 0.805 0.288 0.980 0.256 8.54 41.4 1 #> # ℹ 2,090 more rows #> # ℹ 7 more variables: eta.pt0 , eta.q0 , eta.lambdap , #> # eta.kqp , eta.kqpp , eta.deltaqp , eta.tkde ## Quick check to make sure that all the parameters are OK. all(df$tkde>df$tlambdap) #> [1] TRUE sim1 <- r %>% # Use rxode2 et(time.units=\"months\") %>% # Pipe to a new event table et(amt=1, time=50, until=58, ii=1.5) %>% # Add dosing every 1.5 months et(0, 250, by=0.5) %>% # Add some sampling times (not required) rxSolve(df) ## Note this information looses information about which ID is in a ## \"study\", so it summarizes the confidence intervals by dividing the ## subjects into sqrt(#subjects) subjects and then summarizes the ## confidence intervals sim2 <- sim1 %>% confint(c(\"pt\",\"q\",\"qp\",\"sim\"),level=0.90); # Create Simulation intervals #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done save(sim2, file = file.path(system.file(package = \"rxode2\"), \"pipeline-sim2.rds\"), version = 2) sim2 %>% plot()"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"setting-up-model-for-plotting-explanation","dir":"Articles","previous_headings":"Plotting in rxode2","what":"Setting up model for plotting explanation","title":"Plotting rxode2 models","text":"first step explain rxode2 model plots setup: rxode2 model event table solved object","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` ## Model from rxode2 tutorial m1 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 }) model({ C2 <- centr / V2 C3 <- peri / V3 d/dt(depot) <- -KA * depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 d/dt(peri) <- Q * C2 - Q * C3 d/dt(eff) <- Kin - Kout * (1 - C2 / (EC50 + C2)) * eff eff(0) <- 1 }) } ev <- et(timeUnits = \"hr\") %>% et(amt = 10000, ii = 12, until = 24) %>% et(seq(0, 24, length.out = 100)) s <- rxSolve(m1, ev) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"default-rxode2-plot","dir":"Articles","previous_headings":"Plotting in rxode2","what":"Default rxode2 plot","title":"Plotting rxode2 models","text":"default plot rxode2 plot time versus state calculated lhs values: Things note: First, plots actually ggplot2 plots can modified standard ggplot2 grammar graphics Also note plot method rxSolve objects can currently use arguments default plot method: log character string contains \"x\" x axis logarithmic, \"y\" y axis logarithmic \"xy\" \"yx\" axes logarithmic. available, use xgxr xgx_scale_x_log10() xgx_scale_y_log10() functions. xlab bit different simply supplying x-label ggplot2, retain unit information originally supplied event table. Also note, available, unit information used used meaningful ticks xgx_scale_x_time_units() ylab supplies y label following currently unsupported: . type b. xlim c. ylim d. main e. sub f. ann g. axes","code":"plot(s)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"subsetting-plots","dir":"Articles","previous_headings":"","what":"Subsetting plots","title":"Plotting rxode2 models","text":"interesting, often useful subset plots based values interested ; example, interesting plot eff C2. , simply specify interesting items plot function. instance:","code":"plot(s, C2, eff)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"semi-log-plots","dir":"Articles","previous_headings":"","what":"Semi-log plots","title":"Plotting rxode2 models","text":"Semi-log plots PK concentrations common; simply need use log=\"y\" uses xgx_scale_y_log10() available clearly show semi-log nature plot.","code":"plot(s, C2, log=\"y\", ylab=\"Concentration\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"plots-with-multi-subject-plots","dir":"Articles","previous_headings":"","what":"Plots with multi-subject plots","title":"Plotting rxode2 models","text":"multi-subject plots can easily plot applying principles . illustrate plot, lets expand event table include plot 4 subjects lognormal random variability subjects; complete, may plot method: Notice colored individual labeled legend. interested concentration, produces similar plot: Notice plot individual labeled attached id let know individual comes . done ggrepel available, otherwise legend retained.","code":"# Setup the new problem m2 <- function() { ini({ KA <- 2.94E-01 TCL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 ## Added modeled bioavaiblity, duration and rate fdepot <- 1 durDepot <- 8 rateDepot <- 1250 eta.Cl ~ 0.4^2 }) model({ CL <- TCL * exp(eta.Cl) C2 <- centr / V2 C3 <- peri / V3 d/dt(depot) <- -KA * depot f(depot) <- fdepot dur(depot) <- durDepot rate(depot) <- rateDepot d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 d/dt(peri) <- Q * C2 - Q * C3 d/dt(eff) <- Kin - Kout * (1 - C2 / (EC50 + C2)) * eff eff(0) <- 1 }) } # Create the event table ev <- et(timeUnits = \"hr\") %>% et(amt = 10000, until = units::set_units(3, days), ii = 12) %>% # loading doses et(seq(0, 48, length.out = 200)) %>% et(id = 1:4) s <- rxSolve(m2, ev) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ plot(s, C2, eff) plot(s, C2, log=\"y\", ylab=\"Concentration\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-plot.html","id":"multi-subject-plots-with-large-number-of-subjects","dir":"Articles","previous_headings":"Plots with multi-subject plots","what":"Multi-subject plots with large number of subjects","title":"Plotting rxode2 models","text":"can get bit much many subjects solved (example lets simulate 100) case, individuals put plot transparent grayscale plot pane. allows places subjects present darker. number individuals plots switch legend grayscale controlled changing options rxode2.spaghetti. ie. options(rxode2.spaghetti=7). 7 individuals default value plotting changes individual grayscale spaghetti plots. can also create confidence interval simulations confint: plot plot","code":"ev <- et(timeUnits = \"hr\") %>% et(amt = 10000, until = units::set_units(3, days), ii = 12) %>% # loading doses et(seq(0, 48, length.out = 200)) %>% et(id = 1:100) # 100 subjects s <- rxSolve(m2, ev) ## ℹ parameter labels from comments are typically ignored in non-interactive mode ## ℹ Need to run with the source intact to parse comments plot(s, C2, log=\"y\", ylab=\"Concentration\") ## Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = ## minor_breaks, : log-10 transformation introduced infinite ## values. s2 <- confint(s, parm=\"C2\") ## ! in order to put confidence bands around the intervals, you need at least 2500 simulations ## summarizing data...done plot(s2)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-prior-data.html","id":"using-prior-data-for-solving","dir":"Articles","previous_headings":"","what":"Using prior data for solving","title":"Using Prior Data for ODE solving","text":"rxode2 can use single subject multiple subjects single event table solve ODEs. Additionally, rxode2 can use arbitrary data frame individualized events. example using nlmixr, use theo_sd data frame","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` library(nlmixr2data) ## Load data from nlmixr d <- theo_sd ## Create rxode2 model theo <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v }) } ## Create parameter dataset library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union parsDf <- tribble( ~ eta.ka, ~ eta.cl, ~ eta.v, 0.105, -0.487, -0.080, 0.221, 0.144, 0.021, 0.368, 0.031, 0.058, -0.277, -0.015, -0.007, -0.046, -0.155, -0.142, -0.382, 0.367, 0.203, -0.791, 0.160, 0.047, -0.181, 0.168, 0.096, 1.420, 0.042, 0.012, -0.738, -0.391, -0.170, 0.790, 0.281, 0.146, -0.527, -0.126, -0.198) %>% mutate(tka = 0.451, tcl = 1.017, tv = 3.449) ## Now solve the dataset solveData <- rxSolve(theo, parsDf, d) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ plot(solveData, cp) print(solveData) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> # A tibble: 12 × 7 #> id tka tcl tv eta.ka eta.cl eta.v #> #> 1 1 0.451 1.02 3.45 0.105 -0.487 -0.08 #> 2 2 0.451 1.02 3.45 0.221 0.144 0.021 #> 3 3 0.451 1.02 3.45 0.368 0.031 0.058 #> 4 4 0.451 1.02 3.45 -0.277 -0.015 -0.007 #> 5 5 0.451 1.02 3.45 -0.046 -0.155 -0.142 #> 6 6 0.451 1.02 3.45 -0.382 0.367 0.203 #> 7 7 0.451 1.02 3.45 -0.791 0.16 0.047 #> 8 8 0.451 1.02 3.45 -0.181 0.168 0.096 #> 9 9 0.451 1.02 3.45 1.42 0.042 0.012 #> 10 10 0.451 1.02 3.45 -0.738 -0.391 -0.17 #> 11 11 0.451 1.02 3.45 0.79 0.281 0.146 #> 12 12 0.451 1.02 3.45 -0.527 -0.126 -0.198 #> ── Initial Conditions ($inits): ── #> depot center #> 0 0 #> ── First part of data (object): ── #> # A tibble: 132 × 8 #> id time ka cl v cp depot center #> #> 1 1 0 1.74 1.70 29.0 0 320. 0 #> 2 1 0.25 1.74 1.70 29.0 3.86 207. 112. #> 3 1 0.57 1.74 1.70 29.0 6.81 118. 198. #> 4 1 1.12 1.74 1.70 29.0 9.06 45.4 263. #> 5 1 2.02 1.74 1.70 29.0 9.79 9.45 284. #> 6 1 3.82 1.74 1.70 29.0 9.10 0.410 264. #> # ℹ 126 more rows ## Of course the fasest way to solve if you don't care about the rxode2 extra parameters is solveData <- rxSolve(theo, parsDf, d, returnType=\"data.frame\") #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ## solved data dplyr::as_tibble(solveData) #> # A tibble: 132 × 8 #> id time ka cl v cp depot center #> #> 1 1 0 1.74 1.70 29.0 0 320. 0 #> 2 1 0.25 1.74 1.70 29.0 3.86 207. 112. #> 3 1 0.57 1.74 1.70 29.0 6.81 118. 198. #> 4 1 1.12 1.74 1.70 29.0 9.06 45.4 263. #> 5 1 2.02 1.74 1.70 29.0 9.79 9.45 284. #> 6 1 3.82 1.74 1.70 29.0 9.10 0.410 264. #> 7 1 5.1 1.74 1.70 29.0 8.46 0.0440 246. #> 8 1 7.03 1.74 1.70 29.0 7.56 0.00152 219. #> 9 1 9.05 1.74 1.70 29.0 6.71 0.0000449 195. #> 10 1 12.1 1.74 1.70 29.0 5.61 0.000000212 163. #> # ℹ 122 more rows data.table::data.table(solveData) #> id time ka cl v cp depot center #> #> 1: 1 0.00 1.7436838 1.698932 29.04946 0.000000 3.199920e+02 0.00000 #> 2: 1 0.25 1.7436838 1.698932 29.04946 3.861730 2.069289e+02 112.18117 #> 3: 1 0.57 1.7436838 1.698932 29.04946 6.805372 1.184389e+02 197.69240 #> 4: 1 1.12 1.7436838 1.698932 29.04946 9.058196 4.539354e+01 263.13572 #> 5: 1 2.02 1.7436838 1.698932 29.04946 9.791088 9.450361e+00 284.42585 #> --- #> 128: 12 5.07 0.9268162 2.437566 25.81614 8.442535 2.919432e+00 217.95370 #> 129: 12 7.07 0.9268162 2.437566 25.81614 7.074251 4.573778e-01 182.62989 #> 130: 12 9.03 0.9268162 2.437566 25.81614 5.892253 7.436222e-02 152.11524 #> 131: 12 12.05 0.9268162 2.437566 25.81614 4.432614 4.526550e-03 114.43300 #> 132: 12 24.15 0.9268162 2.437566 25.81614 1.414179 6.154773e-08 36.50865"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-rxUse.html","id":"using-pre-compiled-models-in-your-packages","dir":"Articles","previous_headings":"","what":"Using Pre-compiled models in your packages","title":"Compiled rxode2 models in Packages","text":"package like include pre-compiled rxode2 models package easy create package. simple make package rxPkg() command. : Add model package; can use package data idr package loads Add right package requirements DESCRIPTION file. want update describe package modify authors, license etc. Create skeleton model documentation files can add package documentation. case file idr-doc.R R directory Create configure configure.win script removes regenerates src directory based whatever version rxode2 compiled . modified plan compiled code, though suggested. can write R code package interacts rxode2 object can distribute shiny apps similar things package context. present can add models package rxUse(). Simply compile rxode2 model package add model rxUse() Now model idr model library. also create model-doc.R R directory can document model. can use devtools methods install/test model","code":"library(rxode2); ## Now Create a model idr <- rxode2({ C2 = centr/V2; C3 = peri/V3; d/dt(depot) =-KA*depot; d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) = Q*C2 - Q*C3; d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; }) ## You can specify as many models as you want to add rxPkg(idr, package=\"myPackage\"); ## Add the idr model to your package rxUse(model) devtools::load_all() # Load all the functions in the package devtools::document() # Create package documentation devtools::install() # Install package devtools::check() # Check the package devtools::build() # build the package so you can submit it to places like CRAN"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-rxUse.html","id":"using-models-in-a-already-present-package","dir":"Articles","previous_headings":"","what":"Using Models in a already present package","title":"Compiled rxode2 models in Packages","text":"illustrate, lets start blank package rxUse() : - Create rxode2 sources move package’s src/ directory. R source package, also finish directory library-init.c registers rxode2 models package use R. - Create stub R documentation models including package. able see R documentation loading package standard ? interface. still need : - Export least one function. function wish export, can add re-export rxode2 using roxygen follows: want use Suggests instead Depends package, way want export rxode2’s normal routines also need instruct R load model library models included model’s dll. done : R package rxode2 models intend add compiled sources (recommended), can add following configure scripts Depending check may need dummy autoconf script, want integrate sources Rcpp C/Fortan based packages, need include rxModels-compiled.h : - Add define macro compiledModelCall list registered .Call functions. - Register C interface allow model solving R_init0_rxModels_rxode2_models() (rxModels replaced package name). complete, can compile/document standard methods: load package new version rxode2, models recompiled used. However, want models recompiled recent version rxode2, simply need call rxUse() project directory followed standard methods install/create package. Note include rxode2 code required generate model regenerate rxode2 c-code src directory. rxode2 objects, summary show one way recreate model. example compiled models package can found rxModels repository.","code":"library(rxode2) library(usethis) pkgPath <- file.path(rxTempDir(),\"MyRxModel\") create_package(pkgPath); use_gpl3_license(\"Matt\") use_package(\"rxode2\", \"LinkingTo\") use_package(\"rxode2\", \"Depends\") ## library(rxode2) on load; Can use imports instead. use_roxygen_md() ##use_readme_md() library(rxode2); ## Now Create a model idr <- rxode2({ C2 = centr/V2; C3 = peri/V3; d/dt(depot) =-KA*depot; d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) = Q*C2 - Q*C3; d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; }); rxUse(idr); ## Add the idr model to your package rxUse(); # Update the compiled rxode2 sources for all of your packages ##' @importFrom rxode2 rxode2 ##' @export rxode2::rxode2 ##' @importFrom rxode2 rxode2 ##' @export rxode2::rxode2 ##' @importFrom rxode2 et ##' @export rxode2::et ##' @importFrom rxode2 etRep ##' @export rxode2::etRep ##' @importFrom rxode2 etSeq ##' @export rxode2::etSeq ##' @importFrom rxode2 as.et ##' @export rxode2::as.et ##' @importFrom rxode2 eventTable ##' @export rxode2::eventTable ##' @importFrom rxode2 add.dosing ##' @export rxode2::add.dosing ##' @importFrom rxode2 add.sampling ##' @export rxode2::add.sampling ##' @importFrom rxode2 rxSolve ##' @export rxode2::rxSolve ##' @importFrom rxode2 rxControl ##' @export rxode2::rxControl ##' @importFrom rxode2 rxClean ##' @export rxode2::rxClean ##' @importFrom rxode2 rxUse ##' @export rxode2::rxUse ##' @importFrom rxode2 rxShiny ##' @export rxode2::rxShiny ##' @importFrom rxode2 genShinyApp.template ##' @export rxode2::genShinyApp.template ##' @importFrom rxode2 cvPost ##' @export rxode2::cvPost # This is actually from `magrittr` but allows less imports ##' @importFrom rxode2 %>% ##' @export rxode2::`%>%` # In this case `rxModels` is the package name ##' @useDynLib rxModels, .registration=TRUE #!/bin/sh # This should be used for both configure and configure.win echo \"unlink('src', recursive=TRUE);rxode2::rxUse()\" > build.R ${R_HOME}/bin/Rscript build.R rm build.R ## dummy autoconf script ## It is saved to configure.ac devtools::load_all() devtools::document() devtools::install() devtools::load_all() devtools::document() devtools::install()"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-shiny.html","id":"facilities-for-generating-r-shiny-applications","dir":"Articles","previous_headings":"","what":"Facilities for generating R shiny applications","title":"rxode2 and Shiny","text":"example creating R shiny application interactively explore responses various complex dosing regimens available http://qsp.engr.uga.edu:3838/rxode2/RegimenSimulator. Shiny applications like one may programmatically created experimental function genShinyApp.template(). application includes widgets varying dose, dosing regimen, dose cycle, number cycles. Click go Shiny App","code":"genShinyApp.template(appDir = \"shinyExample\", verbose=TRUE) library(shiny) runApp(\"shinyExample\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-shiny.html","id":"exploring-parameter-fits-graphically-using-shiny","dir":"Articles","previous_headings":"","what":"Exploring parameter fits graphically using shiny","title":"rxode2 and Shiny","text":"rxode2 object can explored rxShiny(obj). rxShiny() also allow try new models see behave.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-variability-with-rxode2","dir":"Articles","previous_headings":"Population Simulations with rxode2","what":"Simulation of Variability with rxode2","title":"rxode2 Simulation","text":"pharmacometrics nonlinear-mixed effect modeling software (like nlmixr) characterizes -subject variability. subject variability can simulate new subjects. Assuming 2-compartment, indirect response model, can set create rxode2 model describing system :","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"setting-up-the-rxode2-model","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Setting up the rxode2 model","title":"rxode2 Simulation","text":"","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` set.seed(32) rxSetSeed(32) mod <- function() { ini({ KA <- 2.94E-01 TCl <- 1.86E+01 # between subject variability eta.Cl ~ 0.4^2 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 CL <- TCl*exp(eta.Cl) ## This is coded as a variable in the model d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulating","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Simulating","title":"rxode2 Simulation","text":"next step simulate create dosing regimen overall simulation: wish, can also add sampling times (though rxode2 can fill ): Note et takes similar arguments seq adding sampling times. methods adding sampling times events make complex dosing regimens (See event vignette). includes ways add variability sampling dosing times). complete can simulate using rxSolve routine: quickly look customize simulation use default plot routine. Since rxode2 object, create ggplot2 object can modify wish. extra parameter plot tells rxode2/R piece information interested plotting. case, interested looking derived parameter C2:","code":"ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=\"centr\") ev <- ev %>% et(0,48, length.out=100) sim <- rxSolve(mod, ev, nSub=100) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"checking-the-simulation-with-plot","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Checking the simulation with plot","title":"rxode2 Simulation","text":"course additional parameter also state value, like eff: even look two side--side: stack patchwork","code":"library(ggplot2) ## The plots from rxode2 are ggplots so they can be modified with ## standard ggplot commands. plot(sim, C2, log=\"y\") + ylab(\"Central Compartment\") ## They also takes many of the standard plot arguments; See ?plot plot(sim, eff, ylab=\"Effect\") plot(sim, C2, eff) library(patchwork) plot(sim, C2, log=\"y\") / plot(sim, eff)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"processing-the-data-to-create-summary-plots","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Processing the data to create summary plots","title":"rxode2 Simulation","text":"Usually pharmacometric simulations enough simply simulate system. something easier digest, like look central extreme tendencies simulation. Since rxode2 solve object type data frame now straightforward perform calculations generate plots simulated data. can , 5th, 50th, 95th percentiles simulated data plotted. Note can see parameters simulated example","code":"confint(sim, \"C2\", level=0.95) %>% plot(ylab=\"Central Concentration\", log=\"y\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done confint(sim, \"eff\", level=0.95) %>% plot(ylab=\"Effect\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done head(sim$param) #> sim.id KA TCl V2 Q V3 Kin Kout EC50 eta.Cl #> 1 1 0.294 18.6 40.2 10.5 297 1 1 200 0.8067570 #> 2 2 0.294 18.6 40.2 10.5 297 1 1 200 0.0236961 #> 3 3 0.294 18.6 40.2 10.5 297 1 1 200 -0.3340697 #> 4 4 0.294 18.6 40.2 10.5 297 1 1 200 -0.1098197 #> 5 5 0.294 18.6 40.2 10.5 297 1 1 200 -0.2803752 #> 6 6 0.294 18.6 40.2 10.5 297 1 1 200 -0.2114090"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-unexplained-variability-sigma","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Simulation of unexplained variability (sigma)","title":"rxode2 Simulation","text":"addition conveniently simulating subject variability, can also easily simulate unexplained variability. One way create rxode2 model endpoints defined. Model piping can keeping model intact: can see dataset defined $multipleEndpoint: see endpoints defined eff C2: allows solve system: Since simulated model residual specification included multiple endpoint model, can summarize endpoint simply taking confidence interval \"sim\": want subset specific endpoint, like eff can create confidence interval endpoint using specification sim.eff, endpoint name separated sim dot:","code":"mod2 <- mod %>% model(eff ~ add(eff.sd), append=TRUE) %>% model(C2 ~ prop(prop.sd), append=TRUE) %>% ini(eff.sd=sqrt(0.1), prop.sd=sqrt(0.1)) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ add residual parameter `eff.sd` and set estimate to 1 #> ℹ add residual parameter `prop.sd` and set estimate to 1 #> ℹ change initial estimate of `eff.sd` to `0.316227766016838` #> ℹ change initial estimate of `prop.sd` to `0.316227766016838` mod2$multipleEndpoint #> variable cmt dvid* #> 1 eff ~ … cmt='eff' or cmt=4 dvid='eff' or dvid=1 #> 2 C2 ~ … cmt='C2' or cmt=5 dvid='C2' or dvid=2 ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=\"centr\") %>% et(seq(0,48, length.out=100), cmt=\"eff\") %>% et(seq(0,48, length.out=100), cmt=\"C2\") sim <- rxSolve(mod2, ev, nSub=100) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ s <- confint(sim, \"sim\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(s) seff <- confint(sim, \"sim.eff\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(seff)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-individuals","dir":"Articles","previous_headings":"Population Simulations with rxode2 > Simulation of Variability with rxode2","what":"Simulation of Individuals","title":"rxode2 Simulation","text":"Sometimes may want match dosing observations individuals clinical trial. create data.frame using rxode2 event specification well ID column indicate individual. rxode2 event vignette talks datasets created.","code":"library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union ev1 <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, cmt=2) %>% et(0,48,length.out=10) ev2 <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=5000, cmt=2) %>% et(0,48,length.out=8) dat <- rbind(data.frame(ID=1, ev1$get.EventTable()), data.frame(ID=2, ev2$get.EventTable())) ## Note the number of subject is not needed since it is determined by the data sim <- rxSolve(mod, dat) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ sim %>% select(id, time, eff, C2) #> id time eff C2 #> 1 1 0.000000 [h] 1.000000 248.7562189 #> 2 1 5.333333 [h] 1.062982 5.3970840 #> 3 1 10.666667 [h] 1.013881 2.5901710 #> 4 1 16.000000 [h] 1.011565 2.2550581 #> 5 1 21.333333 [h] 1.010158 1.9820213 #> 6 1 26.666667 [h] 1.008929 1.7422286 #> 7 1 32.000000 [h] 1.007849 1.5314615 #> 8 1 37.333333 [h] 1.006899 1.3461870 #> 9 1 42.666667 [h] 1.006064 1.1833253 #> 10 1 48.000000 [h] 1.005330 1.0401683 #> 11 2 0.000000 [h] 1.000000 124.3781095 #> 12 2 6.857143 [h] 1.005764 0.7047232 #> 13 2 13.714286 [h] 1.002879 0.5592808 #> 14 2 20.571429 [h] 1.002381 0.4630160 #> 15 2 27.428571 [h] 1.001971 0.3833262 #> 16 2 34.285714 [h] 1.001632 0.3173516 #> 17 2 41.142857 [h] 1.001351 0.2627315 #> 18 2 48.000000 [h] 1.001118 0.2175123"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-of-clinical-trials","dir":"Articles","previous_headings":"","what":"Simulation of Clinical Trials","title":"rxode2 Simulation","text":"either using simple single event table, data clinical trial described , complete clinical trial simulation can performed. Typically clinical trial simulations want account uncertainty fixed parameter estimates, even uncertainty subject variability well unexplained variability. rxode2 allows account uncertainties simulating multiple virtual “studies,” specified parameter nStud. studies samples realization fixed effect parameters covariance matrices subject variability(omega) unexplained variabilities (sigma). Depending information models, strategies simulating realization omega sigma matrices. first strategy occurs either standard errors standard deviations (related parameters), modeled correlation model simulating . case suggested strategy use inverse Wishart (parameterized scale conjugate prior)/scaled inverse chi distribution. approach uses single parameter inform variability covariance matrix sampled (degrees freedom). second strategy occurs standard errors variance/standard deviation modeled correlations covariance matrix. approach perform separate simulations standard deviations correlation matrix. First simulate variance/standard deviation components thetaMat multivariate normal simulation. simulation transformation standard deviations, correlation matrix simulated using degrees freedom covariance matrix. Combining simulated standard deviation simulated correlation matrix give simulated covariance matrix. smaller dimension covariance matrices (dimension < 10x10) recommended use lkj distribution simulate correlation matrix. higher dimension covariance matrices suggested use inverse wishart distribution (transformed correlation matrix) simulations. covariance/variance prior simulated rxode2s cvPost() function.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulation-from-inverse-wishart-correlations","dir":"Articles","previous_headings":"Simulation of Clinical Trials","what":"Simulation from inverse Wishart correlations","title":"rxode2 Simulation","text":"example simulation : wish can see omega sigma used virtual study accessing solved data object $omega.list $sigma.list: can also see parameter realizations $params data frame.","code":"## Creating covariance matrix tmp <- matrix(rnorm(8^2), 8, 8) tMat <- tcrossprod(tmp, tmp) / (8 ^ 2) dimnames(tMat) <- list(NULL, names(mod2$theta)[1:8]) sim <- rxSolve(mod2, ev, nSub=100, thetaMat=tMat, nStud=10, dfSub=10, dfObs=100) s <-sim %>% confint(\"sim\") #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(s) head(sim$omegaList) #> [[1]] #> eta.Cl #> eta.Cl 0.1676778 #> #> [[2]] #> eta.Cl #> eta.Cl 0.2917085 #> #> [[3]] #> eta.Cl #> eta.Cl 0.1776813 #> #> [[4]] #> eta.Cl #> eta.Cl 0.1578682 #> #> [[5]] #> eta.Cl #> eta.Cl 0.1845614 #> #> [[6]] #> eta.Cl #> eta.Cl 0.3282268 head(sim$sigmaList) #> [[1]] #> rxerr.eff rxerr.C2 #> rxerr.eff 1.12416983 0.04197039 #> rxerr.C2 0.04197039 0.97293971 #> #> [[2]] #> rxerr.eff rxerr.C2 #> rxerr.eff 0.84311199 -0.06277998 #> rxerr.C2 -0.06277998 1.22140938 #> #> [[3]] #> rxerr.eff rxerr.C2 #> rxerr.eff 0.9834771 0.1060251 #> rxerr.C2 0.1060251 1.0024751 #> #> [[4]] #> rxerr.eff rxerr.C2 #> rxerr.eff 1.25556975 0.07690868 #> rxerr.C2 0.07690868 0.90991261 #> #> [[5]] #> rxerr.eff rxerr.C2 #> rxerr.eff 1.116261 -0.184748 #> rxerr.C2 -0.184748 1.320288 #> #> [[6]] #> rxerr.eff rxerr.C2 #> rxerr.eff 0.93539238 0.07270049 #> rxerr.C2 0.07270049 0.98648424"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulate-using-covariance-inputs","dir":"Articles","previous_headings":"Simulation of Clinical Trials","what":"Simulate using covariance inputs","title":"rxode2 Simulation","text":"Lets assume wish simulate nonmem run included xpose First setup model; Since taking nonmem like use free-form style classic rxode2 model start classic model: Next input estimated parameters: also covariances; , easiest way create named covariance matrix use lotri():","code":"rx1 <- rxode2({ cl <- tcl*(1+crcl.cl*(CLCR-65)) * exp(eta.cl) v <- tv * WT * exp(eta.v) ka <- tka * exp(eta.ka) ipred <- linCmt() obs <- ipred * (1 + prop.sd) + add.sd }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ theta <- c(tcl=2.63E+01, tv=1.35E+00, tka=4.20E+00, tlag=2.08E-01, prop.sd=2.05E-01, add.sd=1.06E-02, crcl.cl=7.17E-03, ## Note that since we are using the separation strategy the ETA variances are here too eta.cl=7.30E-02, eta.v=3.80E-02, eta.ka=1.91E+00) thetaMat <- lotri( tcl + tv + tka + tlag + prop.sd + add.sd + crcl.cl + eta.cl + eta.v + eta.ka ~ c(7.95E-01, 2.05E-02, 1.92E-03, 7.22E-02, -8.30E-03, 6.55E-01, -3.45E-03, -6.42E-05, 3.22E-03, 2.47E-04, 8.71E-04, 2.53E-04, -4.71E-03, -5.79E-05, 5.04E-04, 6.30E-04, -3.17E-06, -6.52E-04, -1.53E-05, -3.14E-05, 1.34E-05, -3.30E-04, 5.46E-06, -3.15E-04, 2.46E-06, 3.15E-06, -1.58E-06, 2.88E-06, -1.29E-03, -7.97E-05, 1.68E-03, -2.75E-05, -8.26E-05, 1.13E-05, -1.66E-06, 1.58E-04, -1.23E-03, -1.27E-05, -1.33E-03, -1.47E-05, -1.03E-04, 1.02E-05, 1.67E-06, 6.68E-05, 1.56E-04, 7.69E-02, -7.23E-03, 3.74E-01, 1.79E-03, -2.85E-03, 1.18E-05, -2.54E-04, 1.61E-03, -9.03E-04, 3.12E-01)) evw <- et(amount.units=\"mg\", time.units=\"hours\") %>% et(amt=100) %>% ## For this problem we will simulate with sampling windows et(list(c(0, 0.5), c(0.5, 1), c(1, 3), c(3, 6), c(6, 12))) %>% et(id=1:1000) ## From the run we know that: ## total number of observations is: 476 ## Total number of individuals: 74 sim <- rxSolve(rx1, theta, evw, nSub=100, nStud=10, thetaMat=thetaMat, ## Match boundaries of problem thetaLower=0, sigma=c(\"prop.sd\", \"add.sd\"), ## Sigmas are standard deviations sigmaXform=\"identity\", # default sigma xform=\"identity\" omega=c(\"eta.cl\", \"eta.v\", \"eta.ka\"), ## etas are variances omegaXform=\"variance\", # default omega xform=\"variance\" iCov=data.frame(WT=rnorm(1000, 70, 15), CLCR=rnorm(1000, 65, 25)), dfSub=74, dfObs=476); #> ℹ thetaMat has too many items, ignored: 'tlag' print(sim) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> # A tibble: 10,000 × 9 #> sim.id id tcl crcl.cl eta.cl tv eta.v tka eta.ka #> #> 1 1 1 27.0 0.995 0.489 1.45 0.975 4.51 -0.186 #> 2 1 2 27.0 0.995 -0.770 1.45 0.0294 4.51 -0.116 #> 3 1 3 27.0 0.995 -2.13 1.45 0.187 4.51 0.941 #> 4 1 4 27.0 0.995 0.333 1.45 -0.346 4.51 -0.686 #> 5 1 5 27.0 0.995 1.01 1.45 0.978 4.51 1.69 #> 6 1 6 27.0 0.995 -0.474 1.45 1.06 4.51 -0.641 #> 7 1 7 27.0 0.995 -0.0488 1.45 1.18 4.51 0.395 #> 8 1 8 27.0 0.995 0.267 1.45 0.164 4.51 1.41 #> 9 1 9 27.0 0.995 -1.19 1.45 1.24 4.51 -0.726 #> 10 1 10 27.0 0.995 -0.163 1.45 -0.00741 4.51 -0.799 #> # ℹ 9,990 more rows #> ── Initial Conditions ($inits): ── #> named numeric(0) #> #> Simulation with uncertainty in: #> • parameters ($thetaMat for changes) #> • omega matrix ($omegaList) #> • sigma matrix ($sigmaList) #> #> ── First part of data (object): ── #> # A tibble: 50,000 × 10 #> sim.id id time cl v ka ipred obs WT CLCR #> [h] #> 1 1 1 0.0155 230. 240. 3.74 0.0234 1.08 62.2 69.3 #> 2 1 1 0.749 230. 240. 3.74 0.239 0.680 62.2 69.3 #> 3 1 1 1.02 230. 240. 3.74 0.198 0.0443 62.2 69.3 #> 4 1 1 3.41 230. 240. 3.74 0.0213 0.275 62.2 69.3 #> 5 1 1 7.81 230. 240. 3.74 0.000311 1.21 62.2 69.3 #> 6 1 2 0.0833 515. 53.3 4.01 0.358 0.620 35.7 105. #> # ℹ 49,994 more rows ## Notice that the simulation time-points change for the individual ## If you want the same sampling time-points you can do that as well: evw <- et(amount.units=\"mg\", time.units=\"hours\") %>% et(amt=100) %>% et(0, 24, length.out=50) %>% et(id=1:100) sim <- rxSolve(rx1, theta, evw, nSub=100, nStud=10, thetaMat=thetaMat, ## Match boundaries of problem thetaLower=0, sigma=c(\"prop.sd\", \"add.sd\"), ## Sigmas are standard deviations sigmaXform=\"identity\", # default sigma xform=\"identity\" omega=c(\"eta.cl\", \"eta.v\", \"eta.ka\"), ## etas are variances omegaXform=\"variance\", # default omega xform=\"variance\" iCov=data.frame(WT=rnorm(100, 70, 15), CLCR=rnorm(100, 65, 25)), dfSub=74, dfObs=476, resample=TRUE) #> ℹ thetaMat has too many items, ignored: 'tlag' s <-sim %>% confint(c(\"ipred\")) #> summarizing data... #> done plot(s)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-sim-var.html","id":"simulate-without-uncertainty-in-omega-or-sigma-parameters","dir":"Articles","previous_headings":"Simulation of Clinical Trials","what":"Simulate without uncertainty in omega or sigma parameters","title":"rxode2 Simulation","text":"wish sample prior distributions either omega sigma matrices, can turn feature specifying simVariability = FALSE option solving: Note since realizations omega sigma simulated, $omegaList $sigmaList return NULL.","code":"sim <- rxSolve(mod2, ev, nSub=100, thetaMat=tMat, nStud=10, simVariability=FALSE) s <-sim %>% confint(c(\"centr\", \"eff\")) #> ! in order to put confidence bands around the intervals, you need at least 2500 simulations #> summarizing data...done plot(s)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-single-subject.html","id":"single-subject-solving","dir":"Articles","previous_headings":"","what":"Single Subject solving","title":"Single Subject ODE solving -- differences from multiple subject","text":"Originally, rxode2 created solve ODEs one individual. single system without changes individual parameters. course still supported, classic examples found rxode2 intro. article discusses differences multiple subject single subject solving. three differences: Single solving solve ID parallel Single solving lacks id column parameters($params) well actual dataset. Single solving allows parameter exploration easier parameter can modified. multiple subject solves, make sure update individual parameter. first obvious difference speed; multiple subjects can run subject ID parallel. information examples speed gains multiple subject solving see Speeding rxode2 vignette. next difference amount information output final data. Taking 2 compartment indirect response model originally tutorial: Now simple solve better see differences single solve, can solve 2 individuals observing two solves, can see: multiple subject solve contains id column data frame data frame parameters subject. last feature obvious, modifying individual parameters. single subject data, can modify rxode2 data frame changing initial conditions parameter values part data frame, described rxode2 Data Frames. multiple subject solving, feature still works, requires care supplying individual’s parameter value, otherwise may change solve drop parameter key individuals.","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 Q=1.05E+01 V3=2.97E+02 Kin=1 Kout=1 EC50=200 }) model({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) =-KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 }) } et <- et(amount.units='mg', time.units='hours') %>% et(dose=10000, addl=9, ii=12) %>% et(amt=20000, nbr.doses=5, start.time=120, dosing.interval=24) %>% et(0:240) # sampling x <- rxSolve(mod1, et) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments x #> ── Solved rxode2 object ── #> ── Parameters (x$params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions (x$inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows print(x) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions ($inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows plot(x, C2, eff) x2 <- rxSolve(mod1, et %>% et(id=1:2), params=data.frame(CL=c(18.6, 7.6))) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(x2) #> ── Solved rxode2 object ── #> ── Parameters ($params): ── #> # A tibble: 2 × 9 #> id KA CL V2 Q V3 Kin Kout EC50 #> #> 1 1 0.294 18.6 40.2 10.5 297 1 1 200 #> 2 2 0.294 7.6 40.2 10.5 297 1 1 200 #> ── Initial Conditions ($inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 482 × 8 #> id time C2 C3 depot centr peri eff #> [h] #> 1 1 0 0 0 10000 0 0 1 #> 2 1 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 1 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 1 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 1 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 1 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 476 more rows plot(x2, C2, eff)"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"a-note-about-the-speed-of-the-functional-form-for-rxode2","dir":"Articles","previous_headings":"","what":"A note about the speed of the functional form for rxode2","title":"Speeding up rxode2","text":"functional form benefit supported nlmixr2 therefore one interface solving estimating, takes computation time get underlying “classic” simulation code. models form : can also specify end-points simulation/estimation just like nlmixr2: every solve, compile (cached compile) underlying model. wish speed process can use two underlying rxode2 classic models. takes two steps: Parsing/evaluating model Creating simulation model first step can done rxode2(mod1) mod1() (second model ). second step create underlying “classic” rxode2 model, can done two different methods:$simulationModel $simulationIniModel. $simulationModel provide simulation code without initial conditions pre-pended, $simulationIniModel pre-pend values. endpoints specified, simulation code endpoint also output. can see differences : wish speed multiple simualtions rxode2 functions, need pre-calculate care steps : functions can act like normal ui model solved. can convert back UI .rxUi() function .function() needed. increase speed multiple simulations model use lower level simulation model (ie $simulationModel $simulationIniModel depending need)","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ KA <- 0.3 CL <- 7 V2 <- 40 Q <- 10 V3 <- 300 Kin <- 0.2 Kout <- 0.2 EC50 <- 8 }) model({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 }) } mod2f <- function() { ini({ TKA <- 0.3 TCL <- 7 TV2 <- 40 TQ <- 10 TV3 <- 300 TKin <- 0.2 TKout <- 0.2 TEC50 <- 8 eta.cl + eta.v ~ c(0.09, 0.08, 0.25) c2.prop.sd <- 0.1 eff.add.sd <- 0.1 }) model({ KA <- TKA CL <- TCL*exp(eta.cl) V2 <- TV2*exp(eta.v) Q <- TQ V3 <- TV3 Kin <- TKin Kout <- TKout EC50 <- TEC50 C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 C2 ~ prop(c2.prop.sd) eff ~ add(eff.add.sd) }) } mod1 <- mod1() mod2f <- rxode2(mod2f) #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments summary(mod1$simulationModel) #> rxode2 3.0.2.9000 model named rx_ca80087dc9e6106491e25ef7b8e9dbf6 model (✔ ready). #> DLL: /tmp/Rtmp5gtyvB/rxode2/rx_ca80087dc9e6106491e25ef7b8e9dbf6__.rxd/rx_ca80087dc9e6106491e25ef7b8e9dbf6_.so #> NULL #> #> Calculated Variables: #> [1] \"C2\" \"C3\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(KA, CL, V2, Q, V3, Kin, Kout, EC50) #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> }) summary(mod1$simulationIniModel) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_69704729299befee22d19805a20bb6bb model (✔ ready). #> DLL: /tmp/Rtmp5gtyvB/rxode2/rx_69704729299befee22d19805a20bb6bb__.rxd/rx_69704729299befee22d19805a20bb6bb_.so #> NULL #> #> Calculated Variables: #> [1] \"C2\" \"C3\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(KA, CL, V2, Q, V3, Kin, Kout, EC50) #> KA = 0.3 #> CL = 7 #> V2 = 40 #> Q = 10 #> V3 = 300 #> Kin = 0.2 #> Kout = 0.2 #> EC50 = 8 #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> }) summary(mod2f$simulationModel) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_55fc78fa258174874ffea88f2ee760e1 model (✔ ready). #> DLL: /tmp/Rtmp5gtyvB/rxode2/rx_55fc78fa258174874ffea88f2ee760e1__.rxd/rx_55fc78fa258174874ffea88f2ee760e1_.so #> NULL #> #> Calculated Variables: #> [1] \"KA\" \"CL\" \"V2\" \"Q\" \"V3\" \"Kin\" #> [7] \"Kout\" \"EC50\" \"C2\" \"C3\" \"ipredSim\" \"sim\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(TKA, TCL, TV2, TQ, TV3, TKin, TKout, TEC50, c2.prop.sd, #> eff.add.sd, eta.cl, eta.v) #> KA = TKA #> CL = TCL * exp(eta.cl) #> V2 = TV2 * exp(eta.v) #> Q = TQ #> V3 = TV3 #> Kin = TKin #> Kout = TKout #> EC50 = TEC50 #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> if (CMT == 5) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ C2 #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (rx_pred_f_ * c2.prop.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.C2, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> if (CMT == 4) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ eff #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (eff.add.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.eff, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> cmt(C2) #> dvid(5, 4) #> }) summary(mod2f$simulationIniModel) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_6c26d646f19736d365128f62f9913df6 model (✔ ready). #> DLL: /tmp/Rtmp5gtyvB/rxode2/rx_6c26d646f19736d365128f62f9913df6__.rxd/rx_6c26d646f19736d365128f62f9913df6_.so #> NULL #> #> Calculated Variables: #> [1] \"KA\" \"CL\" \"V2\" \"Q\" \"V3\" \"Kin\" #> [7] \"Kout\" \"EC50\" \"C2\" \"C3\" \"ipredSim\" \"sim\" #> ── rxode2 Model Syntax ── #> rxode2({ #> param(TKA, TCL, TV2, TQ, TV3, TKin, TKout, TEC50, c2.prop.sd, #> eff.add.sd, eta.cl, eta.v) #> rxerr.C2 = 1 #> rxerr.eff = 1 #> TKA = 0.3 #> TCL = 7 #> TV2 = 40 #> TQ = 10 #> TV3 = 300 #> TKin = 0.2 #> TKout = 0.2 #> TEC50 = 8 #> c2.prop.sd = 0.1 #> eff.add.sd = 0.1 #> eta.cl = 0 #> eta.v = 0 #> KA = TKA #> CL = TCL * exp(eta.cl) #> V2 = TV2 * exp(eta.v) #> Q = TQ #> V3 = TV3 #> Kin = TKin #> Kout = TKout #> EC50 = TEC50 #> C2 = centr/V2 #> C3 = peri/V3 #> d/dt(depot) = -KA * depot #> d/dt(centr) = KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) = Q * C2 - Q * C3 #> d/dt(eff) = Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) = 1 #> if (CMT == 5) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ C2 #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (rx_pred_f_ * c2.prop.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.C2, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> if (CMT == 4) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ eff #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (eff.add.sd)^2 #> ipredSim = rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim = rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.eff, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> cmt(C2) #> dvid(5, 4) #> }) mod1 <- mod1$simulationModel mod2 <- mod2f$simulationModel"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"increasing-rxode2-speed-by-multi-subject-parallel-solving","dir":"Articles","previous_headings":"","what":"Increasing rxode2 speed by multi-subject parallel solving","title":"Speeding up rxode2","text":"Using classic rxode2 model specification (can convert functional/ui model style) continue discussion rxode2 speed enhancements. rxode2 originally developed ODE solver allowed ODE solve single subject. flexibility still supported. original code rxode2 tutorial :","code":"library(rxode2) library(microbenchmark) library(ggplot2) mod1 <- rxode2({ C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) = 1 }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ## Create an event table ev <- et() %>% et(amt=10000, addl=9,ii=12) %>% et(time=120, amt=20000, addl=4, ii=24) %>% et(0:240) ## Add Sampling nsub <- 100 # 100 sub-problems sigma <- matrix(c(0.09,0.08,0.08,0.25),2,2) # IIV covariance matrix mv <- rxRmvn(n=nsub, rep(0,2), sigma) # Sample from covariance matrix CL <- 7*exp(mv[,1]) V2 <- 40*exp(mv[,2]) params.all <- cbind(KA=0.3, CL=CL, V2=V2, Q=10, V3=300, Kin=0.2, Kout=0.2, EC50=8)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"for-loop","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"For Loop","title":"Speeding up rxode2","text":"slowest way code use loop. example enclose function compare timing.","code":"runFor <- function(){ res <- NULL for (i in 1:nsub) { params <- params.all[i,] x <- mod1$solve(params, ev) ##Store results for effect compartment res <- cbind(res, x[, \"eff\"]) } return(res) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"running-with-apply","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Running with apply","title":"Speeding up rxode2","text":"general R, apply types functions perform better loop, tutorial also suggests speed enhancement","code":"runSapply <- function(){ res <- apply(params.all, 1, function(theta) mod1$run(theta, ev)[, \"eff\"]) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"run-using-a-single-threaded-solve","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Run using a single-threaded solve","title":"Speeding up rxode2","text":"can also rxode2 solve subject simultaneously without collecting results R, using single threaded solve. data output slightly different , still gives information:","code":"runSingleThread <- function(){ solve(mod1, params.all, ev, cores=1)[,c(\"sim.id\", \"time\", \"eff\")] }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"run-a-2-threaded-solve","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Run a 2 threaded solve","title":"Speeding up rxode2","text":"rxode2 supports multi-threaded solves, another option 2 threads (called cores solve options, can see options rxControl() rxSolve()).","code":"run2Thread <- function(){ solve(mod1, params.all, ev, cores=2)[,c(\"sim.id\", \"time\", \"eff\")] }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"compare-the-times-between-all-the-methods","dir":"Articles","previous_headings":"Increasing rxode2 speed by multi-subject parallel solving","what":"Compare the times between all the methods","title":"Speeding up rxode2","text":"Now moment truth, timings: clear largest jump performance using solve method providing parameters rxode2 solve without looping subject either sapply. number cores/threads applied solve also plays role solving. can explore number threads following code: can suite spot speed vs number cores. system type (mac, linux, windows /processor), complexity ODE solving number subjects may affect arbitrary number threads. 4 threads good number use without prior knowledge systems days least 4 threads (2 processors 4 threads).","code":"bench <- microbenchmark(runFor(), runSapply(), runSingleThread(),run2Thread()) print(bench) #> Unit: milliseconds #> expr min lq mean median uq max #> runFor() 379.11229 387.43576 404.05506 393.21482 400.40454 559.05857 #> runSapply() 381.46458 388.88343 401.91207 393.67960 400.92699 533.21411 #> runSingleThread() 31.10965 31.38265 33.17715 31.55967 32.15182 57.96507 #> run2Thread() 19.78458 20.16362 22.47667 20.37607 21.18413 41.37140 #> neval #> 100 #> 100 #> 100 #> 100 autoplot(bench) runThread <- function(n){ solve(mod1, params.all, ev, cores=n)[,c(\"sim.id\", \"time\", \"eff\")] } bench <- eval(parse(text=sprintf(\"microbenchmark(%s)\", paste(paste0(\"runThread(\", seq(1, 2 * rxCores()),\")\"), collapse=\",\")))) print(bench) #> Unit: milliseconds #> expr min lq mean median uq max neval #> runThread(1) 31.16827 31.53473 32.84300 32.00560 32.46661 48.65105 100 #> runThread(2) 19.91537 20.38626 23.69434 20.87434 25.51716 36.64638 100 #> runThread(3) 21.26446 21.85369 23.63145 22.32780 25.73174 29.74630 100 #> runThread(4) 21.72743 22.21028 24.24235 22.55596 23.05432 45.17079 100 autoplot(bench)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"increasing-speed-with-compiler-options","dir":"Articles","previous_headings":"","what":"Increasing speed with compiler options","title":"Speeding up rxode2","text":"One way allows faster ODE solving make approximations make math operators like exp() faster technically accurate enough follow IEEE standard math functions values (implications cover ). optimizations opt-Julia since compile everything session, CRAN conservative approach since individuals compile R function running . Still, rxode2 models can compiled option without disturbing CRAN policies. key set option. example: Note compiler settings can tricky setup system wide Makevars may interact setting. example use ccache compile may produced options since cached options. example, github runner (generates page), advantage \"fast\" compile. However, development laptop minimal speed increase. probably check using . disabled default since minimum increase speed.","code":"# Using the first example subset to PK mod2f <- function() { ini({ TKA <- 0.3 TCL <- 7 TV2 <- 40 TQ <- 10 TV3 <- 300 TKin <- 0.2 TKout <- 0.2 TEC50 <- 8 eta.cl + eta.v ~ c(0.09, 0.08, 0.25) c2.prop.sd <- 0.1 }) model({ KA <- TKA CL <- TCL*exp(eta.cl) V2 <- TV2*exp(eta.v) Q <- TQ V3 <- TV3 Kin <- TKin Kout <- TKout EC50 <- TEC50 C2 = centr/V2 C3 = peri/V3 d/dt(depot) = -KA*depot d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) = Q*C2 - Q*C3 C2 ~ prop(c2.prop.sd) }) } mod2f <- mod2f() mod2s <- mod2f$simulationIniModel #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(0:240) # Add sampling bench1 <- microbenchmark(standardCompile=rxSolve(mod2s, ev, nSub=1000)) # Now clear the cache of models so we can change the compile options for the same model rxClean() # Use withr to preserve the options withr::with_options(list(rxode2.compile.O=\"fast\"), { mod2s <- mod2f$simulationIniModel }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ bench2 <- microbenchmark(fastCompile=rxSolve(mod2s, ev, nSub=1000)) bench <- rbind(bench1, bench2) print(bench) #> Unit: milliseconds #> expr min lq mean median uq max neval #> standardCompile 351.7574 361.5485 416.0550 378.6938 491.8503 573.0399 100 #> fastCompile 350.2260 365.6087 418.6013 391.9368 486.9704 576.9005 100 autoplot(bench)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"a-real-life-example","dir":"Articles","previous_headings":"","what":"A real life example","title":"Speeding up rxode2","text":"cBefore parallel solving implemented, fastest way run rxode2 lapply. Rik Schoemaker created data-set nlmixr comparisons, reduced run faster automatic building pkgdown website. applying new parallel solving concepts can simply run simulation less code faster: can see striking time difference two methods; things keep mind: rxode2 use thread-safe sitmo threefry routines simulation eta values. Therefore results expected different (also random samples taken different order different) prior simulation run R 3.5, different random number generator results simulation different actual nlmixr comparison using slower simulation. speed comparison used data.table. rxode2 uses data.table internally (available) try speed sorting, different installations data.table installed. can force rxode2 use order() sorting using forderForceBase(TRUE). case little difference two, though examples data.table’s presence leads speed increase (less likely lead slowdown).","code":"library(rxode2) library(data.table) #Define the rxode2 model ode1 <- \" d/dt(abs) = -KA*abs; d/dt(centr) = KA*abs-(CL/V)*centr; C2=centr/V; \" #Create the rxode2 simulation object mod1 <- rxode2(model = ode1) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #Population parameter values on log-scale paramsl <- c(CL = log(4), V = log(70), KA = log(1)) #make 10,000 subjects to sample from: nsubg <- 300 # subjects per dose doses <- c(10, 30, 60, 120) nsub <- nsubg * length(doses) #IIV of 30% for each parameter omega <- diag(c(0.09, 0.09, 0.09))# IIV covariance matrix sigma <- 0.2 #Sample from the multivariate normal set.seed(98176247) rxSetSeed(98176247) library(MASS) mv <- mvrnorm(nsub, rep(0, dim(omega)[1]), omega) # Sample from covariance matrix #Combine population parameters with IIV params.all <- data.table( \"ID\" = seq(1:nsub), \"CL\" = exp(paramsl['CL'] + mv[, 1]), \"V\" = exp(paramsl['V'] + mv[, 2]), \"KA\" = exp(paramsl['KA'] + mv[, 3]) ) #set the doses (looping through the 4 doses) params.all[, AMT := rep(100 * doses,nsubg)] Startlapply <- Sys.time() #Run the simulations using lapply for speed s = lapply(1:nsub, function(i) { #selects the parameters associated with the subject to be simulated params <- params.all[i] #creates an eventTable with 7 doses every 24 hours ev <- eventTable() ev$add.dosing( dose = params$AMT, nbr.doses = 1, dosing.to = 1, rate = NULL, start.time = 0 ) #generates 4 random samples in a 24 hour period ev$add.sampling(c(0, sort(round(sample(runif(600, 0, 1440), 4) / 60, 2)))) #runs the rxode2 simulation x <- as.data.table(mod1$run(params, ev)) #merges the parameters and ID number to the simulation output x[, names(params) := params] }) #runs the entire sequence of 100 subjects and binds the results to the object res res = as.data.table(do.call(\"rbind\", s)) Stoplapply <- Sys.time() print(Stoplapply - Startlapply) #> Time difference of 13.36731 secs rx <- rxode2({ CL = log(4) V = log(70) KA = log(1) CL = exp(CL + eta.CL) V = exp(V + eta.V) KA = exp(KA + eta.KA) d/dt(abs) = -KA*abs; d/dt(centr) = KA*abs-(CL/V)*centr; C2=centr/V; }) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ omega <- lotri(eta.CL ~ 0.09, eta.V ~ 0.09, eta.KA ~ 0.09) doses <- c(10, 30, 60, 120) startParallel <- Sys.time() ev <- do.call(\"rbind\", lapply(seq_along(doses), function(i){ et() %>% et(amt=doses[i]) %>% # Add single dose et(0) %>% # Add 0 observation ## Generate 4 samples in 24 hour period et(lapply(1:4, function(...){c(0, 24)})) %>% et(id=seq(1, nsubg) + (i - 1) * nsubg) %>% ## Convert to data frame to skip sorting the data ## When binding the data together as.data.frame })) ## To better compare, use the same output, that is data.table res <- rxSolve(rx, ev, omega=omega, returnType=\"data.table\") endParallel <- Sys.time() print(endParallel - startParallel) #> Time difference of 0.1182919 secs"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"want-more-ways-to-run-multi-subject-simulations","dir":"Articles","previous_headings":"A real life example","what":"Want more ways to run multi-subject simulations","title":"Speeding up rxode2","text":"version since tutorial even ways run multi-subject simulations, including adding variability sampling dosing times et() (see rxode2 events information), ability supply omega sigma matrix well adding thetaMat R simulate uncertainty omega, sigma theta matrices; see rxode2 simulation vignette.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-speed.html","id":"session-information","dir":"Articles","previous_headings":"A real life example","what":"Session Information","title":"Speeding up rxode2","text":"session information:","code":"sessionInfo() #> R version 4.4.2 (2024-10-31) #> Platform: x86_64-pc-linux-gnu #> Running under: Ubuntu 22.04.5 LTS #> #> Matrix products: default #> BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 #> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so; LAPACK version 3.10.0 #> #> locale: #> [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 #> [4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 #> [7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C #> [10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C #> #> time zone: UTC #> tzcode source: system (glibc) #> #> attached base packages: #> [1] stats graphics grDevices utils datasets methods base #> #> other attached packages: #> [1] MASS_7.3-61 data.table_1.16.2 ggplot2_3.5.1 #> [4] microbenchmark_1.5.0 rxode2_3.0.2.9000 #> #> loaded via a namespace (and not attached): #> [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3 #> [4] lattice_0.22-6 digest_0.6.37 magrittr_2.0.3 #> [7] evaluate_1.0.1 grid_4.4.2 fastmap_1.2.0 #> [10] lotri_1.0.0.9000 jsonlite_1.8.9 rxode2ll_2.0.12 #> [13] backports_1.5.0 fansi_1.0.6 scales_1.3.0 #> [16] lazyeval_0.2.2 textshaping_0.4.0 jquerylib_0.1.4 #> [19] RApiSerialize_0.1.4 cli_3.6.3 symengine_0.2.6 #> [22] crayon_1.5.3 rlang_1.1.4 units_0.8-5 #> [25] munsell_0.5.1 withr_3.0.2 cachem_1.1.0 #> [28] yaml_2.3.10 tools_4.4.2 qs_0.27.2 #> [31] memoise_2.0.1 checkmate_2.3.2 dplyr_1.1.4 #> [34] colorspace_2.1-1 vctrs_0.6.5 R6_2.5.1 #> [37] lifecycle_1.0.4 fs_1.6.5 stringfish_0.16.0 #> [40] htmlwidgets_1.6.4 ragg_1.3.3 PreciseSums_0.7 #> [43] pkgconfig_2.0.3 desc_1.4.3 rex_1.2.1 #> [46] pkgdown_2.1.1 RcppParallel_5.1.9 pillar_1.9.0 #> [49] bslib_0.8.0 gtable_0.3.6 glue_1.8.0 #> [52] Rcpp_1.0.13-1 systemfonts_1.1.0 xfun_0.49 #> [55] tibble_3.2.1 tidyselect_1.2.1 sys_3.4.3 #> [58] knitr_1.49 farver_2.1.2 dparser_1.3.1-13 #> [61] htmltools_0.5.8.1 nlme_3.1-166 labeling_0.4.3 #> [64] rmarkdown_2.29 compiler_4.4.2"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-stiff.html","id":"stiff-odes-with-jacobian-specification","dir":"Articles","previous_headings":"","what":"Stiff ODEs with Jacobian Specification","title":"rxode2 Jacobian specification and Stiff Systems","text":"Occasionally, may come across stiff differential equation, differential equation numerically unstable small variations parameters cause different solutions ODEs. One way tackle choose stiff-solver, hybrid stiff solver (like default LSODA). Typically enough. However exact Jacobian solutions may increase stability ODE. (Note Jacobian derivative ODE specification respect variable). rxode2 can specify Jacobian df(state)/dy(variable)= statement. classic ODE stiff properties various conditions Van der Pol differential equations. rxode2 can specified following: stiff mu=1, mu=1000 stiff system easy enough , bit tedious. rxode2 setup appropriately, can use computer algebra system sympy calculate Jacobian automatically. done rxode2 option calcJac option:","code":"library(rxode2) ## rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) ## no cache: create with `rxCreateCache()` Vtpol2 <- function() { ini({ mu <- 1 ## nonstiff; 10 moderately stiff; 1000 stiff }) model({ d/dt(y) <- dy d/dt(dy) <- mu*(1-y^2)*dy - y ## Jacobian df(y)/dy(dy) <- 1 df(dy)/dy(y) <- -2*dy*mu*y - 1 df(dy)/dy(dy) <- mu*(1-y^2) ## Initial conditions y(0) <- 2 dy(0) <- 0 }) } et <- et(0, 10, length.out=200) %>% et(amt=0) s1 <- Vtpol2 %>% solve(et, method=\"lsoda\") ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(s1) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## mu ## 1 ## -- Initial Conditions ($inits): -- ## y dy ## 2 0 ## -- First part of data (object): -- ## # A tibble: 200 x 3 ## time y dy ## ## 1 0 2 0 ## 2 0.0503 2.00 -0.0933 ## 3 0.101 1.99 -0.173 ## 4 0.151 1.98 -0.242 ## 5 0.201 1.97 -0.302 ## 6 0.251 1.95 -0.353 ## # i 194 more rows s2 <- Vtpol2 %>% solve(c(mu=1000), et) ## i parameter labels from comments are typically ignored in non-interactive mode ## i Need to run with the source intact to parse comments ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(s2) ## -- Solved rxode2 object -- ## -- Parameters ($params): -- ## mu ## 1000 ## -- Initial Conditions ($inits): -- ## y dy ## 2 0 ## -- First part of data (object): -- ## # A tibble: 200 x 3 ## time y dy ## ## 1 0 2 0 ## 2 0.0503 2.00 -0.000667 ## 3 0.101 2.00 -0.000667 ## 4 0.151 2.00 -0.000667 ## 5 0.201 2.00 -0.000667 ## 6 0.251 2.00 -0.000667 ## # i 194 more rows Vtpol <- function() { ini({ mu <- 1 ## nonstiff; 10 moderately stiff; 1000 stiff }) model({ d/dt(y) <- dy d/dt(dy) <- mu*(1-y^2)*dy - y y(0) <- 2 dy(0) <- 0 }) } Vtpol <- Vtpol() # you can also use $symengineModelPrune if there is if/else blocks # that need to be converted: Vtpol <- rxode2(Vtpol$symengineModelNoPrune, calcJac=TRUE) ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ## > pruning branches (`if`/`else`)... ## v done ## > loading into symengine environment... ## v done ## > calculate jacobian ## [====|====|====|====|====|====|====|====|====|====] 0:00:00 ## using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ summary(Vtpol) ## rxode2 3.0.2.9000 model named rx_565fb68bcb5c6fd9f19921e169757d5e model (ready). ## DLL: /tmp/Rtmp5gtyvB/rxode2/rx_565fb68bcb5c6fd9f19921e169757d5e__.rxd/rx_565fb68bcb5c6fd9f19921e169757d5e_.so ## NULL ## -- rxode2 Model Syntax -- ## rxode2({ ## cmt(y) ## cmt(dy) ## d/dt(y) = dy ## d/dt(dy) = -y + mu * dy * (1 - Rx_pow_di(y, 2)) ## y(0) = 2 ## dy(0) = 0 ## df(y)/dy(y) = 0 ## df(dy)/dy(y) = -1 - 2 * y * mu * dy ## df(y)/dy(dy) = 1 ## df(dy)/dy(dy) = mu * (1 - Rx_pow_di(y, 2)) ## df(y)/dy(mu) = 0 ## df(dy)/dy(mu) = dy * (1 - Rx_pow_di(y, 2)) ## })"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"rxode2 ODE solving syntax","text":"briefly describes syntax used define models rxode2 translate R-callable compiled code. also describes communication variables R rxode2 modeling specification.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"creating-rxode2-models","dir":"Articles","previous_headings":"","what":"Creating rxode2 models","title":"rxode2 ODE solving syntax","text":"ODE-based model specification may coded inside four places: Inside rxode2({}) block statements: Inside rxode2(\"\") string statement: file name loaded rxode2: model function can parsed rxode2: block statement, character string text file internal rxode2 compilation manager translates ODE system C, compiles loads R session. call rxode2 produces object class rxode2 consists list-like structure (environment) various member functions. last type model (model function), call rxode2 creates parsed rxode2 ui can translated rxode2 compilation model. type function required nlmixr2 estimation can extended modified model piping. reason focused documentation.","code":"library(rxode2) mod <- rxode2({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) mod <- rxode2(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \") writeLines(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \", \"modelFile.rxode2\") mod <- rxode2(filename='modelFile.rxode2') unlink(\"modelFile.rxode2\") mod <- function() { model({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) } mod <- rxode2(mod) # or simply mod() if the model is at the end of the function # These model functions often have residual components and initial # (`ini({})`) conditions attached as well. For example the # theophylline model can be written as: one.compartment <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } # after parsing the model mod <- one.compartment() mod$simulationModel # or mod$simulationIniModel"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"syntax","dir":"Articles","previous_headings":"","what":"Syntax","title":"rxode2 ODE solving syntax","text":"basic model specification consists one statements optionally terminated semi-colons ; optional comments (comments delimited # end--line). block statements set statements delimited curly braces, { ... }. Statements can either assignments, conditional /else /else, loops (can exited break), special statements, printing statements (debugging/testing). Assignment statements can : simple assignments, left hand identifier (.e., variable). includes string assignments special time-derivative assignments, left hand specifies change amount corresponding state variable (compartment) respect time e.g., d/dt(depot): special initial-condition assignments left hand specifies compartment initial condition specified, e.g. depot(0) = 0 special model event changes including bioavailability (f(depot)=1), lag time (alag(depot)=0), modeled rate (rate(depot)=2) modeled duration (dur(depot)=2). example model features event specification modeled infusions rxode2 data specification found rxode2 events vignette. special change point syntax, model times. model times specified mtime(var)=time special Jacobian-derivative assignments, left hand specifies change compartment ode respect variable. example, d/dt(y) = dy, Jacobian compartment can specified df(y)/dy(dy) = 1. may advantage obtaining solution specifying Jacobian stiff ODE systems. However, stiff systems tried LSODA, actually slightly slowed solving. Special string value declarations tell values string variable take within rxode2 solving structure. values cause factor created variable solving rxode2 model. , declared much way R, : labels() <- c(\"a1\", \"a2\"). Note assignment can done =, <- ~. assigning ~ operator, simple assignments time-derivative assignments output. Note rxode2 model functions assignment ~ can also overloaded residual distribution specification. Special statements can : Compartment declaration statements, can change default dosing compartment assumed compartment number(s) well add extra compartment names end (useful multiple-endpoint nlmixr models); specified cmt(compartmentName) Parameter declaration statements, can make sure input parameters certain order instead ordering parameters order parsed. useful keeping parameter order using 2 different ODE models. specified param(par1, par2,...) Variable interpolation statements, tells interpolation specific covariates. include locf(cov1, cov2, ...) last observation carried forward, nocb(cov1, cov2, ...) next observation carried backward, linear(cov1, cov2, ...) linear interpolation midpoint(cov1, cov2, ...) midpoint interpolation. example model shown : Expressions assignment statements can numeric logical. Numeric expressions can include following numeric operators +, -, *, /, ^ mathematical functions defined C R math libraries (e.g., fabs, exp, log, sin, abs). may also access R’s functions R math libraries, like lgammafn log gamma function. rxode2 syntax case-sensitive, .e., ABC different abc, Abc, ABc, etc.","code":"# simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3;"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"identifiers","dir":"Articles","previous_headings":"Syntax","what":"Identifiers","title":"rxode2 ODE solving syntax","text":"Like R, Identifiers (variable names) may consist one alphanumeric, underscore _ period . characters, first character digit underscore _. Identifiers model specification can refer : State variables dynamic system (e.g., compartments pharmacokinetics model). Implied input variable, t (time), tlast (last time point), podo (oral dose, undocumented case absorption transit models). Special constants like pi R’s predefined constants. Model parameters (e.g., ka rate absorption, CL clearance, etc.) Others, created assignments part model specification; referred LHS (left-hand side) variable. Currently, rxode2 modeling language recognizes system state variables “parameters”, thus, values need passed R ODE model (e.g., age) either passed params argument integrator function rxSolve() supplied event data-set. certain variable names rxode2 event tables. avoid confusion, following event table-related items assigned, used state can accessed rxode2 code: cmt dvid addl ss amt dur rate Rprintf print printf id However following variables used model specification: evid ii Sometimes rxode2 generates variables fed back rxode2. Similarly, nlmixr2 generates variables used nlmixr estimation simulation. variables start either rx nlmixr prefixes. avoid problems, suggested use variables starting either rx nlmixr prefixes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"logical-operators","dir":"Articles","previous_headings":"","what":"Logical Operators","title":"rxode2 ODE solving syntax","text":"Logical operators support standard R operators ==, != >= <= > <. Like R can () () statements, ifelse() expressions. Additionally can standard assignment. instance, following valid: Notice can also use character expressions comparisons. convenience comes cost since character comparisons slower numeric expressions. Unlike R, .numeric .integer logical statements needed, cause syntax error try use function.","code":"cov1 = covm*(sexf == \"female\") + covm*(sexf != \"female\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"supported-functions","dir":"Articles","previous_headings":"","what":"Supported functions","title":"rxode2 ODE solving syntax","text":"supported functions rxode2 can seen rxSupportedFuns(). brief description built-functions following table: Note lag(cmt) = equivalent alag(cmt) = = lag(wt)","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"reserved-keywords","dir":"Articles","previous_headings":"","what":"Reserved keywords","title":"rxode2 ODE solving syntax","text":"reserved keywords rxode2 model. following table: Note rxFlag always output 11 calc_lhs since final variables calculated, though can tweak test certain parts rxode2 using flag.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"residual-functions-when-using-rxode2-functions","dir":"Articles","previous_headings":"","what":"Residual functions when using rxode2 functions","title":"rxode2 ODE solving syntax","text":"addition ~ hiding output certain types output, also used specify residual output endpoint input rxode2 model function (includes residual model({}) block). specifications form: Indicating variable var variable represents individual central tendencies model also represents compartment specification data-set. can also change compartment name using | syntax, : case var represents central tendency cmt represents compartment dvid specification.","code":"var ~ add(add.sd) var ~ add(add.sd) | cmt"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"transformations","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Transformations","title":"rxode2 ODE solving syntax","text":"normal related distributions, can apply transformation sides using keywords/functions apply transformations. default likelihood transformations calculated untransformed scale. bounded variables like logit-normal probit-normal low high values defaulted 0 1 missing. models wish proportional model one transformation can replace standard deviation NA allow transformations, lnorm(), probitNorm() logitNorm() can combined variance stabilizing yeoJohnson() transformation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"normal-and-t-related-distributions","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Normal and t-related distributions","title":"rxode2 ODE solving syntax","text":"normal t-related distributions, wanted keep ability use skewed distributions additive proportional t/cauchy-space, distributions specified differently comparison supported distributions within nlmixr2: Note normal t-related distributions nlmixr2 calculate cwres npde normal assumption help assess goodness fit model. Also note +dnorm() mostly testing purposes slow estimation procedure nlmixr2. suggest adding (except explicit testing). multiple endpoint models mix non-normal normal distributions, whole problem shifted log-likelihood method estimation nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"notes-on-additive-proportional-models","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Notes on additive + proportional models","title":"rxode2 ODE solving syntax","text":"two different ways specify additive proportional models, call combined1 combined2, way Monolix calls two distributions (avoid software differences naming). first, combined1, assumes additive proportional differences standard deviation scale, : y=f+(+b* f^c)*err second, combined2, assumes additive proportional differences combined variance scale: y=f+sqrt(a2+b2*f(2c))sqrt(^2+b^2 *f^(2c))*err default nlmixr2/rxode2 otherwise specified combined2 since mirrors adding 2 normal distributions statistics add variances (standard deviations). However, combined1 can describe data possibly even better combined2 possible options rxode2/nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"distributions-of-known-likelihoods","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Distributions of known likelihoods","title":"rxode2 ODE solving syntax","text":"residuals related normal, t-distribution cauchy, often residual specification form: compartment specification left handed side specification. generalized likelihood can specify:","code":"cmt ~ dbeta(alpha, beta) ll(cmt) ~ llik specification"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"ordinal-likelihoods","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"Ordinal likelihoods","title":"rxode2 ODE solving syntax","text":"Finally, ordinal likelihoods/simulations can specified 2 ways. first : err represents compartment p0 probability specific category: model ensure sum p values less 1. Additionally can write arbitrary number categories ordinal model described . seems little p0 probability category 1 sometimes scores non-whole numbers. can modeled follows: numeric categories specified explicitly, probabilities remain :","code":"err ~ c(p0, p1, p2) err ~ c(p0=0, p1=1, p2=2, 3)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"general-table-of-supported-residual-distributions","dir":"Articles","previous_headings":"Residual functions when using rxode2 functions","what":"General table of supported residual distributions","title":"rxode2 ODE solving syntax","text":"general supported following table (available rxode2::rxResidualError)","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"note-on-strings-in-rxode2","dir":"Articles","previous_headings":"","what":"Note on strings in rxode2","title":"rxode2 ODE solving syntax","text":"Strings converted double values inside rxode2, hence can refer integer corresponding string value string value . covariates calculated fly based data likely try , though aware. strings defined model, fixed used. example: also replaced : Since \"Med\" already defined wanted can pre-declare levels (order) give better control : can see number changed since declaration change numbers variable tAPGAR. levels() statements need declared variable occurs ensure numbering consistent declared.","code":"if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- \"Med\" } if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- 3 } levels(tAPGAR) <- c(\"Med\", \"Low\", \"High\") if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- 3 } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- 2 } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- 1 } else { tAPGAR<- 1 }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"bugs-andor-deficiencies","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Bugs and/or deficiencies","title":"rxode2 ODE solving syntax","text":"modulo operator %% currently unsupported.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"note","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Note","title":"rxode2 ODE solving syntax","text":"ODE specification mini-language parsed help open source tool , Plevyak (2015).","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"example-model","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Example model","title":"rxode2 ODE solving syntax","text":"commented example quickly show capabilities rxode2 syntax.","code":""},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"example","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Example","title":"rxode2 ODE solving syntax","text":"","code":"f <- function() { ini({ }) model({ # An rxode2 model specification (this line is a comment). if(comed==0) { # concomitant medication (con-med)? F <- 1.0 # full bioavailability w.o. con-med } else { F <- 0.80 # 20% reduced bioavailability } C2 <- centr/V2 # concentration in the central compartment C3 <- peri/V3 # concentration in the peripheral compartment # ODE describing the PK and PD d/dt(depot) <- -KA*depot d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff eff(0) <- 1 }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-syntax.html","id":"interface-and-data-handling-between-r-and-the-generated-c-code","dir":"Articles","previous_headings":"Note on strings in rxode2","what":"Interface and data handling between R and the generated C code","title":"rxode2 ODE solving syntax","text":"Users specify variables dynamic system’s state variables via d/dt(identifier) operator part model specification, model parameters via params= argument rxode2 solve() method: values variables pre-specified time points saved model fitting/integration returned part fitted values (see function et(), define set time points capture values variables) returned part modeling output. ODE specification mini-language parsed help open source tool DParser, Plevyak (2015).","code":"m1 <- rxode2(model = ode, modName = \"m1\") # model parameters -- a named vector is required theta <- c(KA=0.29, CL=18.6, V2=40.2, Q=10.5, V3=297, Kin=1, Kout=1, EC50=200) # state variables and their amounts at time 0 (the use of names is # encouraged, but not required) inits <- c(depot=0, centr=0, peri=0, eff=1) # qd1 is an eventTable specification with a set of dosing and sampling # records (code not shown here) solve(theta, event = qd1, inits = inits)"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-tutorials.html","id":"interactive-tutorials","dir":"Articles","previous_headings":"","what":"Interactive tutorials","title":"Interactive Tutorials","text":"rxode2 comes interactive tutorials can run R session; built Rstudio 1.3 can run R session :","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` ## rxode2 Syntax learnr::run_tutorial(\"rxode2-00-syntax\", \"rxode2\") ## rxode2 event tables learnr::run_tutorial(\"rxode2-00-events\", \"rxode2\")"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"creating-a-2-compartment-model-in-rxode2","dir":"Articles","previous_headings":"","what":"Creating a 2-compartment model in rxode2","title":"Weight Based Dosing in rxode2","text":"","code":"library(rxode2) #> rxode2 3.0.2.9000 using 2 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` ## Note the time covariate is not included in the simulation m1 <- function() { model({ CL ~ (1-0.2*SEX)*(0.807+0.00514*(CRCL-91.2))*exp(eta.cl) V1 ~ 4.8*exp(eta.v1) Q ~ (3.46+0.0593*(WT-75.1))*exp(eta.q); V2 ~ 1.93*(3.13+0.0458*(WT-75.1))*exp(eta.v2) A1 ~ centr; A2 ~ peri; d/dt(centr) <- - A1*(CL/V1 + Q/V1) + A2*Q/V2; d/dt(peri) <- A1*Q/V1 - A2*Q/V2; DV = centr / V1 * (1 + prop.err) }) }"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"simulating-covariates","dir":"Articles","previous_headings":"","what":"Simulating Covariates","title":"Weight Based Dosing in rxode2","text":"simulation correlates age, sex, weight. Since using weight based dosing, needs simulated first","code":"set.seed(42) rxSetSeed(42) library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union nsub=30 # Simulate Weight based on age and gender AGE<-round(runif(nsub,min=18,max=70)) SEX<-round(runif(nsub,min=0,max=1)) HTm<-round(rnorm(nsub,176.3,0.17*sqrt(4482)),digits=1) HTf<-round(rnorm(nsub,162.2,0.16*sqrt(4857)),digits=1) WTm<-round(exp(3.28+1.92*log(HTm/100))*exp(rnorm(nsub,0,0.14)),digits=1) WTf<-round(exp(3.49+1.45*log(HTf/100))*exp(rnorm(nsub,0,0.17)),digits=1) WT<-ifelse(SEX==1,WTf,WTm) CRCL<-round(runif(nsub,30,140)) ## id is in lower case to match the event table cov.df <- tibble(id=seq_along(AGE), AGE=AGE, SEX=SEX, WT=WT, CRCL=CRCL) print(cov.df) #> # A tibble: 30 x 5 #> id AGE SEX WT CRCL #> #> 1 1 66 1 49.4 83 #> 2 2 67 1 52.5 79 #> 3 3 33 0 97.9 37 #> 4 4 61 1 63.8 66 #> 5 5 51 0 71.8 127 #> 6 6 45 1 69.6 132 #> 7 7 56 0 61 73 #> 8 8 25 0 57.7 47 #> 9 9 52 1 58.7 65 #> 10 10 55 1 73.1 64 #> # i 20 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"creating-weight-based-event-table","dir":"Articles","previous_headings":"","what":"Creating weight based event table","title":"Weight Based Dosing in rxode2","text":"","code":"s<-c(0,0.25,0.5,0.75,1,1.5,seq(2,24,by=1)) s <- lapply(s, function(x){.x <- 0.1 * x; c(x - .x, x + .x)}) e <- et() %>% ## Specify the id and weight based dosing from covariate data.frame ## This requires rxode2 XXX et(id=cov.df$id, amt=6*cov.df$WT, rate=6 * cov.df$WT) %>% ## Sampling is added for each ID et(s) %>% as.data.frame %>% ## Merge the event table with the covarite information merge(cov.df, by=\"id\") %>% as_tibble e #> # A tibble: 900 x 12 #> id low time high cmt amt rate evid AGE SEX WT CRCL #> #> 1 1 0 0 0 (obs) NA NA 0 66 1 49.4 83 #> 2 1 NA 0 NA (default) 296. 296. 1 66 1 49.4 83 #> 3 1 0.225 0.246 0.275 (obs) NA NA 0 66 1 49.4 83 #> 4 1 0.45 0.516 0.55 (obs) NA NA 0 66 1 49.4 83 #> 5 1 0.675 0.729 0.825 (obs) NA NA 0 66 1 49.4 83 #> 6 1 0.9 0.921 1.1 (obs) NA NA 0 66 1 49.4 83 #> 7 1 1.35 1.42 1.65 (obs) NA NA 0 66 1 49.4 83 #> 8 1 1.8 1.82 2.2 (obs) NA NA 0 66 1 49.4 83 #> 9 1 2.7 2.97 3.3 (obs) NA NA 0 66 1 49.4 83 #> 10 1 3.6 3.87 4.4 (obs) NA NA 0 66 1 49.4 83 #> # i 890 more rows"},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"solving-daptomycin-simulation","dir":"Articles","previous_headings":"","what":"Solving Daptomycin simulation","title":"Weight Based Dosing in rxode2","text":"","code":"data <- rxSolve(m1, e, ## Lotri uses lower-triangular matrix rep. for named matrix omega=lotri(eta.cl ~ .306, eta.q ~0.0652, eta.v1 ~.567, eta.v2 ~ .191), sigma=lotri(prop.err ~ 0.15), addDosing = TRUE, addCov = TRUE) #> i parameter labels from comments are typically ignored in non-interactive mode #> i Need to run with the source intact to parse comments #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ print(data) #> -- Solved rxode2 object -- #> -- Parameters ($params): -- #> # A tibble: 30 x 5 #> id eta.cl eta.v1 eta.q eta.v2 #> #> 1 1 0.343 -1.25 -0.0936 -0.253 #> 2 2 0.444 -0.0581 0.187 0.233 #> 3 3 0.142 0.203 0.0617 1.03 #> 4 4 0.274 -0.733 -0.0000116 -0.321 #> 5 5 0.505 -0.104 -0.406 -0.518 #> 6 6 0.472 1.48 -0.537 0.210 #> 7 7 0.156 -0.0295 0.112 -0.226 #> 8 8 -0.747 0.519 -0.347 0.476 #> 9 9 0.326 -0.373 0.340 0.470 #> 10 10 0.428 -1.28 0.131 -0.0240 #> # i 20 more rows #> -- Initial Conditions ($inits): -- #> centr peri #> 0 0 #> -- First part of data (object): -- #> # A tibble: 900 x 12 #> id evid cmt amt rate time DV centr peri SEX WT CRCL #> #> 1 1 1 1 296. 296. 0 0 0 0 1 49.4 83 #> 2 1 0 NA NA NA 0 0 0 0 1 49.4 83 #> 3 1 0 NA NA NA 0.246 41.3 58.7 9.45 1 49.4 83 #> 4 1 0 NA NA NA 0.516 31.0 100. 34.0 1 49.4 83 #> 5 1 0 NA NA NA 0.729 72.2 124. 58.9 1 49.4 83 #> 6 1 0 NA NA NA 0.921 82.0 140. 83.1 1 49.4 83 #> # i 894 more rows plot(data, log=\"y\") #> Warning in transformation$transform(x): NaNs produced #> Warning in ggplot2::scale_y_log10(..., breaks = breaks, minor_breaks = #> minor_breaks, : log-10 transformation introduced infinite #> values."},{"path":"https://nlmixr2.github.io/rxode2/articles/rxode2-wt.html","id":"daptomycin-reference","dir":"Articles","previous_headings":"","what":"Daptomycin Reference","title":"Weight Based Dosing in rxode2","text":"weight-based simulation adapted Daptomycin article : Dvorchik B, Arbeit RD, Chung J, Liu S, Knebel W, Kastrissios H. Population pharmacokinetics daptomycin. Antimicrob Agents Che mother 2004; 48: 2799-2807. doi:(10.1128/AAC.48.8.2799-2807.2004)[https://dx.doi.org/10.1128%2FAAC.48.8.2799-2807.2004] simulation example made available work Sherwin Sy modifications Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors","text":"Matthew L. Fidler (core team/developer/manual) Melissa Hallow (tutorial writer) Wenping Wang (core team/developer)","code":""},{"path":"https://nlmixr2.github.io/rxode2/authors.html","id":"contributors","dir":"","previous_headings":"","what":"Contributors","title":"Authors","text":"Zufar Mulyukov – Wrote initial version rxShiny() modifications Matthew Fidler Alan Hindmarsh – Lsoda author Awad H. Al-Mohy – Al-Mohy matrix exponential author Ernst Hairer – dop853 author Gerhard Wanner – dop853 author Goro Fuji – Timsort author Hadley Wickham – Author original findLhs RxODE, also original author .s3register (used permission anyone, changed Matthew Fidler) Jack Dongarra – LApack author Linda Petzold – LSODA Martin Maechler – expm author, used routines inductive linearization Morwenn – Timsort author Nicholas J. Higham – Author Al-mohy matrix exponential Roger B. Sidje – expokit matrix exponential author Simon Frost – thread safe C implementation liblsoda Kevin Ushey – Original author fast factor, modified Matthew Filder Yu Feng – thread safe liblsoda Cleve Moler – LApack author David Cooley – Author fast_factor modified now used RxODE quickly create factors IDs without sorting like R Drew Schmidt – Drew Schmidt author edits exponential matrix utility taken R package expm Matt Dowle & Arun Srinivasan – data.table authors openMp framework based upon","code":""},{"path":"https://nlmixr2.github.io/rxode2/authors.html","id":"rxode-acknowledgments","dir":"","previous_headings":"","what":"RxODE acknowledgments:","title":"Authors","text":"Sherwin Sy – Weight based dosing example Justin Wilkins – Documentation updates, logo testing Emma Schwager – R IJK distribution author J Coligne – dop853 fortran author Bill Denney – Documentation updates, manual minor bug fixes Tim Waterhouse – Fixed one bug mac working directories Richard Upton – Helped solving ADVAN linCmt() solutions Dirk Eddelbuettel – Made fixes Rcpp changes require R strict headers Ross Ihaka – R author Robert Gentleman – R author R core team – R authors","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"overview","dir":"","previous_headings":"","what":"Overview","title":"Facilities for Simulating from ODE-Based Models","text":"rxode2 R package solving simulating ode-based models. models convert rxode2 mini-language C create compiled dll fast solving. ODE solving using rxode2 key parts: rxode2() creates C code fast ODE solving based simple syntax related Leibnitz notation. NONMEM deSolve compatible data frame, created et() eventTable() easy simulation events data frame can augmented adding time-varying adding individual covariates (iCov= needed) multiple subject data, may parallelized. single subject output data frame adaptive Covariances metrics uncertanty can used simulate solving","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Facilities for Simulating from ODE-Based Models","text":"can install released version rxode2 CRAN : fastest way install development version rxode2 use r-universe service. service compiles binaries development version MacOS Windows don’t wait package compilation: doesn’t work install development version rxode2 build models rxode2, need working c compiler. use parallel threaded solving rxode2, c compiler needs support open-mp. can check see R working c compiler can check : toolchain, can set described platform information :","code":"install.packages(\"rxode2\") install.packages(c(\"dparser\", \"rxode2ll\", \"rxode2\"), repos=c(nlmixr2=\"https://nlmixr2.r-universe.dev\", CRAN=\"https://cloud.r-project.org\")) devtools::install_github(\"nlmixr2/rxode2ll\") devtools::install_github(\"nlmixr2/rxode2\") ## install.packages(\"pkgbuild\") pkgbuild::has_build_tools(debug = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"windows","dir":"","previous_headings":"Installation","what":"Windows","title":"Facilities for Simulating from ODE-Based Models","text":"windows may simply use installr install rtools: Alternatively can download install rtools directly.","code":"install.packages(\"installr\") library(installr) install.rtools()"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"mac-osx","dir":"","previous_headings":"Installation","what":"Mac OSX","title":"Facilities for Simulating from ODE-Based Models","text":"get speed need OpenMP enabled compile rxode2 compiler. various options date discussion likely data.table installation FAQ MacOS. last thing keep mind rxode2 uses code similar original lsoda requires gfortran compiler setup well OpenMP compilers. going using rxode2 nlmixr together older mac computer, suggest trying following: crashes R session binary work Mac machine. able run nlmixr, need compile package manually. proceed assuming homebrew installed system. system terminal need install dependencies compile symengine: installing dependencies, need re-install symengine:","code":"library(symengine) brew install cmake gmp mpfr libmpc install.packages(\"symengine\", type=\"source\") library(symengine)"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"linux","dir":"","previous_headings":"Installation","what":"Linux","title":"Facilities for Simulating from ODE-Based Models","text":"install linux make sure install gcc (openmp support) gfortran using distribution’s package manager. also install system dependencies like udunits symengine dependencies complete installation work linux. also done system packages package manager add appropriate repositories. point r2u project.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"r-versions-40-and-41","dir":"","previous_headings":"Installation","what":"R versions 4.0 and 4.1","title":"Facilities for Simulating from ODE-Based Models","text":"installation R versions 4.0.x 4.1.x, please see instructions install symengine nlmixr2 installation instructions: https://github.com/nlmixr2/nlmixr2#r-package-installation","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"development-version","dir":"","previous_headings":"","what":"Development version","title":"Facilities for Simulating from ODE-Based Models","text":"Since development version rxode2 uses StanHeaders, need make sure compiler setup support C++14, described rstan setup page. R 4.0, believe requires modifying windows toolchain longer (much easier setup). C++ toolchain setup appropriately, can install development version GitHub :","code":"# install.packages(\"devtools\") devtools::install_github(\"nlmixr2/rxode2ll\") devtools::install_github(\"nlmixr2/rxode2\")"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"illustrated-example","dir":"","previous_headings":"","what":"Illustrated Example","title":"Facilities for Simulating from ODE-Based Models","text":"model equations can specified text string, model file R expression. differential algebraic equations permitted. Differential equations specified d/dt(var_name) =. equation can separated semicolon. load rxode2 package compile model: Model parameters may specified ini({}) model block, initial conditions can specified within model cmt(0)= X, like model eff(0) <- 1. may also specify subject variability initial conditions residual error components just like nlmixr2. allows single interface nlmixr2/rxode2 models. Also note, classic rxode2 interface still works just like past (don’t worry breaking code time). fact, can get classic rxode2 model $simulationModel ui object:","code":"library(rxode2) #> rxode2 2.1.3.9000 using 8 threads (see ?getRxThreads) #> no cache: create with `rxCreateCache()` mod1 <- function() { ini({ # central KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 # peripheral Q=1.05E+01 V3=2.97E+02 # effects Kin=1 Kout=1 EC50=200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 eff(0) <- 1 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } mod1 <- mod1() # create the ui object (can also use `rxode2(mod1)`) mod1 summary(mod1$simulationModel)"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"specify-dosing-and-sampling-in-rxode2","dir":"","previous_headings":"","what":"Specify Dosing and sampling in rxode2","title":"Facilities for Simulating from ODE-Based Models","text":"rxode2 provides simple flexible way specify dosing sampling functions generate event table. First, empty event table generated “et()” function. interface similar NONMEM event tables: can see code, can dose compartment named rxode2 model. slight deviation NONMEM can reduce need compartment renumbering. events can also combined expanded (multi-subject events complex regimens) rbind, c, seq, rep. information creating complex dosing regimens using rxode2 see rxode2 events vignette.","code":"ev <- et(amountUnits=\"mg\", timeUnits=\"hours\") %>% et(amt=10000, addl=9,ii=12,cmt=\"depot\") %>% et(time=120, amt=2000, addl=4, ii=14, cmt=\"depot\") %>% et(0:240) # Add sampling"},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"solving-odes","dir":"","previous_headings":"","what":"Solving ODEs","title":"Facilities for Simulating from ODE-Based Models","text":"ODE can now solved using rxSolve: returns modified data frame. can see compartment values plot : , Note labels automatically labeled units initial event table. rxode2 extracts units label plot (present).","code":"x <- mod1 %>% rxSolve(ev) #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ x #> ── Solved rxode2 object ── #> ── Parameters (x$params): ── #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> ── Initial Conditions (x$inits): ── #> depot centr peri eff #> 0 0 0 1 #> ── First part of data (object): ── #> # A tibble: 241 × 7 #> time C2 C3 depot centr peri eff #> [h] #> 1 0 0 0 10000 0 0 1 #> 2 1 44.4 0.920 7453. 1784. 273. 1.08 #> 3 2 54.9 2.67 5554. 2206. 794. 1.18 #> 4 3 51.9 4.46 4140. 2087. 1324. 1.23 #> 5 4 44.5 5.98 3085. 1789. 1776. 1.23 #> 6 5 36.5 7.18 2299. 1467. 2132. 1.21 #> # ℹ 235 more rows library(ggplot2) plot(x,C2) + ylab(\"Central Concentration\") plot(x,eff) + ylab(\"Effect\")"},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"ode-solving","dir":"","previous_headings":"","what":"ODE solving","title":"Facilities for Simulating from ODE-Based Models","text":"brief comparison pharmacometric ODE solving R packages rxode2. several R packages differential equations. popular deSolve. However pharmacometrics-specific ODE solving, 2 packages rxode2 released CRAN. uses compiled code faster ODE solving. mrgsolve, uses C++ lsoda solver solve ODE systems. user required write hybrid R/C++ code create mrgsolve model translated C++ solving. contrast, rxode2 R-like mini-language parsed C code solves ODE system. Unlike rxode2, mrgsolve currently support symbolic manipulation ODE systems, like automatic Jacobian calculation forward sensitivity calculation (rxode2 currently supports basis nlmixr2’s FOCEi algorithm) dMod, uses unique syntax create “reactions”. reactions create underlying ODEs created c code compiled deSolve model. contrast rxode2 defines ODE systems lower level. rxode2’s parsing mini-language comes C, whereas dMod’s parsing comes R. Like rxode2, dMod supports symbolic manipulation ODE systems calculates forward sensitivities adjoint sensitivities systems. Unlike rxode2, dMod thread-safe since deSolve yet thread-safe. PKPDsim defines models R-like syntax converts system compiled code. Like mrgsolve, PKPDsim currently support symbolic manipulation ODE systems. PKPDsim thread-safe. open pharmacometrics open source community fairly friendly, rxode2 maintainers positive interactions ODE-solving pharmacometric projects listed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"pk-solved-systems","dir":"","previous_headings":"","what":"PK Solved systems","title":"Facilities for Simulating from ODE-Based Models","text":"rxode2 supports 1-3 compartment models gradients (using stan math’s auto-differentiation). currently uses equations PKADVAN allow time-varying covariates. rxode2 can mix ODEs solved systems.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"the-following-packages-for-solved-pk-systems-are-on-cran","dir":"","previous_headings":"PK Solved systems","what":"The following packages for solved PK systems are on CRAN","title":"Facilities for Simulating from ODE-Based Models","text":"mrgsolve currently 1-2 compartment (poly-exponential models) models built-. solved systems ODEs currently mixed. pmxTools currently 1-3 compartment (super-positioning) models built-. R-implementation. PKPDsim uses 1-3 “ADVAN” solutions using non-superpositioning. PKPDmodels one-compartment model gradients.","code":""},{"path":"https://nlmixr2.github.io/rxode2/index.html","id":"non-cran-libraries","dir":"","previous_headings":"PK Solved systems","what":"Non-CRAN libraries:","title":"Facilities for Simulating from ODE-Based Models","text":"PKADVAN Provides 1-3 compartment models using non-superpositioning. allows time-varying covariates.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Exponential Linear Unit (ELU) Activation Function — ELU","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"Exponential Linear Unit (ELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"","code":"ELU(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Exponential Linear Unit (ELU) Activation Function — ELU","text":"","code":"ELU(c(-1, 0, 1, 2), 2) #> [1] -1.264241 0.000000 1.000000 2.000000 # Can also be used in rxode2: x <- rxode2({ r=SELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> Warning: #> with negative times, compartments initialize at first negative observed time #> with positive times, compartments initialize at time zero #> use 'rxSetIni0(FALSE)' to initialize at first observed time #> this warning is displayed once per session #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -1.11 #> 2 0 0 #> 3 1 1.05 #> 4 2 2.10"},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":null,"dir":"Reference","previous_headings":"","what":"GELU activation function — GELU","title":"GELU activation function — GELU","text":"GELU activation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"GELU activation function — GELU","text":"","code":"GELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"GELU activation function — GELU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"GELU activation function — GELU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/GELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"GELU activation function — GELU","text":"","code":"GELU(c(-2, -1, 0, 1, 2)) #> [1] -0.04550026 -0.15865525 0.00000000 0.84134475 1.95449974 # you can use rxode2 as well r <- rxode2({ r = GELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ et <- et(c(-2, -1, 0, 1, 2)) rxSolve(r, et) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 5 × 2 #> time r #> #> 1 -2 -0.0455 #> 2 -1 -0.159 #> 3 0 0 #> 4 1 0.841 #> 5 2 1.95"},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Parametric ReLU Activation Function — PReLU","title":"Parametric ReLU Activation Function — PReLU","text":"Parametric ReLU Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parametric ReLU Activation Function — PReLU","text":"","code":"PReLU(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parametric ReLU Activation Function — PReLU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parametric ReLU Activation Function — PReLU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parametric ReLU Activation Function — PReLU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/PReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Parametric ReLU Activation Function — PReLU","text":"","code":"PReLU(c(-1, 0, 1, 2), 2) #> [1] -2 0 1 2 # Can also be used in rxode2: x <- rxode2({ r=PReLU(time, 2) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -2 #> 2 0 0 #> 3 1 1 #> 4 2 2"},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Rectified Linear Unit (ReLU) Activation Function — ReLU","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"function applies Rectified Linear Unit (ReLU) activation function input numeric vector. ReLU function defined positive part argument: \\(f(x) = max(0, x)\\).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"","code":"ReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rectified Linear Unit (ReLU) Activation Function — ReLU","text":"","code":"ReLU(c(-1, 0, 1, 2)) #> [1] 0 0 1 2 # Can also be used in rxode2: x <- rxode2({ r=ReLU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0 #> 2 0 0 #> 3 1 1 #> 4 2 2"},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"Scaled Exponential Linear Unit (SELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"","code":"SELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"numeric vector ReLU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/SELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Scaled Exponential Linear Unit (SELU) Activation Function — SELU","text":"","code":"SELU(c(-1, 0, 1, 2)) #> [1] -1.111331 0.000000 1.050701 2.101402 # Can also be used in rxode2: x <- rxode2({ r=SELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -1.11 #> 2 0 0 #> 3 1 1.05 #> 4 2 2.10"},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":null,"dir":"Reference","previous_headings":"","what":"Switch Activation Function — Swish","title":"Switch Activation Function — Swish","text":"switch activation function defined :","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Switch Activation Function — Swish","text":"","code":"Swish(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Switch Activation Function — Swish","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Switch Activation Function — Swish","text":"numeric vector ReLU function applied element x.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Switch Activation Function — Swish","text":"$$f(x) = x \\cdot \\text{sigmoid}(x)$$","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Switch Activation Function — Swish","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/Swish.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Switch Activation Function — Swish","text":"","code":"Swish(c(-1, 0, 1, 2)) #> [1] -0.2689414 0.0000000 0.7310586 1.7615942 # Can also be used in rxode2: x <- rxode2({ r<- Swish(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 -0.269 #> 2 0 0 #> 3 1 0.731 #> 4 2 1.76"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":null,"dir":"Reference","previous_headings":"","what":"Add dosing to eventTable — add.dosing","title":"Add dosing to eventTable — add.dosing","text":"adds dosing event event table. provided piping syntax magrittr. can also accessed eventTable$add.dosing(...)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add dosing to eventTable — add.dosing","text":"","code":"add.dosing( eventTable, dose, nbr.doses = 1L, dosing.interval = 24, dosing.to = 1L, rate = NULL, amount.units = NA_character_, start.time = 0, do.sampling = FALSE, time.units = NA_character_, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add dosing to eventTable — add.dosing","text":"eventTable eventTable object; accessed object eventTable$ dose numeric scalar, dose amount amount.units; nbr.doses integer, number doses; dosing.interval required numeric scalar, time doses time.units, defaults 24 time.units=\"hours\"; dosing.integer, compartment dose goes (first compartment default); rate infusions, rate infusion (default NULL, bolus dosing; amount.units optional string indicating dosing units. Defaults NA indicate per original EventTable definition. start.time required dosing start time; .sampling logical, observation sampling records added dosing times? Defaults FALSE. time.units optional string indicating time units. Defaults \"hours\" indicate per original EventTable definition. ... parameters passed et().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add dosing to eventTable — add.dosing","text":"eventTable updated dosing (note event table updated anyway)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add dosing to eventTable — add.dosing","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add dosing to eventTable — add.dosing","text":"Matthew L. Fidler Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.dosing.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add dosing to eventTable — add.dosing","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":null,"dir":"Reference","previous_headings":"","what":"Add sampling to eventTable — add.sampling","title":"Add sampling to eventTable — add.sampling","text":"adds dosing event event table. provided piping syntax magrittr. can also accessed eventTable$add.sampling()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add sampling to eventTable — add.sampling","text":"","code":"add.sampling(eventTable, time, time.units = NA)"},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add sampling to eventTable — add.sampling","text":"eventTable eventTable object. accessed object eventTable$ time vector time values (time.units). time.units optional string specifying time units. Defaults units specified EventTable initialized.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add sampling to eventTable — add.sampling","text":"eventTable updated sampling. (Note event table updated even reassign eventTable)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add sampling to eventTable — add.sampling","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add sampling to eventTable — add.sampling","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/add.sampling.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add sampling to eventTable — add.sampling","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":null,"dir":"Reference","previous_headings":"","what":"Coerce object to data.frame — as.et","title":"Coerce object to data.frame — as.et","text":"Coerce object data.frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Coerce object to data.frame — as.et","text":"","code":"as.et(x, ...) # Default S3 method as.et(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Coerce object to data.frame — as.et","text":"x Object coerce et. ... parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.et.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Coerce object to data.frame — as.et","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":null,"dir":"Reference","previous_headings":"","what":"Turn into an ini block for initialization — as.ini","title":"Turn into an ini block for initialization — as.ini","text":"Turn ini block initialization","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Turn into an ini block for initialization — as.ini","text":"","code":"as.ini(x) # S3 method for class 'character' as.ini(x) # S3 method for class 'data.frame' as.ini(x) # S3 method for class 'call' as.ini(x) # S3 method for class 'lotriFix' as.ini(x) # S3 method for class 'matrix' as.ini(x) # Default S3 method as.ini(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Turn into an ini block for initialization — as.ini","text":"x Item convert rxode2/nlmixr2 ui ini expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Turn into an ini block for initialization — as.ini","text":"rxode2 ini expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Turn into an ini block for initialization — as.ini","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.ini.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Turn into an ini block for initialization — as.ini","text":"","code":"ini <- quote(ini({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 })) as.ini(ini) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) l <- quote(lotri({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 })) as.ini(l) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) m <- lotri({ eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 }) as.ini(m) #> ini({ #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) one.compartment <- function() { ini({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } as.ini(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ui <- one.compartment() as.ini(ui) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ui$iniDf #> ntheta neta1 neta2 name lower est upper fix label backTransform #> 1 1 NA NA tka -Inf 0.4510756 Inf FALSE #> 2 2 NA NA tcl -Inf 1.0006319 Inf FALSE #> 3 3 NA NA tv -Inf 3.4499875 Inf FALSE #> 4 4 NA NA add.sd 0 0.7000000 Inf FALSE #> 5 NA 1 1 eta.ka -Inf 0.6000000 Inf FALSE #> 6 NA 2 2 eta.cl -Inf 0.3000000 Inf FALSE #> 7 NA 3 3 eta.v -Inf 0.1000000 Inf FALSE #> condition err #> 1 #> 2 #> 3 #> 4 cp add #> 5 id #> 6 id #> 7 id as.ini(ui$iniDf) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ini <- c(\"ini({\", \"tka <- log(1.57)\", \"tcl <- log(2.72)\", \"tv <- log(31.5)\", \"eta.ka ~ 0.6\", \"eta.cl ~ 0.3\", \"eta.v ~ 0.1\", \"add.sd <- 0.7\", \"})\") as.ini(ini) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) ini <- paste(ini, collapse=\"\\n\") as.ini(ini) #> ini({ #> tka <- 0.451075619360217 #> tcl <- 1.00063188030791 #> tv <- 3.44998754583159 #> add.sd <- 0.7 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> })"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":null,"dir":"Reference","previous_headings":"","what":"Turn into a model expression — as.model","title":"Turn into a model expression — as.model","text":"Turn model expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Turn into a model expression — as.model","text":"","code":"as.model(x) # S3 method for class 'character' as.model(x) # S3 method for class 'call' as.model(x) # S3 method for class 'list' as.model(x) # Default S3 method as.model(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Turn into a model expression — as.model","text":"x item convert model({}) expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Turn into a model expression — as.model","text":"model expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Turn into a model expression — as.model","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.model.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Turn into a model expression — as.model","text":"","code":"model <- quote(model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) })) as.model(model) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) one.compartment <- function() { ini({ tka <- log(1.57) tcl <- log(2.72) tv <- log(31.5) eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } as.model(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) ui <- one.compartment() as.model(ui) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) model <- c(\"model({\", \"ka <- exp(tka + eta.ka)\", \"cl <- exp(tcl + eta.cl)\", \"v <- exp(tv + eta.v)\", \"d/dt(depot) = -ka * depot\", \"d/dt(center) = ka * depot - cl / v * center\", \"cp = center / v\", \"cp ~ add(add.sd)\", \"})\") as.model(model) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) model <- paste(model, collapse=\"\\n\") as.model(model) #> model({ #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> })"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":null,"dir":"Reference","previous_headings":"","what":"As rxode2 ui — as.rxUi","title":"As rxode2 ui — as.rxUi","text":"rxode2 ui","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"As rxode2 ui — as.rxUi","text":"","code":"as.rxUi(x) # S3 method for class 'rxode2' as.rxUi(x) # S3 method for class 'rxode2tos' as.rxUi(x) # S3 method for class 'rxModelVars' as.rxUi(x) # S3 method for class '`function`' as.rxUi(x) # S3 method for class 'rxUi' as.rxUi(x) # Default S3 method as.rxUi(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"As rxode2 ui — as.rxUi","text":"x Object convert rxUi object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"As rxode2 ui — as.rxUi","text":"rxUi object (error converted)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"As rxode2 ui — as.rxUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/as.rxUi.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"As rxode2 ui — as.rxUi","text":"","code":"mod1 <- function() { ini({ # central KA=2.94E-01 CL=1.86E+01 V2=4.02E+01 # peripheral Q=1.05E+01 V3=2.97E+02 # effects Kin=1 Kout=1 EC50=200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 eff(0) <- 1 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } as.rxUi(mod1) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 4-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 centr #> 3 3 peri #> 4 4 eff #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> KA <- 0.294 #> CL <- 18.6 #> V2 <- 40.2 #> Q <- 10.5 #> V3 <- 297 #> Kin <- 1 #> Kout <- 1 #> EC50 <- 200 #> }) #> model({ #> C2 <- centr/V2 #> C3 <- peri/V3 #> d/dt(depot) <- -KA * depot #> d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) <- Q * C2 - Q * C3 #> eff(0) <- 1 #> d/dt(eff) <- Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":null,"dir":"Reference","previous_headings":"","what":"Verify that the compartment exists in a model — assertCompartmentExists","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"Verify compartment exists model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"","code":"assertCompartmentExists(ui, x) testCompartmentExists(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"ui model test x value test (can vector strings)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"value compartment exists; vector returns first item matches","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"testCompartmentExists(): Test compartment exists","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentExists.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Verify that the compartment exists in a model — assertCompartmentExists","text":"Matthew Fidler & Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":null,"dir":"Reference","previous_headings":"","what":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"Verify value valid nlmixr2 compartment name","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"","code":"assertCompartmentName(x) assertVariableName(x) assertParameterValue(x) assertExists(ui, x) testExists(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"x value test ui needed, rxode2/nlmixr2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"value error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"assertVariableName(): Verify value valid nlmixr2 variable name assertParameterValue(): Verify value valid nlmixr2 parameter value assertExists(): Assert compartment/variable exists testExists(): Test compartment/variable exists","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentName.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Verify that a value is a valid nlmixr2 compartment name — assertCompartmentName","text":"Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":null,"dir":"Reference","previous_headings":"","what":"Verify that a compartment would be new to the model — assertCompartmentNew","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"Verify compartment new model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"","code":"assertCompartmentNew(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"ui model test model paramet exists x value test","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"value error","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertCompartmentNew.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Verify that a compartment would be new to the model — assertCompartmentNew","text":"Matthew Fidler & Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":null,"dir":"Reference","previous_headings":"","what":"Assert properties of the rxUi models — assertRxUi","title":"Assert properties of the rxUi models — assertRxUi","text":"Assert properties rxUi models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assert properties of the rxUi models — assertRxUi","text":"","code":"assertRxUi(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiPrediction(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiSingleEndpoint(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiTransformNormal(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiNormal(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiMuRefOnly(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiEstimatedResiduals(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiPopulationOnly(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiMixedOnly(ui, extra = \"\", .var.name = .vname(ui)) assertRxUiRandomOnIdOnly(ui, extra = \"\", .var.name = .vname(ui))"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assert properties of the rxUi models — assertRxUi","text":"ui Model check extra Extra text append error message (like \"focei\") .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assert properties of the rxUi models — assertRxUi","text":"rxUi model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Assert properties of the rxUi models — assertRxUi","text":"functions different types assertions assertRxUi – Make sure proper rxode2 model (throw error) assertRxUiSingleEndpoint – Make sure rxode2 model single endpoint model (throw error) assertRxUiTransformNormal – Make sure model residual distribution normal transformably normal assertRxUiNormal – Make sure model residual distribution normal assertRxUiEstimatedResiduals – Make sure residual error parameters estimated (modeled). assertRxUiPopulationOnly – Make sure model population model (mixed effects) assertRxUiMixedOnly – Make sure model mixed effect model (population effect, ) assertRxUiPrediction – Make sure model predictions assertRxUiMuRefOnly – Make sure parameters mu-referenced assertRxUiRandomOnIdOnly – Make sure random effects ID level","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assert properties of the rxUi models — assertRxUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertRxUi.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Assert properties of the rxUi models — assertRxUi","text":"","code":"# \\donttest{ one.cmt <- function() { ini({ tka <- 0.45; label(\"Ka\") tcl <- log(c(0, 2.7, 100)); label(\"Cl\") tv <- 3.45; label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } assertRxUi(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # assertRxUi(rnorm) # will fail assertRxUiSingleEndpoint(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":null,"dir":"Reference","previous_headings":"","what":"Assert a variable exists in the model — assertVariableExists","title":"Assert a variable exists in the model — assertVariableExists","text":"Assert variable exists model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assert a variable exists in the model — assertVariableExists","text":"","code":"assertVariableExists(ui, x) testVariableExists(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assert a variable exists in the model — assertVariableExists","text":"ui rxode2 ui model x x variable exist model. vector variable check see exists, must valid nlmixr2 variable names","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assert a variable exists in the model — assertVariableExists","text":"variable matches, case multiple variables, first matches. nothing matches return error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Assert a variable exists in the model — assertVariableExists","text":"testVariableExists(): Test variable exists","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableExists.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assert a variable exists in the model — assertVariableExists","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":null,"dir":"Reference","previous_headings":"","what":"Assert a variable would be new to the model — assertVariableNew","title":"Assert a variable would be new to the model — assertVariableNew","text":"Assert variable new model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assert a variable would be new to the model — assertVariableNew","text":"","code":"assertVariableNew(ui, x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assert a variable would be new to the model — assertVariableNew","text":"ui rxode2 ui model x variable x variable new model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assert a variable would be new to the model — assertVariableNew","text":"nothing, error x new","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/assertVariableNew.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assert a variable would be new to the model — assertVariableNew","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"meant perform way quantile() can drop replacement code using quantile() using distributional assumptions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"","code":"binomProbs(x, ...) # Default S3 method binomProbs( x, probs = c(0.025, 0.05, 0.5, 0.95, 0.975), na.rm = FALSE, names = TRUE, onlyProbs = TRUE, n = 0L, m = 0L, pred = FALSE, piMethod = c(\"lim\"), M = 5e+05, tol = .Machine$double.eps^0.25, ciMethod = c(\"wilson\", \"wilsonCorrect\", \"agrestiCoull\", \"wald\", \"wc\", \"ac\"), ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"x numeric vector whose mean probability based confidence values wanted, NA NaN values allowed numeric vectors unless na.rm TRUE. ... Arguments passed default method, allows many different methods applied. probs numeric vector probabilities values interval 0 1, inclusive. 0, represents maximum observed, 1, represents maximum observed. 0.5 represents expected probability (mean). na.rm logical; true, NA NaN's removed x quantiles computed. names logical; true, result names attribute. onlyProbs logical; true, return probability based confidence interval/prediction interval estimates, otherwise return extra statistics. n integer/integerish; n used calculate prediction confidence interval. n=0 (default) use number non-NA observations. calculating prediction interval, represents number observations used input (\"true\") distribution. m integer. using prediction interval represents number samples observed future prediction interval. pred Use prediction interval instead confidence interval. default FALSE. piMethod gives prediction interval method (currently lim) Lu 2020 M number simulations run LIM PI. tol tolerance root finding LIM prediction interval ciMethod gives method calculating confidence interval. Can : \"argestiCoull\" \"ac\" – Agresti-Coull method. 95\\ interval, method use concept \"adding 2 successes 2 failures,\" rather uses formulas explicitly described following link: https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Agresti-Coull_Interval. \"wilson\" – Wilson Method \"wilsonCorrect\" \"wc\" – Wilson method continuity correction \"wald\" – Wald confidence interval standard z approximation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"default return probabilities names (named) points expected distribution located given sampling mean standard deviation. onlyProbs=FALSE prepend mean, variance, standard deviation, minimum, maximum number non-NA observations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"used confidence intervals rxode2 solved objects using confint(mean=\"binom\")","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"Newcombe, R. G. (1998). \"Two-sided confidence intervals single proportion: comparison seven methods\". Statistics Medicine. 17 (8): 857–872. doi:10.1002/(SICI)1097-0258(19980430)17:8<857::AID-SIM777>3.0.CO;2-E. PMID 9595616. Hezhi Lu, Hua Jin, new prediction interval binomial random variable based inferential models, Journal Statistical Planning Inference, Volume 205, 2020, Pages 156-174, ISSN 0378-3758, https://doi.org/10.1016/j.jspi.2019.07.001.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/binomProbs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate expected confidence bands with binomial sampling distribution — binomProbs","text":"","code":"x<- rbinom(7001, p=0.375, size=1) binomProbs(x) #> 2.5% 5% 50% 95% 97.5% #> 0.3723355 0.3741468 0.3836595 0.3932621 0.3951111 # you can also use the prediction interval # \\donttest{ binomProbs(x, pred=TRUE) #> 2.5% 5% 50% 95% 97.5% #> 0.3675189 0.3702328 0.3836595 0.3972290 0.3998000 # } # Can get some extra statistics if you request onlyProbs=FALSE binomProbs(x, onlyProbs=FALSE) #> mean var sd n 2.5% 5% #> 0.3836595 0.2364649 0.4862765 7001.0000000 0.3723355 0.3741468 #> 50% 95% 97.5% #> 0.3836595 0.3932621 0.3951111 x[2] <- NA_real_ binomProbs(x, onlyProbs=FALSE) #> mean var sd n 2.5% 5% 50% 95% 97.5% #> NA NA NA NA NA NA NA NA NA binomProbs(x, na.rm=TRUE) #> 2.5% 5% 50% 95% 97.5% #> 0.3723892 0.3742006 0.3837143 0.3933178 0.3951670"},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":null,"dir":"Reference","previous_headings":"","what":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"boxCox/yeoJohnson inverse boxCox/yeoJohnson functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"","code":"boxCox(x, lambda = 1) boxCoxInv(x, lambda = 1) yeoJohnson(x, lambda = 1) yeoJohnsonInv(x, lambda = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"x input value(s) transform lambda lambda value transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"values boxCox boxCoxInv","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/boxCox.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"boxCox/yeoJohnson and inverse boxCox/yeoJohnson functions — boxCox","text":"","code":"boxCox(10, 0.5) #> [1] 4.324555 boxCoxInv(4.32, 0.5) #> [1] 9.9856 yeoJohnson(10, 0.5) #> [1] 4.63325 yeoJohnsonInv(4.32, 0.5) #> [1] 8.9856"},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the rxode2 coefficients — coef.rxode2","title":"Return the rxode2 coefficients — coef.rxode2","text":"returns parameters , state variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the rxode2 coefficients — coef.rxode2","text":"","code":"# S3 method for class 'rxode2' coef(object, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the rxode2 coefficients — coef.rxode2","text":"object rxode2 object ... ignored arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the rxode2 coefficients — coef.rxode2","text":"rxCoef object following params list strings parameters rxode2 object state list strings names state rxode2 object. ini model specified default values parameters. rxode2 referring rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/coef.rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the rxode2 coefficients — coef.rxode2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":null,"dir":"Reference","previous_headings":"","what":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"Note Inverse wishart rescaled match original scale covariance matrix.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"","code":"cvPost( nu, omega, n = 1L, omegaIsChol = FALSE, returnChol = FALSE, type = c(\"invWishart\", \"lkj\", \"separation\"), diagXformType = c(\"log\", \"identity\", \"variance\", \"nlmixrSqrt\", \"nlmixrLog\", \"nlmixrIdentity\") )"},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"nu Degrees Freedom (Number Observations) covariance matrix simulation. omega Either estimate covariance matrix estimated standard deviations matrix form row forming standard deviation simulated values n Number Matrices sample. default 1. useful omega matrix. Otherwise determined number rows input omega matrix standard deviations omegaIsChol indicator omega matrix Cholesky decomposition. used type=\"invWishart\" returnChol Return Cholesky decomposition covariance matrix sample. used type=\"invWishart\" type type covariance posterior simulated. can : invWishart posterior inverse wishart; allows correlations parameters modeled. uncertainty parameter captured degrees freedom parameter. lkj posterior separates standard deviation estimates (modeled outside provided omega argument) correlation estimates. correlation estimate simulated rLKJ1(). simulation uses relationship eta=(nu-1)/2. relationship based proof relationship restricted LKJ-distribution inverse wishart distribution (XXXXXX). correlation posterior calculated, estimated standard deviations combined simulated correlation matrix create covariance matrix. separation Like lkj option, separates estimation correlation standard deviation. Instead using LKJ distribution simulate correlation, simulates inverse wishart identity matrix converts result correlation matrix. correlation matrix used standard deviation calculate simulated covariance matrix. diagXformType Diagonal transformation type. : log standard deviations log transformed, actual standard deviations exp(omega) identity standard deviations transformed. standard deviations transformed; positive. variance variances specified omega matrix; transformed standard deviations. nlmixrSqrt standard deviations come nlmixr omega matrix diag(chol(inv(omega))) = x^2 nlmixrLog standard deviations come nlmixr omega matrix omega matrix diag(chol(solve(omega))) = exp(x) nlmixrIdentity standard deviations come nlmixr omega matrix omega matrix diag(chol(solve(omega))) = x nlmixr transformations make sense -diagonal correlations modeled.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"matrix (n=1) list matrices (n > 1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"covariance matrix 1x1 matrix, uses scaled inverse chi-squared equivalent Inverse Wishart distribution uni-directional case. general, separation strategy preferred diagonal matrices. dimension matrix 10, lkj numerically faster separation method. However, lkj method densities close zero (XXXX) dimension 10. case, though computationally expensive separation method performs better. matrices modeled covariances, easiest method use inverse Wishart allows simulation correlation matrices (XXXX). method well suited well behaved matrices, variance components low high. modeling nonlinear mixed effects modeling matrices high low variances considered sub-optimal describing system. rules mind, reasonable use inverse Wishart.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/cvPost.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Sample a covariance Matrix from the Posterior Inverse Wishart distribution. — cvPost","text":"Alvarez , Niemi J Simpson M. (2014) Bayesian Inference Covariance Matrix. Conference Applied Statistics Agriculture. Wang1 Z, Wu Y, Chu H. (2018) Equivalence LKJ distribution restricted Wishart distribution. [[1]] #> [,1] [,2] [,3] #> [1,] 96.862339 0.7748630 -4.626203 #> [2,] 0.774863 0.0283645 0.119055 #> [3,] -4.626203 0.1190550 4.094623 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.06218003 0.05815138 -0.5246680 #> [2,] 0.05815138 0.70904612 0.3915278 #> [3,] -0.52466798 0.39152780 7.9264641 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 0.5725945 -0.7039115 0.3184467 #> [2,] -0.7039115 11.3514944 -0.9360070 #> [3,] 0.3184467 -0.9360070 0.2958648 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 0.7659467 -2.803861 0.3011139 #> [2,] -2.8038607 44.273527 -9.4665546 #> [3,] 0.3011139 -9.466555 2.7453546 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 3.56762745 0.07176028 0.13656513 #> [2,] 0.07176028 0.42276523 -0.02050365 #> [3,] 0.13656513 -0.02050365 0.03225709 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 0.5663711 0.0340262 0.1454173 #> [2,] 0.0340262 0.5977762 0.3269646 #> [3,] 0.1454173 0.3269646 0.2082704 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 0.004927562 -0.002843181 0.005520158 #> [2,] -0.002843181 0.029412775 -0.013463952 #> [3,] 0.005520158 -0.013463952 0.182352220 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.007589923 -0.06216448 0.002859140 #> [2,] -0.062164482 2.50977902 -0.118417072 #> [3,] 0.002859140 -0.11841707 0.007999188 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 14.0163806 1.2051675 0.8401261 #> [2,] 1.2051675 0.2780401 -0.1994978 #> [3,] 0.8401261 -0.1994978 1.0749189 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 0.5415731 -0.7109454 0.4040513 #> [2,] -0.7109454 2.4865600 -0.4319643 #> [3,] 0.4040513 -0.4319643 1.5098302 #> ## or return cholesky decomposition cvPost(3, sapply(1:3, function(...) { rnorm(10) }), type = \"lkj\", returnChol = TRUE ) #> [[1]] #> [,1] [,2] [,3] #> [1,] 1.86548 0.9644577 -1.1377549 #> [2,] 0.00000 0.5131372 0.7633548 #> [3,] 0.00000 0.0000000 1.3396488 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.3853808 -0.2396288 0.2759888 #> [2,] 0.0000000 0.8531100 0.3904699 #> [3,] 0.0000000 0.0000000 3.9907672 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 0.5811021 0.02348261 0.040235833 #> [2,] 0.0000000 0.30199556 0.006542798 #> [3,] 0.0000000 0.00000000 0.326766208 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 1.787819 -0.5701632 0.02973627 #> [2,] 0.000000 1.7537550 0.16276115 #> [3,] 0.000000 0.0000000 0.38911063 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 2.155836 -0.1976721 -0.27043101 #> [2,] 0.000000 0.7801646 0.06882305 #> [3,] 0.000000 0.0000000 0.16161284 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 1.590053 0.07434835 -0.17317880 #> [2,] 0.000000 0.82964610 0.13403995 #> [3,] 0.000000 0.00000000 0.07785199 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 0.4123939 0.2062854 -0.8475394 #> [2,] 0.0000000 2.5346241 0.4594744 #> [3,] 0.0000000 0.0000000 0.4939941 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.332944 -0.6235242 -0.002281778 #> [2,] 0.000000 2.1873959 0.885067020 #> [3,] 0.000000 0.0000000 1.705736993 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 4.539001 0.4690774 -2.300368 #> [2,] 0.000000 3.9959179 -1.030652 #> [3,] 0.000000 0.0000000 2.165767 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 1.294237 2.545228e-05 -0.891757 #> [2,] 0.000000 6.211554e-01 -1.993399 #> [3,] 0.000000 0.000000e+00 1.819896 #> ## Sample 3 covariances with lognormal standard deviations via separation ## strategy using inverse Wishart correlation sample cvPost(3, sapply(1:3, function(...) { rnorm(10) }), type = \"separation\") #> [[1]] #> [,1] [,2] [,3] #> [1,] 17.8091343 0.73461953 -1.39358522 #> [2,] 0.7346195 0.43703688 0.08246014 #> [3,] -1.3935852 0.08246014 0.39231482 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.11144462 0.2079765 -0.08551474 #> [2,] 0.20797652 9.2698949 -0.16544961 #> [3,] -0.08551474 -0.1654496 0.08403645 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 0.7908562 -0.5415399 -0.8590748 #> [2,] -0.5415399 0.3821333 0.5923616 #> [3,] -0.8590748 0.5923616 0.9845958 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 11.0562602 0.33123520 1.27030624 #> [2,] 0.3312352 0.42048853 -0.01175715 #> [3,] 1.2703062 -0.01175715 0.20178261 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 0.3908392 1.232200 0.3605851 #> [2,] 1.2321999 4.029834 1.1549621 #> [3,] 0.3605851 1.154962 0.3440444 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 0.9003795 0.2147410 3.1855956 #> [2,] 0.2147410 0.1209066 0.7990146 #> [3,] 3.1855956 0.7990146 13.1359204 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 0.8417985 -0.8216620 -0.7381474 #> [2,] -0.8216620 0.9218277 0.7890609 #> [3,] -0.7381474 0.7890609 0.7039473 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.16942278 0.01244557 -0.01024524 #> [2,] 0.01244557 0.04491023 -0.07210998 #> [3,] -0.01024524 -0.07210998 0.11723618 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 0.4109154 -1.842263 -0.7241764 #> [2,] -1.8422630 10.322635 3.4070393 #> [3,] -0.7241764 3.407039 1.3859887 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 0.9428107 -0.7354081 0.6621306 #> [2,] -0.7354081 0.5785147 -0.5232715 #> [3,] 0.6621306 -0.5232715 0.4840937 #> ## or returning the cholesky decomposition cvPost(3, sapply(1:3, function(...) { rnorm(10) }), type = \"separation\", returnChol = TRUE ) #> [[1]] #> [,1] [,2] [,3] #> [1,] 0.5361344 -0.5646490 -1.2157714 #> [2,] 0.0000000 0.2706145 0.7833376 #> [3,] 0.0000000 0.0000000 1.4143150 #> #> [[2]] #> [,1] [,2] [,3] #> [1,] 0.4763222 -0.1686305 -0.2638639 #> [2,] 0.0000000 0.3953129 0.2370631 #> [3,] 0.0000000 0.0000000 0.2553825 #> #> [[3]] #> [,1] [,2] [,3] #> [1,] 1.457362 -0.1565739 0.003957496 #> [2,] 0.000000 0.2969488 0.004259446 #> [3,] 0.000000 0.0000000 0.034623292 #> #> [[4]] #> [,1] [,2] [,3] #> [1,] 0.2697727 0.1901255 0.1775689 #> [2,] 0.0000000 0.1863785 -0.4415488 #> [3,] 0.0000000 0.0000000 1.3256841 #> #> [[5]] #> [,1] [,2] [,3] #> [1,] 1.081252 -0.2458460 0.05591077 #> [2,] 0.000000 0.4958417 0.11182166 #> [3,] 0.000000 0.0000000 0.07342814 #> #> [[6]] #> [,1] [,2] [,3] #> [1,] 0.4513931 -1.555660 0.9059502 #> [2,] 0.0000000 1.430568 -0.3169197 #> [3,] 0.0000000 0.000000 0.7111382 #> #> [[7]] #> [,1] [,2] [,3] #> [1,] 5.850312 0.3103629 -3.1410818 #> [2,] 0.000000 0.3115511 0.2156489 #> [3,] 0.000000 0.0000000 2.5678462 #> #> [[8]] #> [,1] [,2] [,3] #> [1,] 0.3920281 -0.17091427 1.44657948 #> [2,] 0.0000000 0.01081568 -0.09688330 #> [3,] 0.0000000 0.00000000 0.08276372 #> #> [[9]] #> [,1] [,2] [,3] #> [1,] 2.021659 -0.6427884 0.8126606 #> [2,] 0.000000 0.2158093 -0.3291584 #> [3,] 0.000000 0.0000000 0.3722985 #> #> [[10]] #> [,1] [,2] [,3] #> [1,] 0.4696165 0.1467044 -1.908483 #> [2,] 0.0000000 0.4906213 3.952318 #> [3,] 0.0000000 0.0000000 10.894538 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"Derivatives Exponential Linear Unit (ELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"","code":"dELU(x, alpha = 1) d2ELU(x, alpha = 1) d2aELU(x, alpha = 1) dELUa(x, alpha = 1) d2ELUa(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"numeric vector derivative(s) ELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivatives of the Exponential Linear Unit (ELU) Activation Function — dELU","text":"","code":"dELU(c(-1, 0, 1, 2), 2) #> [1] 0.7357589 2.0000000 1.0000000 1.0000000 d2ELU(c(-1, 0, 1, 2), 2) #> [1] 0.7357589 2.0000000 0.0000000 0.0000000 d2aELU(c(-1, 0, 1, 2), 2) #> [1] 0.3678794 1.0000000 0.0000000 0.0000000 dELUa(c(-1, 0, 1, 2), 2) #> [1] -0.6321206 0.0000000 0.0000000 0.0000000 d2ELUa(c(-1, 0, 1, 2), 2) #> [1] 0.3678794 1.0000000 0.0000000 0.0000000 # Can also be used in rxode2: r <- rxode2({ r1=dELU(time, 2) r2=d2ELU(time, 2) r2a=d2aELU(time, 2) ra=dELUa(time, 2) r2a=d2ELUa(time, 2) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 5 #> time r1 r2 r2a ra #> #> 1 -1 0.736 0.736 0.368 -0.632 #> 2 0 2 2 1 0 #> 3 1 1 0 0 0 #> 4 2 1 0 0 0"},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivatives of GELU — dGELU","title":"Derivatives of GELU — dGELU","text":"Derivatives GELU","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivatives of GELU — dGELU","text":"","code":"dGELU(x) d2GELU(x) d3GELU(x) d4GELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivatives of GELU — dGELU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivatives of GELU — dGELU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dGELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivatives of GELU — dGELU","text":"","code":"dGELU(c(-2, -1, 0, 1, 2)) #> [1] -0.08523180 -0.08331547 0.50000000 1.08331547 1.08523180 d2GELU(c(-2, -1, 0, 1, 2)) #> [1] -0.1079819 0.2419707 0.7978846 0.2419707 -0.1079819 d3GELU(c(-2, -1, 0, 1, 2)) #> [1] 0.0000000 0.7259122 0.0000000 -0.7259122 0.0000000 d4GELU(c(-2, -1, 0, 1, 2)) #> [1] 0.4319277 0.4839414 -1.5957691 0.4839414 0.4319277 # you can use rxode2 as well r <- rxode2({ r1 <- dGELU(time) r2 <- d2GELU(time) r3 <- d3GELU(time) r4 <- d4GELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ et <- et(c(-2, -1, 0, 1, 2)) rxSolve(r, et) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 5 × 5 #> time r1 r2 r3 r4 #> #> 1 -2 -0.0852 -0.108 0 0.432 #> 2 -1 -0.0833 0.242 0.726 0.484 #> 3 0 0.5 0.798 0 -1.60 #> 4 1 1.08 0.242 -0.726 0.484 #> 5 2 1.09 -0.108 0 0.432"},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivatives Parametric ReLU Activation Function — dPReLU","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"Derivatives Parametric ReLU Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"","code":"dPReLU(x, alpha = 1) dPReLUa(x, alpha = 1) dPReLUa1(x, alpha = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"x numeric vector. elements must finite non-missing. alpha numeric scalar. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"numeric vector derivative(s) ELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dPReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivatives Parametric ReLU Activation Function — dPReLU","text":"","code":"dPReLU(c(-1, 0, 1, 2), 2) #> [1] 2 2 1 1 dPReLUa(c(-1, 0, 1, 2), 2) #> [1] -1 0 0 0 dPReLUa1(c(-1, 0, 1, 2), 2) #> [1] 1 1 0 0 # Can also be used in rxode2: r <- rxode2({ r1=dPReLU(time, 2) r2a=dPReLUa(time, 2) ra=dPReLUa1(time, 2) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 4 #> time r1 r2a ra #> #> 1 -1 2 -1 1 #> 2 0 2 0 1 #> 3 1 1 0 0 #> 4 2 1 0 0"},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"function applies derivative Rectified Linear Unit (ReLU) activation function input numeric vector.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"","code":"dReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"numeric vector derivative ReLU function","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of the Rectified Linear Unit (ReLU) Activation Function — dReLU","text":"","code":"dReLU(c(-1, 0, 1, 2)) #> [1] 0 0 1 1 # Can also be used in rxode2: x <- rxode2({ r=dReLU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0 #> 2 0 0 #> 3 1 1 #> 4 2 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"Derivative Scaled Exponential Linear Unit (SELU) Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"","code":"dSELU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"numeric vector derivative SELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSELU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of the Scaled Exponential Linear Unit (SELU) Activation Function — dSELU","text":"","code":"dSELU(c(-1, 0, 1, 2)) #> [1] 0.6467686 1.7580993 1.0507010 1.0507010 # Can also be used in rxode2: x <- rxode2({ r=dSELU(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0.647 #> 2 0 1.76 #> 3 1 1.05 #> 4 2 1.05"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of the Swish Activation Function — dSwish","title":"Derivative of the Swish Activation Function — dSwish","text":"Derivative Swish Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of the Swish Activation Function — dSwish","text":"","code":"dSwish(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of the Swish Activation Function — dSwish","text":"x numeric vector. elements must finite non-missing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of the Swish Activation Function — dSwish","text":"numeric vector derivative SELU function applied element x.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Derivative of the Swish Activation Function — dSwish","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dSwish.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of the Swish Activation Function — dSwish","text":"","code":"dSwish(c(-1, 0, 1, 2)) #> [1] 0.07232949 0.50000000 0.92767051 1.09078425 # Can also be used in rxode2: x <- rxode2({ r <- dSwish(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(x, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time r #> #> 1 -1 0.0723 #> 2 0 0.5 #> 3 1 0.928 #> 4 2 1.09"},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":null,"dir":"Reference","previous_headings":"","what":"This uses simulations to match the rse — dfWishart","title":"This uses simulations to match the rse — dfWishart","text":"uses simulations match rse","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This uses simulations to match the rse — dfWishart","text":"","code":"dfWishart(omega, n, rse, upper, totN = 1000, diag = TRUE, seed = 1234)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This uses simulations to match the rse — dfWishart","text":"omega represents matrix simulation n represents number subjects/samples comes (used calculate rse). present assumes rse= sqrt(2)/sqrt(n) rse rse try match, specified, derived n upper upper boundary root finding terms degrees freedom. specified, n*200 totN represents total number simulated inverse wishart deviates diag TRUE, represents rse match diagonals, otherwise total matrix. seed make simulation reproducible, represents seed used simulating inverse Wishart distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This uses simulations to match the rse — dfWishart","text":"output uniroot() find right estimate","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This uses simulations to match the rse — dfWishart","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dfWishart.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This uses simulations to match the rse — dfWishart","text":"","code":"dfWishart(lotri::lotri(a+b~c(1, 0.5, 1)), 100) #> $root #> [1] 164.9818 #> #> $f.root #> [1] 0.0005180792 #> #> $iter #> [1] 28 #> #> $init.it #> [1] NA #> #> $estim.prec #> [1] 7.882673e-05 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Derivative of Leaky ReLU activation function — dlReLU","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"Derivative Leaky ReLU activation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"","code":"dlReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dlReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Derivative of Leaky ReLU activation function — dlReLU","text":"","code":"dlReLU(c(-1, 0, 1)) #> [1] 0.01 0.01 1.00 # Can use in rxode2 as well r <- rxode2({r <- dlReLU(time)}) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 2 #> time r #> #> 1 -1 0.01 #> 2 0 0.01 #> 3 1 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":null,"dir":"Reference","previous_headings":"","what":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"returns new expression, old expression, new variable old variable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"","code":".assertRenameErrorModelLine(line, vars)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"line quoted call information line vars Variables contained within mdel","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"list(new, old, newChar, oldChar)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-assertRenameErrorModelLine.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function asserts the requested rename makes sense — .assertRenameErrorModelLine","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":null,"dir":"Reference","previous_headings":"","what":"cbind Ome — .cbindOme","title":"cbind Ome — .cbindOme","text":"cbind Ome","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"cbind Ome — .cbindOme","text":"","code":".cbindOme(et, mat, n)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"cbind Ome — .cbindOme","text":"et theta data frame mat full matrix simulation omegas n number subject simulated","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"cbind Ome — .cbindOme","text":"data frame et combined simulated omega matrix values","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-cbindOme.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"cbind Ome — .cbindOme","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":null,"dir":"Reference","previous_headings":"","what":"Clear/Set pipeline — .clearPipe","title":"Clear/Set pipeline — .clearPipe","text":"Clear/Set pipeline","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Clear/Set pipeline — .clearPipe","text":"","code":".clearPipe( rx = NULL, inits = NULL, events = NULL, params = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, sigma = NULL, dfObs = NULL, dfSub = NULL, nSub = NULL, nStud = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Clear/Set pipeline — .clearPipe","text":"rx rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-clearPipe.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Clear/Set pipeline — .clearPipe","text":"None, clears rxode2 pipeline","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":null,"dir":"Reference","previous_headings":"","what":"Collect warnings and just warn once. — .collectWarnings","title":"Collect warnings and just warn once. — .collectWarnings","text":"Collect warnings just warn .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Collect warnings and just warn once. — .collectWarnings","text":"","code":".collectWarnings(expr, lst = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Collect warnings and just warn once. — .collectWarnings","text":"expr R expression lst TRUE return list list(object,warnings) instead issuing warnings. Otherwise, FALSE issue warnings return object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Collect warnings and just warn once. — .collectWarnings","text":"value expression list value expression list warning messages","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-collectWarnings.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Collect warnings and just warn once. — .collectWarnings","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a factor/char to an id — .convertId","title":"Convert a factor/char to an id — .convertId","text":"Convert factor/char id","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a factor/char to an id — .convertId","text":"","code":".convertId(a)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a factor/char to an id — .convertId","text":"value convert id","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a factor/char to an id — .convertId","text":"id factor","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a factor/char to an id — .convertId","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-convertId.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a factor/char to an id — .convertId","text":"","code":".convertId(\"a\") #> [1] a #> Levels: a"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":null,"dir":"Reference","previous_headings":"","what":"This copies the rxode2 UI object so it can be modified — .copyUi","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"copies rxode2 UI object can modified","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"","code":".copyUi(ui)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"ui Original UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"Copied UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-copyUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This copies the rxode2 UI object so it can be modified — .copyUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand parameters — .expandPars","title":"Expand parameters — .expandPars","text":"Expand parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand parameters — .expandPars","text":"","code":".expandPars(object, params, events, control)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand parameters — .expandPars","text":"object rxode2 model variables object params parameters expand events event table help expansion control control structure help parameter generation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand parameters — .expandPars","text":"Expanded parameters simulation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-expandPars.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expand parameters — .expandPars","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate extraC information for rxode2 models — .extraC","title":"Generate extraC information for rxode2 models — .extraC","text":"Generate extraC information rxode2 models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate extraC information for rxode2 models — .extraC","text":"","code":".extraC(extraC = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate extraC information for rxode2 models — .extraC","text":"extraC Additional extraC rxode2 compile optioioins","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate extraC information for rxode2 models — .extraC","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generate extraC information for rxode2 models — .extraC","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the extraCnow for compiling — .extraCnow","title":"Get the extraCnow for compiling — .extraCnow","text":"Get extraCnow compiling","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the extraCnow for compiling — .extraCnow","text":"","code":".extraCnow()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the extraCnow for compiling — .extraCnow","text":"string extraC information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-extraCnow.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the extraCnow for compiling — .extraCnow","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the last idLvl — .getLastIdLvl","title":"Get the last idLvl — .getLastIdLvl","text":"Get last idLvl","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the last idLvl — .getLastIdLvl","text":"","code":".getLastIdLvl()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the last idLvl — .getLastIdLvl","text":"Last idLvl","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the last idLvl — .getLastIdLvl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getLastIdLvl.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the last idLvl — .getLastIdLvl","text":"","code":".getLastIdLvl() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the internal breakdown of an evid — .getWh","title":"Get the internal breakdown of an evid — .getWh","text":"Get internal breakdown evid","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the internal breakdown of an evid — .getWh","text":"","code":".getWh(i)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the internal breakdown of an evid — .getWh","text":"evid breakdown","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the internal breakdown of an evid — .getWh","text":"named evid integer vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the internal breakdown of an evid — .getWh","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-getWh.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the internal breakdown of an evid — .getWh","text":"","code":".getWh(1001) #> wh cmt wh100 whI wh0 #> 11001 9 0 0 1 .getWh(10401) #> wh cmt wh100 whI wh0 #> 10401 3 0 1 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"Handle single error normal t distributions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"","code":".handleSingleErrTypeNormOrTFoceiBase( env, pred1, errNum = 1L, rxPredLlik = TRUE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"env Environment parsed model pred1 data.frame current error errNum number error specification nlmixr2 model rxPredLlik boolean indicating log likelihood calculated non-normal distributions. default TRUE.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"list lines added. lines contain rx_yj_ integer corresponds transformation type. rx_lambda_ transformation lambda rx_low_ lower boundary transformation rx_hi_ upper boundary transformation rx_pred_f_ prediction function rx_pred_ transformed prediction function rx_r_ transformed variance","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-handleSingleErrTypeNormOrTFoceiBase.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Handle the single error for normal or t distributions — .handleSingleErrTypeNormOrTFoceiBase","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":null,"dir":"Reference","previous_headings":"","what":"This gets the append arg for the ini() piping — .iniGetAppendArg","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"gets append arg ini() piping","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"","code":".iniGetAppendArg(f, s)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"f try(force(append)) argument, s .character(substitute(append)) argument","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"corrected ini piping argument exported creating new ini methods requirements piping","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniGetAppendArg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This gets the append arg for the ini() piping — .iniGetAppendArg","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":null,"dir":"Reference","previous_headings":"","what":"Reorder rows in iniDf — .iniHandleAppend","title":"Reorder rows in iniDf — .iniHandleAppend","text":"Reorder rows iniDf","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reorder rows in iniDf — .iniHandleAppend","text":"","code":".iniHandleAppend(expr, rxui, envir, append)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reorder rows in iniDf — .iniHandleAppend","text":"expr Expression parsing rxui User interface function envir Environment parsing append Reorder theta parameters. NULL means change parameter order. parameter name (character string) means put new parameter named parameter. number less equal zero means put parameter beginning list. number greater last parameter number means put parameter end list.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleAppend.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reorder rows in iniDf — .iniHandleAppend","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":null,"dir":"Reference","previous_headings":"","what":"Update the iniDf of a model — .iniHandleLine","title":"Update the iniDf of a model — .iniHandleLine","text":"Update iniDf model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update the iniDf of a model — .iniHandleLine","text":"","code":".iniHandleLine(expr, rxui, envir = parent.frame(), append = NULL) .iniHandleFixOrUnfix(expr, rxui, envir = parent.frame(), append = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update the iniDf of a model — .iniHandleLine","text":"expr Expression parsing rxui User interface function envir Environment parsing append Reorder theta parameters. NULL means change parameter order. parameter name (character string) means put new parameter named parameter. number less equal zero means put parameter beginning list. number greater last parameter number means put parameter end list.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update the iniDf of a model — .iniHandleLine","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-iniHandleLine.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Update the iniDf of a model — .iniHandleLine","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the linear systems with gradients built-in — .linCmtSensB","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"linear systems gradients built-","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"","code":".linCmtSensB()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"logical (TRUE) solved systems gradients built-. (FALSE) solves systems gradients absent","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-linCmtSensB.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Is the linear systems with gradients built-in — .linCmtSensB","text":"","code":".linCmtSensB() #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a language object matches a template language object — .matchesLangTemplate","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"template == str2lang(\".\"), match anything. template == str2lang(\".name\"), match name. template == str2lang(\".call()\"), match call.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"","code":".matchesLangTemplate(x, template)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"x object check template template object match","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"TRUE matches, FALSE, otherwise","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-matchesLangTemplate.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check if a language object matches a template language object — .matchesLangTemplate","text":"","code":".matchesLangTemplate(str2lang(\"d/dt(foo)\"), str2lang(\"d/dt(.name)\")) #> [1] TRUE .matchesLangTemplate(str2lang(\"d/dt(foo)\"), str2lang(\"d/foo(.name)\")) #> [1] FALSE .matchesLangTemplate(str2lang(\"d/dt(foo)\"), str2lang(\"d/.\")) #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal messaging statements — .minfo","title":"Internal messaging statements — .minfo","text":"Internal messaging statements","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal messaging statements — .minfo","text":"","code":".minfo(text, ..., .envir = parent.frame()) .malert(text, ..., .envir = parent.frame()) .mwarn(text, ..., .envir = parent.frame()) .msuccess(text, ..., .envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal messaging statements — .minfo","text":"text Text ... arguments .envir Environment evaluate ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal messaging statements — .minfo","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-minfo.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal messaging statements — .minfo","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":null,"dir":"Reference","previous_headings":"","what":"Handle model lines — .modelHandleModelLines","title":"Handle model lines — .modelHandleModelLines","text":"Handle model lines","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Handle model lines — .modelHandleModelLines","text":"","code":".modelHandleModelLines( modelLines, rxui, modifyIni = FALSE, append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Handle model lines — .modelHandleModelLines","text":"modelLines model lines considered rxui rxode2 UI object modifyIni ini() considered append boolean determine lines appended piping. possible values : TRUE lines appended model instead replaced FALSE lines replaced model (default) NA lines pre-pended model instead replaced lhs expression, append lines last observed line expression lhs auto boolean tells piping automatically selects parameters characterized population parameter, subject variability, covariate. TRUE automatic selection occurs. FALSE automatic selection turned everything added covariate (can promoted parameter ini statement). default TRUE, can changed options(rxode2.autoVarPiping=FALSE). cov character vector variables assumed covariates. override automatic promotion population parameter estimate (eta) envir Environment evaluation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Handle model lines — .modelHandleModelLines","text":"New UI","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-modelHandleModelLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Handle model lines — .modelHandleModelLines","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign in the rxode2 pipeline — .pipeRx","title":"Assign in the rxode2 pipeline — .pipeRx","text":"Assign rxode2 pipeline","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign in the rxode2 pipeline — .pipeRx","text":"","code":".pipeRx(obj) .pipeInits(obj) .pipeEvents(obj) .pipeParams(obj) .pipeKeep(obj) .pipeThetaMat(obj) .pipeOmega(obj) .pipeSigma(obj) .pipeDfObs(obj) .pipeDfSub(obj) .pipeNSub(obj) .pipeNStud(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign in the rxode2 pipeline — .pipeRx","text":"obj Object assign. NA return value.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign in the rxode2 pipeline — .pipeRx","text":"pipeline object (invisibly)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-pipeRx.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign in the rxode2 pipeline — .pipeRx","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":null,"dir":"Reference","previous_headings":"","what":"Returns quoted call information — .quoteCallInfoLines","title":"Returns quoted call information — .quoteCallInfoLines","text":"Returns quoted call information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Returns quoted call information — .quoteCallInfoLines","text":"","code":".quoteCallInfoLines(callInfo, envir = parent.frame(), iniDf = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Returns quoted call information — .quoteCallInfoLines","text":"callInfo Call information envir Environment evaluation (needed) iniDf parent model iniDf piping ini block (NULL otherwise)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Returns quoted call information — .quoteCallInfoLines","text":"Quote call information. name=expression, change name<-expression quoted call list. expressions within brackets ie {}, unlist brackets called one single sequence.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-quoteCallInfoLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Returns quoted call information — .quoteCallInfoLines","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"Get blank, theta1, eta1 initialization block iniDf","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"","code":".rxBlankIni(type = c(\"empty\", \"theta\", \"eta\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"type type initialization block return","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"data.frame appropriate number/type columns. type=\"empty\", data.frame 0 rows correct types. type=\"theta\", data.frame 1 row correct types default values. \"name\" \"est\" likely need updated. type=\"eta\", data.frame 1 row correct types default values single eta added. \"name\" \"est\" likely need updated.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxBlankIni.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get a blank, theta1, or eta1 initialization block for iniDf — .rxBlankIni","text":"","code":".rxBlankIni(\"empty\") #> [1] ntheta neta1 neta2 name lower est upper fix err label #> <0 rows> (or 0-length row.names) .rxBlankIni(\"theta\") #> ntheta neta1 neta2 name lower est upper fix err label #> 1 1 NA NA -Inf 0 Inf FALSE .rxBlankIni(\"eta\") #> ntheta neta1 neta2 name lower est upper fix err label #> 1 NA 1 1 0 0.1 Inf FALSE "},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the C code of an internal function — .rxC","title":"Return the C code of an internal function — .rxC","text":"Return C code internal function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the C code of an internal function — .rxC","text":"","code":".rxC(fun)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the C code of an internal function — .rxC","text":"fun string function wish get C code ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the C code of an internal function — .rxC","text":"C code found (string) NULL found","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the C code of an internal function — .rxC","text":"Matthew Fider","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":null,"dir":"Reference","previous_headings":"","what":"Print out a table in the documentation — .rxDocTable","title":"Print out a table in the documentation — .rxDocTable","text":"Print table documentation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print out a table in the documentation — .rxDocTable","text":"","code":".rxDocTable(table, caption = \"none\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print out a table in the documentation — .rxDocTable","text":"table data frame caption character vector representing caption latex table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print out a table in the documentation — .rxDocTable","text":"based knitr context: output kableExtra::kbl latex output output DT::datatable html output otherwise output knitr::kable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print out a table in the documentation — .rxDocTable","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxDocTable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Print out a table in the documentation — .rxDocTable","text":"","code":".rxDocTable(rxReservedKeywords) #> #> #> |Reserved Name |Meaning |Alias | #> |:--------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------| #> |time |solver time |t | #> |podo |In Transit compartment models, last dose amount | | #> |tlast |Time of Last dose | | #> |M_E |Exp(1) | | #> |M_LOG2E |log2(e) | | #> |M_LOG10E |log10(e) | | #> |M_LN2 |log(2) | | #> |M_LN10 |log(10) | | #> |M_PI |pi | | #> |M_PI_2 |pi/2 | | #> |M_PI_4 |pi/4 | | #> |M_1_PI |1/pi | | #> |M_2_PI |2/pi | | #> |M_2_SQRTPI |2/sqrt(pi) | | #> |M_SQRT2 |sqrt(2) | | #> |M_SQRT1_2 |1/sqrt(2) | | #> |M_SQRT_3 |sqrt(3) | | #> |M_SQRT_32 |sqrt(32) | | #> |M_LOG10_2 |Log10(2) | | #> |M_2PI |2*pi | | #> |M_SQRT_PI |sqrt(pi) | | #> |M_1_SQRT_2PI |1/(sqrt(2*pi)) | | #> |M_LN_SQRT_PI |log(sqrt(pi)) | | #> |M_LN_SQRT_2PI |log(sqrt(2*pi)) | | #> |M_LN_SQRT_PId2 |log(sqrt(pi/2)) | | #> |pi |pi | | #> |NA |R's NA value | | #> |NaN |Not a Number Value | | #> |Inf |Infinite Value | | #> |newind |1: First record of individual; 2: Subsequent record of individual |NEWIND | #> |rxFlag |Flag for what part of the rxode2 model is being run; 1: ddt; 2: jac; 3: ini; 4: F; 5: lag; 6: rate; 7: dur; 8: mtime; 9: matrix exponential; 10: inductive linearization; 11: lhs | |"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"Get upper boundary condition transformation ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"","code":".rxGetHiBoundaryPred1AndIni(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"env Environment parsed model pred1 data.frame current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"Upper Boundary","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetHiBoundaryPred1AndIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the upper boundary condition when the transformation it — .rxGetHiBoundaryPred1AndIni","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"Get lambda value based pred information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"","code":".rxGetLambdaFromPred1AndIni(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"env Environment environment pred1 Single error data frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"Lambda expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLambdaFromPred1AndIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the lambda value based on the pred information — .rxGetLambdaFromPred1AndIni","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"Get lower boundary condition transformation requires ","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"","code":".rxGetLowBoundaryPred1AndIni(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"env Environment parsed model pred1 data.frame current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"Lower Boundary","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetLowBoundaryPred1AndIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the lower boundary condition when the transformation requires it — .rxGetLowBoundaryPred1AndIni","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Observation transformation — .rxGetPredictionDVTransform","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"Get Observation transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"","code":".rxGetPredictionDVTransform(env, pred1, yj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"env Environment parsed model pred1 data.frame current error yj transformation number current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"transformation expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionDVTransform.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the Observation transformation — .rxGetPredictionDVTransform","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the prediction name — .rxGetPredictionF","title":"Get the prediction name — .rxGetPredictionF","text":"Get prediction name","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the prediction name — .rxGetPredictionF","text":"","code":".rxGetPredictionF(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the prediction name — .rxGetPredictionF","text":"env Environment parsed model pred1 data.frame current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the prediction name — .rxGetPredictionF","text":"prediction symbol","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the prediction name — .rxGetPredictionF","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the prediction transformation — .rxGetPredictionFTransform","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"Get prediction transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"","code":".rxGetPredictionFTransform(env, pred1, yj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"env Environment parsed model pred1 data.frame current error yj transformation number current error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"transformation expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetPredictionFTransform.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the prediction transformation — .rxGetPredictionFTransform","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Variance for error type — .rxGetVarianceForErrorType","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"Get Variance error type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"","code":".rxGetVarianceForErrorType(env, pred1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"env Environment pred1 Pred one end-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"Variance error type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxGetVarianceForErrorType.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get Variance for error type — .rxGetVarianceForErrorType","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"Internal function tell linCmt() model variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"","code":".rxIsLinCmt()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"0 1","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxIsLinCmt.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal function to tell if the linCmt() is the model variables — .rxIsLinCmt","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function for calculating the Jacobian — .rxJacobian","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"Internal function calculating Jacobian","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"","code":".rxJacobian(model, vars = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"model symengine environment vars Variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"Jacobian information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxJacobian.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal function for calculating the Jacobian — .rxJacobian","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"Internal function generate model variables linCmt() model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"","code":".rxLinCmtGen(lenState, vars)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"lenState Length state vars Variables model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"Model variables expanded linCmt model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxLinCmtGen.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal function to generate the model variables for a linCmt() model — .rxLinCmtGen","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal Pruning function — .rxPrune","title":"Internal Pruning function — .rxPrune","text":"Internal Pruning function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal Pruning function — .rxPrune","text":"","code":".rxPrune(x, envir = parent.frame(), strAssign = list())"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal Pruning function — .rxPrune","text":"x List quoted lines envir Environment information stored strAssign string assignment list model variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal Pruning function — .rxPrune","text":"Pruned model code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxPrune.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Internal Pruning function — .rxPrune","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the equivalents symengine user functions from C — .rxSEeqUsr","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"Return equivalents symengine user functions C","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"","code":".rxSEeqUsr()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"equivalent symengine user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSEeqUsr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the equivalents symengine user functions from C — .rxSEeqUsr","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":null,"dir":"Reference","previous_headings":"","what":"Sensitivity for model — .rxSens","title":"Sensitivity for model — .rxSens","text":"Sensitivity model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sensitivity for model — .rxSens","text":"","code":".rxSens(model, vars, vars2)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sensitivity for model — .rxSens","text":"model symengine model environment vars Variables single sensitivity vars2 present, 2 parameter sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sensitivity for model — .rxSens","text":"Sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxSens.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Sensitivity for model — .rxSens","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"Get information rxode2 derived parameter transformation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"","code":".rxTransInfo(...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"... Parameters translated, unquoted assigned anything.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"Translation information; list contains: $str named string parameters seen underlying C/C++ code. parameters NA used linear compartment model calculations. $ncmt number compartments model $trans rxode2 translation number parameterization contains linCmt() translation number, number compartments parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransInfo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the information about the rxode2 derived parameter transformation — .rxTransInfo","text":"","code":".rxTransInfo(cl, v , Vp, vp2, q, q2) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"cl\" \"v\" \"q\" \"Vp\" \"q2\" \"vp2\" NA #> #> $ncmt #> [1] 3 #> #> $trans #> [1] 1 #> .rxTransInfo(k12, k21, k13, k31, kel, v) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"kel\" \"v\" \"k12\" \"k21\" \"k13\" \"k31\" NA #> #> $ncmt #> [1] 3 #> #> $trans #> [1] 2 #> .rxTransInfo(k12, k21, k13, k31, kel, v, ka) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"kel\" \"v\" \"k12\" \"k21\" \"k13\" \"k31\" \"ka\" #> #> $ncmt #> [1] 3 #> #> $trans #> [1] 2 #> .rxTransInfo(CL, V) #> $str #> p1 v1 p2 p3 p4 p5 ka #> \"CL\" \"V\" NA NA NA NA NA #> #> $ncmt #> [1] 1 #> #> $trans #> [1] 1 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":null,"dir":"Reference","previous_headings":"","what":"rxode2 general transformation function — .rxTransform","title":"rxode2 general transformation function — .rxTransform","text":"rxode2 general transformation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxode2 general transformation function — .rxTransform","text":"","code":".rxTransform( x, lambda = 1, low = 0, high = 1, transform = c(\"boxCox\", \"yeoJohnson\", \"untransformed\", \"lnorm\", \"logit\", \"logit + yeoJohnson\", \"probit\", \"probit + yeoJohnson\", \"logit + boxCox\", \"probit + boxCox\"), inverse = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxode2 general transformation function — .rxTransform","text":"x value transformed lambda lambda value transformation low lower bound transformation high upper bound transformation transform transformation use (can integer string matching supported transformations) inverse boolean inverse transformation performed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxode2 general transformation function — .rxTransform","text":"transformed value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxode2 general transformation function — .rxTransform","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxTransform.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"rxode2 general transformation function — .rxTransform","text":"","code":"logit(0.25) #> [1] -1.098612 .rxTransform(0.25, transform=\"logit\") #> [1] -1.098612 expit(-1.09) #> [1] 0.2516183 .rxTransform(-1.09, transform=\"logit\", inverse=TRUE) #> [1] 0.2516183"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":null,"dir":"Reference","previous_headings":"","what":"Temporarily set options then restore them while running code — .rxWithOptions","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"Temporarily set options restore running code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"","code":".rxWithOptions(ops, code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"ops list options temporarily set code code code run sink","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"value code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithOptions.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Temporarily set options then restore them while running code — .rxWithOptions","text":"","code":".rxWithOptions(list(digits = 21), { print(pi) }) #> [1] 3.141592653589793116 print(pi) #> [1] 3.141593"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":null,"dir":"Reference","previous_headings":"","what":"With one sink, then release — .rxWithSink","title":"With one sink, then release — .rxWithSink","text":"one sink, release","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"With one sink, then release — .rxWithSink","text":"","code":".rxWithSink(file, code) .rxWithSinkBoth(file, code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"With one sink, then release — .rxWithSink","text":"file path file sink running code code code run sink","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"With one sink, then release — .rxWithSink","text":"return results code section","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"With one sink, then release — .rxWithSink","text":".rxWithSink captures output cat .rxWithSinkBoth captures output cat message","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"With one sink, then release — .rxWithSink","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithSink.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"With one sink, then release — .rxWithSink","text":"","code":"t <- tempfile() .rxWithSink(t, cat(\"message\\n\")) cat(\"cat2\\n\") # now you can see the cat2 #> cat2 lines <- readLines(t) unlink(t)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":null,"dir":"Reference","previous_headings":"","what":"Temporarily set options then restore them while running code — .rxWithWd","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"Temporarily set options restore running code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"","code":".rxWithWd(wd, code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"wd working directory temporarily set system evaluating code code code run sink","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"value code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxWithWd.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Temporarily set options then restore them while running code — .rxWithWd","text":"","code":".rxWithWd(tempdir(), { getwd() }) #> [1] \"/tmp/Rtmp5gtyvB\" getwd() #> [1] \"/home/runner/work/rxode2/rxode2/docs/reference\""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 function pointers — .rxode2ptrs","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"function used get function pointers rxode2. used allow rxode2 binary linkage nlmixr2est.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"","code":".rxode2ptrs()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"list function pointers","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-rxode2ptrs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the rxode2 function pointers — .rxode2ptrs","text":"","code":".rxode2ptrs() #> $rxode2rxRmvnSEXP #> #> #> $rxode2rxParProgress #> #> #> $rxode2getRxSolve_ #> #> #> $rxode2indSolve #> #> #> $rxode2getTime #> #> #> $rxode2isRstudio #> #> #> $rxode2iniSubjectE #> #> #> $rxode2sortIds #> #> #> $getSolvingOptionsInd #> #> #> $rxode2getUpdateInis #> #> #> $rxode2_rxode2_rxModelVars_ #> #> #> $rxode2_par_solve #> #> #> $rxode2rxGetId #> #> #> $rxode2getIndLambda #> #> #> $rxode2getIndLambdaYj #> #> #> $rxode2getIndLogitLow #> #> #> $rxode2getIndLogitHi #> #> #> $rxode2setIndParPtr #> #> #> $rxode2getIndParPtr #> #> #> $rxode2getIndNallTimes #> #> #> $rxode2setIndIdx #> #> #> $rxode2getIndIx #> #> #> $rxode2getIndEvid #> #> #> $rxode2getIndLhs #> #> #> $rxode2getIndNdoses #> #> #> $rxode2getIndNevid2 #> #> #> $rxode2setIndSolve #> #> #> $rxode2getIndSolve #> #> #> $rxode2getIndDv #> #> #> $rxode2getIndYj #> #> #> $rxode2getIndLimit #> #> #> $rxode2getIndCens #> #> #> $rxode2getIndIdx #> #> #> $rxode2getOpNeq #> #> #> $rxode2setOpNeq #> #> #> $rxode2hasOpBadSolve #> #> #> $rxode2getOpNlin #> #> #> $rxode2getOpCores #> #> #> $rxode2getOpNlhs #> #> #> $rxode2getOpStiff #> #> #> $rxode2resetOpBadSolve #> #> #> $rxode2getRxNsub #> #> #> $rxode2hasRxLimit #> #> #> $rxode2hasRxCens #> #> #> $rxode2getRxNall #> #> #> $rxode2getRxNobs #> #> #> $rxode2getRxNobs2 #> #> #> $rxode2getOpIndSolve #> #> #> $rxode2getRxNpars #> #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":null,"dir":"Reference","previous_headings":"","what":"Register a method for a suggested dependency — .s3register","title":"Register a method for a suggested dependency — .s3register","text":"Generally, recommend way register S3 method use S3Method() namespace directive (often generated automatically @export roxygen2 tag). However, technique requires generic imported package, sometimes want suggest package, provide method package loaded. s3_register() can called package's .onLoad() dynamically register method generic's package loaded. (avoid taking dependency vctrs one function, please feel free copy paste function source package.)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Register a method for a suggested dependency — .s3register","text":"","code":".s3register(generic, class, method = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Register a method for a suggested dependency — .s3register","text":"generic Name generic form pkg::generic. class Name class method Optionally, implementation method. default, found looking function called generic.class package environment. Note providing method can dangerous use devtools. namespace method reloaded devtools::load_all(), function keep inheriting old namespace. might cause crashes dangling .Call() pointers.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Register a method for a suggested dependency — .s3register","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Register a method for a suggested dependency — .s3register","text":"R 3.5.0 later, s3_register() also useful demonstrating class creation vignette, since method lookup longer always involves lexical scope. R 3.6.0 later, can achieve similar effect using \"delayed method registration\", .e. placing following NAMESPACE file:","code":"if (getRversion() >= \"3.6.0\") { S3method(package::generic, class) }"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-s3register.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Register a method for a suggested dependency — .s3register","text":"","code":"# A typical use case is to dynamically register tibble/pillar methods # for your class. That way you avoid creating a hard dependency on packages # that are not essential, while still providing finer control over # printing when they are used. .onLoad <- function(...) { .s3Register(\"pillar::pillar_shaft\", \"vctrs_vctr\") .s3Register(\"tibble::type_sum\", \"vctrs_vctr\") }"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":null,"dir":"Reference","previous_headings":"","what":"Return symengineFs from user functions — .symengineFs","title":"Return symengineFs from user functions — .symengineFs","text":"Return symengineFs user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return symengineFs from user functions — .symengineFs","text":"","code":".symengineFs()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return symengineFs from user functions — .symengineFs","text":"symengineFs user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-symengineFs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return symengineFs from user functions — .symengineFs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":null,"dir":"Reference","previous_headings":"","what":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"converts NONMEM-style EVIDs classic RxODE events","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"","code":".toClassicEvid(cmt = 1L, amt = 0, rate = 0, dur = 0, ii = 0, evid = 0L, ss = 0)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"cmt compartment flag amt dose amount rate dose rate dur dose duration ii inter-dose interval evid event id ss steady state","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"classic evids, excluding evids added (need add manually) simply use etTran. mostly testing really used directly.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-toClassicEvid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This converts NONMEM-style EVIDs to classic RxODE events — .toClassicEvid","text":"","code":".toClassicEvid(cmt=10, amt=3, evid=1) #> [1] 1001 .toClassicEvid(cmt=10, amt=3, rate=2, evid=1) #> [1] 11001 .toClassicEvid(cmt=10, amt=3, rate=-1, evid=1) #> [1] 91001 .toClassicEvid(cmt=10, amt=3, rate=-2, evid=1) #> [1] 81001 .toClassicEvid(cmt=10, amt=3, dur=2, evid=1) #> [1] 21001 .toClassicEvid(cmt=304, amt=3, dur=2, evid=1) #> [1] 320401 .toClassicEvid(cmt=7, amt=0, rate=2, evid=1, ss=1) #> [1] 10740 .toClassicEvid(cmt=-10, amt=3, evid=1) #> [1] 1030 .toClassicEvid(cmt=10, amt=3, evid=5) #> [1] 41001 .toClassicEvid(cmt=6, amt=3, evid=6) #> [1] 50601 .toClassicEvid(cmt=6, amt=3, evid=7) #> [1] 650 .toClassicEvid(evid=2) #> [1] 2 .toClassicEvid(evid=4) #> [1] 101"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the function name with the current arguments as a string — .udfCallFunArg","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"Get function name current arguments string","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"","code":".udfCallFunArg(fun, args)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"fun function name args arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"string form 'fun(arg1, arg2)':","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfCallFunArg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the function name with the current arguments as a string — .udfCallFunArg","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":null,"dir":"Reference","previous_headings":"","what":"Lock/Unlock environment for getting R user functions — .udfEnvReset","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"Lock/Unlock environment getting R user functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"","code":".udfEnvReset(lock = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"lock logical see environment look user defined functions locked. locked environments assigned. NULL returns lock status","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"lock status","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvReset.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Lock/Unlock environment for getting R user functions — .udfEnvReset","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":null,"dir":"Reference","previous_headings":"","what":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"Setup UDF environment (querying user defined funtions)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"","code":".udfEnvSet(env)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"env environment user defined functions queried. NULL return current environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Setup the UDF environment (for querying user defined funtions) — .udfEnvSet","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":null,"dir":"Reference","previous_headings":"","what":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"Use udf model variable information get environment functions exists","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"","code":".udfEnvSetUdf(udf)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"udf modelVars$udf, integer vector NA_integer_ address environment functions exist","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"nothing called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfEnvSetUdf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Use the udf model variable information to get the environment where the functions exists — .udfEnvSetUdf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":null,"dir":"Reference","previous_headings":"","what":"See if the UI function exists in given environment. — .udfExists","title":"See if the UI function exists in given environment. — .udfExists","text":"functions declared, make sure exist .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"See if the UI function exists in given environment. — .udfExists","text":"","code":".udfExists(fun, nargs, envir, doList = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"See if the UI function exists in given environment. — .udfExists","text":"fun Function check nargs Number args check envir Environment check doList boolean see functions .udfEnv$fun checked . default TRUE, called recursively function (set FALSE)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"See if the UI function exists in given environment. — .udfExists","text":"logical declaring udf function exists environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfExists.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"See if the UI function exists in given environment. — .udfExists","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the udf strings for creating model md5 — .udfMd5Info","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"Get udf strings creating model md5","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"","code":".udfMd5Info()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"string vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-udfMd5Info.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the udf strings for creating model md5 — .udfMd5Info","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-useUtf.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal function to figure out if this session supports Unicode — .useUtf","title":"Internal function to figure out if this session supports Unicode — .useUtf","text":"Internal function figure session supports Unicode","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-useUtf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal function to figure out if this session supports Unicode — .useUtf","text":"","code":".useUtf()"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-useUtf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal function to figure out if this session supports Unicode — .useUtf","text":"boolean indicating session supports Unicode","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert numeric vector to repeated data.frame — .vecDf","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"Convert numeric vector repeated data.frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"","code":".vecDf(vec, n)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"vec Named input vector n Number columns","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"Data frame repeated vec","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dot-vecDf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert numeric vector to repeated data.frame — .vecDf","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":null,"dir":"Reference","previous_headings":"","what":"Default Softplus Activation Function — dsoftplus","title":"Default Softplus Activation Function — dsoftplus","text":"Default Softplus Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Default Softplus Activation Function — dsoftplus","text":"","code":"dsoftplus(x) d2softplus(x) d3softplus(x) d4softplus(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Default Softplus Activation Function — dsoftplus","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Default Softplus Activation Function — dsoftplus","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Default Softplus Activation Function — dsoftplus","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/dsoftplus.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Default Softplus Activation Function — dsoftplus","text":"","code":"dsoftplus(c(-1, 0, 1, 2)) #> [1] 0.2689414 0.5000000 0.7310586 0.8807971 # You can use rxode2 too: r <- rxode2({ s1 <- dsoftplus(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time s1 #> #> 1 -1 0.269 #> 2 0 0.5 #> 3 1 0.731 #> 4 2 0.881"},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":null,"dir":"Reference","previous_headings":"","what":"Error function — erf","title":"Error function — erf","text":"Error function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Error function — erf","text":"","code":"erf(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Error function — erf","text":"x vector real values","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Error function — erf","text":"erf x","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Error function — erf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/erf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Error function — erf","text":"","code":"erf(1.0) #> [1] 0.8427008"},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":null,"dir":"Reference","previous_headings":"","what":"Event Table Function — et","title":"Event Table Function — et","text":"Event Table Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Event Table Function — et","text":"","code":"et(x, ..., envir = parent.frame()) # S3 method for class 'rxode2' et(x, ..., envir = parent.frame()) # S3 method for class '`function`' et(x, ..., envir = parent.frame()) # S3 method for class 'rxUi' et(x, ..., envir = parent.frame()) # S3 method for class 'rxSolve' et(x, ..., envir = parent.frame()) # S3 method for class 'rxParams' et(x, ..., envir = parent.frame()) # Default S3 method et( x, ..., time, amt, evid, cmt, ii, addl, ss, rate, dur, until, id, amountUnits, timeUnits, addSampling, envir = parent.frame(), by = NULL, length.out = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Event Table Function — et","text":"x first argument supplied event table. named allow et used pipe-line arbitrary objects. ... Times event tables. can also one named arguments . envir environment expr evaluated. May also NULL, list, data frame, pairlist integer specified sys.call. time Time time dose sampling times. can also unspecified determined object type (list numeric/integer). amt Amount dose. specified, assumes dosing record, instead sampling record. evid Event ID; can : Note reset event resets compartment values zero turns infusions. cmt Compartment name number. number, integer starting 1. Negative compartments turn compartment. compartment name, compartment name changed correct state/compartment number running simulation. compartment named \"-cmt\" compartment turned . ii specifying dose, inter-dose interval ss, addl options (described ). addl number additional doses inter-dose interval one dose. ss Steady state flag; can one : ss=2 steady state dose uses super-position principle allow complex steady states, like 10 mg morning 20 mg night, dosing 8 12 pm 8 pm instead every 12 hours. Since uses super positioning principle, makes sense know kinetics linear. values SS currently invalid. rate positive, rate infusion. Otherwise: modeled bioavailability applied positive rates (rate > 0), duration infusion changed. data specify rate amount, think modeled bioavailability can affect duration. instead want modeled bioavailability increase rate infusion instead duration infusion, specify dur instead model duration rate=2. dur Duration infusion. amt dur specified rate calculated two data items. dur specified instead rate, bioavailability changes increase rate instead duration. time dosing end. can easier way figure many additional doses needed sampling period. id integer vector IDs add remove event table. event table identical ID, may expand include IDs vector. negative IDs vector removed. amountUnits units dosing records (amt) timeUnits units time records (time) addSampling boolean indicating sampling time added time dosing time. default FALSE. number: increment sequence. length.desired length sequence. non-negative number, seq seq.int rounded fractional.","code":"Can also specify `cmt` as `dosing.to`, `dose.to`, `doseTo`, `dosingTo`, and `state`."},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Event Table Function — et","text":"new event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Event Table Function — et","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Event Table Function — et","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/et.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Event Table Function — et","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand additional doses — etExpand","title":"Expand additional doses — etExpand","text":"Expand additional doses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand additional doses — etExpand","text":"","code":"etExpand(et)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand additional doses — etExpand","text":"et Event table expand additional doses .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand additional doses — etExpand","text":"New event table addl doses expanded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expand additional doses — etExpand","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etExpand.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Expand additional doses — etExpand","text":"","code":"ev <- et(amt = 3, ii = 24, until = 240) print(ev) #> ── EventTable with 1 records ── #> 1 dosing records (see $get.dosing(); add with add.dosing or et) #> 0 observation times (see $get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with $expand(); or etExpand() #> ── First part of : ── #> # A tibble: 1 × 5 #> time amt ii addl evid #> #> 1 0 3 24 10 1:Dose (Add) etExpand(ev) # expands event table, but doesn't modify it #> ── EventTable with 11 records ── #> 11 dosing records (see value$get.dosing(); add with add.dosing or et) #> 0 observation times (see value$get.sampling(); add with add.sampling or et) #> ── First part of value: ── #> # A tibble: 11 × 4 #> time amt ii evid #> #> 1 0 3 0 1:Dose (Add) #> 2 24 3 0 1:Dose (Add) #> 3 48 3 0 1:Dose (Add) #> 4 72 3 0 1:Dose (Add) #> 5 96 3 0 1:Dose (Add) #> 6 120 3 0 1:Dose (Add) #> 7 144 3 0 1:Dose (Add) #> 8 168 3 0 1:Dose (Add) #> 9 192 3 0 1:Dose (Add) #> 10 216 3 0 1:Dose (Add) #> 11 240 3 0 1:Dose (Add) print(ev) #> ── EventTable with 1 records ── #> 1 dosing records (see $get.dosing(); add with add.dosing or et) #> 0 observation times (see $get.sampling(); add with add.sampling or et) #> multiple doses in `addl` columns, expand with $expand(); or etExpand() #> ── First part of : ── #> # A tibble: 1 × 5 #> time amt ii addl evid #> #> 1 0 3 24 10 1:Dose (Add) ev$expand() ## Expands the current event table and saves it in ev"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":null,"dir":"Reference","previous_headings":"","what":"Combining event tables — etRbind","title":"Combining event tables — etRbind","text":"Combining event tables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Combining event tables — etRbind","text":"","code":"etRbind( ..., samples = c(\"use\", \"clear\"), waitII = c(\"smart\", \"+ii\"), id = c(\"merge\", \"unique\") ) # S3 method for class 'rxEt' rbind(..., deparse.level = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Combining event tables — etRbind","text":"... event tables optionally time event tables, called waiting times help document. samples handle samples repeating event table. options : \"clear\" Clear sampling records combining datasets \"use\" Use sampling records combining datasets waitII determines waiting times events handled. options : \"smart\" \"smart\" handling waiting times default option. case, waiting time last observed inter-dose interval first combined event table, actual time doses given wait time. smaller last observed inter-dose interval, time event tables given inter-dose interval + waiting time event tables. \"+ii\" case, wait time added inter-dose interval matter length wait time inter-dose interval id rbind handle IDs. two different types options: merge id=\"merge\", IDs merged together, overlapping IDs merged single event table. unique id=\"unique\", IDs renumbered IDs event tables overlapping. deparse.level deparse.level traditional rbind ignored.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Combining event tables — etRbind","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Combining event tables — etRbind","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Combining event tables — etRbind","text":"Matthew L Fidler Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRbind.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Combining event tables — etRbind","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":null,"dir":"Reference","previous_headings":"","what":"Repeat an rxode2 event table — etRep","title":"Repeat an rxode2 event table — etRep","text":"Repeat rxode2 event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Repeat an rxode2 event table — etRep","text":"","code":"etRep( x, times = 1, length.out = NA, each = NA, n = NULL, wait = 0, id = integer(0), samples = c(\"clear\", \"use\"), waitII = c(\"smart\", \"+ii\"), ii = 24 ) # S3 method for class 'rxEt' rep(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Repeat an rxode2 event table — etRep","text":"x rxode2 event table times Number times repeat event table length.Invalid rxode2 event tables, throw error used. Invalid rxode2 event tables, throw error used. n number times repeat event table. Overrides times. wait Waiting time repeated event table. default waiting, wait=0 id integer vector IDs add remove event table. event table identical ID, may expand include IDs vector. negative IDs vector removed. samples handle samples repeating event table. options : \"clear\" Clear sampling records combining datasets \"use\" Use sampling records combining datasets waitII determines waiting times events handled. options : \"smart\" \"smart\" handling waiting times default option. case, waiting time last observed inter-dose interval first combined event table, actual time doses given wait time. smaller last observed inter-dose interval, time event tables given inter-dose interval + waiting time event tables. \"+ii\" case, wait time added inter-dose interval matter length wait time inter-dose interval ii specifying dose, inter-dose interval ss, addl options (described ). ... Times event tables. can also one named arguments .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Repeat an rxode2 event table — etRep","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Repeat an rxode2 event table — etRep","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Repeat an rxode2 event table — etRep","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etRep.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Repeat an rxode2 event table — etRep","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":null,"dir":"Reference","previous_headings":"","what":"Sequence of event tables — etSeq","title":"Sequence of event tables — etSeq","text":"combines sequence event tables.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sequence of event tables — etSeq","text":"","code":"etSeq(..., samples = c(\"clear\", \"use\"), waitII = c(\"smart\", \"+ii\"), ii = 24) # S3 method for class 'rxEt' seq(...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sequence of event tables — etSeq","text":"... event tables optionally time event tables, called waiting times help document. samples handle samples repeating event table. options : \"clear\" Clear sampling records combining datasets \"use\" Use sampling records combining datasets waitII determines waiting times events handled. options : \"smart\" \"smart\" handling waiting times default option. case, waiting time last observed inter-dose interval first combined event table, actual time doses given wait time. smaller last observed inter-dose interval, time event tables given inter-dose interval + waiting time event tables. \"+ii\" case, wait time added inter-dose interval matter length wait time inter-dose interval ii inter-dose intervals found event table, assume interdose interval given ii value. default 24.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sequence of event tables — etSeq","text":"event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Sequence of event tables — etSeq","text":"sequences event tables added argument list .... default combining event tables offset least last inter-dose interval prior event table (ii). separate event tables number, event tables separated least wait time defined number last inter-dose interval.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Sequence of event tables — etSeq","text":"Wang W, Hallow K, James D (2015). \"Tutorial rxode2: Simulating Differential Equation Pharmacometric Models R.\" CPT: Pharmacometrics Systems Pharmacology, 5(1), 3-10. ISSN 2163-8306","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Sequence of event tables — etSeq","text":"Matthew L Fidler, Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etSeq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Sequence of event tables — etSeq","text":"","code":"if (FALSE) { # \\dontrun{ library(rxode2) library(units) # Model from rxode2 tutorial # Using a nlmixr2 style function mod1 <-function(){ ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") |> et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") |> et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) |> et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et) plot(bidQd, C2) ## Now Infusion for 5 days followed by oral for 5 days ## note you can dose to a named compartment instead of using the compartment number infusion <- et(timeUnits = \"hr\") |> et(amt=10000, rate=5000, ii=24, until=set_units(5, \"days\"), cmt=\"centr\") qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(5, \"days\"), cmt=\"depot\") et <- seq(infusion,qd) infusionQd <- rxSolve(mod1, et) plot(infusionQd, C2) ## 2wk-on, 1wk-off qd <- et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- seq(qd, set_units(1,\"weeks\"), qd) |> add.sampling(set_units(seq(0, 5.5,by=0.005),weeks)) wkOnOff <- rxSolve(mod1, et) plot(wkOnOff, C2) ## You can also repeat the cycle easily with the rep function qd <-et(timeUnits = \"hr\") |> et(amt=10000, ii=24, until=set_units(2, \"weeks\"), cmt=\"depot\") et <- etRep(qd, times=4, wait=set_units(1,\"weeks\")) |> add.sampling(set_units(seq(0, 12.5,by=0.005),weeks)) repCycle4 <- rxSolve(mod1, et) plot(repCycle4, C2) } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":null,"dir":"Reference","previous_headings":"","what":"Event translation for rxode2 — etTrans","title":"Event translation for rxode2 — etTrans","text":"Event translation rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Event translation for rxode2 — etTrans","text":"","code":"etTrans( inData, obj, addCmt = FALSE, dropUnits = FALSE, allTimeVar = FALSE, keepDosingOnly = FALSE, combineDvid = NULL, keep = character(0), addlKeepsCov = FALSE, addlDropSs = TRUE, ssAtDoseTime = TRUE, iCov = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Event translation for rxode2 — etTrans","text":"inData Data frame translate obj object model variables can extracted addCmt Add compartment data frame (default FALSE). dropUnits Boolean drop units (default FALSE). allTimeVar Treat covariates time-varying keepDosingOnly keep individuals dosing records trailing dosing records last observation. combineDvid boolean indicating rxode2 use DVID observation records change cmt value; Useful multiple-endpoint nlmixr models. default determined option(\"rxode2.combine.dvid\") option set, TRUE. typically affect rxode2 simulations. keep named vector items want keep final rxode2 dataset. added rxode2 event records (seen), last observation carried forward used. addlKeepsCov determines additional dosing items repeats dose (FALSE) keeps covariates record dose (TRUE) addlDropSs steady state doses addl specification steady state flag dropped repeated doses (TRUE) retained (FALSE) ssAtDoseTime Boolean TRUE back calculates steady concentration actual time dose, otherwise FALSE doses shifted iCov data frame individual non-time varying covariates combine events dataset. iCov dataset one covariate per ID match event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/etTrans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Event translation for rxode2 — etTrans","text":"Object solving rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an event table object — eventTable","title":"Create an event table object — eventTable","text":"Initializes object class ‘EventTable’ methods adding querying dosing observation records","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an event table object — eventTable","text":"","code":"eventTable(amount.units = NA, time.units = NA)"},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an event table object — eventTable","text":"amount.units string denoting amount dosing units, e.g., “mg”, “ug”. Default NA denote unspecified units. also solved rxode2 object. case, eventTable(obj) returns eventTable used solve rxode2 object. time.units string denoting time units, e.g., “hours”, “days”. Default \"hours\". eventTable object consists data.frame storing ordered time-stamped events (unspecified) PK/PD dynamic system, units (strings) dosing time records, plus list functions add extract event records. Currently, events can two types: dosing events represent inputs system sampling time events represent observations system ‘amount.units’ ‘time.units’, respectively.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an event table object — eventTable","text":"modified data.frame following accessible functions: get.EventTable() returns current event table add.dosing() adds dosing records event table. get.dosing() returns data.frame dosing records. clear.dosing() clears deletes dosing event table `add.sampling() adds sampling time observation records event table. get.sampling()returns data.frame sampled observation records. clear.sampling() removes sampling event table. get.obs.rec() returns logical vector indicating whether event record represents observation . get.nobs() returns number observation (dosing) records. get.units() returns two-element character vector dosing time units, respectively copy() makes copy current event table. create copy event table object use qd2 <- qd$copy() expand() Expands event table multi-subject solving. done qd$expand(400) 400 subject data expansion","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Create an event table object — eventTable","text":"Matthew Fidler, Melissa Hallow Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/eventTable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an event table object — eventTable","text":"","code":"# create dosing and observation (sampling) events # QD 50mg dosing, 5 days followed by 25mg 5 days # qd <- eventTable(amount.units = \"mg\", time.units = \"days\") # qd$add.dosing(dose = 50, nbr.doses = 5, dosing.interval = 1, do.sampling = FALSE) # # sample the system's drug amounts hourly the first day, then every 12 hours # for the next 4 days qd$add.sampling(seq(from = 0, to = 1, by = 1 / 24)) qd$add.sampling(seq(from = 1, to = 5, by = 12 / 24)) # # print(qd$get.dosing()) # table of dosing records print(qd$get.nobs()) # number of observation (not dosing) records #> [1] 34 # # BID dosing, 5 days bid <- eventTable(\"mg\", \"days\") # only dosing bid$add.dosing( dose = 10000, nbr.doses = 2 * 5, dosing.interval = 12, do.sampling = FALSE ) # # Use the copy() method to create a copy (clone) of an existing # event table (simple assignments just create a new reference to # the same event table object (closure)). # bid.ext <- bid$copy() # three-day extension for a 2nd cohort bid.ext$add.dosing( dose = 5000, nbr.doses = 2 * 3, start.time = 120, dosing.interval = 12, do.sampling = FALSE ) # You can also use the Piping operator to create a table qd2 <- eventTable(amount.units = \"mg\", time.units = \"days\") %>% add.dosing(dose = 50, nbr.doses = 5, dosing.interval = 1, do.sampling = FALSE) %>% add.sampling(seq(from = 0, to = 1, by = 1 / 24)) %>% add.sampling(seq(from = 1, to = 5, by = 12 / 24)) # print(qd2$get.dosing()) # table of dosing records print(qd2$get.nobs()) # number of observation (not dosing) records #> [1] 34 # Note that piping with %>% will update the original table. qd3 <- qd2 %>% add.sampling(seq(from = 5, to = 10, by = 6 / 24)) print(qd2$get.nobs()) #> [1] 34 print(qd3$get.nobs()) #> [1] 55"},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":null,"dir":"Reference","previous_headings":"","what":"Find the assignments in R expression — findLhs","title":"Find the assignments in R expression — findLhs","text":"Find assignments R expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Find the assignments in R expression — findLhs","text":"","code":"findLhs(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Find the assignments in R expression — findLhs","text":"x R expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Find the assignments in R expression — findLhs","text":"list assigned parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/findLhs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Find the assignments in R expression — findLhs","text":"Hadley Wickham Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":null,"dir":"Reference","previous_headings":"","what":"Force using base order for rxode2 radix sorting — forderForceBase","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"Force using base order rxode2 radix sorting","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"","code":"forderForceBase(forceBase = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"forceBase boolean indicating rxode2 use R's order() radix sorting instead data.table's parallel radix sorting.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"value forceBase (can change data.table available)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/forderForceBase.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Force using base order for rxode2 radix sorting — forderForceBase","text":"","code":"# \\donttest{ forderForceBase(TRUE) # Use base `order` for rxode2 sorts forderForceBase(FALSE) # Use `data.table` for rxode2 sorts # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":null,"dir":"Reference","previous_headings":"","what":"Gammap: normalized lower incomplete gamma function — gammap","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"gamma_p boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"","code":"gammap(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"numeric '' parameter normalized lower incomplete gamma z numeric 'z' parameter normalized lower incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"gammap results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"gamma p function given : gammap = lowergamma(, z)/gamma()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammap.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Gammap: normalized lower incomplete gamma function — gammap","text":"","code":"gammap(1, 3) #> [1] 0.9502129 gammap(1:3, 3) #> [1] 0.9502129 0.8008517 0.5768099 gammap(1, 1:3) #> [1] 0.6321206 0.8646647 0.9502129"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":null,"dir":"Reference","previous_headings":"","what":"gammapDer: derivative of gammap — gammapDer","title":"gammapDer: derivative of gammap — gammapDer","text":"gamma_p_derivative boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"gammapDer: derivative of gammap — gammapDer","text":"","code":"gammapDer(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"gammapDer: derivative of gammap — gammapDer","text":"numeric '' parameter upper incomplete gamma z numeric 'z' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"gammapDer: derivative of gammap — gammapDer","text":"lowergamma results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"gammapDer: derivative of gammap — gammapDer","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapDer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"gammapDer: derivative of gammap — gammapDer","text":"","code":"gammapDer(1:3, 3) #> [1] 0.04978707 0.14936121 0.22404181 gammapDer(1, 1:3) #> [1] 0.36787944 0.13533528 0.04978707"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":null,"dir":"Reference","previous_headings":"","what":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"gammapInv gammapInva: Inverses normalized gammap function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"","code":"gammapInv(a, p) gammapInva(x, p)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"numeric '' parameter upper incomplete gamma p numeric 'p' parameter upper incomplete gamma x numeric 'x' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"inverse gammap results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"equation: p = gammap(, x) 'gammapInv' function returns value 'x' satisfies equation 'gammapInva' function returns value 'q' satisfies equation NOTE: gammapInva slow","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammapInv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"gammapInv and gammapInva: Inverses of normalized gammap function — gammapInv","text":"","code":"gammapInv(1:3, 0.5) #> [1] 0.6931472 1.6783470 2.6740603 gammapInv(1, 1:3 / 3.1) #> [1] 0.3894648 1.0360919 3.4339872 gammapInv(1:3, 1:3 / 3.1) #> [1] 0.3894648 2.1988984 6.8872929 gammapInva(1:3, 1:3 / 3.1) #> [1] 0.3894648 2.1988984 6.8872929"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":null,"dir":"Reference","previous_headings":"","what":"Gammaq: normalized upper incomplete gamma function — gammaq","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"gamma_q boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"","code":"gammaq(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"numeric '' parameter normalized upper incomplete gamma z numeric 'z' parameter normalized upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"gammaq results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"gamma q function given : gammaq = uppergamma(, z)/gamma()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Gammaq: normalized upper incomplete gamma function — gammaq","text":"","code":"gammaq(1, 3) #> [1] 0.04978707 gammaq(1:3, 3) #> [1] 0.04978707 0.19914827 0.42319008 gammaq(1, 1:3) #> [1] 0.36787944 0.13533528 0.04978707"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":null,"dir":"Reference","previous_headings":"","what":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"gammaqInv gammaqInva: Inverses normalized gammaq function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"","code":"gammaqInv(a, q) gammaqInva(x, q)"},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"numeric '' parameter upper incomplete gamma q numeric 'q' parameter upper incomplete gamma x numeric 'x' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"inverse gammaq results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"equation: q = gammaq(, x) 'gammaqInv' function returns value 'x' satisfies equation 'gammaqInva' function returns value '' satisfies equation NOTE: gammaqInva slow","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/gammaqInv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"gammaqInv and gammaqInva: Inverses of normalized gammaq function — gammaqInv","text":"","code":"gammaqInv(1:3, 0.5) #> [1] 0.6931472 1.6783470 2.6740603 gammaqInv(1, 1:3 / 3) #> [1] 1.0986123 0.4054651 0.0000000 gammaqInv(1:3, 1:3 / 3.1) #> [1] 1.131402 1.248533 0.684289 gammaqInva(1:3, 1:3 / 3.1) #> [1] 1.131402 1.248533 0.684289"},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"Create complete shiny application exploring dosing regimens given (hardcoded) PK/PD model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"","code":"genShinyApp.template( appDir = \"shinyExample\", verbose = TRUE, ODE.config = list(ode = \"model\", params = c(KA = 0.294), inits = c(eff = 1), method = \"lsoda\", atol = 1e-08, rtol = 1e-06) ) write.template.server(appDir) write.template.ui(appDir, statevars)"},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"appDir string directory store shiny app, default \"shinyExample\". directory appDir created exist. verbose logical specifying whether write messages shiny app generated. Defaults TRUE. ODE.config model name compiled list parameters sent rxSolve(). statevars List statevars passed write.template.ui() function. usually called directly. PK/PD model defined using rxode2(), set parameters initial values defined. appropriate R scripts shiny's user interface ui.R server logic server.R created directory appDir. function evaluates following PK/PD model default: can changed ODE.config parameter. launch shiny app, simply issue runApp(appDir) R command.","code":"C2 = centr/V2; C3 = peri/V3; d/dt(depot) =-KA*depot; d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) = Q*C2 - Q*C3; d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff;"},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"None, functions used side effects.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"functions create simple, working example dosing regimen simulation web application. Users may want modify code experiment creating shiny applications specific rxode2 models.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/genShinyApp.template.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate an example (template) of a dosing regimen shiny app — genShinyApp.template","text":"","code":"# \\donttest{ # remove myapp when the example is complete on.exit(unlink(\"myapp\", recursive = TRUE, force = TRUE)) # create the shiny app example (template) genShinyApp.template(appDir = \"myapp\") #> #> Generating an example (template) for a dosing regimen shiny app #> #> Using the following PK/PD model: #> C2 = centr/V2; #> C3 = peri/V3; #> d/dt(depot) =-KA*depot; #> d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3; #> d/dt(peri) = Q*C2 - Q*C3; #> d/dt(eff) = Kin - Kout*(1-C2/(EC50+C2))*eff; #> #> Translating the PK/PD ODE model into C, compiling, etc. #> #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> #> Parameters and their values: #> KA CL V2 Q V3 Kin Kout EC50 #> 0.294 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> #> Initial values in each compartment: #> depot centr pari eff #> 0 0 0 1 #> #> Warning: 2 arguments not used by format ' #> # #> # Dosing regimen template generated by rxode2::genShinyApp.template() #> # #> #> debug = TRUE #> #wd = sprintf(\"%%s/../\", getwd()) #> #setwd(wd) #> #> # Server inputs: Dose, dosing regimen, dosing frequency, #> # dosing cycle definition, number of dosing cycles #> #> library(shiny) #> library(rxode2) #> #> # read objects from \"rx_shiny_data.rda\" in the AppDir folder, #> # objects include, mod1, params, inits, method, atol, rtol.] #> #> load(\"./rx_shiny_data.rda\") #> if (!rxDynLoad(mod1)) mod1 <- rxode2(mod1, modName=\"mod1\") #> # Define server logic #> shinyServer(function(input, output) { #> #> get.cp <- reactive({ #> ds <- input$Dose #> reg <- switch(input$regimen, \"QD\"=1, \"BID\"=2) #> cyc <- switch(input$cycle, #> \"continous\"=c(7,0), #> \"1wkon 1wkoff\"=c(7,7), #> \"2wkon 1wkoff\"=c(14,7), #> \"3wkon 1wkoff\"=c(21,7) #> ) #> cyc <- [... truncated] #> Shiny files (ui.R, server.R) plus R data saved. #> #> To launch the Shiny app, type the following two R commands: #> #> \tlibrary(shiny) #> \trunApp(\"myapp\") #> # run the shiny app if (requireNamespace(\"shiny\", quietly=TRUE)) { library(shiny) # runApp(\"myapp\") # Won't launch in environments without browsers } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"Get base simulation model simulation inis underlying rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"","code":"getBaseIniSimModel(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"obj Fit Object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"Simulation object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseIniSimModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the base simulation model for simulation with inis in the underlying rxode2 model — getBaseIniSimModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the base simulation model for simulation — getBaseSimModel","title":"Get the base simulation model for simulation — getBaseSimModel","text":"Get base simulation model simulation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the base simulation model for simulation — getBaseSimModel","text":"","code":"getBaseSimModel(obj) # Default S3 method getBaseSimModel(obj) # Default S3 method getBaseIniSimModel(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the base simulation model for simulation — getBaseSimModel","text":"obj Fit Object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the base simulation model for simulation — getBaseSimModel","text":"Simulation object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSimModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the base simulation model for simulation — getBaseSimModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"Get symengine loading symengine rxS()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"","code":"getBaseSymengineModel(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"obj Object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"Simulation model ready load symeng","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getBaseSymengineModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the symengine for loading into symengine with rxS() — getBaseSymengineModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":null,"dir":"Reference","previous_headings":"","what":"Get/Set the number of threads that rxode2 uses — getRxThreads","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"Get/Set number threads rxode2 uses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"","code":"getRxThreads(verbose = FALSE) setRxThreads(threads = NULL, percent = NULL, throttle = NULL) rxCores(verbose = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"verbose Display value relevant OpenMP settings threads NULL (default) rereads environment variables. 0 means use logical CPUs available. Otherwise number >= 1 percent provided number 2 100; percentage logical CPUs use. default startup, 50 percent. throttle 2 (default) means , roughly speaking, single thread used number subjects solved <=2, 2 threads number points <=4, etc. throttle speed small data tasks (especially repeated many times) incurring overhead managing multiple threads. throttle also suppress sorting ID solved first (nsubject solved)*throttle <= nthreads. rxode2 sorting occurs minimize time waiting another thread finish. last item solved long solving time, solving wait last costly solving occur. items likely take time solved first, wait less likely impact overall solving time. rxode2 IDs sorted individual number solving points (largest first). also C interface allows IDs resorted total time spent solving equation. allows packages like nlmixr sort solving time needed. Overall number threads throttled (restricted) small tasks sorting IDs suppressed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/getRxThreads.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get/Set the number of threads that rxode2 uses — getRxThreads","text":"number threads rxode2 uses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":null,"dir":"Reference","previous_headings":"","what":"Empty Guide — guide_none","title":"Empty Guide — guide_none","text":"empty guide draws nothing; included rxode2 compatibility ggplot 3.2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Empty Guide — guide_none","text":"","code":"guide_none(title = waiver(), position = waiver())"},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Empty Guide — guide_none","text":"title character string expression indicating title guide. NULL, title shown. default (waiver()), name scale object name specified labs() used title. position guide drawn: one top, bottom, left, right.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/guide_none.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Empty Guide — guide_none","text":"nothing, simply included compatible ggplot 3.2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign the ini block in the rxode2 related object — ini<-","title":"Assign the ini block in the rxode2 related object — ini<-","text":"Assign ini block rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign the ini block in the rxode2 related object — ini<-","text":"","code":"ini(x, envir = environment(x)) <- value"},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign the ini block in the rxode2 related object — ini<-","text":"x rxode2 related object envir Environment assignment occurs value Value object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign the ini block in the rxode2 related object — ini<-","text":"rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini-set.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign the ini block in the rxode2 related object — ini<-","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":null,"dir":"Reference","previous_headings":"","what":"Ini block for rxode2/nlmixr models — ini.rxUi","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"ini block controls initial conditions 'theta' (fixed effects), 'omega' (random effects), 'sigma' (residual error) elements model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"","code":"# S3 method for class 'rxUi' ini(x, ..., envir = parent.frame(), append = NULL) # Default S3 method ini(x, ..., envir = parent.frame(), append = NULL) ini(x, ..., envir = parent.frame(), append = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"x expression ... expressions ini() function envir environment unevaluated model expressions evaluated. May also NULL, list, data frame, pairlist integer specified sys.call. append Reorder theta parameters. NULL means change parameter order. parameter name (character string) means put new parameter named parameter. number less equal zero means put parameter beginning list. number greater last parameter number means put parameter end list.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"ini block","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"ini() function used two different ways. main way used set initial conditions associated attributes (described ) model. way used updating initial conditions model, often using pipe operator. 'theta' 'sigma' can set using either <- = tvCL <- 1 equivalently tvCL = 1. 'omega' can set ~ etaCL ~ 0.1. Parameters can named unnamed (though named parameters preferred). named parameter set using name left assignment unnamed parameters set without assignment operator. tvCL <- 1 set named parameter tvCL 1. Unnamed parameters set using just value, 1. estimation methods, lower upper bounds can set 'theta' 'sigma' values. set lower /upper bound, use vector values. vector c(lower, estimate, upper). vector may given just estimate (estimate), lower bound estimate (c(lower, estimate)), three (c(lower, estimate, upper)). set estimate upper bound without lower bound, set lower bound -Inf, c(-Inf, estimate, upper). estimation method support bounds, bounds ignored warning. 'omega' values can set single value values lower-triangular matrix. values may set either variance-covariance matrix (default) correlation matrix -diagonals standard deviations diagonals. Names may set left side ~. set variance-covariance matrix variance values 2 3 covariance -2.5 use ~c(2, 2.5, 3). set matrix names iivKa iivCL, use iivKa + iivCL~c(2, 2.5, 3). set correlation matrix standard deviations diagonal, use cor() like iivKa + iivCL~cor(2, -0.5, 3). rxode2 3.0 can also use iivKa ~ 2, iivCL ~ c(2.5, 3) covariance matrices well. Values may fixed (therefore estimated) using either name fixed end assignment calling fixed() function value fix. 'theta' 'sigma', either estimate full definition (including lower upper bounds) may included fixed setting. example, following effectively equivalent set 'theta' 'sigma' fixed value (lower upper bounds ignored fixed value): tvCL <- fixed(1), tvCL <- fixed(0, 1), tvCL <- fixed(0, 1, 2), tvCL <- c(0, fixed(1), 2), tvCL <- c(0, 1, fixed). 'omega' assignment, full block none block must set fixed. Examples setting 'omega' value fixed : iivKa~fixed(1), iivKa + iivCL~fixed(1, 2, 3), iivKa + iivCL~c(1, 2, 3, fixed). Anywhere fixed used, FIX, FIXED, fix may used equivalently. value, standard mathematical operators functions may used define value. example, log(2) 24*30 may used define value anywhere number can used (e.g. lower bound, estimate, upper bound, variance, etc.). Values may labeled using label() function assignment. Labels used make reporting easier giving human-readable description parameter, labels effect estimation. typical way set label parameter tvCL label \"Typical Value Clearance (L/hr)\" tvCL <- 1; label(\"Typical Value Clearance (L/hr)\"). diagonal values 'omega' can set zero using diag() remove -diagonals can removed ini(diag()). remove covariances 'omega' item iivKa, can use %>% ini(diag(iivKa)). remove covariances contain either iivKa iivCl can use %>% ini(diag(iivKa, iivCl)). finer control can remove covariance two items (like iivKa iivCl) `%>% ini(-cov(iivKa, iivCl)) rxode2/nlmixr2 attempt determine back-transformations user. example, CL <- exp(tvCL) detect tvCL must back-transformed exp() easier interpretation. want control back-transformation, can specify back-transformation using backTransform() assignment. example, set back-transformation exp(), can use tvCL <- 1; backTransform(exp()).","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/ini.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Ini block for rxode2/nlmixr models — ini.rxUi","text":"","code":"# Set the ini() block in a model one.compartment <- function() { ini({ tka <- log(1.57); label(\"Ka\") tcl <- log(2.72); label(\"Cl\") tv <- log(31.5); label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } # Use piping to update initial conditions one.compartment %>% ini(tka <- log(2)) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.693147180559945` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.6931472 1.0006319 3.4499875 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.693147180559945 #> label(\"Ka\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } one.compartment %>% ini(tka <- label(\"Absorption rate, Ka (1/hr)\")) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.4510756 1.0006319 3.4499875 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.451075619360217 #> label(\"Absorption rate, Ka (1/hr)\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } # Move the tka parameter to be just below the tv parameter (affects parameter # summary table, only) one.compartment %>% ini(tka <- label(\"Absorption rate, Ka (1/hr)\"), append = \"tv\") #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tcl tv tka add.sd #> 1.0006319 3.4499875 0.4510756 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> tka <- 0.451075619360217 #> label(\"Absorption rate, Ka (1/hr)\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> } # When programming with rxode2/nlmixr2, it may be easier to pass strings in # to modify the ini one.compartment %>% ini(\"tka <- log(2)\") #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ change initial estimate of `tka` to `0.693147180559945` #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.6931472 1.0006319 3.4499875 0.7000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.693147180559945 #> label(\"Ka\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- c(0, 0.7) #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":null,"dir":"Reference","previous_headings":"","what":"One correlation sample from the Inverse Wishart distribution — invWR1d","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"correlation constructed transformation Inverse Wishart random covariate correlation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"","code":"invWR1d(d, nu, omegaIsChol = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"d dimension correlation matrix nu Degrees freedom Wishart distribution omegaIsChol indicator omega matrix Cholesky decomposition. used type=\"invWishart\"","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"One correlation sample inverse wishart","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/invWR1d.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"One correlation sample from the Inverse Wishart distribution — invWR1d","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":null,"dir":"Reference","previous_headings":"","what":"Check to see if this is an rxEt object. — is.rxEt","title":"Check to see if this is an rxEt object. — is.rxEt","text":"Check see rxEt object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check to see if this is an rxEt object. — is.rxEt","text":"","code":"is.rxEt(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check to see if this is an rxEt object. — is.rxEt","text":"x object check see rxEt rxEt object expired strip rxEt information.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check to see if this is an rxEt object. — is.rxEt","text":"Boolean indicating rxode2 event table","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxEt.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check to see if this is an rxEt object. — is.rxEt","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Check to see if this is an rxSolve object. — is.rxSolve","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"Check see rxSolve object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"","code":"is.rxSolve(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"x object check see rxSolve rxSolve object expired strip rxSolve information.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"boolean indicating rxSolve object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check to see if this is an rxSolve object. — is.rxSolve","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":null,"dir":"Reference","previous_headings":"","what":"Return if the object can be stacked — is.rxStackData","title":"Return if the object can be stacked — is.rxStackData","text":"Return object can stacked","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return if the object can be stacked — is.rxStackData","text":"","code":"is.rxStackData(object)"},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return if the object can be stacked — is.rxStackData","text":"object object test can stacked","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return if the object can be stacked — is.rxStackData","text":"boolean tell object can stacked using rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return if the object can be stacked — is.rxStackData","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/is.rxStackData.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return if the object can be stacked — is.rxStackData","text":"","code":"is.rxStackData(NULL) #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":null,"dir":"Reference","previous_headings":"","what":"Leaky ReLU activation function — lReLU","title":"Leaky ReLU activation function — lReLU","text":"Leaky ReLU activation function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Leaky ReLU activation function — lReLU","text":"","code":"lReLU(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Leaky ReLU activation function — lReLU","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Leaky ReLU activation function — lReLU","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/lReLU.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Leaky ReLU activation function — lReLU","text":"","code":"lReLU(c(-1, 0, 1)) #> [1] -0.01 0.00 1.00 # Can use in rxode2 as well r <- rxode2({r <- lReLU(time)}) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 2 #> time r #> #> 1 -1 -0.01 #> 2 0 0 #> 3 1 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":null,"dir":"Reference","previous_headings":"","what":"Linear model to replace in rxode2 ui model — linMod","title":"Linear model to replace in rxode2 ui model — linMod","text":"Linear model replace rxode2 ui model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Linear model to replace in rxode2 ui model — linMod","text":"","code":"linMod( variable, power, dv = \"dv\", intercept = TRUE, type = c(\"replace\", \"before\", \"after\"), num = NULL, iniDf = NULL, data = FALSE, mv = FALSE ) linMod0(..., intercept = FALSE) linModB(..., type = \"before\") linModB0(..., intercept = FALSE, type = \"before\") linModA(..., type = \"after\") linModA0(..., intercept = FALSE, type = \"after\") linModD(..., intercept = TRUE, data = TRUE) linModD0(..., intercept = FALSE, data = TRUE) linModM(..., intercept = TRUE, mv = TRUE) linModM0(..., intercept = FALSE, mv = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Linear model to replace in rxode2 ui model — linMod","text":"variable variable rxode2 made . power power polynomial generated. dv dependent variable use generate initial estimates data. NULL query using rxUdfUiData(). intercept Boolean tells intercept generated. type type linear model replacement used. num number particular model generated. unspecified, query using rxUdfUiNum(). iniDf initialization data.frame, NULL query using rxUdfUiIniDf() data logical tells initial estimates linear model estimated data. mv logical tell model variables need used generate model variables. ... arguments passed linMod() abbreviations linMod()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Linear model to replace in rxode2 ui model — linMod","text":"list use generating rxode2 ui model see rxUdfUi() details.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Linear model to replace in rxode2 ui model — linMod","text":"linMod0(): linear model without intercept linModB(): linear model occurs linModB0(): linear model user function occurs linModA(): linear model user function occurs linModA0(): liner model without intercept placed user function occurs linModD(): linear model initial estimates generated data linModD0(): linear model initial estimates generated data (intercept) linModM(): linear model model variables used generate model variables linModM0(): linear model model variables used generate model variables (intercept)","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Linear model to replace in rxode2 ui model — linMod","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/linMod.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Linear model to replace in rxode2 ui model — linMod","text":"","code":"linMod(x, 3) #> $replace #> [1] \"rx.linMod.x1a+rx.linMod.x1b*x+rx.linMod.x1c*x^2+rx.linMod.x1d*x^3\" #> #> $iniDf #> NULL #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"Calculate log likelihood binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"","code":"llikBeta(x, shape1, shape2, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"x Observation shape1, shape2 non-negative parameters Beta distribution. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"data frame fx log pdf value dShape1 dShape2 derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"rxode2() model, can use llikBeta() use arguments. can also get derivative shape1 shape2 llikBetaDshape1() llikBetaDshape2().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBeta.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBeta","text":"","code":"# \\donttest{ x <- seq(1e-4, 1 - 1e-4, length.out = 21) llikBeta(x, 0.5, 0.5) #> fx dShape1 dShape2 #> 1 3.46049030 -7.82404601 1.38619436 #> 2 0.37793108 -1.60763953 1.33490633 #> 3 0.05888752 -0.91549105 1.28084495 #> 4 -0.11510253 -0.51035907 1.22369308 #> 5 -0.22855163 -0.22284360 1.16307581 #> 6 -0.30780832 0.00019998 1.09854562 #> 7 -0.36444410 0.18245488 1.02956227 #> 8 -0.40444714 0.33655795 0.95546529 #> 9 -0.43118004 0.47005363 0.87543540 #> 10 -0.44655956 0.58780889 0.78843918 #> 11 -0.45158271 0.69314718 0.69314718 #> 12 -0.44655956 0.78843918 0.58780889 #> 13 -0.43118004 0.87543540 0.47005363 #> 14 -0.40444714 0.95546529 0.33655795 #> 15 -0.36444410 1.02956227 0.18245488 #> 16 -0.30780832 1.09854562 0.00019998 #> 17 -0.22855163 1.16307581 -0.22284360 #> 18 -0.11510253 1.22369308 -0.51035907 #> 19 0.05888752 1.28084495 -0.91549105 #> 20 0.37793108 1.33490633 -1.60763953 #> 21 3.46049030 1.38619436 -7.82404601 llikBeta(x, 1, 3, TRUE) #> x shape1 shape2 fx dShape1 dShape2 #> 1 0.00010 1 3 1.09841228 -7.37700704 0.33323333 #> 2 0.05009 1 3 0.99583622 -1.16060056 0.28194530 #> 3 0.10008 1 3 0.88771347 -0.46845208 0.22788392 #> 4 0.15007 1 3 0.77340972 -0.06332009 0.17073205 #> 5 0.20006 1 3 0.65217518 0.22419538 0.11011478 #> 6 0.25005 1 3 0.52311481 0.44723895 0.04558459 #> 7 0.30004 1 3 0.38514811 0.62949385 -0.02339876 #> 8 0.35003 1 3 0.23695415 0.78359692 -0.09749574 #> 9 0.40002 1 3 0.07689437 0.91709260 -0.17752562 #> 10 0.45001 1 3 -0.09709808 1.03484786 -0.26452185 #> 11 0.50000 1 3 -0.28768207 1.14018615 -0.35981385 #> 12 0.54999 1 3 -0.49835866 1.23547815 -0.46515214 #> 13 0.59998 1 3 -0.73386918 1.32247438 -0.58290740 #> 14 0.64997 1 3 -1.00086054 1.40250426 -0.71640308 #> 15 0.69996 1 3 -1.30906667 1.47660124 -0.87050615 #> 16 0.74995 1 3 -1.67357647 1.54558459 -1.05276105 #> 17 0.79994 1 3 -2.11966363 1.61011478 -1.27580462 #> 18 0.84993 1 3 -2.69469457 1.67073205 -1.56332009 #> 19 0.89992 1 3 -3.50495854 1.72788392 -1.96845208 #> 20 0.94991 1 3 -4.88925549 1.78194530 -2.66060056 #> 21 0.99990 1 3 -17.32206846 1.83323333 -8.87700704 et <- et(seq(1e-4, 1-1e-4, length.out=21)) et$shape1 <- 0.5 et$shape2 <- 1.5 model <- function() { model({ fx <- llikBeta(time, shape1, shape2) dShape1 <- llikBetaDshape1(time, shape1, shape2) dShape2 <- llikBetaDshape2(time, shape1, shape2) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 21 × 6 #> time fx dShape1 dShape2 shape1 shape2 #> #> 1 0.0001 4.15 -6.82 0.386 0.5 1.5 #> 2 0.0501 1.02 -0.608 0.335 0.5 1.5 #> 3 0.100 0.647 0.0845 0.281 0.5 1.5 #> 4 0.150 0.415 0.490 0.224 0.5 1.5 #> 5 0.200 0.241 0.777 0.163 0.5 1.5 #> 6 0.250 0.0976 1.00 0.0985 0.5 1.5 #> # ℹ 15 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"Calculate log likelihood binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"","code":"llikBinom(x, size, prob, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"x Number successes size Size trial prob probability success full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"data frame fx pdf value dProb derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"rxode2() model, can use llikBinom() use arguments. can also get derivative prob llikBinomDprob()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikBinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the binomial function (and its derivatives) — llikBinom","text":"","code":"# \\donttest{ llikBinom(46:54, 100, 0.5) #> fx dProb #> 1 -2.848030 -16 #> 2 -2.709193 -12 #> 3 -2.610102 -8 #> 4 -2.550679 -4 #> 5 -2.530876 0 #> 6 -2.550679 4 #> 7 -2.610102 8 #> 8 -2.709193 12 #> 9 -2.848030 16 llikBinom(46:54, 100, 0.5, TRUE) #> x size prob fx dProb #> 1 46 100 0.5 -2.848030 -16 #> 2 47 100 0.5 -2.709193 -12 #> 3 48 100 0.5 -2.610102 -8 #> 4 49 100 0.5 -2.550679 -4 #> 5 50 100 0.5 -2.530876 0 #> 6 51 100 0.5 -2.550679 4 #> 7 52 100 0.5 -2.610102 8 #> 8 53 100 0.5 -2.709193 12 #> 9 54 100 0.5 -2.848030 16 # In rxode2 you can use: et <- et(46:54) et$size <- 100 et$prob <-0.5 model <- function() { model({ fx <- llikBinom(time, size, prob) dProb <- llikBinomDprob(time, size, prob) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 9 × 5 #> time fx dProb size prob #> #> 1 46 -2.85 -16 100 0.5 #> 2 47 -2.71 -12 100 0.5 #> 3 48 -2.61 -8 100 0.5 #> 4 49 -2.55 -4 100 0.5 #> 5 50 -2.53 0 100 0.5 #> 6 51 -2.55 4 100 0.5 #> # ℹ 3 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"log likelihood Cauchy distribution derivatives (stan)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"","code":"llikCauchy(x, location = 0, scale = 1, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"x Observation location, scale location scale parameters. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"data frame fx log pdf value dLocation dScale derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"rxode2() model, can use llikCauchy() use arguments. can also get derivative location scale llikCauchyDlocation() llikCauchyDscale().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikCauchy.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood of Cauchy distribution and it's derivatives (from stan) — llikCauchy","text":"","code":"# \\donttest{ x <- seq(-3, 3, length.out = 21) llikCauchy(x, 0, 1) #> fx dLocation dScale #> 1 -3.447315 -0.6000000 0.8000000 #> 2 -3.259780 -0.6513872 0.7587455 #> 3 -3.055753 -0.7100592 0.7041420 #> 4 -2.832979 -0.7763401 0.6303142 #> 5 -2.589293 -0.8490566 0.5283019 #> 6 -2.323385 -0.9230769 0.3846154 #> 7 -2.036728 -0.9836066 0.1803279 #> 8 -1.738057 -0.9944751 -0.1049724 #> 9 -1.452215 -0.8823529 -0.4705882 #> 10 -1.230908 -0.5504587 -0.8348624 #> 11 -1.144730 0.0000000 -1.0000000 #> 12 -1.230908 0.5504587 -0.8348624 #> 13 -1.452215 0.8823529 -0.4705882 #> 14 -1.738057 0.9944751 -0.1049724 #> 15 -2.036728 0.9836066 0.1803279 #> 16 -2.323385 0.9230769 0.3846154 #> 17 -2.589293 0.8490566 0.5283019 #> 18 -2.832979 0.7763401 0.6303142 #> 19 -3.055753 0.7100592 0.7041420 #> 20 -3.259780 0.6513872 0.7587455 #> 21 -3.447315 0.6000000 0.8000000 llikCauchy(x, 3, 1, full=TRUE) #> x location scale fx dLocation dScale #> 1 -3.0 3 1 -4.755648 -0.3243243 0.9459459 #> 2 -2.7 3 1 -4.655977 -0.3404001 0.9402807 #> 3 -2.4 3 1 -4.551246 -0.3580902 0.9336870 #> 4 -2.1 3 1 -4.440937 -0.3776379 0.9259534 #> 5 -1.8 3 1 -4.324449 -0.3993344 0.9168053 #> 6 -1.5 3 1 -4.201087 -0.4235294 0.9058824 #> 7 -1.2 3 1 -4.070040 -0.4506438 0.8927039 #> 8 -0.9 3 1 -3.930358 -0.4811845 0.8766194 #> 9 -0.6 3 1 -3.780926 -0.5157593 0.8567335 #> 10 -0.3 3 1 -3.620428 -0.5550883 0.8317914 #> 11 0.0 3 1 -3.447315 -0.6000000 0.8000000 #> 12 0.3 3 1 -3.259780 -0.6513872 0.7587455 #> 13 0.6 3 1 -3.055753 -0.7100592 0.7041420 #> 14 0.9 3 1 -2.832979 -0.7763401 0.6303142 #> 15 1.2 3 1 -2.589293 -0.8490566 0.5283019 #> 16 1.5 3 1 -2.323385 -0.9230769 0.3846154 #> 17 1.8 3 1 -2.036728 -0.9836066 0.1803279 #> 18 2.1 3 1 -1.738057 -0.9944751 -0.1049724 #> 19 2.4 3 1 -1.452215 -0.8823529 -0.4705882 #> 20 2.7 3 1 -1.230908 -0.5504587 -0.8348624 #> 21 3.0 3 1 -1.144730 0.0000000 -1.0000000 et <- et(-3, 3, length.out=10) et$location <- 0 et$scale <- 1 model <- function() { model({ fx <- llikCauchy(time, location, scale) dLocation <- llikCauchyDlocation(time, location, scale) dScale <- llikCauchyDscale(time, location, scale) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dLocation dScale location scale #> #> 1 -3 -3.45 -0.6 0.8 0 1 #> 2 -2.33 -3.01 -0.724 0.690 0 1 #> 3 -1.67 -2.47 -0.882 0.471 0 1 #> 4 -1 -1.84 -1 0 0 1 #> 5 -0.333 -1.25 -0.6 -0.8 0 1 #> 6 0.333 -1.25 0.600 -0.8 0 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for chi-squared distribution — llikChisq","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"log likelihood derivatives chi-squared distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"","code":"llikChisq(x, df, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"x variable distributed chi-squared distribution df degrees freedom (non-negative, can non-integer). full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"data frame fx log pdf value dDf derivatives respect df parameter observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"rxode2() model, can use llikChisq() use x df arguments. can also get derivative df llikChisqDdf().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikChisq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for chi-squared distribution — llikChisq","text":"","code":"# \\donttest{ llikChisq(1, df = 1:3, full=TRUE) #> x df fx dDf #> 1 1 1 -1.418939 0.63518142 #> 2 1 2 -1.193147 -0.05796576 #> 3 1 3 -1.418939 -0.36481858 llikChisq(1, df = 6:9) #> fx dDf #> 1 -3.272589 -0.8079658 #> 2 -4.126989 -0.8981519 #> 3 -5.064348 -0.9746324 #> 4 -6.072899 -1.0410091 et <- et(1:3) et$x <- 1 model <- function() { model({ fx <- llikChisq(x, time) dDf <- llikChisqDdf(x, time) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 4 #> time fx dDf x #> #> 1 1 -1.42 0.635 1 #> 2 2 -1.19 -0.0580 1 #> 3 3 -1.42 -0.365 1 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for exponential distribution — llikExp","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"log likelihood derivatives exponential distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"","code":"llikExp(x, rate, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"x variable distributed exponential distribution rate vector rates. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"data frame fx log pdf value dRate derivatives respect rate parameter observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"rxode2() model, can use llikExp() use x rate arguments. can also get derivative rate llikExpDrate().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikExp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for exponential distribution — llikExp","text":"","code":"# \\donttest{ llikExp(1, 1:3) #> fx dRate #> 1 -1.000000 0.0000000 #> 2 -1.306853 -0.5000000 #> 3 -1.901388 -0.6666667 llikExp(1, 1:3, full=TRUE) #> x rate fx dRate #> 1 1 1 -1.000000 0.0000000 #> 2 1 2 -1.306853 -0.5000000 #> 3 1 3 -1.901388 -0.6666667 # You can use rxode2 for these too: et <- et(1:3) et$x <- 1 model <- function() { model({ fx <- llikExp(x, time) dRate <- llikExpDrate(x, time) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 3 × 4 #> time fx dRate x #> #> 1 1 -1 0 1 #> 2 2 -1.31 -0.5 1 #> 3 3 -1.90 -0.667 1 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for F distribution — llikF","title":"log likelihood and derivatives for F distribution — llikF","text":"log likelihood derivatives F distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for F distribution — llikF","text":"","code":"llikF(x, df1, df2, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for F distribution — llikF","text":"x variable distributed f distribution df1, df2 degrees freedom. Inf allowed. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for F distribution — llikF","text":"data frame fx log pdf value dDf1 dDf2 derivatives respect df1/df2 parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for F distribution — llikF","text":"rxode2() model, can use llikF() use x rate arguments. can also get derivative df1 df2 llikFDdf1() llikFDdf2().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for F distribution — llikF","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikF.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for F distribution — llikF","text":"","code":"# \\donttest{ x <- seq(0.001, 5, length.out = 100) llikF(x^2, 1, 5) #> fx dDf1 dDf2 #> 1 5.939135090 -5.769327755 0.0098138672 #> 2 1.996061339 -1.829698617 0.0098667834 #> 3 1.308027230 -1.151720596 0.0100203751 #> 4 0.898151814 -0.758467992 0.0102713542 #> 5 0.601410048 -0.484842238 0.0106143384 #> 6 0.365567397 -0.278507461 0.0110419510 #> 7 0.167275143 -0.115987118 0.0115449567 #> 8 -0.005928407 0.015333168 0.0121124287 #> 9 -0.161467803 0.123053577 0.0127319420 #> 10 -0.304110944 0.212138450 0.0133897879 #> 11 -0.437089645 0.286034532 0.0140712037 #> 12 -0.562684604 0.347253504 0.0147606108 #> 13 -0.682555520 0.397699568 0.0154418570 #> 14 -0.797939098 0.438864917 0.0160984557 #> 15 -0.909773848 0.471951996 0.0167138175 #> 16 -1.018782007 0.497952966 0.0172714700 #> 17 -1.125525217 0.517703019 0.0177552614 #> 18 -1.230443500 0.531917117 0.0181495454 #> 19 -1.333883243 0.541215913 0.0184393449 #> 20 -1.436117763 0.546144408 0.0186104926 #> 21 -1.537362702 0.547185650 0.0186497493 #> 22 -1.637787764 0.544770962 0.0185448973 #> 23 -1.737525805 0.539287723 0.0182848126 #> 24 -1.836679954 0.531085385 0.0178595139 #> 25 -1.935329266 0.520480216 0.0172601925 #> 26 -2.033533263 0.507759100 0.0164792220 #> 27 -2.131335592 0.493182655 0.0155101530 #> 28 -2.228767013 0.476987816 0.0143476919 #> 29 -2.325847849 0.459390036 0.0129876676 #> 30 -2.422589998 0.440585182 0.0114269877 #> 31 -2.518998603 0.420751193 0.0096635860 #> 32 -2.615073425 0.400049565 0.0076963639 #> 33 -2.710810000 0.378626673 0.0055251263 #> 34 -2.806200581 0.356614982 0.0031505147 #> 35 -2.901234940 0.334134152 0.0005739382 #> 36 -2.995901017 0.311292055 -0.0022024960 #> 37 -3.090185467 0.288185720 -0.0051760516 #> 38 -3.184074111 0.264902202 -0.0083434311 #> 39 -3.277552304 0.241519400 -0.0117008417 #> 40 -3.370605236 0.218106810 -0.0152440579 #> 41 -3.463218177 0.194726229 -0.0189684823 #> 42 -3.555376677 0.171432411 -0.0228692014 #> 43 -3.647066718 0.148273673 -0.0269410395 #> 44 -3.738274839 0.125292465 -0.0311786073 #> 45 -3.828988227 0.102525891 -0.0355763478 #> 46 -3.919194789 0.080006197 -0.0401285781 #> 47 -4.008883199 0.057761220 -0.0448295271 #> 48 -4.098042931 0.035814802 -0.0496733702 #> 49 -4.186664276 0.014187176 -0.0546542601 #> 50 -4.274738350 -0.007104684 -0.0597663547 #> 51 -4.362257091 -0.028046739 -0.0650038410 #> 52 -4.449213248 -0.048627585 -0.0703609577 #> 53 -4.535600366 -0.068838184 -0.0758320130 #> 54 -4.621412763 -0.088671614 -0.0814114015 #> 55 -4.706645505 -0.108122840 -0.0870936184 #> 56 -4.791294380 -0.127188508 -0.0928732707 #> 57 -4.875355868 -0.145866755 -0.0987450876 #> 58 -4.958827105 -0.164157039 -0.1047039284 #> 59 -5.041705859 -0.182059980 -0.1107447891 #> 60 -5.123990491 -0.199577223 -0.1168628074 #> 61 -5.205679923 -0.216711307 -0.1230532668 #> 62 -5.286773611 -0.233465550 -0.1293115988 #> 63 -5.367271506 -0.249843943 -0.1356333846 #> 64 -5.447174028 -0.265851061 -0.1420143563 #> 65 -5.526482033 -0.281491973 -0.1484503963 #> 66 -5.605196787 -0.296772169 -0.1549375368 #> 67 -5.683319932 -0.311697491 -0.1614719584 #> 68 -5.760853464 -0.326274073 -0.1680499885 #> 69 -5.837799706 -0.340508283 -0.1746680988 #> 70 -5.914161282 -0.354406680 -0.1813229026 #> 71 -5.989941093 -0.367975967 -0.1880111521 #> 72 -6.065142296 -0.381222952 -0.1947297352 #> 73 -6.139768282 -0.394154517 -0.2014756717 #> 74 -6.213822655 -0.406777586 -0.2082461105 #> 75 -6.287309215 -0.419099097 -0.2150383254 #> 76 -6.360231938 -0.431125983 -0.2218497115 #> 77 -6.432594959 -0.442865149 -0.2286777813 #> 78 -6.504402560 -0.454323453 -0.2355201612 #> 79 -6.575659147 -0.465507693 -0.2423745875 #> 80 -6.646369247 -0.476424593 -0.2492389023 #> 81 -6.716537483 -0.487080791 -0.2561110501 #> 82 -6.786168572 -0.497482830 -0.2629890742 #> 83 -6.855267306 -0.507637151 -0.2698711122 #> 84 -6.923838547 -0.517550083 -0.2767553934 #> 85 -6.991887212 -0.527227840 -0.2836402345 #> 86 -7.059418267 -0.536676516 -0.2905240366 #> 87 -7.126436719 -0.545902081 -0.2974052813 #> 88 -7.192947604 -0.554910380 -0.3042825282 #> 89 -7.258955983 -0.563707126 -0.3111544109 #> 90 -7.324466935 -0.572297907 -0.3180196342 #> 91 -7.389485548 -0.580688177 -0.3248769714 #> 92 -7.454016916 -0.588883261 -0.3317252608 #> 93 -7.518066132 -0.596888352 -0.3385634034 #> 94 -7.581638284 -0.604708517 -0.3453903600 #> 95 -7.644738447 -0.612348689 -0.3522051484 #> 96 -7.707371685 -0.619813679 -0.3590068413 #> 97 -7.769543041 -0.627108167 -0.3657945633 #> 98 -7.831257537 -0.634236713 -0.3725674892 #> 99 -7.892520171 -0.641203751 -0.3793248413 #> 100 -7.953335909 -0.648013598 -0.3860658874 model <- function(){ model({ fx <- llikF(time, df1, df2) dMean <- llikFDdf1(time, df1, df2) dSd <- llikFDdf2(time, df1, df2) }) } et <- et(x) et$df1 <- 1 et$df2 <- 5 rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 100 × 6 #> time fx dMean dSd df1 df2 #> #> 1 0.001 2.48 -2.32 0.00983 1 5 #> 2 0.0515 0.484 -0.380 0.0108 1 5 #> 3 0.102 0.112 -0.0731 0.0117 1 5 #> 4 0.152 -0.118 0.0943 0.0125 1 5 #> 5 0.203 -0.291 0.204 0.0133 1 5 #> 6 0.253 -0.431 0.283 0.0140 1 5 #> # ℹ 94 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Gamma distribution — llikGamma","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"log likelihood derivatives Gamma distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"","code":"llikGamma(x, shape, rate, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"x variable distributed gamma distribution shape distribution's shape parameter. Must positive. rate distribution's rate parameters. Must positive. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"rxode2() model, can use llikGamma() use x rate arguments. can also get derivative shape rate llikGammaDshape() llikGammaDrate().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Gamma distribution — llikGamma","text":"","code":"# \\donttest{ llikGamma(1, 1, 10) #> fx dShape dRate #> 1 -7.697415 2.879801 -0.9 # You can use this in `rxode2` too: et <- et(seq(0.001, 1, length.out=10)) et$shape <- 1 et$rate <- 10 model <- function() { model({ fx <- llikGamma(time, shape, rate) dShape<- llikGammaDshape(time, shape, rate) dRate <- llikGammaDrate(time, shape, rate) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dShape dRate rate shape #> #> 1 0.001 2.29 -4.03 0.099 10 1 #> 2 0.112 1.18 0.691 -0.012 10 1 #> 3 0.223 0.0726 1.38 -0.123 10 1 #> 4 0.334 -1.04 1.78 -0.234 10 1 #> 5 0.445 -2.15 2.07 -0.345 10 1 #> 6 0.556 -3.26 2.29 -0.456 10 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Geom distribution — llikGeom","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"log likelihood derivatives Geom distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"","code":"llikGeom(x, prob, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"x variable distributed geom distribution prob probability success trial. 0 < prob <= 1. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"rxode2() model, can use llikGeom() use x rate arguments. can also get derivative prob llikGeomDprob().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikGeom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Geom distribution — llikGeom","text":"","code":"# \\donttest{ llikGeom(1:10, 0.2) #> fx dProb #> 1 -1.832581 3.75 #> 2 -2.055725 2.50 #> 3 -2.278869 1.25 #> 4 -2.502012 0.00 #> 5 -2.725156 -1.25 #> 6 -2.948299 -2.50 #> 7 -3.171443 -3.75 #> 8 -3.394586 -5.00 #> 9 -3.617730 -6.25 #> 10 -3.840873 -7.50 et <- et(1:10) et$prob <- 0.2 model <- function() { model({ fx <- llikGeom(time, prob) dProb <- llikGeomDprob(time, prob) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time fx dProb prob #> #> 1 1 -1.83 3.75 0.2 #> 2 2 -2.06 2.5 0.2 #> 3 3 -2.28 1.25 0.2 #> 4 4 -2.50 0 0.2 #> 5 5 -2.73 -1.25 0.2 #> 6 6 -2.95 -2.5 0.2 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"Calculate log likelihood negative binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"","code":"llikNbinom(x, size, prob, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"x Number successes size Size trial prob probability success full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"data frame fx pdf value dProb derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"rxode2() model, can use llikNbinom() use arguments. can also get derivative prob llikNbinomDprob()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinom","text":"","code":"# \\donttest{ llikNbinom(46:54, 100, 0.5) #> fx dProb #> 1 -13.25200 108 #> 2 -12.81168 106 #> 3 -12.38560 104 #> 4 -11.97335 102 #> 5 -11.57458 100 #> 6 -11.18892 98 #> 7 -10.81603 96 #> 8 -10.45559 94 #> 9 -10.10728 92 llikNbinom(46:54, 100, 0.5, TRUE) #> x size prob fx dProb #> 1 46 100 0.5 -13.25200 108 #> 2 47 100 0.5 -12.81168 106 #> 3 48 100 0.5 -12.38560 104 #> 4 49 100 0.5 -11.97335 102 #> 5 50 100 0.5 -11.57458 100 #> 6 51 100 0.5 -11.18892 98 #> 7 52 100 0.5 -10.81603 96 #> 8 53 100 0.5 -10.45559 94 #> 9 54 100 0.5 -10.10728 92 # In rxode2 you can use: et <- et(46:54) et$size <- 100 et$prob <-0.5 model <- function() { model({ fx <- llikNbinom(time, size, prob) dProb <- llikNbinomDprob(time, size, prob) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 9 × 5 #> time fx dProb size prob #> #> 1 46 -13.3 108 100 0.5 #> 2 47 -12.8 106 100 0.5 #> 3 48 -12.4 104 100 0.5 #> 4 49 -12.0 102 100 0.5 #> 5 50 -11.6 100 100 0.5 #> 6 51 -11.2 98 100 0.5 #> # ℹ 3 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"Calculate log likelihood negative binomial function (derivatives)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"","code":"llikNbinomMu(x, size, mu, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"x Number successes size Size trial mu mu parameter negative binomial full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"data frame fx pdf value dProb derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"rxode2() model, can use llikNbinomMu() use arguments. can also get derivative mu llikNbinomMuDmu()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNbinomMu.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the log likelihood of the negative binomial function (and its derivatives) — llikNbinomMu","text":"","code":"# \\donttest{ llikNbinomMu(46:54, 100, 40) #> fx dMu #> 1 -3.326828 0.1071429 #> 2 -3.446132 0.1250000 #> 3 -3.579663 0.1428571 #> 4 -3.727034 0.1607143 #> 5 -3.887874 0.1785714 #> 6 -4.061827 0.1964286 #> 7 -4.248554 0.2142857 #> 8 -4.447728 0.2321429 #> 9 -4.659037 0.2500000 llikNbinomMu(46:54, 100, 40, TRUE) #> x size mu fx dMu #> 1 46 100 40 -3.326828 0.1071429 #> 2 47 100 40 -3.446132 0.1250000 #> 3 48 100 40 -3.579663 0.1428571 #> 4 49 100 40 -3.727034 0.1607143 #> 5 50 100 40 -3.887874 0.1785714 #> 6 51 100 40 -4.061827 0.1964286 #> 7 52 100 40 -4.248554 0.2142857 #> 8 53 100 40 -4.447728 0.2321429 #> 9 54 100 40 -4.659037 0.2500000 et <- et(46:54) et$size <- 100 et$mu <- 40 model <- function() { model({ fx <- llikNbinomMu(time, size, mu) dProb <- llikNbinomMuDmu(time, size, mu) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 9 × 5 #> time fx dProb size mu #> #> 1 46 -3.33 0.107 100 40 #> 2 47 -3.45 0.125 100 40 #> 3 48 -3.58 0.143 100 40 #> 4 49 -3.73 0.161 100 40 #> 5 50 -3.89 0.179 100 40 #> 6 51 -4.06 0.196 100 40 #> # ℹ 3 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":null,"dir":"Reference","previous_headings":"","what":"Log likelihood for normal distribution — llikNorm","title":"Log likelihood for normal distribution — llikNorm","text":"Log likelihood normal distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log likelihood for normal distribution — llikNorm","text":"","code":"llikNorm(x, mean = 0, sd = 1, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log likelihood for normal distribution — llikNorm","text":"x Observation mean Mean likelihood sd Standard deviation likelihood full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log likelihood for normal distribution — llikNorm","text":"data frame fx pdf value dMean dSd derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Log likelihood for normal distribution — llikNorm","text":"rxode2() model, can use llikNorm() use arguments. can also get derivatives llikNormDmean() llikNormDsd()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Log likelihood for normal distribution — llikNorm","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikNorm.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Log likelihood for normal distribution — llikNorm","text":"","code":"# \\donttest{ llikNorm(0) #> fx dMean dSd #> 1 -0.9189385 0 -1 llikNorm(seq(-2,2,length.out=10), full=TRUE) #> x mean sd fx dMean dSd #> 1 -2.0000000 0 1 -2.9189385 -2.0000000 3.0000000 #> 2 -1.5555556 0 1 -2.1288151 -1.5555556 1.4197531 #> 3 -1.1111111 0 1 -1.5362225 -1.1111111 0.2345679 #> 4 -0.6666667 0 1 -1.1411608 -0.6666667 -0.5555556 #> 5 -0.2222222 0 1 -0.9436299 -0.2222222 -0.9506173 #> 6 0.2222222 0 1 -0.9436299 0.2222222 -0.9506173 #> 7 0.6666667 0 1 -1.1411608 0.6666667 -0.5555556 #> 8 1.1111111 0 1 -1.5362225 1.1111111 0.2345679 #> 9 1.5555556 0 1 -2.1288151 1.5555556 1.4197531 #> 10 2.0000000 0 1 -2.9189385 2.0000000 3.0000000 # With rxode2 you can use: et <- et(-3, 3, length.out=10) et$mu <- 0 et$sigma <- 1 model <- function(){ model({ fx <- llikNorm(time, mu, sigma) dMean <- llikNormDmean(time, mu, sigma) dSd <- llikNormDsd(time, mu, sigma) }) } ret <- rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ ret #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dMean dSd mu sigma #> #> 1 -3 -5.42 -3 8 0 1 #> 2 -2.33 -3.64 -2.33 4.44 0 1 #> 3 -1.67 -2.31 -1.67 1.78 0 1 #> 4 -1 -1.42 -1 0 0 1 #> 5 -0.333 -0.974 -0.333 -0.889 0 1 #> 6 0.333 -0.974 0.333 -0.889 0 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":null,"dir":"Reference","previous_headings":"","what":"log-likelihood for the Poisson distribution — llikPois","title":"log-likelihood for the Poisson distribution — llikPois","text":"log-likelihood Poisson distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log-likelihood for the Poisson distribution — llikPois","text":"","code":"llikPois(x, lambda, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log-likelihood for the Poisson distribution — llikPois","text":"x non negative integers lambda non-negative means full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log-likelihood for the Poisson distribution — llikPois","text":"data frame fx pdf value dLambda derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log-likelihood for the Poisson distribution — llikPois","text":"rxode2() model, can use llikPois() use arguments. can also get derivatives llikPoisDlambda()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log-likelihood for the Poisson distribution — llikPois","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikPois.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log-likelihood for the Poisson distribution — llikPois","text":"","code":"# \\donttest{ llikPois(0:7, lambda = 1) #> fx dLambda #> 1 -1.000000 -1 #> 2 -1.000000 0 #> 3 -1.693147 1 #> 4 -2.791759 2 #> 5 -4.178054 3 #> 6 -5.787492 4 #> 7 -7.579251 5 #> 8 -9.525161 6 llikPois(0:7, lambda = 4, full=TRUE) #> x lambda fx dLambda #> 1 0 4 -4.000000 -1.00 #> 2 1 4 -2.613706 -0.75 #> 3 2 4 -1.920558 -0.50 #> 4 3 4 -1.632876 -0.25 #> 5 4 4 -1.632876 0.00 #> 6 5 4 -1.856020 0.25 #> 7 6 4 -2.261485 0.50 #> 8 7 4 -2.821101 0.75 # In rxode2 you can use: et <- et(0:10) et$lambda <- 0.5 model <- function() { model({ fx <- llikPois(time, lambda) dLambda <- llikPoisDlambda(time, lambda) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 11 × 4 #> time fx dLambda lambda #> #> 1 0 -0.5 -1 0.5 #> 2 1 -1.19 1 0.5 #> 3 2 -2.58 3 0.5 #> 4 3 -4.37 5 0.5 #> 5 4 -6.45 7 0.5 #> 6 5 -8.75 9 0.5 #> # ℹ 5 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":null,"dir":"Reference","previous_headings":"","what":"Log likelihood of T and it's derivatives (from stan) — llikT","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"Log likelihood T derivatives (stan)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"","code":"llikT(x, df, mean = 0, sd = 1, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"x Observation df degrees freedom (\\(> 0\\), maybe non-integer). df = Inf allowed. mean Mean likelihood sd Standard deviation likelihood full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"data frame fx log pdf value dDf dMean dSd derivatives respect parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"rxode2() model, can use llikT() use arguments. can also get derivative df, mean sd llikTDdf(), llikTDmean() llikTDsd().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikT.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Log likelihood of T and it's derivatives (from stan) — llikT","text":"","code":"# \\donttest{ x <- seq(-3, 3, length.out = 21) llikT(x, 7, 0, 1) #> fx dDf dMean dSd #> 1 -4.2612484 -0.086858773 -1.5000000 3.5000000 #> 2 -3.8091335 -0.060260433 -1.5115465 3.0811756 #> 3 -3.3561547 -0.037201674 -1.5047022 2.6112853 #> 4 -2.9088542 -0.018379169 -1.4723926 2.0920245 #> 5 -2.4761000 -0.004340221 -1.4062500 1.5312500 #> 6 -2.0693878 0.004691380 -1.2972973 0.9459459 #> 7 -1.7028228 0.009010785 -1.1374408 0.3649289 #> 8 -1.3925134 0.009569214 -0.9218950 -0.1702945 #> 9 -1.1551333 0.007927361 -0.6521739 -0.6086957 #> 10 -1.0056349 0.005918024 -0.3385049 -0.8984485 #> 11 -0.9545342 0.005051942 0.0000000 -1.0000000 #> 12 -1.0056349 0.005918024 0.3385049 -0.8984485 #> 13 -1.1551333 0.007927361 0.6521739 -0.6086957 #> 14 -1.3925134 0.009569214 0.9218950 -0.1702945 #> 15 -1.7028228 0.009010785 1.1374408 0.3649289 #> 16 -2.0693878 0.004691380 1.2972973 0.9459459 #> 17 -2.4761000 -0.004340221 1.4062500 1.5312500 #> 18 -2.9088542 -0.018379169 1.4723926 2.0920245 #> 19 -3.3561547 -0.037201674 1.5047022 2.6112853 #> 20 -3.8091335 -0.060260433 1.5115465 3.0811756 #> 21 -4.2612484 -0.086858773 1.5000000 3.5000000 llikT(x, 15, 0, 1, full=TRUE) #> fx dDf dMean dSd #> 1 -4.6956220 -0.0338931511 -2.0000000 5.0000000 #> 2 -4.1042965 -0.0225073150 -1.9380888 4.2328398 #> 3 -3.5354158 -0.0134033865 -1.8497110 3.4393064 #> 4 -2.9974985 -0.0065857823 -1.7310665 2.6352396 #> 5 -2.5001272 -0.0019378861 -1.5789474 1.8421053 #> 6 -2.0536885 0.0007929097 -1.3913043 1.0869565 #> 7 -1.6689304 0.0019903977 -1.1678832 0.4014599 #> 8 -1.3563325 0.0021369166 -0.9108159 -0.1802657 #> 9 -1.1253251 0.0017504002 -0.6250000 -0.6250000 #> 10 -0.9834495 0.0012985422 -0.3180915 -0.9045726 #> 11 -0.9355929 0.0011086635 0.0000000 -1.0000000 #> 12 -0.9834495 0.0012985422 0.3180915 -0.9045726 #> 13 -1.1253251 0.0017504002 0.6250000 -0.6250000 #> 14 -1.3563325 0.0021369166 0.9108159 -0.1802657 #> 15 -1.6689304 0.0019903977 1.1678832 0.4014599 #> 16 -2.0536885 0.0007929097 1.3913043 1.0869565 #> 17 -2.5001272 -0.0019378861 1.5789474 1.8421053 #> 18 -2.9974985 -0.0065857823 1.7310665 2.6352396 #> 19 -3.5354158 -0.0134033865 1.8497110 3.4393064 #> 20 -4.1042965 -0.0225073150 1.9380888 4.2328398 #> 21 -4.6956220 -0.0338931511 2.0000000 5.0000000 et <- et(-3, 3, length.out=10) et$nu <- 7 et$mean <- 0 et$sd <- 1 model <- function() { model({ fx <- llikT(time, nu, mean, sd) dDf <- llikTDdf(time, nu, mean, sd) dMean <- llikTDmean(time, nu, mean, sd) dSd <- llikTDsd(time, nu, mean, sd) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 8 #> time fx dDf dMean dSd nu mean sd #> #> 1 -3 -4.26 -0.0869 -1.5 3.5 7 0 1 #> 2 -2.33 -3.26 -0.0326 -1.5 2.5 7 0 1 #> 3 -1.67 -2.29 0.000289 -1.36 1.27 7 0 1 #> 4 -1 -1.49 0.00971 -1 0 7 0 1 #> 5 -0.333 -1.02 0.00611 -0.375 -0.875 7 0 1 #> 6 0.333 -1.02 0.00611 0.375 -0.875 7 0 1 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Unif distribution — llikUnif","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"log likelihood derivatives Unif distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"","code":"llikUnif(x, alpha, beta, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"x variable distributed uniform distribution alpha lower limit uniform distribution beta upper limit distribution full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"rxode2() model, can use llikUnif() use x rate arguments. can also get derivative alpha beta llikUnifDalpha() llikUnifDbeta().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikUnif.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Unif distribution — llikUnif","text":"","code":"# \\donttest{ llikUnif(1, -2, 2) #> fx dAlpha dBeta #> 1 -1.386294 0.25 -0.25 et <- et(seq(1,1, length.out=4)) et$alpha <- -2 et$beta <- 2 model <- function() { model({ fx <- llikUnif(time, alpha, beta) dAlpha<- llikUnifDalpha(time, alpha, beta) dBeta <- llikUnifDbeta(time, alpha, beta) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 6 #> time fx dAlpha dBeta alpha beta #> #> 1 1 -1.39 0.25 -0.25 -2 2 #> 2 1 -1.39 0.25 -0.25 -2 2 #> 3 1 -1.39 0.25 -0.25 -2 2 #> 4 1 -1.39 0.25 -0.25 -2 2 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":null,"dir":"Reference","previous_headings":"","what":"log likelihood and derivatives for Weibull distribution — llikWeibull","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"log likelihood derivatives Weibull distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"","code":"llikWeibull(x, shape, scale, full = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"x variable distributed Weibull distribution shape, scale shape scale parameters, latter defaulting 1. full Add data frame showing x, mean, sd well fx derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"data frame fx log pdf value dProb derivatives respect prob parameters observation time-point","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"rxode2() model, can use llikWeibull() use x rate arguments. can also get derivative shape scale llikWeibullDshape() llikWeibullDscale().","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/llikWeibull.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"log likelihood and derivatives for Weibull distribution — llikWeibull","text":"","code":"# \\donttest{ llikWeibull(1, 1, 10) #> fx dShape dScale #> 1 -2.402585 -1.072327 -0.09 # rxode2 can use this too: et <- et(seq(0.001, 1, length.out=10)) et$shape <- 1 et$scale <- 10 model <- function() { model({ fx <- llikWeibull(time, shape, scale) dShape<- llikWeibullDshape(time, shape, scale) dScale <- llikWeibullDscale(time, shape, scale) }) } rxSolve(model, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 6 #> time fx dShape dScale shape scale #> #> 1 0.001 -2.30 -8.21 -0.100 1 10 #> 2 0.112 -2.31 -3.44 -0.0989 1 10 #> 3 0.223 -2.32 -2.72 -0.0978 1 10 #> 4 0.334 -2.34 -2.29 -0.0967 1 10 #> 5 0.445 -2.35 -1.97 -0.0956 1 10 #> 6 0.556 -2.36 -1.73 -0.0944 1 10 #> # ℹ 4 more rows # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":null,"dir":"Reference","previous_headings":"","what":"logit and inverse logit (expit) functions — logit","title":"logit and inverse logit (expit) functions — logit","text":"logit inverse logit (expit) functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"logit and inverse logit (expit) functions — logit","text":"","code":"logit(x, low = 0, high = 1) expit(alpha, low = 0, high = 1) logitNormInfo(mean = 0, sd = 1, low = 0, high = 1, abs.tol = 1e-06, ...) probitNormInfo(mean = 0, sd = 1, low = 0, high = 1, abs.tol = 1e-06, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"logit and inverse logit (expit) functions — logit","text":"x Input value(s) range [low,high] translate -Inf Inf low Lowest value range high Highest value range alpha Infinite value(s) translate range [low, high] mean logit-scale mean sd logit-scale standard deviation abs.tol absolute accuracy requested. ... parameters passed integrate()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"logit and inverse logit (expit) functions — logit","text":"values logit expit","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"logit and inverse logit (expit) functions — logit","text":"logit given : logit(p) = -log(1/p-1) : p = x-low/high-low expit given : expit(p, low, high) = (high-low)/(1+exp(-alpha)) + low logitNormInfo() gives mean, variance coefficient variability untransformed scale.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/logit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"logit and inverse logit (expit) functions — logit","text":"","code":"logit(0.25) #> [1] -1.098612 expit(-1.09) #> [1] 0.2516183 logitNormInfo(logit(0.25), sd = 0.1) #> mean var cv #> 0.2504672899 0.0003515538 0.0748591440 logitNormInfo(logit(1, 0, 10), sd = 1, low = 0, high = 10) #> mean var cv #> 1.3386966 1.2662276 0.8405697"},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":null,"dir":"Reference","previous_headings":"","what":"lowergamma: upper incomplete gamma function — lowergamma","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"tgamma_lower boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"","code":"lowergamma(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"numeric '' parameter upper incomplete gamma z numeric 'z' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"lowergamma results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"lowergamma function given : $$lowergamma(, z) = \\int_{0}^{z}t^{-1}\\cdot e^{-t} dt$$","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/lowergamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"lowergamma: upper incomplete gamma function — lowergamma","text":"","code":"lowergamma(1, 3) #> [1] 0.9502129 lowergamma(1:3, 3) #> [1] 0.9502129 0.8008517 1.1536198 lowergamma(1, 1:3) #> [1] 0.6321206 0.8646647 0.9502129"},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"generic function meanProbs produces expected confidence bands either t distribution normal sampling distribution. uses qnorm() qt() mean standard deviation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"","code":"meanProbs(x, ...) # Default S3 method meanProbs( x, probs = seq(0, 1, 0.25), na.rm = FALSE, names = TRUE, useT = TRUE, onlyProbs = TRUE, pred = FALSE, n = 0L, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"x numeric vector whose mean probability based confidence values wanted, NA NaN values allowed numeric vectors unless ‘na.rm’ ‘TRUE’. ... Arguments passed default method, allows many different methods applied. probs numeric vector probabilities values interval 0 1 . na.rm logical; true, NA NaN's removed x quantiles computed. names logical; true, result names attribute. useT logical; true, use t-distribution calculate confidence-based estimates. false use normal distribution calculate confidence based estimates. onlyProbs logical; true, return probability based confidence interval estimates, otherwise return pred logical; true use prediction interval instead confidence interval n integer/integerish; n used calculate prediction confidence interval. n=0 (default) use number non-NA observations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"default return probabilities names (named) points expected distribution located given sampling mean standard deviation. onlyProbs=FALSE prepend mean, variance, standard deviation, minimum, maximum number non-NA observations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"single probability, p, uses either: mean + qt(p, df=n)*sd/sqrt(n) mean + qnorm(p)*sd/sqrt(n) smallest observation corresponds probability 0 largest probability 1 mean corresponds 0.5. mean standard deviation sample calculated based Welford's method single pass. meant perform way quantile() can drop replacement code using quantile() using distributional assumptions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/meanProbs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate expected confidence bands or prediction intreval with normal or t sampling distribution — meanProbs","text":"","code":"quantile(x<- rnorm(1001)) #> 0% 25% 50% 75% 100% #> -3.43144297 -0.64684345 0.02633195 0.73461597 3.21812718 meanProbs(x) #> 0% 25% 50% 75% 100% #> -3.43144297 0.01513579 0.03671114 0.05828649 3.21812718 # Can get some extra statistics if you request onlyProbs=FALSE meanProbs(x, onlyProbs=FALSE) #> mean var sd min max #> 0.03671114 1.02348884 1.01167625 -3.43144297 3.21812718 #> n 0% 25% 50% 75% #> 1001.00000000 -3.43144297 0.01513579 0.03671114 0.05828649 #> 100% #> 3.21812718 x[2] <- NA_real_ meanProbs(x, onlyProbs=FALSE) #> mean var sd min max n 0% 25% 50% 75% 100% #> NA NA NA NA NA NA NA NA NA NA NA quantile(x<- rnorm(42)) #> 0% 25% 50% 75% 100% #> -2.1683411 -1.0129511 0.0234715 0.6878369 1.7242007 meanProbs(x) #> 0% 25% 50% 75% 100% #> -2.16834112 -0.30730494 -0.19063058 -0.07395621 1.72420071 meanProbs(x, useT=FALSE) #> 0% 25% 50% 75% 100% #> -2.16834112 -0.30627094 -0.19063058 -0.07499022 1.72420071"},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign the model block in the rxode2 related object — model<-","title":"Assign the model block in the rxode2 related object — model<-","text":"Assign model block rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign the model block in the rxode2 related object — model<-","text":"","code":"model(x, envir = environment(x)) <- value"},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign the model block in the rxode2 related object — model<-","text":"x rxode2 related object envir Environment assignment occurs value Value object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign the model block in the rxode2 related object — model<-","text":"rxode2 related object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model-set.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign the model block in the rxode2 related object — model<-","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":null,"dir":"Reference","previous_headings":"","what":"Model block for rxode2/nlmixr models — model.function","title":"Model block for rxode2/nlmixr models — model.function","text":"Model block rxode2/nlmixr models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Model block for rxode2/nlmixr models — model.function","text":"","code":"# S3 method for class '`function`' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # S3 method for class 'rxUi' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # S3 method for class 'rxode2' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # S3 method for class 'rxModelVars' model( x, ..., append = NULL, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) model( x, ..., append = FALSE, auto = getOption(\"rxode2.autoVarPiping\", TRUE), cov = NULL, envir = parent.frame() ) # Default S3 method model(x, ..., append = FALSE, cov = NULL, envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Model block for rxode2/nlmixr models — model.function","text":"x model expression ... arguments append boolean determine lines appended piping. possible values : TRUE lines appended model instead replaced FALSE lines replaced model (default) NA lines pre-pended model instead replaced lhs expression, append lines last observed line expression lhs auto boolean tells piping automatically selects parameters characterized population parameter, subject variability, covariate. TRUE automatic selection occurs. FALSE automatic selection turned everything added covariate (can promoted parameter ini statement). default TRUE, can changed options(rxode2.autoVarPiping=FALSE). cov character vector variables assumed covariates. override automatic promotion population parameter estimate (eta) envir environment unevaluated model expressions evaluated. May also NULL, list, data frame, pairlist integer specified sys.call.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Model block for rxode2/nlmixr models — model.function","text":"Model block ini information included. ini must called model block","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/model.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Model block for rxode2/nlmixr models — model.function","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract model lines from a rxui model — modelExtract","title":"Extract model lines from a rxui model — modelExtract","text":"Extract model lines rxui model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract model lines from a rxui model — modelExtract","text":"","code":"modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class '`function`' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class 'rxUi' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class 'rxode2' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # S3 method for class 'rxModelVars' modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() ) # Default S3 method modelExtract( x, ..., expression = FALSE, endpoint = FALSE, lines = FALSE, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract model lines from a rxui model — modelExtract","text":"x model extract lines ... variables extract. missing, extract entire model (conditioned endpoint option ) expression return expressions (TRUE) strings (FALSE) endpoint include endpoint. can : NA – Missing means include endpoint non-endpoint lines TRUE – include endpoint lines FALSE – include non-endpoint lines lines boolean. TRUE add lines attribute output value ie attr(, \"lines\") envir Environment evaluating variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract model lines from a rxui model — modelExtract","text":"expressions strings extracted lines. Note duplicated lhs expression line, return lines","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Extract model lines from a rxui model — modelExtract","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/modelExtract.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Extract model lines from a rxui model — modelExtract","text":"","code":"one.compartment <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.sd) }) } f <- one.compartment() modelExtract(f, cp) #> [1] \"cp <- center/v\" modelExtract(one.compartment, d/dt(depot)) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] \"d/dt(depot) <- -ka * depot\" # from variable var <- \"d/dt(depot)\" modelExtract(one.compartment, var) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] \"d/dt(depot) <- -ka * depot\" modelExtract(f, endpoint=NA, lines=TRUE, expression=TRUE) #> [[1]] #> ka <- exp(tka + eta.ka) #> #> [[2]] #> cl <- exp(tcl + eta.cl) #> #> [[3]] #> v <- exp(tv + eta.v) #> #> [[4]] #> d/dt(depot) <- -ka * depot #> #> [[5]] #> d/dt(center) <- ka * depot - cl/v * center #> #> [[6]] #> cp <- center/v #> #> [[7]] #> cp ~ add(add.sd) #> #> attr(,\"lines\") #> [1] 1 2 3 4 5 6 7"},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":null,"dir":"Reference","previous_headings":"","what":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"NULL given method, choices returned named vector.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"","code":"odeMethodToInt(method = c(\"liblsoda\", \"lsoda\", \"dop853\", \"indLin\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"method method solving ODEs. Currently supports: \"liblsoda\" thread safe lsoda. supports parallel thread-based solving, ignores user Jacobian specification. \"lsoda\" – LSODA solver. support parallel thread-based solving, allows user Jacobian specification. \"dop853\" – DOP853 solver. support parallel thread-based solving user Jacobian specification \"indLin\" – Solving inductive linearization. rxode2 dll must setup specially use solving routine.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/odeMethodToInt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conversion between character and integer ODE integration methods for rxode2 — odeMethodToInt","text":"integer method (unless input NULL, case, see details)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative distribution of standard normal — phi","title":"Cumulative distribution of standard normal — phi","text":"Cumulative distribution standard normal","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative distribution of standard normal — phi","text":"","code":"phi(q)"},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative distribution of standard normal — phi","text":"q vector quantiles","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative distribution of standard normal — phi","text":"cumulative distribution standard normal distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Cumulative distribution of standard normal — phi","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/phi.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Cumulative distribution of standard normal — phi","text":"","code":"# phi is equivalent to pnorm(x) phi(3) #> [1] 0.9986501 # See pnorm(3) #> [1] 0.9986501 # This is provided for NONMEM-like compatibility in rxode2 models"},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Plot rxode2 objects — plot.rxSolve","title":"Plot rxode2 objects — plot.rxSolve","text":"Plot rxode2 objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plot rxode2 objects — plot.rxSolve","text":"","code":"# S3 method for class 'rxSolve' plot(x, y, ..., log = \"\", xlab = \"Time\", ylab = \"\") # S3 method for class 'rxSolveConfint1' plot(x, y, ..., xlab = \"Time\", ylab = \"\", log = \"\") # S3 method for class 'rxSolveConfint2' plot(x, y, ..., xlab = \"Time\", ylab = \"\", log = \"\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plot rxode2 objects — plot.rxSolve","text":"x rxode2 object plot y Compartments left-hand-side values plot either bare name character vector ... Ignored log \"\" (neither x y), \"x\", \"y\", \"xy\" (\"yx\") log-scale? xlab, ylab x y axis labels","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plot.rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plot rxode2 objects — plot.rxSolve","text":"ggplot2 object","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Update Solved object with '+' — +.rxSolve","title":"Update Solved object with '+' — +.rxSolve","text":"Update Solved object '+'","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update Solved object with '+' — +.rxSolve","text":"","code":"# S3 method for class 'rxSolve' solved + new"},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update Solved object with '+' — +.rxSolve","text":"solved Solved object new New information added table.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update Solved object with '+' — +.rxSolve","text":"new solved object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/plus-.rxSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Update Solved object with '+' — +.rxSolve","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":null,"dir":"Reference","previous_headings":"","what":"Print the rxCoef object — print.rxCoef","title":"Print the rxCoef object — print.rxCoef","text":"prints user supplied arguments rxCoef object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print the rxCoef object — print.rxCoef","text":"","code":"# S3 method for class 'rxCoef' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print the rxCoef object — print.rxCoef","text":"x rxCoef object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print the rxCoef object — print.rxCoef","text":"original object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxCoef.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print the rxCoef object — print.rxCoef","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":null,"dir":"Reference","previous_headings":"","what":"Print rxDll object — print.rxDll","title":"Print rxDll object — print.rxDll","text":"tells rxDll loaded, ready /deleted.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print rxDll object — print.rxDll","text":"","code":"# S3 method for class 'rxDll' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print rxDll object — print.rxDll","text":"original object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxDll.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print rxDll object — print.rxDll","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":null,"dir":"Reference","previous_headings":"","what":"Print Values — print.rxModelVars","title":"Print Values — print.rxModelVars","text":"print prints argument returns invisibly (via invisible(x)). generic function means new printing methods can easily added new classes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print Values — print.rxModelVars","text":"","code":"# S3 method for class 'rxModelVars' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print Values — print.rxModelVars","text":"x object used select method. ... arguments passed methods.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print Values — print.rxModelVars","text":"returns invisibly model variables object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Print Values — print.rxModelVars","text":"default method, print.default help page. Use methods(\"print\") get methods print generic. print.factor allows customization used printing ordered factors well. print.table printing tables allows customization. R 3.0.0, prints description case table 0-extents (can happen classifier valid data). See noquote example class whose main purpose specific print method.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Print Values — print.rxModelVars","text":"Chambers, J. M. Hastie, T. J. (1992) Statistical Models S. Wadsworth & Brooks/Cole.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxModelVars.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Print Values — print.rxModelVars","text":"","code":"require(stats) ts(1:20) #-- print is the \"Default function\" --> print.ts(.) is called #> Time Series: #> Start = 1 #> End = 20 #> Frequency = 1 #> [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 for(i in 1:3) print(1:i) #> [1] 1 #> [1] 1 2 #> [1] 1 2 3 ## Printing of factors attenu$station ## 117 levels -> 'max.levels' depending on width #> [1] 117 1083 1095 283 135 475 113 1008 1028 2001 117 1117 1438 1083 1013 #> [16] 1014 1015 1016 1095 1011 1028 270 280 116 266 117 113 112 130 475 #> [31] 269 135 1093 1093 111 116 290 112 113 128 126 127 141 266 110 #> [46] 1027 111 125 135 475 262 269 1052 411 290 130 272 1096 1102 112 #> [61] 113 1028 2714 2708 2715 3501 655 272 1032 1377 1028 1250 1051 1293 1291 #> [76] 1292 283 885 2734 2728 1413 1445 1408 1411 1410 1409 1377 1492 #> [91] 1251 1422 1376 286 5028 942 5054 958 952 5165 117 955 #> [106] 5055 5060 412 5053 5058 5057 5051 5115 931 5056 #> [121] 5059 5061 5062 5052 724 5066 5050 2316 5055 942 5028 5165 #> [136] 952 958 955 117 412 5053 5054 5058 5057 5115 5056 5060 1030 1418 1383 #> [151] 1308 1298 1299 1219 1030 1418 1383 1299 1308 1219 1456 5045 #> [166] 5044 5160 5043 5047 c168 5068 c118 5042 5067 5049 c204 5070 c266 c203 5069 #> [181] 5073 5072 #> 117 Levels: 1008 1011 1013 1014 1015 1016 1027 1028 1030 1032 1051 1052 ... c266 ## ordered factors: levels \"l1 < l2 < ..\" esoph$agegp[1:12] #> [1] 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 25-34 #> Levels: 25-34 < 35-44 < 45-54 < 55-64 < 65-74 < 75+ esoph$alcgp[1:12] #> [1] 0-39g/day 0-39g/day 0-39g/day 0-39g/day 40-79 40-79 40-79 #> [8] 40-79 80-119 80-119 80-119 120+ #> Levels: 0-39g/day < 40-79 < 80-119 < 120+ ## Printing of sparse (contingency) tables set.seed(521) t1 <- round(abs(rt(200, df = 1.8))) t2 <- round(abs(rt(200, df = 1.4))) table(t1, t2) # simple #> t2 #> t1 0 1 2 3 4 5 6 7 8 10 17 21 30 #> 0 21 22 14 4 1 0 1 1 1 0 1 0 0 #> 1 25 21 7 3 4 2 1 1 1 1 0 0 0 #> 2 8 16 9 2 0 0 0 0 0 0 0 1 1 #> 3 3 7 0 2 0 0 0 0 0 0 0 0 0 #> 4 1 5 2 0 0 0 1 0 0 0 0 0 0 #> 5 1 1 1 0 0 0 0 0 0 0 0 0 0 #> 6 1 3 0 0 0 0 0 0 0 0 0 0 0 #> 7 1 0 0 0 0 0 0 0 0 0 0 0 0 #> 9 0 0 0 1 0 0 0 0 0 0 0 0 0 #> 12 1 0 0 0 0 0 0 0 0 0 0 0 0 print(table(t1, t2), zero.print = \".\") # nicer to read #> t2 #> t1 0 1 2 3 4 5 6 7 8 10 17 21 30 #> 0 21 22 14 4 1 . 1 1 1 . 1 . . #> 1 25 21 7 3 4 2 1 1 1 1 . . . #> 2 8 16 9 2 . . . . . . . 1 1 #> 3 3 7 . 2 . . . . . . . . . #> 4 1 5 2 . . . 1 . . . . . . #> 5 1 1 1 . . . . . . . . . . #> 6 1 3 . . . . . . . . . . . #> 7 1 . . . . . . . . . . . . #> 9 . . . 1 . . . . . . . . . #> 12 1 . . . . . . . . . . . . ## same for non-integer \"table\": T <- table(t2,t1) T <- T * (1+round(rlnorm(length(T)))/4) print(T, zero.print = \".\") # quite nicer, #> t1 #> t2 0 1 2 3 4 5 6 7 9 12 #> 0 26.25 25.00 10.00 3.75 1.50 1.25 1.25 1.00 . 2.00 #> 1 22.00 26.25 16.00 10.50 27.50 1.25 3.00 . . . #> 2 21.00 7.00 13.50 . 3.00 1.25 . . . . #> 3 5.00 3.75 2.50 2.50 . . . . 1.50 . #> 4 1.25 5.00 . . . . . . . . #> 5 . 2.00 . . . . . . . . #> 6 1.25 1.50 . . 1.25 . . . . . #> 7 1.25 1.25 . . . . . . . . #> 8 1.50 1.00 . . . . . . . . #> 10 . 1.00 . . . . . . . . #> 17 1.00 . . . . . . . . . #> 21 . . 2.75 . . . . . . . #> 30 . . 5.00 . . . . . . . print.table(T[,2:8] * 1e9, digits=3, zero.print = \".\") #> t1 #> t2 1 2 3 4 5 6 7 #> 0 2.50e+10 1.00e+10 3.75e+09 1.50e+09 1.25e+09 1.25e+09 1.00e+09 #> 1 2.62e+10 1.60e+10 1.05e+10 2.75e+10 1.25e+09 3.00e+09 . #> 2 7.00e+09 1.35e+10 . 3.00e+09 1.25e+09 . . #> 3 3.75e+09 2.50e+09 2.50e+09 . . . . #> 4 5.00e+09 . . . . . . #> 5 2.00e+09 . . . . . . #> 6 1.50e+09 . . 1.25e+09 . . . #> 7 1.25e+09 . . . . . . #> 8 1.00e+09 . . . . . . #> 10 1.00e+09 . . . . . . #> 17 . . . . . . . #> 21 . 2.75e+09 . . . . . #> 30 . 5.00e+09 . . . . . ## still slightly inferior to Matrix::Matrix(T) for larger T ## Corner cases with empty extents: table(1, NA) # < table of extent 1 x 0 > #> < table of extent 1 x 0 >"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Print information about the rxode2 object. — print.rxode2","title":"Print information about the rxode2 object. — print.rxode2","text":"prints model name status able solved","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print information about the rxode2 object. — print.rxode2","text":"","code":"# S3 method for class 'rxode2' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print information about the rxode2 object. — print.rxode2","text":"x rxode2 object ... Ignored parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print information about the rxode2 object. — print.rxode2","text":"original object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/print.rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print information about the rxode2 object. — print.rxode2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":null,"dir":"Reference","previous_headings":"","what":"probit and inverse probit functions — probit","title":"probit and inverse probit functions — probit","text":"probit inverse probit functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"probit and inverse probit functions — probit","text":"","code":"probit(x, low = 0, high = 1) probitInv(x, low = 0, high = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"probit and inverse probit functions — probit","text":"x Input value(s) range [low,high] translate -Inf Inf low Lowest value range high Highest value range","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"probit and inverse probit functions — probit","text":"values probit, probitInv probitNormInfo","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/probit.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"probit and inverse probit functions — probit","text":"","code":"probit(0.25) #> [1] -0.6744898 probitInv(-0.674) #> [1] 0.2501557 probitNormInfo(probit(0.25), sd = 0.1) #> mean var cv #> 0.25106491 0.00100658 0.12636827 probitNormInfo(probit(1, 0, 10), sd = 1, low = 0, high = 10) #> mean var cv #> 1.824166 4.307824 1.137796"},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":null,"dir":"Reference","previous_headings":"","what":"One correlation sample from the LKJ distribution — rLKJ1","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"One correlation sample LKJ distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"","code":"rLKJ1(d, eta = 1, cholesky = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"d dimension correlation matrix eta scaling parameter LKJ distribution. Must > 1. Also related degrees freedom nu. eta = (nu-1)/2. cholesky boolean; TRUE return cholesky decomposition.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"correlation sample LKJ distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rLKJ1.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"One correlation sample from the LKJ distribution — rLKJ1","text":"Matthew Fidler (translated RcppArmadillo) Emma Schwager","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/reexports.html","id":null,"dir":"Reference","previous_headings":"","what":"Objects exported from other packages — reexports","title":"Objects exported from other packages — reexports","text":"objects imported packages. Follow links see documentation. ggplot2 aes, expand_limits, facet_wrap, geom_line, ggplot, label_both, label_context, label_context, label_value, label_wrap_gen, scale_type, scale_x_continuous, scale_x_date, scale_x_discrete, scale_y_continuous, scale_y_date, scale_y_discrete, waiver, xlab, ylab lotri lotri magrittr %>%","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/reexports.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Objects exported from other packages — reexports","text":"Inherited parent routine","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":null,"dir":"Reference","previous_headings":"","what":"Scaled Inverse Chi Squared distribution — rinvchisq","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"Scaled Inverse Chi Squared distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"","code":"rinvchisq(n = 1L, nu = 1, scale = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"n Number random samples nu degrees freedom inverse chi square scale Scale inverse chi squared distribution (default 1).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"vector inverse chi squared deviates.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rinvchisq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Scaled Inverse Chi Squared distribution — rinvchisq","text":"","code":"rinvchisq(3, 4, 1) ## Scale = 1, degrees of freedom = 4 #> [1] 0.7552981 0.6805595 1.5079118 rinvchisq(2, 4, 2) ## Scale = 2, degrees of freedom = 4 #> [1] 5.191181 3.240882"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":null,"dir":"Reference","previous_headings":"","what":"Allow unloading of dlls — rxAllowUnload","title":"Allow unloading of dlls — rxAllowUnload","text":"Allow unloading dlls","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Allow unloading of dlls — rxAllowUnload","text":"","code":"rxAllowUnload(allow)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Allow unloading of dlls — rxAllowUnload","text":"allow boolean indicating garbage collection unload rxode2 dlls.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Allow unloading of dlls — rxAllowUnload","text":"Boolean allow; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Allow unloading of dlls — rxAllowUnload","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAllowUnload.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Allow unloading of dlls — rxAllowUnload","text":"","code":"# Garbage collection will not unload un-used rxode2 dlls rxAllowUnload(FALSE); #> [1] FALSE # Garbage collection will unload unused rxode2 dlls rxAllowUnload(TRUE); #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Append two rxui models together — rxAppendModel","title":"Append two rxui models together — rxAppendModel","text":"Append two rxui models together","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append two rxui models together — rxAppendModel","text":"","code":"rxAppendModel(..., common = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append two rxui models together — rxAppendModel","text":"... models append together common boolean determines need common value bind","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Append two rxui models together — rxAppendModel","text":"New model models appended together","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Append two rxui models together — rxAppendModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAppendModel.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Append two rxui models together — rxAppendModel","text":"","code":"# \\donttest{ ocmt <- function() { ini({ tka <- exp(0.45) # Ka tcl <- exp(1) # Cl tv <- exp(3.45); # log V ## the label(\"Label name\") works with all models add.sd <- 0.7 }) model({ ka <- tka cl <- tcl v <- tv d/dt(depot) <- -ka * depot d/dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.sd) }) } idr <- function() { ini({ tkin <- log(1) tkout <- log(1) tic50 <- log(10) gamma <- fix(1) idr.sd <- 1 }) model({ kin <- exp(tkin) kout <- exp(tkout) ic50 <- exp(tic50) d/dt(eff) <- kin - kout*(1-ceff^gamma/(ic50^gamma+ceff^gamma)) eff ~ add(idr.sd) }) } rxAppendModel(ocmt %>% model(ceff=cp,append=TRUE), idr) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd tkin tkout tic50 gamma #> 1.568312 2.718282 31.500392 0.700000 0.000000 0.000000 2.302585 1.000000 #> idr.sd #> 1.000000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> 3 3 eff #> ── Multiple Endpoint Model ($multipleEndpoint): ── #> variable cmt dvid* #> 1 cp ~ … cmt='cp' or cmt=4 dvid='cp' or dvid=1 #> 2 eff ~ … cmt='eff' or cmt=3 dvid='eff' or dvid=2 #> * If dvids are outside this range, all dvids are re-numered sequentially, ie 1,7, 10 becomes 1,2,3 etc #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> tkin <- 0 #> tkout <- 0 #> tic50 <- 2.30258509299405 #> gamma <- fix(1) #> idr.sd <- c(0, 1) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.sd) #> ceff <- cp #> kin <- exp(tkin) #> kout <- exp(tkout) #> ic50 <- exp(tic50) #> d/dt(eff) <- kin - kout * (1 - ceff^gamma/(ic50^gamma + #> ceff^gamma)) #> eff ~ add(idr.sd) #> }) #> } # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign Control Variable — rxAssignControlValue","title":"Assign Control Variable — rxAssignControlValue","text":"Assign Control Variable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign Control Variable — rxAssignControlValue","text":"","code":"rxAssignControlValue(ui, option, value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign Control Variable — rxAssignControlValue","text":"ui rxode2 ui function option Option name control modify value Value control modify","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign Control Variable — rxAssignControlValue","text":"Nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignControlValue.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign Control Variable — rxAssignControlValue","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign pointer based on model variables — rxAssignPtr","title":"Assign pointer based on model variables — rxAssignPtr","text":"Assign pointer based model variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign pointer based on model variables — rxAssignPtr","text":"","code":"rxAssignPtr(object = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign pointer based on model variables — rxAssignPtr","text":"object rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxAssignPtr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign pointer based on model variables — rxAssignPtr","text":"nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates a logical matrix for block matrixes. — rxBlockZeros","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"Creates logical matrix block matrixes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"","code":"rxBlockZeros(mat, i)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"mat Matrix Row/column block matrix setup.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxBlockZeros.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates a logical matrix for block matrixes. — rxBlockZeros","text":"logical matrix returning elements zero.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the C file associated with the rxode2 object — rxC","title":"Return the C file associated with the rxode2 object — rxC","text":"return C code generating rxode2 DLL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the C file associated with the rxode2 object — rxC","text":"","code":"rxC(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the C file associated with the rxode2 object — rxC","text":"obj rxode2 family objects character string model specification location file model specification.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the C file associated with the rxode2 object — rxC","text":"path library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxC.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the C file associated with the rxode2 object — rxC","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":null,"dir":"Reference","previous_headings":"","what":"Use cat when rxode2.verbose is TRUE — rxCat","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"Use cat rxode2.verbose TRUE","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"","code":"rxCat(a, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"... Parameters sent cat","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCat.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Use cat when rxode2.verbose is TRUE — rxCat","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":null,"dir":"Reference","previous_headings":"","what":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"Bind study parameters individual parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"","code":"rxCbindStudyIndividual(studyParameters, individualParameters)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"studyParameters study parameters, often can generated sampling population. can either matrix data frame individualParameters data frame individual parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"Data frame can used rxode2 simulations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCbindStudyIndividual.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Bind the study parameters and individual parameters — rxCbindStudyIndividual","text":"","code":"# Function for coverting coefficient of covariance into a variance lognCv <- function(x){log((x/100)^2+1)} set.seed(32) nSub <- 100 nStud <- 10 #define theta theta <- c(lka=log(0.5), # log ka lCl=log(5), # log Cl lV=log(300) # log V ) #define theta Matrix thetaMat <- lotri(lCl ~ lognCv(5), lV ~ lognCv(5), lka ~ lognCv(5)) nev <- nSub*nStud ev1 <- data.frame(COV1=rnorm(nev,50,30),COV2=rnorm(nev,75,10), COV3=sample(c(1.0,2.0),nev,replace=TRUE)) tmat <-rxRmvn(nStud, theta[dimnames(thetaMat)[[1]]], thetaMat) rxCbindStudyIndividual(tmat, ev1) #> lCl lV lka COV1 COV2 COV3 #> 1 1.611472 5.631300 -0.5361740 50.4392162 70.66196 1 #> 2 1.611472 5.631300 -0.5361740 76.1986612 51.54621 1 #> 3 1.611472 5.631300 -0.5361740 19.1616139 71.83376 1 #> 4 1.611472 5.631300 -0.5361740 70.5699388 97.78351 2 #> 5 1.611472 5.631300 -0.5361740 63.4831094 66.85695 1 #> 6 1.611472 5.631300 -0.5361740 62.2105292 82.55363 2 #> 7 1.611472 5.631300 -0.5361740 58.5419410 62.74875 1 #> 8 1.611472 5.631300 -0.5361740 31.2707182 57.10467 1 #> 9 1.611472 5.631300 -0.5361740 75.1896803 71.51357 2 #> 10 1.611472 5.631300 -0.5361740 59.3383758 82.29588 1 #> 11 1.611472 5.631300 -0.5361740 64.2576042 72.52852 1 #> 12 1.611472 5.631300 -0.5361740 46.9972989 90.49283 2 #> 13 1.611472 5.631300 -0.5361740 56.1053755 70.40540 2 #> 14 1.611472 5.631300 -0.5361740 47.1769492 74.99919 1 #> 15 1.611472 5.631300 -0.5361740 53.0070458 71.85786 1 #> 16 1.611472 5.631300 -0.5361740 41.9531819 85.10154 2 #> 17 1.611472 5.631300 -0.5361740 90.3817524 68.09919 2 #> 18 1.611472 5.631300 -0.5361740 45.6069772 87.68332 2 #> 19 1.611472 5.631300 -0.5361740 51.4929710 78.54242 2 #> 20 1.611472 5.631300 -0.5361740 75.0119850 70.62079 1 #> 21 1.611472 5.631300 -0.5361740 41.2732735 62.85309 1 #> 22 1.611472 5.631300 -0.5361740 17.4579412 60.01102 1 #> 23 1.611472 5.631300 -0.5361740 78.1798965 71.00092 2 #> 24 1.611472 5.631300 -0.5361740 60.8240586 88.18910 1 #> 25 1.611472 5.631300 -0.5361740 72.2097805 67.26544 2 #> 26 1.611472 5.631300 -0.5361740 76.4570517 77.65842 2 #> 27 1.611472 5.631300 -0.5361740 65.8597676 77.46590 1 #> 28 1.611472 5.631300 -0.5361740 -11.5093946 73.63090 2 #> 29 1.611472 5.631300 -0.5361740 79.4650077 70.90530 2 #> 30 1.611472 5.631300 -0.5361740 64.2040257 65.38198 2 #> 31 1.611472 5.631300 -0.5361740 74.6127558 64.79464 1 #> 32 1.611472 5.631300 -0.5361740 67.6996446 88.98030 2 #> 33 1.611472 5.631300 -0.5361740 25.6399993 77.62073 2 #> 34 1.611472 5.631300 -0.5361740 80.6050221 65.78672 2 #> 35 1.611472 5.631300 -0.5361740 96.5733053 90.61418 1 #> 36 1.611472 5.631300 -0.5361740 79.5213975 78.61057 1 #> 37 1.611472 5.631300 -0.5361740 46.4445863 61.66917 1 #> 38 1.611472 5.631300 -0.5361740 13.6205265 75.75972 1 #> 39 1.611472 5.631300 -0.5361740 69.8343811 82.37549 2 #> 40 1.611472 5.631300 -0.5361740 40.8148886 94.50969 2 #> 41 1.611472 5.631300 -0.5361740 52.4049003 78.14845 1 #> 42 1.611472 5.631300 -0.5361740 52.4778514 57.68410 1 #> 43 1.611472 5.631300 -0.5361740 22.1783261 77.09679 1 #> 44 1.611472 5.631300 -0.5361740 46.3933207 77.77013 1 #> 45 1.611472 5.631300 -0.5361740 23.7368451 62.37419 1 #> 46 1.611472 5.631300 -0.5361740 1.9459432 79.16596 2 #> 47 1.611472 5.631300 -0.5361740 15.5076749 60.22776 1 #> 48 1.611472 5.631300 -0.5361740 31.5512208 74.52360 1 #> 49 1.611472 5.631300 -0.5361740 30.7194479 64.36655 2 #> 50 1.611472 5.631300 -0.5361740 12.5473169 56.33737 2 #> 51 1.611472 5.631300 -0.5361740 61.2498142 67.93173 1 #> 52 1.611472 5.631300 -0.5361740 44.1575132 75.64240 2 #> 53 1.611472 5.631300 -0.5361740 35.8231965 79.73345 2 #> 54 1.611472 5.631300 -0.5361740 48.1079451 81.25286 1 #> 55 1.611472 5.631300 -0.5361740 4.1550156 65.35836 1 #> 56 1.611472 5.631300 -0.5361740 27.8538742 87.86854 2 #> 57 1.611472 5.631300 -0.5361740 73.1211941 63.44239 1 #> 58 1.611472 5.631300 -0.5361740 44.3472840 85.53331 1 #> 59 1.611472 5.631300 -0.5361740 76.4857002 80.78371 2 #> 60 1.611472 5.631300 -0.5361740 32.0178192 80.28942 1 #> 61 1.611472 5.631300 -0.5361740 19.4646945 79.86622 1 #> 62 1.611472 5.631300 -0.5361740 -12.3783975 70.20201 2 #> 63 1.611472 5.631300 -0.5361740 41.0473400 63.11725 1 #> 64 1.611472 5.631300 -0.5361740 56.5048458 89.52226 2 #> 65 1.611472 5.631300 -0.5361740 53.7772297 84.53200 1 #> 66 1.611472 5.631300 -0.5361740 22.0830914 84.80086 1 #> 67 1.611472 5.631300 -0.5361740 26.4159793 94.95606 2 #> 68 1.611472 5.631300 -0.5361740 62.2241433 78.84814 2 #> 69 1.611472 5.631300 -0.5361740 61.7576517 60.34825 1 #> 70 1.611472 5.631300 -0.5361740 48.8577715 61.99353 1 #> 71 1.611472 5.631300 -0.5361740 16.3926620 55.24774 1 #> 72 1.611472 5.631300 -0.5361740 59.5427284 80.22367 2 #> 73 1.611472 5.631300 -0.5361740 60.5463528 83.25528 1 #> 74 1.611472 5.631300 -0.5361740 34.4879944 80.15938 2 #> 75 1.611472 5.631300 -0.5361740 23.6753215 77.25946 2 #> 76 1.611472 5.631300 -0.5361740 39.3029386 88.03693 2 #> 77 1.611472 5.631300 -0.5361740 91.7359360 90.93438 1 #> 78 1.611472 5.631300 -0.5361740 -30.9112428 48.23557 2 #> 79 1.611472 5.631300 -0.5361740 60.1236161 78.04262 2 #> 80 1.611472 5.631300 -0.5361740 37.7844671 96.99041 2 #> 81 1.611472 5.631300 -0.5361740 90.8042884 82.76736 2 #> 82 1.611472 5.631300 -0.5361740 13.8889632 77.14949 2 #> 83 1.611472 5.631300 -0.5361740 14.2401454 84.27253 1 #> 84 1.611472 5.631300 -0.5361740 -7.8223194 70.25095 2 #> 85 1.611472 5.631300 -0.5361740 57.9146416 87.04522 2 #> 86 1.611472 5.631300 -0.5361740 82.9157470 78.87614 2 #> 87 1.611472 5.631300 -0.5361740 78.1119804 79.40393 2 #> 88 1.611472 5.631300 -0.5361740 55.0322709 85.68824 2 #> 89 1.611472 5.631300 -0.5361740 74.7709478 66.44219 1 #> 90 1.611472 5.631300 -0.5361740 27.3116099 73.97360 1 #> 91 1.611472 5.631300 -0.5361740 34.1575424 72.03973 2 #> 92 1.611472 5.631300 -0.5361740 53.3668520 68.57956 1 #> 93 1.611472 5.631300 -0.5361740 89.2950340 75.21063 2 #> 94 1.611472 5.631300 -0.5361740 90.2010652 85.99426 1 #> 95 1.611472 5.631300 -0.5361740 67.7957424 71.51220 2 #> 96 1.611472 5.631300 -0.5361740 57.1605881 69.57692 1 #> 97 1.611472 5.631300 -0.5361740 27.0744964 74.41100 1 #> 98 1.611472 5.631300 -0.5361740 34.5612722 71.28752 1 #> 99 1.611472 5.631300 -0.5361740 29.1971409 83.80223 2 #> 100 1.611472 5.631300 -0.5361740 49.6872370 69.33945 2 #> 101 1.697194 5.632904 -0.7639157 32.6009902 67.30618 1 #> 102 1.697194 5.632904 -0.7639157 63.6353581 71.67337 2 #> 103 1.697194 5.632904 -0.7639157 43.9290434 78.97433 1 #> 104 1.697194 5.632904 -0.7639157 42.2490048 82.43933 2 #> 105 1.697194 5.632904 -0.7639157 53.0755018 61.52006 1 #> 106 1.697194 5.632904 -0.7639157 33.6951552 67.92496 1 #> 107 1.697194 5.632904 -0.7639157 51.9056000 82.44938 2 #> 108 1.697194 5.632904 -0.7639157 62.3551777 72.35504 2 #> 109 1.697194 5.632904 -0.7639157 52.2855212 68.81158 1 #> 110 1.697194 5.632904 -0.7639157 57.1403145 82.54662 2 #> 111 1.697194 5.632904 -0.7639157 30.2370673 67.40756 2 #> 112 1.697194 5.632904 -0.7639157 17.5741031 68.07342 2 #> 113 1.697194 5.632904 -0.7639157 103.4040015 77.90186 1 #> 114 1.697194 5.632904 -0.7639157 17.1038275 73.91354 2 #> 115 1.697194 5.632904 -0.7639157 49.8027185 81.48599 1 #> 116 1.697194 5.632904 -0.7639157 -11.4692481 64.76781 1 #> 117 1.697194 5.632904 -0.7639157 98.9071450 64.83333 1 #> 118 1.697194 5.632904 -0.7639157 37.6980931 70.31285 2 #> 119 1.697194 5.632904 -0.7639157 19.2868862 66.63816 1 #> 120 1.697194 5.632904 -0.7639157 51.0225062 83.88089 1 #> 121 1.697194 5.632904 -0.7639157 40.5382319 72.10914 1 #> 122 1.697194 5.632904 -0.7639157 101.5279207 80.94546 2 #> 123 1.697194 5.632904 -0.7639157 39.5403917 61.69040 2 #> 124 1.697194 5.632904 -0.7639157 70.0177582 73.65824 2 #> 125 1.697194 5.632904 -0.7639157 68.4393667 60.60936 2 #> 126 1.697194 5.632904 -0.7639157 95.4758801 76.48798 2 #> 127 1.697194 5.632904 -0.7639157 100.7280319 83.84368 1 #> 128 1.697194 5.632904 -0.7639157 31.1387506 84.25006 2 #> 129 1.697194 5.632904 -0.7639157 82.6307951 62.72472 1 #> 130 1.697194 5.632904 -0.7639157 73.1841931 81.63374 1 #> 131 1.697194 5.632904 -0.7639157 61.9958164 62.05448 1 #> 132 1.697194 5.632904 -0.7639157 91.3427083 86.26454 1 #> 133 1.697194 5.632904 -0.7639157 33.2167104 67.23963 2 #> 134 1.697194 5.632904 -0.7639157 11.7911197 67.49478 2 #> 135 1.697194 5.632904 -0.7639157 22.8650443 87.65617 1 #> 136 1.697194 5.632904 -0.7639157 22.4124998 71.17249 1 #> 137 1.697194 5.632904 -0.7639157 53.8564393 47.10541 2 #> 138 1.697194 5.632904 -0.7639157 44.8924890 73.24976 1 #> 139 1.697194 5.632904 -0.7639157 31.0650744 65.49308 1 #> 140 1.697194 5.632904 -0.7639157 17.8982324 73.66385 2 #> 141 1.697194 5.632904 -0.7639157 62.6270864 80.81898 2 #> 142 1.697194 5.632904 -0.7639157 53.5904127 70.59717 2 #> 143 1.697194 5.632904 -0.7639157 70.4837507 56.87197 1 #> 144 1.697194 5.632904 -0.7639157 42.5116968 67.28455 2 #> 145 1.697194 5.632904 -0.7639157 48.7878958 78.56057 2 #> 146 1.697194 5.632904 -0.7639157 0.9279941 85.57283 1 #> 147 1.697194 5.632904 -0.7639157 -18.3507952 86.95583 2 #> 148 1.697194 5.632904 -0.7639157 101.7579054 54.42115 2 #> 149 1.697194 5.632904 -0.7639157 24.6569588 75.49368 2 #> 150 1.697194 5.632904 -0.7639157 -7.9259128 77.66407 1 #> 151 1.697194 5.632904 -0.7639157 43.0784489 79.64376 1 #> 152 1.697194 5.632904 -0.7639157 36.1701133 82.19816 1 #> 153 1.697194 5.632904 -0.7639157 69.1335142 71.72814 2 #> 154 1.697194 5.632904 -0.7639157 33.6016215 70.27974 1 #> 155 1.697194 5.632904 -0.7639157 70.9239936 79.51531 1 #> 156 1.697194 5.632904 -0.7639157 87.7203229 72.59223 2 #> 157 1.697194 5.632904 -0.7639157 57.1156306 72.77681 2 #> 158 1.697194 5.632904 -0.7639157 60.4126793 82.76394 1 #> 159 1.697194 5.632904 -0.7639157 92.8375220 68.19552 1 #> 160 1.697194 5.632904 -0.7639157 63.2372782 72.24436 1 #> 161 1.697194 5.632904 -0.7639157 33.9613589 75.23715 1 #> 162 1.697194 5.632904 -0.7639157 81.6248543 76.55037 2 #> 163 1.697194 5.632904 -0.7639157 19.1811051 63.10995 2 #> 164 1.697194 5.632904 -0.7639157 75.3831810 69.18568 2 #> 165 1.697194 5.632904 -0.7639157 102.6843377 77.56710 2 #> 166 1.697194 5.632904 -0.7639157 4.1677784 85.11736 1 #> 167 1.697194 5.632904 -0.7639157 54.6184949 78.90585 1 #> 168 1.697194 5.632904 -0.7639157 76.6307625 77.20472 1 #> 169 1.697194 5.632904 -0.7639157 -15.0363003 88.79087 2 #> 170 1.697194 5.632904 -0.7639157 34.1118242 67.00169 1 #> 171 1.697194 5.632904 -0.7639157 35.2179067 79.35038 1 #> 172 1.697194 5.632904 -0.7639157 64.3295332 61.19219 2 #> 173 1.697194 5.632904 -0.7639157 40.4356811 74.68001 2 #> 174 1.697194 5.632904 -0.7639157 53.1522189 79.54962 1 #> 175 1.697194 5.632904 -0.7639157 70.2934969 63.31328 1 #> 176 1.697194 5.632904 -0.7639157 59.3989841 60.12108 1 #> 177 1.697194 5.632904 -0.7639157 46.6562879 83.05199 2 #> 178 1.697194 5.632904 -0.7639157 31.2214418 66.17985 1 #> 179 1.697194 5.632904 -0.7639157 58.0454805 67.40731 1 #> 180 1.697194 5.632904 -0.7639157 8.5442654 60.64299 2 #> 181 1.697194 5.632904 -0.7639157 -8.6994540 67.61161 2 #> 182 1.697194 5.632904 -0.7639157 61.9941352 56.18405 2 #> 183 1.697194 5.632904 -0.7639157 30.1262921 76.65569 2 #> 184 1.697194 5.632904 -0.7639157 24.5441908 69.14319 2 #> 185 1.697194 5.632904 -0.7639157 50.9208933 88.10101 2 #> 186 1.697194 5.632904 -0.7639157 69.7603735 87.51329 1 #> 187 1.697194 5.632904 -0.7639157 31.0769298 57.86124 1 #> 188 1.697194 5.632904 -0.7639157 90.5089258 90.74690 2 #> 189 1.697194 5.632904 -0.7639157 21.6640120 80.99970 1 #> 190 1.697194 5.632904 -0.7639157 47.6529746 78.80285 1 #> 191 1.697194 5.632904 -0.7639157 100.8414400 87.18736 1 #> 192 1.697194 5.632904 -0.7639157 73.7435691 67.51377 2 #> 193 1.697194 5.632904 -0.7639157 82.2576758 67.84921 2 #> 194 1.697194 5.632904 -0.7639157 29.5939114 86.13265 2 #> 195 1.697194 5.632904 -0.7639157 55.1984696 83.14714 1 #> 196 1.697194 5.632904 -0.7639157 84.6325985 61.39152 1 #> 197 1.697194 5.632904 -0.7639157 31.4798259 82.13564 2 #> 198 1.697194 5.632904 -0.7639157 38.3235350 81.68327 2 #> 199 1.697194 5.632904 -0.7639157 -8.4598097 70.31626 2 #> 200 1.697194 5.632904 -0.7639157 22.6554638 91.57896 1 #> 201 1.674146 5.676556 -0.6450219 -33.4003934 69.48843 1 #> 202 1.674146 5.676556 -0.6450219 52.2460410 75.97223 1 #> 203 1.674146 5.676556 -0.6450219 50.5880517 55.38187 1 #> 204 1.674146 5.676556 -0.6450219 8.7755868 74.53357 2 #> 205 1.674146 5.676556 -0.6450219 -10.6399840 89.02478 1 #> 206 1.674146 5.676556 -0.6450219 77.9804152 69.63404 1 #> 207 1.674146 5.676556 -0.6450219 111.9523274 63.11713 1 #> 208 1.674146 5.676556 -0.6450219 124.7472852 63.77779 2 #> 209 1.674146 5.676556 -0.6450219 41.0472614 109.19664 1 #> 210 1.674146 5.676556 -0.6450219 64.0597410 77.51251 1 #> 211 1.674146 5.676556 -0.6450219 61.8963879 67.56591 2 #> 212 1.674146 5.676556 -0.6450219 37.5018346 82.30857 2 #> 213 1.674146 5.676556 -0.6450219 61.5478787 64.67103 1 #> 214 1.674146 5.676556 -0.6450219 83.1943400 82.83273 1 #> 215 1.674146 5.676556 -0.6450219 17.7022001 82.39610 2 #> 216 1.674146 5.676556 -0.6450219 -14.2484933 69.37045 2 #> 217 1.674146 5.676556 -0.6450219 53.8941794 78.87093 2 #> 218 1.674146 5.676556 -0.6450219 103.5306147 72.10062 1 #> 219 1.674146 5.676556 -0.6450219 42.7939220 65.36429 2 #> 220 1.674146 5.676556 -0.6450219 73.7937437 61.97888 2 #> 221 1.674146 5.676556 -0.6450219 48.8117668 55.55597 1 #> 222 1.674146 5.676556 -0.6450219 28.1380983 69.42380 1 #> 223 1.674146 5.676556 -0.6450219 39.3779860 80.40495 2 #> 224 1.674146 5.676556 -0.6450219 62.8854692 77.64617 2 #> 225 1.674146 5.676556 -0.6450219 72.7218939 92.21864 1 #> 226 1.674146 5.676556 -0.6450219 66.5973495 78.22719 2 #> 227 1.674146 5.676556 -0.6450219 73.8570482 62.72534 2 #> 228 1.674146 5.676556 -0.6450219 18.5894635 67.62931 1 #> 229 1.674146 5.676556 -0.6450219 68.5556038 86.50493 1 #> 230 1.674146 5.676556 -0.6450219 30.1182224 71.89803 1 #> 231 1.674146 5.676556 -0.6450219 78.3971169 69.50827 2 #> 232 1.674146 5.676556 -0.6450219 73.5007234 69.40116 1 #> 233 1.674146 5.676556 -0.6450219 28.3210675 70.92010 1 #> 234 1.674146 5.676556 -0.6450219 46.6133629 77.06448 2 #> 235 1.674146 5.676556 -0.6450219 53.2401976 85.49854 2 #> 236 1.674146 5.676556 -0.6450219 63.4793431 58.30338 2 #> 237 1.674146 5.676556 -0.6450219 59.0269030 78.85214 1 #> 238 1.674146 5.676556 -0.6450219 93.5334639 72.54020 2 #> 239 1.674146 5.676556 -0.6450219 63.8996826 77.72598 2 #> 240 1.674146 5.676556 -0.6450219 68.8411703 70.86692 1 #> 241 1.674146 5.676556 -0.6450219 46.6390668 78.55434 1 #> 242 1.674146 5.676556 -0.6450219 68.5895359 60.86947 2 #> 243 1.674146 5.676556 -0.6450219 53.9343358 93.15884 2 #> 244 1.674146 5.676556 -0.6450219 101.7444338 98.30442 2 #> 245 1.674146 5.676556 -0.6450219 27.6387148 66.01310 1 #> 246 1.674146 5.676556 -0.6450219 22.1740324 75.26732 1 #> 247 1.674146 5.676556 -0.6450219 54.3124668 67.99166 2 #> 248 1.674146 5.676556 -0.6450219 68.6880503 84.26854 1 #> 249 1.674146 5.676556 -0.6450219 32.9912889 73.10049 1 #> 250 1.674146 5.676556 -0.6450219 37.0764193 60.87192 1 #> 251 1.674146 5.676556 -0.6450219 70.3974993 77.76398 1 #> 252 1.674146 5.676556 -0.6450219 37.2197366 76.65401 2 #> 253 1.674146 5.676556 -0.6450219 14.4365256 77.64115 2 #> 254 1.674146 5.676556 -0.6450219 29.9881040 53.00732 2 #> 255 1.674146 5.676556 -0.6450219 32.7384157 72.68504 1 #> 256 1.674146 5.676556 -0.6450219 115.5606580 67.00864 1 #> 257 1.674146 5.676556 -0.6450219 13.1778779 64.47407 2 #> 258 1.674146 5.676556 -0.6450219 43.9159381 75.48144 2 #> 259 1.674146 5.676556 -0.6450219 57.4438694 82.49917 1 #> 260 1.674146 5.676556 -0.6450219 35.3357869 67.90399 1 #> 261 1.674146 5.676556 -0.6450219 93.3877659 64.53529 1 #> 262 1.674146 5.676556 -0.6450219 55.8988571 69.94468 1 #> 263 1.674146 5.676556 -0.6450219 100.8071811 73.59461 1 #> 264 1.674146 5.676556 -0.6450219 58.2207959 91.20699 1 #> 265 1.674146 5.676556 -0.6450219 76.8416269 78.71474 2 #> 266 1.674146 5.676556 -0.6450219 47.2898040 79.51328 2 #> 267 1.674146 5.676556 -0.6450219 21.6059507 74.03412 1 #> 268 1.674146 5.676556 -0.6450219 64.0007893 55.95205 1 #> 269 1.674146 5.676556 -0.6450219 45.8709065 88.91552 1 #> 270 1.674146 5.676556 -0.6450219 107.1590022 57.55893 1 #> 271 1.674146 5.676556 -0.6450219 65.0859265 65.90542 2 #> 272 1.674146 5.676556 -0.6450219 119.1018283 75.01579 1 #> 273 1.674146 5.676556 -0.6450219 55.4592815 78.29274 2 #> 274 1.674146 5.676556 -0.6450219 31.8241194 65.68231 2 #> 275 1.674146 5.676556 -0.6450219 69.6482017 68.30628 2 #> 276 1.674146 5.676556 -0.6450219 57.9246085 75.74779 1 #> 277 1.674146 5.676556 -0.6450219 22.6963639 89.12890 2 #> 278 1.674146 5.676556 -0.6450219 86.2301450 91.36398 2 #> 279 1.674146 5.676556 -0.6450219 119.0278886 72.84194 2 #> 280 1.674146 5.676556 -0.6450219 59.1657062 68.30592 2 #> 281 1.674146 5.676556 -0.6450219 11.9152188 79.51124 1 #> 282 1.674146 5.676556 -0.6450219 -5.3716411 74.44313 1 #> 283 1.674146 5.676556 -0.6450219 57.4626697 63.37160 2 #> 284 1.674146 5.676556 -0.6450219 18.2516164 80.85700 1 #> 285 1.674146 5.676556 -0.6450219 35.8143158 81.09371 1 #> 286 1.674146 5.676556 -0.6450219 40.8566944 76.68455 1 #> 287 1.674146 5.676556 -0.6450219 11.9086877 79.05337 1 #> 288 1.674146 5.676556 -0.6450219 41.5697738 71.20915 1 #> 289 1.674146 5.676556 -0.6450219 61.1172570 68.21870 1 #> 290 1.674146 5.676556 -0.6450219 53.9569722 79.28401 2 #> 291 1.674146 5.676556 -0.6450219 70.1390883 79.39509 2 #> 292 1.674146 5.676556 -0.6450219 50.2440058 78.13196 1 #> 293 1.674146 5.676556 -0.6450219 29.3641415 61.43075 1 #> 294 1.674146 5.676556 -0.6450219 43.4205986 68.31340 2 #> 295 1.674146 5.676556 -0.6450219 11.9649051 59.88530 2 #> 296 1.674146 5.676556 -0.6450219 48.1018591 45.74281 1 #> 297 1.674146 5.676556 -0.6450219 60.3230568 74.24123 2 #> 298 1.674146 5.676556 -0.6450219 49.2737025 94.60425 1 #> 299 1.674146 5.676556 -0.6450219 89.2126057 65.93396 1 #> 300 1.674146 5.676556 -0.6450219 84.6711995 55.00520 2 #> 301 1.613874 5.740415 -0.6984534 16.2966677 68.34929 2 #> 302 1.613874 5.740415 -0.6984534 -23.8738375 81.29663 1 #> 303 1.613874 5.740415 -0.6984534 37.5517212 76.96609 1 #> 304 1.613874 5.740415 -0.6984534 61.7803372 57.67100 2 #> 305 1.613874 5.740415 -0.6984534 31.7448921 74.50269 1 #> 306 1.613874 5.740415 -0.6984534 103.7553019 76.50833 2 #> 307 1.613874 5.740415 -0.6984534 68.3064419 78.66488 1 #> 308 1.613874 5.740415 -0.6984534 46.3723587 72.80769 2 #> 309 1.613874 5.740415 -0.6984534 44.2082165 88.52164 2 #> 310 1.613874 5.740415 -0.6984534 16.7410057 71.31052 1 #> 311 1.613874 5.740415 -0.6984534 4.8366902 66.14520 2 #> 312 1.613874 5.740415 -0.6984534 40.7731288 60.79451 2 #> 313 1.613874 5.740415 -0.6984534 45.5423139 81.48294 2 #> 314 1.613874 5.740415 -0.6984534 34.5441864 83.36918 1 #> 315 1.613874 5.740415 -0.6984534 80.6230295 76.44552 1 #> 316 1.613874 5.740415 -0.6984534 41.0777626 66.61761 1 #> 317 1.613874 5.740415 -0.6984534 67.2442111 62.97680 1 #> 318 1.613874 5.740415 -0.6984534 55.7534751 71.47254 1 #> 319 1.613874 5.740415 -0.6984534 23.0419496 75.92260 2 #> 320 1.613874 5.740415 -0.6984534 50.5344811 60.99439 1 #> 321 1.613874 5.740415 -0.6984534 56.6442255 70.42003 1 #> 322 1.613874 5.740415 -0.6984534 49.6816955 78.48606 2 #> 323 1.613874 5.740415 -0.6984534 42.5396571 70.92581 1 #> 324 1.613874 5.740415 -0.6984534 85.4587299 71.81209 1 #> 325 1.613874 5.740415 -0.6984534 49.7048695 71.80567 2 #> 326 1.613874 5.740415 -0.6984534 43.7052724 71.15110 1 #> 327 1.613874 5.740415 -0.6984534 25.6587367 73.88314 1 #> 328 1.613874 5.740415 -0.6984534 38.0842682 68.11214 2 #> 329 1.613874 5.740415 -0.6984534 58.0814658 79.02879 2 #> 330 1.613874 5.740415 -0.6984534 47.0620228 78.75508 2 #> 331 1.613874 5.740415 -0.6984534 75.2547281 61.06943 1 #> 332 1.613874 5.740415 -0.6984534 59.1631641 70.49261 2 #> 333 1.613874 5.740415 -0.6984534 64.8077362 75.55531 1 #> 334 1.613874 5.740415 -0.6984534 70.2267571 85.75407 2 #> 335 1.613874 5.740415 -0.6984534 78.1350880 87.25513 2 #> 336 1.613874 5.740415 -0.6984534 99.9391549 73.21560 2 #> 337 1.613874 5.740415 -0.6984534 26.8114696 69.27603 1 #> 338 1.613874 5.740415 -0.6984534 42.2920693 73.35812 1 #> 339 1.613874 5.740415 -0.6984534 11.5777747 66.92449 1 #> 340 1.613874 5.740415 -0.6984534 7.2326812 76.23257 2 #> 341 1.613874 5.740415 -0.6984534 32.0251435 64.28934 2 #> 342 1.613874 5.740415 -0.6984534 5.6848147 84.06207 2 #> 343 1.613874 5.740415 -0.6984534 17.8630157 83.72065 1 #> 344 1.613874 5.740415 -0.6984534 39.2471861 71.08365 1 #> 345 1.613874 5.740415 -0.6984534 42.3913534 78.36272 2 #> 346 1.613874 5.740415 -0.6984534 37.1359731 80.05851 1 #> 347 1.613874 5.740415 -0.6984534 70.3095886 85.66656 1 #> 348 1.613874 5.740415 -0.6984534 73.1411037 84.16674 1 #> 349 1.613874 5.740415 -0.6984534 72.2027827 67.90291 2 #> 350 1.613874 5.740415 -0.6984534 89.0892997 69.01875 1 #> 351 1.613874 5.740415 -0.6984534 38.3062060 87.58053 2 #> 352 1.613874 5.740415 -0.6984534 94.6363923 69.93447 2 #> 353 1.613874 5.740415 -0.6984534 22.1603083 70.25841 1 #> 354 1.613874 5.740415 -0.6984534 86.6445941 58.44013 1 #> 355 1.613874 5.740415 -0.6984534 63.6328470 68.47071 1 #> 356 1.613874 5.740415 -0.6984534 47.4000258 79.02593 2 #> 357 1.613874 5.740415 -0.6984534 56.8906269 78.73618 1 #> 358 1.613874 5.740415 -0.6984534 138.4604907 91.03089 2 #> 359 1.613874 5.740415 -0.6984534 34.2312321 70.08259 1 #> 360 1.613874 5.740415 -0.6984534 28.7816357 68.35925 1 #> 361 1.613874 5.740415 -0.6984534 63.6295615 74.22550 1 #> 362 1.613874 5.740415 -0.6984534 17.8966286 75.69102 1 #> 363 1.613874 5.740415 -0.6984534 65.2934670 78.64505 1 #> 364 1.613874 5.740415 -0.6984534 63.4292942 67.34958 1 #> 365 1.613874 5.740415 -0.6984534 62.0240976 72.98431 2 #> 366 1.613874 5.740415 -0.6984534 -18.8146117 71.94563 2 #> 367 1.613874 5.740415 -0.6984534 50.0382446 60.28001 2 #> 368 1.613874 5.740415 -0.6984534 38.9153391 69.05125 2 #> 369 1.613874 5.740415 -0.6984534 34.9527197 90.92124 1 #> 370 1.613874 5.740415 -0.6984534 57.3564028 81.09840 2 #> 371 1.613874 5.740415 -0.6984534 5.6676726 82.55833 2 #> 372 1.613874 5.740415 -0.6984534 -2.4178148 76.20637 2 #> 373 1.613874 5.740415 -0.6984534 35.7885424 69.99939 2 #> 374 1.613874 5.740415 -0.6984534 47.7368090 80.19972 2 #> 375 1.613874 5.740415 -0.6984534 101.4735251 69.22624 2 #> 376 1.613874 5.740415 -0.6984534 -2.2779624 71.66347 2 #> 377 1.613874 5.740415 -0.6984534 20.0816173 80.03776 1 #> 378 1.613874 5.740415 -0.6984534 86.7090448 66.93729 2 #> 379 1.613874 5.740415 -0.6984534 113.6281574 87.99688 1 #> 380 1.613874 5.740415 -0.6984534 60.5466001 73.51926 2 #> 381 1.613874 5.740415 -0.6984534 77.7692487 91.64848 1 #> 382 1.613874 5.740415 -0.6984534 53.8636442 74.24403 1 #> 383 1.613874 5.740415 -0.6984534 48.1572877 59.35281 1 #> 384 1.613874 5.740415 -0.6984534 74.3395680 71.52724 1 #> 385 1.613874 5.740415 -0.6984534 82.6948844 78.87735 2 #> 386 1.613874 5.740415 -0.6984534 46.4934373 82.17691 2 #> 387 1.613874 5.740415 -0.6984534 25.6491388 77.72397 1 #> 388 1.613874 5.740415 -0.6984534 64.7947383 65.57023 1 #> 389 1.613874 5.740415 -0.6984534 87.6883038 89.76483 2 #> 390 1.613874 5.740415 -0.6984534 36.3328494 75.40819 2 #> 391 1.613874 5.740415 -0.6984534 26.4426459 73.85141 2 #> 392 1.613874 5.740415 -0.6984534 90.8342567 66.25896 2 #> 393 1.613874 5.740415 -0.6984534 93.6867760 57.91092 2 #> 394 1.613874 5.740415 -0.6984534 36.2778295 82.04241 2 #> 395 1.613874 5.740415 -0.6984534 56.8188275 73.16254 2 #> 396 1.613874 5.740415 -0.6984534 26.4980424 85.67589 1 #> 397 1.613874 5.740415 -0.6984534 25.4763875 70.98675 1 #> 398 1.613874 5.740415 -0.6984534 83.1803210 66.45085 1 #> 399 1.613874 5.740415 -0.6984534 1.7994674 59.17247 1 #> 400 1.613874 5.740415 -0.6984534 64.4949075 76.40213 2 #> 401 1.607998 5.643855 -0.6792054 48.8215960 68.12087 2 #> 402 1.607998 5.643855 -0.6792054 77.2970093 86.06118 2 #> 403 1.607998 5.643855 -0.6792054 67.4089724 65.71332 2 #> 404 1.607998 5.643855 -0.6792054 10.3769795 73.37489 1 #> 405 1.607998 5.643855 -0.6792054 79.1553290 85.74435 1 #> 406 1.607998 5.643855 -0.6792054 7.4670103 78.70518 2 #> 407 1.607998 5.643855 -0.6792054 56.0394847 65.44270 1 #> 408 1.607998 5.643855 -0.6792054 97.3603339 84.75567 1 #> 409 1.607998 5.643855 -0.6792054 64.1091315 69.81431 1 #> 410 1.607998 5.643855 -0.6792054 5.4828970 69.17843 2 #> 411 1.607998 5.643855 -0.6792054 -1.0365617 77.92836 1 #> 412 1.607998 5.643855 -0.6792054 105.1530363 58.76622 2 #> 413 1.607998 5.643855 -0.6792054 36.2081348 86.51888 1 #> 414 1.607998 5.643855 -0.6792054 100.7910554 72.30377 2 #> 415 1.607998 5.643855 -0.6792054 121.8033519 64.49824 2 #> 416 1.607998 5.643855 -0.6792054 80.7673520 79.15892 2 #> 417 1.607998 5.643855 -0.6792054 37.8666953 81.64906 2 #> 418 1.607998 5.643855 -0.6792054 115.5883876 72.47664 2 #> 419 1.607998 5.643855 -0.6792054 35.2369749 70.77398 1 #> 420 1.607998 5.643855 -0.6792054 64.1711223 81.17435 1 #> 421 1.607998 5.643855 -0.6792054 80.7895090 83.24437 1 #> 422 1.607998 5.643855 -0.6792054 21.7869881 66.29985 1 #> 423 1.607998 5.643855 -0.6792054 12.4926991 85.17995 2 #> 424 1.607998 5.643855 -0.6792054 100.3907484 63.01031 2 #> 425 1.607998 5.643855 -0.6792054 87.0887229 78.85374 1 #> 426 1.607998 5.643855 -0.6792054 25.1379799 73.96496 2 #> 427 1.607998 5.643855 -0.6792054 49.5239715 67.28242 1 #> 428 1.607998 5.643855 -0.6792054 88.7792321 79.57532 1 #> 429 1.607998 5.643855 -0.6792054 27.6786417 50.07289 2 #> 430 1.607998 5.643855 -0.6792054 39.2307194 71.84089 1 #> 431 1.607998 5.643855 -0.6792054 24.7497391 59.53040 1 #> 432 1.607998 5.643855 -0.6792054 41.3796076 91.30726 1 #> 433 1.607998 5.643855 -0.6792054 15.7437413 60.97164 1 #> 434 1.607998 5.643855 -0.6792054 49.3700152 87.90514 2 #> 435 1.607998 5.643855 -0.6792054 85.1566041 70.45287 2 #> 436 1.607998 5.643855 -0.6792054 40.6560199 71.09065 2 #> 437 1.607998 5.643855 -0.6792054 51.7926315 80.52528 1 #> 438 1.607998 5.643855 -0.6792054 21.9143343 90.76348 2 #> 439 1.607998 5.643855 -0.6792054 51.8020419 67.59027 1 #> 440 1.607998 5.643855 -0.6792054 16.6322957 68.55139 2 #> 441 1.607998 5.643855 -0.6792054 83.6203837 70.68124 1 #> 442 1.607998 5.643855 -0.6792054 0.5211994 77.24136 2 #> 443 1.607998 5.643855 -0.6792054 68.5951856 91.48323 1 #> 444 1.607998 5.643855 -0.6792054 43.1520866 76.30536 1 #> 445 1.607998 5.643855 -0.6792054 50.3386316 65.44094 2 #> 446 1.607998 5.643855 -0.6792054 -5.5620422 66.74062 2 #> 447 1.607998 5.643855 -0.6792054 36.6958235 75.55218 1 #> 448 1.607998 5.643855 -0.6792054 50.5999862 70.92480 1 #> 449 1.607998 5.643855 -0.6792054 33.7248448 63.47388 1 #> 450 1.607998 5.643855 -0.6792054 56.8412586 69.62838 1 #> 451 1.607998 5.643855 -0.6792054 41.5039976 42.87558 2 #> 452 1.607998 5.643855 -0.6792054 34.6840120 94.67629 2 #> 453 1.607998 5.643855 -0.6792054 66.7908719 85.49509 2 #> 454 1.607998 5.643855 -0.6792054 61.4085644 60.53623 1 #> 455 1.607998 5.643855 -0.6792054 20.3101447 63.61028 2 #> 456 1.607998 5.643855 -0.6792054 23.9141255 63.56250 1 #> 457 1.607998 5.643855 -0.6792054 33.5839449 52.95806 1 #> 458 1.607998 5.643855 -0.6792054 84.6397334 78.41237 2 #> 459 1.607998 5.643855 -0.6792054 44.8334456 71.30109 1 #> 460 1.607998 5.643855 -0.6792054 27.2349995 72.89661 2 #> 461 1.607998 5.643855 -0.6792054 91.2514376 91.89839 2 #> 462 1.607998 5.643855 -0.6792054 37.6097072 81.34729 1 #> 463 1.607998 5.643855 -0.6792054 68.5254907 72.04929 2 #> 464 1.607998 5.643855 -0.6792054 38.5642150 69.13123 1 #> 465 1.607998 5.643855 -0.6792054 44.1594360 77.51596 2 #> 466 1.607998 5.643855 -0.6792054 57.0717274 80.17189 2 #> 467 1.607998 5.643855 -0.6792054 95.9455509 74.75328 2 #> 468 1.607998 5.643855 -0.6792054 42.9920799 92.50767 1 #> 469 1.607998 5.643855 -0.6792054 55.7102276 75.72940 2 #> 470 1.607998 5.643855 -0.6792054 60.8177462 69.03698 2 #> 471 1.607998 5.643855 -0.6792054 55.3605893 66.34895 1 #> 472 1.607998 5.643855 -0.6792054 56.7559825 75.28003 2 #> 473 1.607998 5.643855 -0.6792054 25.4328185 73.75857 1 #> 474 1.607998 5.643855 -0.6792054 -6.8916878 88.03803 2 #> 475 1.607998 5.643855 -0.6792054 33.4832529 75.73123 2 #> 476 1.607998 5.643855 -0.6792054 52.0521677 80.03295 1 #> 477 1.607998 5.643855 -0.6792054 25.4914503 82.94275 1 #> 478 1.607998 5.643855 -0.6792054 100.9890496 77.45985 1 #> 479 1.607998 5.643855 -0.6792054 25.5156151 91.88302 1 #> 480 1.607998 5.643855 -0.6792054 43.6078125 57.43117 1 #> 481 1.607998 5.643855 -0.6792054 37.0091877 79.48740 2 #> 482 1.607998 5.643855 -0.6792054 11.8107388 64.78770 1 #> 483 1.607998 5.643855 -0.6792054 44.3389759 71.14324 2 #> 484 1.607998 5.643855 -0.6792054 54.9898805 73.64347 1 #> 485 1.607998 5.643855 -0.6792054 71.7998793 69.11348 1 #> 486 1.607998 5.643855 -0.6792054 -5.6880456 71.73435 2 #> 487 1.607998 5.643855 -0.6792054 79.1445668 69.27310 1 #> 488 1.607998 5.643855 -0.6792054 12.9249574 78.46686 2 #> 489 1.607998 5.643855 -0.6792054 27.5346015 67.62387 1 #> 490 1.607998 5.643855 -0.6792054 62.8966610 76.51829 2 #> 491 1.607998 5.643855 -0.6792054 32.0787529 68.94991 2 #> 492 1.607998 5.643855 -0.6792054 25.1917260 70.99306 2 #> 493 1.607998 5.643855 -0.6792054 54.4621512 70.62260 2 #> 494 1.607998 5.643855 -0.6792054 -2.2871236 80.68376 1 #> 495 1.607998 5.643855 -0.6792054 27.2894531 58.62351 1 #> 496 1.607998 5.643855 -0.6792054 74.5977013 88.26263 2 #> 497 1.607998 5.643855 -0.6792054 92.4308992 74.24270 2 #> 498 1.607998 5.643855 -0.6792054 55.8268794 89.50048 1 #> 499 1.607998 5.643855 -0.6792054 89.4983796 61.30342 2 #> 500 1.607998 5.643855 -0.6792054 79.8213569 76.81988 1 #> 501 1.643777 5.694137 -0.6690660 38.1678563 67.56115 2 #> 502 1.643777 5.694137 -0.6690660 61.0698769 58.17179 1 #> 503 1.643777 5.694137 -0.6690660 41.7382042 64.26612 1 #> 504 1.643777 5.694137 -0.6690660 33.8740280 69.33690 1 #> 505 1.643777 5.694137 -0.6690660 23.5953740 61.72238 1 #> 506 1.643777 5.694137 -0.6690660 13.3422225 52.87255 2 #> 507 1.643777 5.694137 -0.6690660 74.0383804 62.03574 1 #> 508 1.643777 5.694137 -0.6690660 93.0192305 70.91276 2 #> 509 1.643777 5.694137 -0.6690660 89.0049567 70.15547 2 #> 510 1.643777 5.694137 -0.6690660 43.5291243 91.50177 1 #> 511 1.643777 5.694137 -0.6690660 23.5393253 81.96101 2 #> 512 1.643777 5.694137 -0.6690660 40.9925587 57.60091 2 #> 513 1.643777 5.694137 -0.6690660 34.9704160 60.84323 2 #> 514 1.643777 5.694137 -0.6690660 59.9235702 88.99702 2 #> 515 1.643777 5.694137 -0.6690660 98.3658578 86.42595 1 #> 516 1.643777 5.694137 -0.6690660 50.7422608 92.09375 2 #> 517 1.643777 5.694137 -0.6690660 41.9356043 65.47800 1 #> 518 1.643777 5.694137 -0.6690660 69.2871008 72.68478 1 #> 519 1.643777 5.694137 -0.6690660 49.4730857 66.81432 2 #> 520 1.643777 5.694137 -0.6690660 44.8791520 70.87674 2 #> 521 1.643777 5.694137 -0.6690660 20.4638474 95.53771 2 #> 522 1.643777 5.694137 -0.6690660 32.3751288 83.15449 2 #> 523 1.643777 5.694137 -0.6690660 77.5845632 65.59434 1 #> 524 1.643777 5.694137 -0.6690660 56.7236110 85.66398 1 #> 525 1.643777 5.694137 -0.6690660 32.1085930 79.47297 1 #> 526 1.643777 5.694137 -0.6690660 46.5107080 75.75487 2 #> 527 1.643777 5.694137 -0.6690660 78.9429857 66.73803 1 #> 528 1.643777 5.694137 -0.6690660 31.0490558 83.34998 2 #> 529 1.643777 5.694137 -0.6690660 40.9829803 90.16081 2 #> 530 1.643777 5.694137 -0.6690660 43.9492312 80.31310 1 #> 531 1.643777 5.694137 -0.6690660 65.5490888 88.77697 2 #> 532 1.643777 5.694137 -0.6690660 56.2680938 90.90554 2 #> 533 1.643777 5.694137 -0.6690660 14.4686365 80.42169 1 #> 534 1.643777 5.694137 -0.6690660 70.2907813 80.47309 1 #> 535 1.643777 5.694137 -0.6690660 57.4804485 75.33315 1 #> 536 1.643777 5.694137 -0.6690660 66.0948896 89.54032 1 #> 537 1.643777 5.694137 -0.6690660 3.1032846 87.89076 2 #> 538 1.643777 5.694137 -0.6690660 44.2139073 84.02920 1 #> 539 1.643777 5.694137 -0.6690660 48.2643368 78.79437 2 #> 540 1.643777 5.694137 -0.6690660 74.8756724 61.15289 1 #> 541 1.643777 5.694137 -0.6690660 8.1327649 71.72132 2 #> 542 1.643777 5.694137 -0.6690660 16.5980966 64.94069 1 #> 543 1.643777 5.694137 -0.6690660 43.9312413 51.69354 1 #> 544 1.643777 5.694137 -0.6690660 -17.1351407 94.42809 1 #> 545 1.643777 5.694137 -0.6690660 53.1464554 83.92699 1 #> 546 1.643777 5.694137 -0.6690660 81.4527982 74.55878 2 #> 547 1.643777 5.694137 -0.6690660 10.1989198 87.76708 2 #> 548 1.643777 5.694137 -0.6690660 21.5496443 83.67005 2 #> 549 1.643777 5.694137 -0.6690660 34.7187279 81.54692 1 #> 550 1.643777 5.694137 -0.6690660 27.5386247 57.54349 2 #> 551 1.643777 5.694137 -0.6690660 14.6024354 78.74788 2 #> 552 1.643777 5.694137 -0.6690660 27.5903823 56.68944 1 #> 553 1.643777 5.694137 -0.6690660 72.5185564 91.10584 1 #> 554 1.643777 5.694137 -0.6690660 44.3002781 81.56935 2 #> 555 1.643777 5.694137 -0.6690660 139.1363422 82.74588 2 #> 556 1.643777 5.694137 -0.6690660 65.8100955 81.94809 1 #> 557 1.643777 5.694137 -0.6690660 50.6868391 72.21063 1 #> 558 1.643777 5.694137 -0.6690660 39.6543078 77.29151 2 #> 559 1.643777 5.694137 -0.6690660 83.1524478 55.31793 2 #> 560 1.643777 5.694137 -0.6690660 28.9030084 66.02987 1 #> 561 1.643777 5.694137 -0.6690660 74.8964861 81.14713 2 #> 562 1.643777 5.694137 -0.6690660 59.0149196 65.04019 1 #> 563 1.643777 5.694137 -0.6690660 30.3298336 79.68335 2 #> 564 1.643777 5.694137 -0.6690660 57.7948403 75.82379 1 #> 565 1.643777 5.694137 -0.6690660 34.2990000 86.36872 2 #> 566 1.643777 5.694137 -0.6690660 2.6535279 87.72225 2 #> 567 1.643777 5.694137 -0.6690660 37.6268290 74.39190 2 #> 568 1.643777 5.694137 -0.6690660 63.9340344 65.42419 2 #> 569 1.643777 5.694137 -0.6690660 58.9164769 45.08214 2 #> 570 1.643777 5.694137 -0.6690660 92.0016020 83.70186 1 #> 571 1.643777 5.694137 -0.6690660 61.7224060 79.23864 2 #> 572 1.643777 5.694137 -0.6690660 96.1235032 83.73479 2 #> 573 1.643777 5.694137 -0.6690660 68.5533210 59.05651 1 #> 574 1.643777 5.694137 -0.6690660 -3.6102436 50.09141 1 #> 575 1.643777 5.694137 -0.6690660 76.0941103 72.03348 2 #> 576 1.643777 5.694137 -0.6690660 104.4106457 75.32516 2 #> 577 1.643777 5.694137 -0.6690660 41.2928074 69.04815 1 #> 578 1.643777 5.694137 -0.6690660 65.2797569 74.49533 1 #> 579 1.643777 5.694137 -0.6690660 26.3265850 81.18398 2 #> 580 1.643777 5.694137 -0.6690660 65.5588529 68.91393 2 #> 581 1.643777 5.694137 -0.6690660 47.0697497 74.72187 1 #> 582 1.643777 5.694137 -0.6690660 87.2450727 94.10999 1 #> 583 1.643777 5.694137 -0.6690660 61.2502113 80.00009 2 #> 584 1.643777 5.694137 -0.6690660 89.2007650 58.09223 1 #> 585 1.643777 5.694137 -0.6690660 9.9740886 80.09600 1 #> 586 1.643777 5.694137 -0.6690660 73.9157460 74.08366 2 #> 587 1.643777 5.694137 -0.6690660 14.4160082 89.42311 1 #> 588 1.643777 5.694137 -0.6690660 64.4259505 63.68825 2 #> 589 1.643777 5.694137 -0.6690660 107.6692892 70.25459 1 #> 590 1.643777 5.694137 -0.6690660 97.0398311 75.44392 2 #> 591 1.643777 5.694137 -0.6690660 -18.6333110 58.40089 1 #> 592 1.643777 5.694137 -0.6690660 39.5946897 84.11830 2 #> 593 1.643777 5.694137 -0.6690660 20.6417920 73.83552 2 #> 594 1.643777 5.694137 -0.6690660 56.4086735 68.10451 1 #> 595 1.643777 5.694137 -0.6690660 85.1042630 66.95012 1 #> 596 1.643777 5.694137 -0.6690660 50.6295988 87.69661 1 #> 597 1.643777 5.694137 -0.6690660 36.9343237 68.84028 1 #> 598 1.643777 5.694137 -0.6690660 71.1503605 87.67769 1 #> 599 1.643777 5.694137 -0.6690660 56.5924449 81.06348 1 #> 600 1.643777 5.694137 -0.6690660 93.5501107 88.95669 1 #> 601 1.648057 5.729913 -0.6552792 18.9083599 82.84332 1 #> 602 1.648057 5.729913 -0.6552792 82.7940905 69.87248 2 #> 603 1.648057 5.729913 -0.6552792 45.9641247 69.22075 2 #> 604 1.648057 5.729913 -0.6552792 54.6802925 78.95279 1 #> 605 1.648057 5.729913 -0.6552792 107.1581579 62.13559 2 #> 606 1.648057 5.729913 -0.6552792 53.1915408 62.58662 1 #> 607 1.648057 5.729913 -0.6552792 53.7586208 57.37826 2 #> 608 1.648057 5.729913 -0.6552792 11.4903880 76.88262 1 #> 609 1.648057 5.729913 -0.6552792 42.9730652 76.14662 2 #> 610 1.648057 5.729913 -0.6552792 49.4591203 61.76904 2 #> 611 1.648057 5.729913 -0.6552792 78.8073818 79.18351 1 #> 612 1.648057 5.729913 -0.6552792 50.8429855 84.85734 2 #> 613 1.648057 5.729913 -0.6552792 49.4230911 80.54065 2 #> 614 1.648057 5.729913 -0.6552792 35.8725616 73.61357 2 #> 615 1.648057 5.729913 -0.6552792 73.8953130 87.20300 1 #> 616 1.648057 5.729913 -0.6552792 48.5112541 78.58745 1 #> 617 1.648057 5.729913 -0.6552792 41.2691503 77.56750 1 #> 618 1.648057 5.729913 -0.6552792 -2.5952400 52.72300 1 #> 619 1.648057 5.729913 -0.6552792 37.7309015 82.54988 1 #> 620 1.648057 5.729913 -0.6552792 30.3568403 73.26848 2 #> 621 1.648057 5.729913 -0.6552792 74.6840163 69.20581 2 #> 622 1.648057 5.729913 -0.6552792 57.2935950 59.50570 1 #> 623 1.648057 5.729913 -0.6552792 46.0448889 76.42029 2 #> 624 1.648057 5.729913 -0.6552792 26.0374982 88.97144 1 #> 625 1.648057 5.729913 -0.6552792 107.5539884 73.40860 1 #> 626 1.648057 5.729913 -0.6552792 76.0932271 64.01009 2 #> 627 1.648057 5.729913 -0.6552792 15.2618979 85.87639 1 #> 628 1.648057 5.729913 -0.6552792 26.9130546 81.09287 1 #> 629 1.648057 5.729913 -0.6552792 19.6257044 66.16867 1 #> 630 1.648057 5.729913 -0.6552792 27.6237559 83.07571 1 #> 631 1.648057 5.729913 -0.6552792 3.0788206 72.64991 1 #> 632 1.648057 5.729913 -0.6552792 83.9619254 70.62216 2 #> 633 1.648057 5.729913 -0.6552792 27.2919447 69.19040 1 #> 634 1.648057 5.729913 -0.6552792 70.9313798 85.46613 2 #> 635 1.648057 5.729913 -0.6552792 23.8187421 80.40937 2 #> 636 1.648057 5.729913 -0.6552792 59.3970342 79.11208 1 #> 637 1.648057 5.729913 -0.6552792 42.5267742 87.02663 2 #> 638 1.648057 5.729913 -0.6552792 109.4385054 73.75556 2 #> 639 1.648057 5.729913 -0.6552792 68.4397881 76.30425 1 #> 640 1.648057 5.729913 -0.6552792 75.7222837 82.39713 2 #> 641 1.648057 5.729913 -0.6552792 16.5044967 78.43945 2 #> 642 1.648057 5.729913 -0.6552792 66.1861109 79.22025 2 #> 643 1.648057 5.729913 -0.6552792 52.7481347 63.74457 2 #> 644 1.648057 5.729913 -0.6552792 37.2365634 71.05619 1 #> 645 1.648057 5.729913 -0.6552792 46.9804983 56.89054 2 #> 646 1.648057 5.729913 -0.6552792 50.2229018 77.10394 2 #> 647 1.648057 5.729913 -0.6552792 16.0139501 61.53448 1 #> 648 1.648057 5.729913 -0.6552792 41.5563797 65.99968 2 #> 649 1.648057 5.729913 -0.6552792 70.9674950 69.01587 1 #> 650 1.648057 5.729913 -0.6552792 55.6625466 82.58803 2 #> 651 1.648057 5.729913 -0.6552792 42.0096291 78.35425 1 #> 652 1.648057 5.729913 -0.6552792 117.8812335 77.27629 2 #> 653 1.648057 5.729913 -0.6552792 61.6658650 72.08551 1 #> 654 1.648057 5.729913 -0.6552792 -0.8736160 92.49828 2 #> 655 1.648057 5.729913 -0.6552792 80.5603108 75.62488 2 #> 656 1.648057 5.729913 -0.6552792 48.1762269 64.89065 2 #> 657 1.648057 5.729913 -0.6552792 12.9968319 65.07000 1 #> 658 1.648057 5.729913 -0.6552792 2.8313131 90.66089 2 #> 659 1.648057 5.729913 -0.6552792 70.0881641 62.61839 1 #> 660 1.648057 5.729913 -0.6552792 -33.8810337 64.19400 2 #> 661 1.648057 5.729913 -0.6552792 39.9661974 68.44032 2 #> 662 1.648057 5.729913 -0.6552792 31.3170364 75.73101 1 #> 663 1.648057 5.729913 -0.6552792 44.0024332 68.82384 2 #> 664 1.648057 5.729913 -0.6552792 36.7898696 68.25944 2 #> 665 1.648057 5.729913 -0.6552792 107.5733367 68.19207 2 #> 666 1.648057 5.729913 -0.6552792 68.0743864 63.00673 2 #> 667 1.648057 5.729913 -0.6552792 68.3035899 89.13444 2 #> 668 1.648057 5.729913 -0.6552792 46.1511899 71.02200 2 #> 669 1.648057 5.729913 -0.6552792 53.2178875 56.93658 2 #> 670 1.648057 5.729913 -0.6552792 -32.8588747 67.34866 2 #> 671 1.648057 5.729913 -0.6552792 43.5265993 86.60459 1 #> 672 1.648057 5.729913 -0.6552792 35.3250016 80.49457 2 #> 673 1.648057 5.729913 -0.6552792 132.4481604 87.69892 1 #> 674 1.648057 5.729913 -0.6552792 53.0284456 75.10771 2 #> 675 1.648057 5.729913 -0.6552792 72.9444754 58.12782 1 #> 676 1.648057 5.729913 -0.6552792 26.9975412 80.05722 2 #> 677 1.648057 5.729913 -0.6552792 36.8695056 98.52606 2 #> 678 1.648057 5.729913 -0.6552792 69.6609769 94.47954 1 #> 679 1.648057 5.729913 -0.6552792 25.0991472 84.40522 2 #> 680 1.648057 5.729913 -0.6552792 41.9468910 75.74272 1 #> 681 1.648057 5.729913 -0.6552792 20.8472512 83.97757 2 #> 682 1.648057 5.729913 -0.6552792 15.1525928 85.26197 1 #> 683 1.648057 5.729913 -0.6552792 29.9811042 52.37819 1 #> 684 1.648057 5.729913 -0.6552792 35.2479815 65.28672 1 #> 685 1.648057 5.729913 -0.6552792 55.8575273 64.93605 1 #> 686 1.648057 5.729913 -0.6552792 46.1190677 70.03628 1 #> 687 1.648057 5.729913 -0.6552792 58.2830057 71.94772 2 #> 688 1.648057 5.729913 -0.6552792 85.9325796 52.10738 1 #> 689 1.648057 5.729913 -0.6552792 81.0811061 70.93935 2 #> 690 1.648057 5.729913 -0.6552792 90.7740977 86.39420 1 #> 691 1.648057 5.729913 -0.6552792 80.5749599 91.67558 1 #> 692 1.648057 5.729913 -0.6552792 18.3214023 84.10786 2 #> 693 1.648057 5.729913 -0.6552792 50.2634173 71.34296 1 #> 694 1.648057 5.729913 -0.6552792 -9.2522554 78.23080 1 #> 695 1.648057 5.729913 -0.6552792 87.1693570 71.12958 1 #> 696 1.648057 5.729913 -0.6552792 95.4192058 79.23869 2 #> 697 1.648057 5.729913 -0.6552792 7.2926188 78.66146 2 #> 698 1.648057 5.729913 -0.6552792 4.8827826 103.71042 2 #> 699 1.648057 5.729913 -0.6552792 35.2762761 73.13650 2 #> 700 1.648057 5.729913 -0.6552792 31.6385434 73.79821 1 #> 701 1.668782 5.621953 -0.7406204 4.3862902 89.41130 2 #> 702 1.668782 5.621953 -0.7406204 29.6476474 77.60050 2 #> 703 1.668782 5.621953 -0.7406204 7.0213876 86.83642 2 #> 704 1.668782 5.621953 -0.7406204 9.5118652 68.27226 1 #> 705 1.668782 5.621953 -0.7406204 42.1259745 71.98352 2 #> 706 1.668782 5.621953 -0.7406204 73.2122235 69.81875 1 #> 707 1.668782 5.621953 -0.7406204 86.7027792 77.46672 2 #> 708 1.668782 5.621953 -0.7406204 91.0971639 78.11554 1 #> 709 1.668782 5.621953 -0.7406204 58.0830884 71.50048 2 #> 710 1.668782 5.621953 -0.7406204 37.0587768 76.60951 1 #> 711 1.668782 5.621953 -0.7406204 35.7099942 67.75827 1 #> 712 1.668782 5.621953 -0.7406204 56.8209016 59.88464 2 #> 713 1.668782 5.621953 -0.7406204 69.0604872 67.06852 2 #> 714 1.668782 5.621953 -0.7406204 69.7451362 81.98099 1 #> 715 1.668782 5.621953 -0.7406204 77.8364665 71.37878 1 #> 716 1.668782 5.621953 -0.7406204 19.6222663 78.43239 1 #> 717 1.668782 5.621953 -0.7406204 42.5694293 70.28217 2 #> 718 1.668782 5.621953 -0.7406204 90.0898872 65.33551 1 #> 719 1.668782 5.621953 -0.7406204 61.4365029 74.21749 1 #> 720 1.668782 5.621953 -0.7406204 96.8052970 76.24192 1 #> 721 1.668782 5.621953 -0.7406204 73.0402787 71.01772 2 #> 722 1.668782 5.621953 -0.7406204 33.4467777 74.08305 1 #> 723 1.668782 5.621953 -0.7406204 46.6144377 95.23591 2 #> 724 1.668782 5.621953 -0.7406204 53.3733455 75.33384 1 #> 725 1.668782 5.621953 -0.7406204 10.9778305 48.31491 2 #> 726 1.668782 5.621953 -0.7406204 23.8924573 87.92331 2 #> 727 1.668782 5.621953 -0.7406204 76.4078263 73.94247 1 #> 728 1.668782 5.621953 -0.7406204 31.5762808 59.15820 1 #> 729 1.668782 5.621953 -0.7406204 6.7104129 96.56197 1 #> 730 1.668782 5.621953 -0.7406204 79.3195285 80.77408 1 #> 731 1.668782 5.621953 -0.7406204 -28.3353878 68.22983 2 #> 732 1.668782 5.621953 -0.7406204 67.4295155 83.25717 1 #> 733 1.668782 5.621953 -0.7406204 64.3079145 58.77369 1 #> 734 1.668782 5.621953 -0.7406204 71.1403579 75.98192 2 #> 735 1.668782 5.621953 -0.7406204 89.5590335 76.42924 1 #> 736 1.668782 5.621953 -0.7406204 57.8191488 79.79139 2 #> 737 1.668782 5.621953 -0.7406204 11.1080731 71.21112 1 #> 738 1.668782 5.621953 -0.7406204 51.3348956 73.21401 1 #> 739 1.668782 5.621953 -0.7406204 79.1653337 78.88980 2 #> 740 1.668782 5.621953 -0.7406204 30.6420457 68.93621 1 #> 741 1.668782 5.621953 -0.7406204 -3.0512450 92.29634 1 #> 742 1.668782 5.621953 -0.7406204 69.8573389 71.13959 2 #> 743 1.668782 5.621953 -0.7406204 32.8850272 67.04577 2 #> 744 1.668782 5.621953 -0.7406204 51.0458458 71.73215 1 #> 745 1.668782 5.621953 -0.7406204 73.6786942 77.12900 1 #> 746 1.668782 5.621953 -0.7406204 31.1736141 71.92430 2 #> 747 1.668782 5.621953 -0.7406204 25.5612587 89.60676 1 #> 748 1.668782 5.621953 -0.7406204 -8.6963567 89.46077 1 #> 749 1.668782 5.621953 -0.7406204 -26.6067751 66.57096 2 #> 750 1.668782 5.621953 -0.7406204 57.2505420 70.30214 2 #> 751 1.668782 5.621953 -0.7406204 111.9767656 75.56339 2 #> 752 1.668782 5.621953 -0.7406204 76.0573053 60.96074 2 #> 753 1.668782 5.621953 -0.7406204 29.0669531 90.51543 2 #> 754 1.668782 5.621953 -0.7406204 57.1668329 79.69982 1 #> 755 1.668782 5.621953 -0.7406204 27.8484795 66.73348 2 #> 756 1.668782 5.621953 -0.7406204 85.4876148 74.22296 1 #> 757 1.668782 5.621953 -0.7406204 100.0837299 81.90151 1 #> 758 1.668782 5.621953 -0.7406204 46.0227120 89.35422 1 #> 759 1.668782 5.621953 -0.7406204 126.7902588 77.66575 1 #> 760 1.668782 5.621953 -0.7406204 19.1071394 80.77951 1 #> 761 1.668782 5.621953 -0.7406204 51.4319091 60.24571 2 #> 762 1.668782 5.621953 -0.7406204 65.6309065 84.63769 1 #> 763 1.668782 5.621953 -0.7406204 -13.2733730 83.71288 1 #> 764 1.668782 5.621953 -0.7406204 85.4482930 67.45798 1 #> 765 1.668782 5.621953 -0.7406204 55.1923811 92.04469 1 #> 766 1.668782 5.621953 -0.7406204 98.7165155 65.93427 2 #> 767 1.668782 5.621953 -0.7406204 65.5019725 103.28612 1 #> 768 1.668782 5.621953 -0.7406204 39.5002933 72.03163 1 #> 769 1.668782 5.621953 -0.7406204 42.5374292 82.07576 2 #> 770 1.668782 5.621953 -0.7406204 36.5696566 71.51964 1 #> 771 1.668782 5.621953 -0.7406204 81.3982645 79.04510 1 #> 772 1.668782 5.621953 -0.7406204 60.8786617 79.28927 1 #> 773 1.668782 5.621953 -0.7406204 70.7373746 83.19576 1 #> 774 1.668782 5.621953 -0.7406204 15.5478298 60.57505 2 #> 775 1.668782 5.621953 -0.7406204 72.9746357 81.74383 1 #> 776 1.668782 5.621953 -0.7406204 65.9319263 72.78060 2 #> 777 1.668782 5.621953 -0.7406204 88.3867317 63.68846 1 #> 778 1.668782 5.621953 -0.7406204 77.0011194 68.88250 1 #> 779 1.668782 5.621953 -0.7406204 85.8057743 64.98303 2 #> 780 1.668782 5.621953 -0.7406204 35.9705319 83.73558 1 #> 781 1.668782 5.621953 -0.7406204 67.3304997 86.84455 1 #> 782 1.668782 5.621953 -0.7406204 21.9524555 76.27415 1 #> 783 1.668782 5.621953 -0.7406204 -5.6352245 72.94603 2 #> 784 1.668782 5.621953 -0.7406204 52.3692116 71.22825 1 #> 785 1.668782 5.621953 -0.7406204 56.9827483 68.32436 2 #> 786 1.668782 5.621953 -0.7406204 74.3243768 91.43702 2 #> 787 1.668782 5.621953 -0.7406204 34.5160055 64.07231 1 #> 788 1.668782 5.621953 -0.7406204 2.9245152 80.98718 1 #> 789 1.668782 5.621953 -0.7406204 63.5431682 75.46948 1 #> 790 1.668782 5.621953 -0.7406204 21.2252373 61.52853 2 #> 791 1.668782 5.621953 -0.7406204 55.4826231 79.48380 2 #> 792 1.668782 5.621953 -0.7406204 54.4993559 70.46917 1 #> 793 1.668782 5.621953 -0.7406204 39.9538887 70.01352 1 #> 794 1.668782 5.621953 -0.7406204 52.8213303 75.21188 1 #> 795 1.668782 5.621953 -0.7406204 17.8784484 62.71215 1 #> 796 1.668782 5.621953 -0.7406204 69.1486342 69.49095 1 #> 797 1.668782 5.621953 -0.7406204 125.4859552 84.44350 1 #> 798 1.668782 5.621953 -0.7406204 77.9492961 77.33112 2 #> 799 1.668782 5.621953 -0.7406204 68.8333714 79.99650 1 #> 800 1.668782 5.621953 -0.7406204 63.1181812 67.00761 2 #> 801 1.589831 5.738289 -0.7595589 48.9974492 92.48121 2 #> 802 1.589831 5.738289 -0.7595589 9.2847128 81.37087 1 #> 803 1.589831 5.738289 -0.7595589 82.0302547 74.46283 2 #> 804 1.589831 5.738289 -0.7595589 53.7474361 78.08095 2 #> 805 1.589831 5.738289 -0.7595589 39.8132325 66.69704 1 #> 806 1.589831 5.738289 -0.7595589 58.5431310 79.77195 2 #> 807 1.589831 5.738289 -0.7595589 61.1797465 68.79759 1 #> 808 1.589831 5.738289 -0.7595589 2.6978623 65.68119 2 #> 809 1.589831 5.738289 -0.7595589 -2.9959481 74.07861 1 #> 810 1.589831 5.738289 -0.7595589 69.9499963 69.34748 1 #> 811 1.589831 5.738289 -0.7595589 23.1748838 68.48503 1 #> 812 1.589831 5.738289 -0.7595589 102.2255108 79.73994 2 #> 813 1.589831 5.738289 -0.7595589 24.4305703 100.22706 1 #> 814 1.589831 5.738289 -0.7595589 19.7481336 62.37810 2 #> 815 1.589831 5.738289 -0.7595589 96.4547470 68.61734 1 #> 816 1.589831 5.738289 -0.7595589 101.9418487 82.11478 2 #> 817 1.589831 5.738289 -0.7595589 86.4950177 68.86499 1 #> 818 1.589831 5.738289 -0.7595589 53.5351294 83.71468 1 #> 819 1.589831 5.738289 -0.7595589 60.2350748 74.95739 1 #> 820 1.589831 5.738289 -0.7595589 27.6376304 63.64001 2 #> 821 1.589831 5.738289 -0.7595589 76.6861986 72.81275 1 #> 822 1.589831 5.738289 -0.7595589 103.7663980 68.50690 2 #> 823 1.589831 5.738289 -0.7595589 36.1422701 59.36458 2 #> 824 1.589831 5.738289 -0.7595589 59.4754314 76.26514 1 #> 825 1.589831 5.738289 -0.7595589 9.6426331 79.35209 2 #> 826 1.589831 5.738289 -0.7595589 26.4151406 64.25640 1 #> 827 1.589831 5.738289 -0.7595589 96.3884253 70.78145 2 #> 828 1.589831 5.738289 -0.7595589 51.9134774 71.69811 1 #> 829 1.589831 5.738289 -0.7595589 68.7467603 75.20190 1 #> 830 1.589831 5.738289 -0.7595589 89.6591600 82.50803 1 #> 831 1.589831 5.738289 -0.7595589 49.9007763 59.16145 2 #> 832 1.589831 5.738289 -0.7595589 59.2548039 75.33259 1 #> 833 1.589831 5.738289 -0.7595589 60.0082121 70.27023 1 #> 834 1.589831 5.738289 -0.7595589 98.4688321 76.05810 2 #> 835 1.589831 5.738289 -0.7595589 39.4437763 77.66308 2 #> 836 1.589831 5.738289 -0.7595589 98.8925745 82.04197 1 #> 837 1.589831 5.738289 -0.7595589 35.4873664 71.06575 1 #> 838 1.589831 5.738289 -0.7595589 96.4278063 67.67618 1 #> 839 1.589831 5.738289 -0.7595589 115.1815537 84.49771 2 #> 840 1.589831 5.738289 -0.7595589 43.9022059 80.77810 2 #> 841 1.589831 5.738289 -0.7595589 94.6970963 82.54843 2 #> 842 1.589831 5.738289 -0.7595589 68.2905300 81.19173 1 #> 843 1.589831 5.738289 -0.7595589 70.4618488 75.03386 1 #> 844 1.589831 5.738289 -0.7595589 65.3453406 72.85415 2 #> 845 1.589831 5.738289 -0.7595589 8.5493994 67.85077 1 #> 846 1.589831 5.738289 -0.7595589 26.1536808 82.28340 1 #> 847 1.589831 5.738289 -0.7595589 26.0703862 73.35758 2 #> 848 1.589831 5.738289 -0.7595589 40.3849633 84.60289 2 #> 849 1.589831 5.738289 -0.7595589 29.1800568 60.90008 2 #> 850 1.589831 5.738289 -0.7595589 -32.8833387 69.53605 2 #> 851 1.589831 5.738289 -0.7595589 103.9548211 66.74417 1 #> 852 1.589831 5.738289 -0.7595589 78.4960457 66.55584 2 #> 853 1.589831 5.738289 -0.7595589 36.4818552 58.44428 1 #> 854 1.589831 5.738289 -0.7595589 76.5459964 78.62982 2 #> 855 1.589831 5.738289 -0.7595589 30.7158509 90.92795 2 #> 856 1.589831 5.738289 -0.7595589 25.1920732 61.34846 2 #> 857 1.589831 5.738289 -0.7595589 62.0165794 58.02042 2 #> 858 1.589831 5.738289 -0.7595589 49.8357389 90.59638 2 #> 859 1.589831 5.738289 -0.7595589 67.9258393 74.11929 1 #> 860 1.589831 5.738289 -0.7595589 55.4021737 72.10042 2 #> 861 1.589831 5.738289 -0.7595589 59.3635647 96.45434 1 #> 862 1.589831 5.738289 -0.7595589 -23.9923490 81.85788 1 #> 863 1.589831 5.738289 -0.7595589 87.7564769 92.13465 1 #> 864 1.589831 5.738289 -0.7595589 30.0966273 84.67296 2 #> 865 1.589831 5.738289 -0.7595589 66.8280521 88.14905 2 #> 866 1.589831 5.738289 -0.7595589 14.1272676 86.12434 1 #> 867 1.589831 5.738289 -0.7595589 67.9355537 80.70283 1 #> 868 1.589831 5.738289 -0.7595589 73.7743451 76.28507 2 #> 869 1.589831 5.738289 -0.7595589 52.5817553 75.43390 2 #> 870 1.589831 5.738289 -0.7595589 82.7847247 74.09916 2 #> 871 1.589831 5.738289 -0.7595589 119.3344072 72.45604 2 #> 872 1.589831 5.738289 -0.7595589 32.4057085 95.16381 1 #> 873 1.589831 5.738289 -0.7595589 23.4616522 51.02043 2 #> 874 1.589831 5.738289 -0.7595589 73.8724576 105.52575 2 #> 875 1.589831 5.738289 -0.7595589 95.2052909 67.49209 2 #> 876 1.589831 5.738289 -0.7595589 25.5779995 77.98522 1 #> 877 1.589831 5.738289 -0.7595589 41.3323586 97.91934 2 #> 878 1.589831 5.738289 -0.7595589 40.2603584 62.72925 2 #> 879 1.589831 5.738289 -0.7595589 35.0464101 81.22116 1 #> 880 1.589831 5.738289 -0.7595589 45.2187386 66.35779 2 #> 881 1.589831 5.738289 -0.7595589 77.5589970 87.31650 2 #> 882 1.589831 5.738289 -0.7595589 74.0977454 60.30295 1 #> 883 1.589831 5.738289 -0.7595589 79.2633304 83.93338 2 #> 884 1.589831 5.738289 -0.7595589 30.4352771 67.12438 1 #> 885 1.589831 5.738289 -0.7595589 17.2133018 84.08617 1 #> 886 1.589831 5.738289 -0.7595589 81.1112620 87.21712 1 #> 887 1.589831 5.738289 -0.7595589 23.0544113 66.02937 1 #> 888 1.589831 5.738289 -0.7595589 98.8625800 72.11651 2 #> 889 1.589831 5.738289 -0.7595589 -19.0959381 67.04116 1 #> 890 1.589831 5.738289 -0.7595589 74.4115694 52.53401 2 #> 891 1.589831 5.738289 -0.7595589 19.8049746 85.72635 1 #> 892 1.589831 5.738289 -0.7595589 76.0357495 76.12203 2 #> 893 1.589831 5.738289 -0.7595589 22.0888890 63.61794 2 #> 894 1.589831 5.738289 -0.7595589 67.4404536 84.88998 2 #> 895 1.589831 5.738289 -0.7595589 77.0286630 77.33351 2 #> 896 1.589831 5.738289 -0.7595589 118.5036480 82.51741 2 #> 897 1.589831 5.738289 -0.7595589 72.3987364 66.69147 1 #> 898 1.589831 5.738289 -0.7595589 12.2115634 71.74859 1 #> 899 1.589831 5.738289 -0.7595589 11.7928610 57.44029 1 #> 900 1.589831 5.738289 -0.7595589 53.6132611 68.94733 1 #> 901 1.613207 5.713738 -0.6484928 48.0109271 83.58202 1 #> 902 1.613207 5.713738 -0.6484928 -8.0301263 58.14177 2 #> 903 1.613207 5.713738 -0.6484928 -30.7769719 80.18095 1 #> 904 1.613207 5.713738 -0.6484928 12.7671316 79.99454 1 #> 905 1.613207 5.713738 -0.6484928 77.9824107 68.89383 2 #> 906 1.613207 5.713738 -0.6484928 77.2201927 88.51741 1 #> 907 1.613207 5.713738 -0.6484928 36.5923496 69.43529 1 #> 908 1.613207 5.713738 -0.6484928 48.9469580 90.75974 1 #> 909 1.613207 5.713738 -0.6484928 30.8224486 59.73813 1 #> 910 1.613207 5.713738 -0.6484928 35.7877271 70.84232 2 #> 911 1.613207 5.713738 -0.6484928 50.7266752 79.45346 2 #> 912 1.613207 5.713738 -0.6484928 65.2592161 57.61760 2 #> 913 1.613207 5.713738 -0.6484928 69.6026508 57.05023 1 #> 914 1.613207 5.713738 -0.6484928 0.7834984 73.61108 2 #> 915 1.613207 5.713738 -0.6484928 53.7762736 81.47588 2 #> 916 1.613207 5.713738 -0.6484928 89.3596538 80.25444 1 #> 917 1.613207 5.713738 -0.6484928 36.7637973 64.70868 1 #> 918 1.613207 5.713738 -0.6484928 32.2188928 81.81383 1 #> 919 1.613207 5.713738 -0.6484928 40.0758720 70.69324 1 #> 920 1.613207 5.713738 -0.6484928 24.8765461 72.98046 2 #> 921 1.613207 5.713738 -0.6484928 78.2716775 75.99325 2 #> 922 1.613207 5.713738 -0.6484928 -6.3395057 87.27324 2 #> 923 1.613207 5.713738 -0.6484928 22.6829677 94.22893 1 #> 924 1.613207 5.713738 -0.6484928 38.0136768 62.80747 2 #> 925 1.613207 5.713738 -0.6484928 35.1313985 68.95838 1 #> 926 1.613207 5.713738 -0.6484928 27.4797677 76.63736 2 #> 927 1.613207 5.713738 -0.6484928 30.5236960 66.16893 2 #> 928 1.613207 5.713738 -0.6484928 35.1188336 81.73566 2 #> 929 1.613207 5.713738 -0.6484928 28.4977983 104.08615 1 #> 930 1.613207 5.713738 -0.6484928 41.6466431 77.25039 1 #> 931 1.613207 5.713738 -0.6484928 45.9843787 79.00656 2 #> 932 1.613207 5.713738 -0.6484928 65.4998293 71.16540 2 #> 933 1.613207 5.713738 -0.6484928 69.3224629 82.60627 2 #> 934 1.613207 5.713738 -0.6484928 59.6321831 86.92970 2 #> 935 1.613207 5.713738 -0.6484928 8.5806949 60.81721 1 #> 936 1.613207 5.713738 -0.6484928 26.2068213 74.73239 2 #> 937 1.613207 5.713738 -0.6484928 11.2314175 63.90678 1 #> 938 1.613207 5.713738 -0.6484928 11.3707453 73.53251 2 #> 939 1.613207 5.713738 -0.6484928 78.2083687 71.39561 2 #> 940 1.613207 5.713738 -0.6484928 60.2735247 70.71942 2 #> 941 1.613207 5.713738 -0.6484928 44.8890747 81.41948 2 #> 942 1.613207 5.713738 -0.6484928 58.1814310 60.21858 1 #> 943 1.613207 5.713738 -0.6484928 84.7712213 60.52621 1 #> 944 1.613207 5.713738 -0.6484928 5.9956678 75.88211 1 #> 945 1.613207 5.713738 -0.6484928 -17.0222388 86.29289 2 #> 946 1.613207 5.713738 -0.6484928 62.7227620 73.75868 2 #> 947 1.613207 5.713738 -0.6484928 32.0911038 74.75940 1 #> 948 1.613207 5.713738 -0.6484928 78.4050789 70.20741 2 #> 949 1.613207 5.713738 -0.6484928 32.7781423 70.14355 2 #> 950 1.613207 5.713738 -0.6484928 73.4391557 81.68525 2 #> 951 1.613207 5.713738 -0.6484928 49.7361763 84.40696 1 #> 952 1.613207 5.713738 -0.6484928 57.9753483 82.18861 2 #> 953 1.613207 5.713738 -0.6484928 82.3302532 74.69445 1 #> 954 1.613207 5.713738 -0.6484928 57.6937706 88.39127 1 #> 955 1.613207 5.713738 -0.6484928 21.4806872 70.94022 1 #> 956 1.613207 5.713738 -0.6484928 41.6855276 70.52054 1 #> 957 1.613207 5.713738 -0.6484928 58.2824698 76.95454 2 #> 958 1.613207 5.713738 -0.6484928 -28.4194234 104.36439 2 #> 959 1.613207 5.713738 -0.6484928 -0.3208229 71.12139 2 #> 960 1.613207 5.713738 -0.6484928 93.8628975 64.04545 2 #> 961 1.613207 5.713738 -0.6484928 48.7233971 74.58184 1 #> 962 1.613207 5.713738 -0.6484928 -4.8453070 76.58630 1 #> 963 1.613207 5.713738 -0.6484928 59.3592742 66.97198 1 #> 964 1.613207 5.713738 -0.6484928 59.0093486 70.31729 1 #> 965 1.613207 5.713738 -0.6484928 52.2446956 74.82363 1 #> 966 1.613207 5.713738 -0.6484928 39.0863283 71.03333 1 #> 967 1.613207 5.713738 -0.6484928 57.5986251 81.46471 2 #> 968 1.613207 5.713738 -0.6484928 42.1454018 75.47601 2 #> 969 1.613207 5.713738 -0.6484928 43.1725786 66.90505 1 #> 970 1.613207 5.713738 -0.6484928 82.4901817 64.21519 1 #> 971 1.613207 5.713738 -0.6484928 60.7011635 72.24152 1 #> 972 1.613207 5.713738 -0.6484928 65.3391669 59.35424 1 #> 973 1.613207 5.713738 -0.6484928 31.9185684 66.83118 1 #> 974 1.613207 5.713738 -0.6484928 36.3661832 77.91527 1 #> 975 1.613207 5.713738 -0.6484928 59.0508009 77.52569 2 #> 976 1.613207 5.713738 -0.6484928 47.2930855 72.17148 1 #> 977 1.613207 5.713738 -0.6484928 96.8750065 73.46133 1 #> 978 1.613207 5.713738 -0.6484928 55.0212657 76.76546 2 #> 979 1.613207 5.713738 -0.6484928 62.6863454 58.77168 1 #> 980 1.613207 5.713738 -0.6484928 68.6373889 85.16956 1 #> 981 1.613207 5.713738 -0.6484928 81.2755279 48.92099 2 #> 982 1.613207 5.713738 -0.6484928 103.8595340 74.33343 1 #> 983 1.613207 5.713738 -0.6484928 28.6579149 90.43011 2 #> 984 1.613207 5.713738 -0.6484928 4.9403665 72.73476 1 #> 985 1.613207 5.713738 -0.6484928 78.8366005 74.70983 1 #> 986 1.613207 5.713738 -0.6484928 11.1238010 80.43364 1 #> 987 1.613207 5.713738 -0.6484928 63.3598971 57.93831 1 #> 988 1.613207 5.713738 -0.6484928 22.6545483 62.80785 1 #> 989 1.613207 5.713738 -0.6484928 64.5373818 90.66765 2 #> 990 1.613207 5.713738 -0.6484928 52.7217474 68.58825 1 #> 991 1.613207 5.713738 -0.6484928 36.9216153 70.37398 2 #> 992 1.613207 5.713738 -0.6484928 79.8122065 75.39207 1 #> 993 1.613207 5.713738 -0.6484928 61.5295674 77.52203 1 #> 994 1.613207 5.713738 -0.6484928 63.0572080 72.05715 1 #> 995 1.613207 5.713738 -0.6484928 99.1723557 78.37895 1 #> 996 1.613207 5.713738 -0.6484928 47.8702574 75.61264 1 #> 997 1.613207 5.713738 -0.6484928 87.0387347 73.06106 2 #> 998 1.613207 5.713738 -0.6484928 84.5713440 79.66582 2 #> 999 1.613207 5.713738 -0.6484928 27.4957126 98.71902 1 #> 1000 1.613207 5.713738 -0.6484928 45.5107794 75.38610 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":null,"dir":"Reference","previous_headings":"","what":"rxChain Chain or add item to solved system of equations — rxChain","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"Add item solved system equations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"","code":"rxChain(obj1, obj2) # S3 method for class 'solveRxDll' obj1 + obj2"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"obj1 Solved object. obj2 New object added/piped/chained solved object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"newObject event table, return new solved object new event table.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxChain Chain or add item to solved system of equations — rxChain","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":null,"dir":"Reference","previous_headings":"","what":"Second command in chaining commands — rxChain2","title":"Second command in chaining commands — rxChain2","text":"s3 method called internally + \\%>\\% operators.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Second command in chaining commands — rxChain2","text":"","code":"rxChain2(obj, solvedObject) # Default S3 method rxChain2(obj, solvedObject) # S3 method for class 'EventTable' rxChain2(obj, solvedObject)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Second command in chaining commands — rxChain2","text":"obj object added/chained/piped solved object solvedObject solved object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Second command in chaining commands — rxChain2","text":"chained operation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxChain2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Second command in chaining commands — rxChain2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":null,"dir":"Reference","previous_headings":"","what":"Cleanup anonymous DLLs by unloading them — rxClean","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"cleans rxode2 loaded DLLs","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"","code":"rxClean(wd)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"wd directory cleaned; (DEPRECIATED), longer anything. unloads rxode2 anonymous dlls.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"TRUE successful","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxClean.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Cleanup anonymous DLLs by unloading them — rxClean","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":null,"dir":"Reference","previous_headings":"","what":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"Combine Error Lines create rxode2 expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"","code":"rxCombineErrorLines( uiModel, errLines = NULL, prefixLines = NULL, paramsLine = NULL, modelVars = FALSE, cmtLines = TRUE, dvidLine = TRUE, lstExpr = NULL, useIf = TRUE, interpLines = NULL, levelLines = NULL )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"uiModel UI model errLines Error lines; missing, get error lines rxGetDistributionSimulationLines() prefixLines Prefix lines, param statement paramsLine Params line, present. modelVars Return model vars instead rxode2 statement cmtLines Include trailing cmt lines dvidLine Include trailing dvid() specification lstExpr list expressions model, NULL. NULL defaults model expressions accessible uiModel$lstExpr. useIf Use (CMT == X) endpoints interpLines Interpolation lines, present levelLines Levels lines assigned strings. present, use interpolation lines current model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"quoted expression can evaluated compiled rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"exported allow functions mangle error lines make types estimation methods (needed)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCombineErrorLines.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Combine Error Lines and create rxode2 expression — rxCombineErrorLines","text":"","code":"# \\donttest{ one.cmt <- function() { ini({ ## You may label each parameter with a comment tka <- 0.45 # Log Ka tcl <- log(c(0, 2.7, 100)) # Log Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- 3.45; label(\"log V\") ## the label(\"Label name\") works with all models eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } f <- rxode2(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments # You can get the simulation model easily by rxCombineErrorLines(f) #> rxode2({ #> params(tka, tcl, tv, add.sd, eta.ka, eta.cl, eta.v) #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ linCmt() #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (add.sd)^2 #> ipredSim <- rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim <- rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.rxLinCmt, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> cmt(rxLinCmt) #> dvid(1) #> }) # You can then get the compiled model by simply evaluting the model: r <- eval(rxCombineErrorLines(f)) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # This also works with multile endpoint models: pk.turnover.emax <- function() { ini({ tktr <- log(1) tka <- log(1) tcl <- log(0.1) tv <- log(10) ## eta.ktr ~ 1 eta.ka ~ 1 eta.cl ~ 2 eta.v ~ 1 prop.err <- 0.1 pkadd.err <- 0.1 ## temax <- logit(0.8) tec50 <- log(0.5) tkout <- log(0.05) te0 <- log(100) ## eta.emax ~ .5 eta.ec50 ~ .5 eta.kout ~ .5 eta.e0 ~ .5 ## pdadd.err <- 10 }) model({ ktr <- exp(tktr + eta.ktr) ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) ## emax=expit(temax+eta.emax) ec50 = exp(tec50 + eta.ec50) kout = exp(tkout + eta.kout) e0 = exp(te0 + eta.e0) ## DCP = center/v PD=1-emax*DCP/(ec50+DCP) ## effect(0) = e0 kin = e0*kout ## d/dt(depot) = -ktr * depot d/dt(gut) = ktr * depot -ka * gut d/dt(center) = ka * gut - cl / v * center d/dt(effect) = kin*PD -kout*effect ## cp = center / v cp ~ prop(prop.err) + add(pkadd.err) effect ~ add(pdadd.err) }) } f <- rxode2(pk.turnover.emax) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments rxCombineErrorLines(f) #> rxode2({ #> params(tktr, tka, tcl, tv, prop.err, pkadd.err, temax, tec50, #> tkout, te0, pdadd.err, eta.ktr, eta.ka, eta.cl, eta.v, #> eta.emax, eta.ec50, eta.kout, eta.e0) #> ktr <- exp(tktr + eta.ktr) #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> emax = expit(temax + eta.emax) #> ec50 = exp(tec50 + eta.ec50) #> kout = exp(tkout + eta.kout) #> e0 = exp(te0 + eta.e0) #> DCP = center/v #> PD = 1 - emax * DCP/(ec50 + DCP) #> effect(0) = e0 #> kin = e0 * kout #> d/dt(depot) = -ktr * depot #> d/dt(gut) = ktr * depot - ka * gut #> d/dt(center) = ka * gut - cl/v * center #> d/dt(effect) = kin * PD - kout * effect #> cp = center/v #> if (CMT == 5) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ cp #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (pkadd.err)^2 + (rx_pred_f_)^2 * (prop.err)^2 #> ipredSim <- rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim <- rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.cp, rx_lambda_, #> rx_yj_, rx_low_, rx_hi_) #> } #> if (CMT == 4) { #> rx_yj_ ~ 2 #> rx_lambda_ ~ 1 #> rx_low_ ~ 0 #> rx_hi_ ~ 1 #> rx_pred_f_ ~ effect #> rx_pred_ ~ rx_pred_f_ #> rx_r_ ~ (pdadd.err)^2 #> ipredSim <- rxTBSi(rx_pred_, rx_lambda_, rx_yj_, rx_low_, #> rx_hi_) #> sim <- rxTBSi(rx_pred_ + sqrt(rx_r_) * rxerr.effect, #> rx_lambda_, rx_yj_, rx_low_, rx_hi_) #> } #> cmt(cp) #> dvid(5, 4) #> }) # Note that in the parsed form, you can also get the compiled rxode2 # model with $simulationModel f$simulationModel #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> rxode2 3.0.2.9000 model named rx_adfb54bd0fde2a1279050d7474e763f3 model (✔ ready). #> value$state: depot, gut, center, effect #> value$stateExtra: cp #> value$params: tktr, tka, tcl, tv, prop.err, pkadd.err, temax, tec50, tkout, te0, pdadd.err, eta.ktr, eta.ka, eta.cl, eta.v, eta.emax, eta.ec50, eta.kout, eta.e0, CMT, rxerr.cp, rxerr.effect #> value$lhs: ktr, ka, cl, v, emax, ec50, kout, e0, DCP, PD, kin, cp, ipredSim, sim # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":null,"dir":"Reference","previous_headings":"","what":"Compile a model if needed — rxCompile","title":"Compile a model if needed — rxCompile","text":"compilation workhorse creating rxode2 model DLL files.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compile a model if needed — rxCompile","text":"","code":"rxCompile( model, dir, prefix, force = FALSE, modName = NULL, package = NULL, ... ) # S3 method for class 'rxModelVars' rxCompile( model, dir = NULL, prefix = NULL, force = FALSE, modName = NULL, package = NULL, ... ) # S3 method for class 'character' rxCompile( model, dir = NULL, prefix = NULL, force = FALSE, modName = NULL, package = NULL, ... ) # S3 method for class 'rxDll' rxCompile(model, ...) # S3 method for class 'rxode2' rxCompile(model, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compile a model if needed — rxCompile","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . dir model directory C file stored compiling. prefix string indicating prefix use C based functions. missing, calculated based file name, md5 parsed model. force boolean stating (re)compile forced rxode2 detects models already generated. modName string used model name. string used naming various aspects computations, including generating C symbol names, dynamic libraries, etc. Therefore, necessary modName consists simple ASCII alphanumeric characters starting letter. package Package name pre-compiled binaries. ... arguments sent rxTrans() function.","code":"If unspecified, the C code is stored in a temporary directory, then the model is compiled and moved to the current directory. Afterwards the C code is removed. If specified, the C code is stored in the specified directory and then compiled in that directory. The C code is not removed after the DLL is created in the same directory. This can be useful to debug the c-code outputs."},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compile a model if needed — rxCompile","text":"rxDll object following components dll DLL path model model specification .c function call C code correct context DLL using .C() function. .call function call C code correct context DLL using .Call() function. args list arguments used create rxDll object.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCompile.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compile a model if needed — rxCompile","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":null,"dir":"Reference","previous_headings":"","what":"Current Condition for rxode2 object — rxCondition","title":"Current Condition for rxode2 object — rxCondition","text":"Current Condition rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Current Condition for rxode2 object — rxCondition","text":"","code":"rxCondition(obj, condition = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Current Condition for rxode2 object — rxCondition","text":"obj rxode2 object condition specified one conditions rxode2 object (determined rxExpandIfElse()), assign rxode2 current condition parameter. condition one known condition, condition set NULL, implying conditioning currently used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Current Condition for rxode2 object — rxCondition","text":"Current condition rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCondition.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Current Condition for rxode2 object — rxCondition","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":null,"dir":"Reference","previous_headings":"","what":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"assumes normal ODE equations first equations ODE expanded forward sensitivities type sensitivity (like adjoint)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"","code":"rxControlUpdateSens(rxControl, sensCmt = NULL, ncmt = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"rxControl Input list rxControl type list sensCmt Number sensitivity compartments ncmt Number compartments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"Updated rxControl $atol, $rtol, $ssAtol $ssRtol updated different sensitivities normal ODEs (first) different sensitivity larger compartments (sensitivities).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxControlUpdateSens.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This updates the tolerances based on the sensitivity equations — rxControlUpdateSens","text":"","code":"tmp <- rxControl() tmp2 <- rxControlUpdateSens(tmp, 3, 6) tmp2$atol #> [1] 1e-08 1e-08 1e-08 1e-08 1e-08 1e-08 tmp2$rtol #> [1] 1e-06 1e-06 1e-06 1e-06 1e-06 1e-06 tmp2$ssAtol #> [1] 1e-08 1e-08 1e-08 1e-08 1e-08 1e-08 tmp2$ssRtol #> [1] 1e-06 1e-06 1e-06 1e-06 1e-06 1e-06"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":null,"dir":"Reference","previous_headings":"","what":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"run, R_user_dir rxode2's cache present, create cache","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"","code":"rxCreateCache()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxCreateCache.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This will create the cache directory for rxode2 to save between sessions — rxCreateCache","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":null,"dir":"Reference","previous_headings":"","what":"Add to rxode2's derivative tables — rxD","title":"Add to rxode2's derivative tables — rxD","text":"Add rxode2's derivative tables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add to rxode2's derivative tables — rxD","text":"","code":"rxD(name, derivatives)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add to rxode2's derivative tables — rxD","text":"name Function Name derivatives list functions. function takes number arguments original function. first function construct derivative respect first argument; second function construct derivitive respect second argument, .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add to rxode2's derivative tables — rxD","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add to rxode2's derivative tables — rxD","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxD.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add to rxode2's derivative tables — rxD","text":"","code":"## Add an arbitrary list of derivative functions ## In this case the fun(x,y) is assumed to be 0.5*x^2+0.5*y^2 rxD(\"fun\", list( function(x, y) { return(x) }, function(x, y) { return(y) } ))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":null,"dir":"Reference","previous_headings":"","what":"Delete the DLL for the model — rxDelete","title":"Delete the DLL for the model — rxDelete","text":"function deletes DLL, delete model information object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Delete the DLL for the model — rxDelete","text":"","code":"rxDelete(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Delete the DLL for the model — rxDelete","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Delete the DLL for the model — rxDelete","text":"boolean stating operation successful.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDelete.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Delete the DLL for the model — rxDelete","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Demote the error type — rxDemoteAddErr","title":"Demote the error type — rxDemoteAddErr","text":"Demote error type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Demote the error type — rxDemoteAddErr","text":"","code":"rxDemoteAddErr(errType)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Demote the error type — rxDemoteAddErr","text":"errType Error type factor","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Demote the error type — rxDemoteAddErr","text":"Demoted Error Type","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Demote the error type — rxDemoteAddErr","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDemoteAddErr.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Demote the error type — rxDemoteAddErr","text":"","code":"rxErrTypeCombine(\"add\") %>% rxErrTypeCombine(\"prop\") #> $transform #> [1] untransformed #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] add + prop #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] untransformed #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\" # This removes the internal additive error rxErrTypeCombine(\"add\") %>% rxErrTypeCombine(\"prop\") %>% rxDemoteAddErr() #> $transform #> [1] untransformed #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] prop #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] untransformed #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\" # This is used for logitNorm(NA), the additive portion is stripped"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"calculates derived parameters based provided data frame arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"","code":"rxDerived(..., verbose = FALSE, digits = 0)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"... input can : data frame PK parameters ; ideally data frame one pk parameter per row since output data frame one PK parameter per row. PK parameters either vector scalar verbose boolean TRUE provides message detected pk parameters detected compartmental model. default FALSE. digits represents number significant digits output; number zero (default), round.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"Return data.frame derived PK parameters 1-, 2-, 3-compartment linear model given provided clearances volumes based inferred model type. model parameters provided data frame : vc: Central Volume (1-, 2- 3- compartment models) kel: First-order elimination rate (1-, 2-, 3-compartment models) k12: First-order rate transfer central first peripheral compartment; (2- 3-compartment models) k21: First-order rate transfer first peripheral central compartment, (2- 3-compartment models) k13: First-order rate transfer central second peripheral compartment; (3-compartment model) k31: First-order rate transfer second peripheral central compartment (3-compartment model) vp: Peripheral Volume (2- 3- compartment models) vp2: Peripheral Volume 3rd compartment (3- compartment model) vss: Volume distribution steady state; (1-, 2-, 3-compartment models) t12alpha: \\(t_{1/2,\\alpha}\\); (1-, 2-, 3-compartment models) t12beta: \\(t_{1/2,\\beta}\\); (2- 3-compartment models) t12gamma: \\(t_{1/2,\\gamma}\\); (3-compartment model) alpha: \\(\\alpha\\); (1-, 2-, 3-compartment models) beta: \\(\\beta\\); (2- 3-compartment models) gamma: \\(\\beta\\); (3-compartment model) : true ; (1-, 2-, 3-compartment models) B: true B; (2- 3-compartment models) C: true C; (3-compartment model) fracA: fractional ; (1-, 2-, 3-compartment models) fracB: fractional B; (2- 3-compartment models) fracC: fractional C; (3-compartment model)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"Shafer S. L. CONVERT.XLS Rowland M, Tozer TN. Clinical Pharmacokinetics Pharmacodynamics: Concepts Applications (4th). Clipping Williams & Wilkins, Philadelphia, 2010.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"Matthew Fidler documentation Justin Wilkins, justin.wilkins@occams.com","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDerived.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate derived parameters for the 1-, 2-, and 3- compartment linear models. — rxDerived","text":"","code":"## Note that rxode2 parses the names to figure out the best PK parameter params <- rxDerived(cl = 29.4, v = 23.4, Vp = 114, vp2 = 4614, q = 270, q2 = 73) ## That is why this gives the same results as the value before params <- rxDerived(CL = 29.4, V1 = 23.4, V2 = 114, V3 = 4614, Q2 = 270, Q3 = 73) ## You may also use micro-constants alpha/beta etc. params <- rxDerived(k12 = 0.1, k21 = 0.2, k13 = 0.3, k31 = 0.4, kel = 10, v = 10) ## or you can mix vectors and scalars params <- rxDerived(CL = 29.4, V = 1:3) ## If you want, you can round to a number of significant digits ## with the `digits` argument: params <- rxDerived(CL = 29.4, V = 1:3, digits = 2)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":null,"dir":"Reference","previous_headings":"","what":"Jacobian and parameter derivatives — rxDfdy","title":"Jacobian and parameter derivatives — rxDfdy","text":"Return Jacobain parameter derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Jacobian and parameter derivatives — rxDfdy","text":"","code":"rxDfdy(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Jacobian and parameter derivatives — rxDfdy","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Jacobian and parameter derivatives — rxDfdy","text":"list jacobian parameters defined rxode2 object.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDfdy.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Jacobian and parameter derivatives — rxDfdy","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the DLL associated with the rxode2 object — rxDll","title":"Return the DLL associated with the rxode2 object — rxDll","text":"return dynamic load library shared object used run C code rxode2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the DLL associated with the rxode2 object — rxDll","text":"","code":"rxDll(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the DLL associated with the rxode2 object — rxDll","text":"obj rxode2 family objects character string model specification location file model specification.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the DLL associated with the rxode2 object — rxDll","text":"path library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDll.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the DLL associated with the rxode2 object — rxDll","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":null,"dir":"Reference","previous_headings":"","what":"Load rxode2 object — rxDynLoad","title":"Load rxode2 object — rxDynLoad","text":"Load rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Load rxode2 object — rxDynLoad","text":"","code":"rxDynLoad(obj) rxLoad(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Load rxode2 object — rxDynLoad","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Load rxode2 object — rxDynLoad","text":"Boolean returning rxode2 library loaded.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynLoad.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Load rxode2 object — rxDynLoad","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":null,"dir":"Reference","previous_headings":"","what":"Unload rxode2 object — rxDynUnload","title":"Unload rxode2 object — rxDynUnload","text":"Unload rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unload rxode2 object — rxDynUnload","text":"","code":"rxDynUnload(obj) rxUnload(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unload rxode2 object — rxDynUnload","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unload rxode2 object — rxDynUnload","text":"Boolean returning rxode2 library loaded.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxDynUnload.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Unload rxode2 object — rxDynUnload","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":null,"dir":"Reference","previous_headings":"","what":"Combine transformations and error structures — rxErrTypeCombine","title":"Combine transformations and error structures — rxErrTypeCombine","text":"Combine error information figure transformation applied current endpoint","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Combine transformations and error structures — rxErrTypeCombine","text":"","code":"rxErrTypeCombine(oldErrType, newErrType)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Combine transformations and error structures — rxErrTypeCombine","text":"oldErrType old transformation, default zero representing prior transformation. parameter first allow piping. parameter addTransform missing oldErrType character value, functions swaps oldErrType addTransform assigns oldErrType zero assuming prior distribution. newErrType new distribution \"added\" current transformation. assumes inputs preferred distribution name, determined rxPreferredDistributionName()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Combine transformations and error structures — rxErrTypeCombine","text":"new transformation factor","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Combine transformations and error structures — rxErrTypeCombine","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxErrTypeCombine.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Combine transformations and error structures — rxErrTypeCombine","text":"","code":"rxErrTypeCombine(\"probitNorm\") #> $transform #> [1] probit #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] add #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] none #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\" rxErrTypeCombine(\"probitNorm\") %>% rxErrTypeCombine(\"boxCox\") #> $transform #> [1] probit + boxCox #> 10 Levels: boxCox yeoJohnson untransformed lnorm logit ... probit + boxCox #> #> $errType #> [1] add #> Levels: add prop pow add + prop add + pow none #> #> $errTypeF #> [1] none #> Levels: untransformed transformed f none #> #> $addProp #> [1] default #> Levels: combined1 combined2 default #> #> attr(,\"class\") #> [1] \"rxCombinedErrorList\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"Dispatch solve 'rxode2' solve","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"","code":"rxEtDispatchSolve(x, ...) # Default S3 method rxEtDispatchSolve(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"x rxode2 solve dispatch object ... arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"'rxode2' loaded, solved object, otherwise error","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEtDispatchSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Dispatch solve to 'rxode2' solve — rxEtDispatchSolve","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":null,"dir":"Reference","previous_headings":"","what":"EVID formatting for tibble and other places. — rxEvid","title":"EVID formatting for tibble and other places. — rxEvid","text":"make EVID readable non pharmacometricians. displays means allows displayed tibble.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"EVID formatting for tibble and other places. — rxEvid","text":"","code":"rxEvid(x) as.rxEvid(x) # S3 method for class 'rxEvid' c(x, ...) # S3 method for class 'rxEvid' x[...] # S3 method for class 'rxEvid' as.character(x, ...) # S3 method for class 'rxEvid' x[[...]] # S3 method for class 'rxEvid' units(x) <- value # S3 method for class 'rxRateDur' c(x, ...) # S3 method for class 'rxEvid' format(x, ...) # S3 method for class 'rxRateDur' format(x, ...) # S3 method for class 'rxEvid' print(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"EVID formatting for tibble and other places. — rxEvid","text":"x Item converted rxode2 EVID specification. ... parameters value error set units evid","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"EVID formatting for tibble and other places. — rxEvid","text":"rxEvid specification","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxEvid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"EVID formatting for tibble and other places. — rxEvid","text":"","code":"rxEvid(1:7) #> 1:Dose (Add) #> 2:Other #> 3:Reset #> 4:Reset&Dose #> 5:Replace #> 6:Multiply #> 7:Transit"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand d(f)/d(eta) — rxExpandFEta_","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"Expand d(f)/d(eta)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"","code":"rxExpandFEta_(state, neta, pred, isTheta = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"state state expand neta number etas pred type prediction isTheta logical, expansion actually thetas instead etas","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandFEta_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand d(f)/d(eta) — rxExpandFEta_","text":"String symengine expressions evaluate calculate df/deta","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":null,"dir":"Reference","previous_headings":"","what":"Faster expand.grid — rxExpandGrid","title":"Faster expand.grid — rxExpandGrid","text":"support x y characters right now","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Faster expand.grid — rxExpandGrid","text":"","code":"rxExpandGrid(x, y, type = 0L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Faster expand.grid — rxExpandGrid","text":"x first element (must character) y second element (must character) type Internal type=0L traditional expand grid type=1L Jacobian expand grid (adds symbols)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Faster expand.grid — rxExpandGrid","text":"Expand grid","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Faster expand.grid — rxExpandGrid","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Faster expand.grid — rxExpandGrid","text":"","code":"## rxExpandGrid(letters, letters) #> Var1 Var2 #> 1 a a #> 2 b a #> 3 c a #> 4 d a #> 5 e a #> 6 f a #> 7 g a #> 8 h a #> 9 i a #> 10 j a #> 11 k a #> 12 l a #> 13 m a #> 14 n a #> 15 o a #> 16 p a #> 17 q a #> 18 r a #> 19 s a #> 20 t a #> 21 u a #> 22 v a #> 23 w a #> 24 x a #> 25 y a #> 26 z a #> 27 a b #> 28 b b #> 29 c b #> 30 d b #> 31 e b #> 32 f b #> 33 g b #> 34 h b #> 35 i b #> 36 j b #> 37 k b #> 38 l b #> 39 m b #> 40 n b #> 41 o b #> 42 p b #> 43 q b #> 44 r b #> 45 s b #> 46 t b #> 47 u b #> 48 v b #> 49 w b #> 50 x b #> 51 y b #> 52 z b #> 53 a c #> 54 b c #> 55 c c #> 56 d c #> 57 e c #> 58 f c #> 59 g c #> 60 h c #> 61 i c #> 62 j c #> 63 k c #> 64 l c #> 65 m c #> 66 n c #> 67 o c #> 68 p c #> 69 q c #> 70 r c #> 71 s c #> 72 t c #> 73 u c #> 74 v c #> 75 w c #> 76 x c #> 77 y c #> 78 z c #> 79 a d #> 80 b d #> 81 c d #> 82 d d #> 83 e d #> 84 f d #> 85 g d #> 86 h d #> 87 i d #> 88 j d #> 89 k d #> 90 l d #> 91 m d #> 92 n d #> 93 o d #> 94 p d #> 95 q d #> 96 r d #> 97 s d #> 98 t d #> 99 u d #> 100 v d #> 101 w d #> 102 x d #> 103 y d #> 104 z d #> 105 a e #> 106 b e #> 107 c e #> 108 d e #> 109 e e #> 110 f e #> 111 g e #> 112 h e #> 113 i e #> 114 j e #> 115 k e #> 116 l e #> 117 m e #> 118 n e #> 119 o e #> 120 p e #> 121 q e #> 122 r e #> 123 s e #> 124 t e #> 125 u e #> 126 v e #> 127 w e #> 128 x e #> 129 y e #> 130 z e #> 131 a f #> 132 b f #> 133 c f #> 134 d f #> 135 e f #> 136 f f #> 137 g f #> 138 h f #> 139 i f #> 140 j f #> 141 k f #> 142 l f #> 143 m f #> 144 n f #> 145 o f #> 146 p f #> 147 q f #> 148 r f #> 149 s f #> 150 t f #> 151 u f #> 152 v f #> 153 w f #> 154 x f #> 155 y f #> 156 z f #> 157 a g #> 158 b g #> 159 c g #> 160 d g #> 161 e g #> 162 f g #> 163 g g #> 164 h g #> 165 i g #> 166 j g #> 167 k g #> 168 l g #> 169 m g #> 170 n g #> 171 o g #> 172 p g #> 173 q g #> 174 r g #> 175 s g #> 176 t g #> 177 u g #> 178 v g #> 179 w g #> 180 x g #> 181 y g #> 182 z g #> 183 a h #> 184 b h #> 185 c h #> 186 d h #> 187 e h #> 188 f h #> 189 g h #> 190 h h #> 191 i h #> 192 j h #> 193 k h #> 194 l h #> 195 m h #> 196 n h #> 197 o h #> 198 p h #> 199 q h #> 200 r h #> 201 s h #> 202 t h #> 203 u h #> 204 v h #> 205 w h #> 206 x h #> 207 y h #> 208 z h #> 209 a i #> 210 b i #> 211 c i #> 212 d i #> 213 e i #> 214 f i #> 215 g i #> 216 h i #> 217 i i #> 218 j i #> 219 k i #> 220 l i #> 221 m i #> 222 n i #> 223 o i #> 224 p i #> 225 q i #> 226 r i #> 227 s i #> 228 t i #> 229 u i #> 230 v i #> 231 w i #> 232 x i #> 233 y i #> 234 z i #> 235 a j #> 236 b j #> 237 c j #> 238 d j #> 239 e j #> 240 f j #> 241 g j #> 242 h j #> 243 i j #> 244 j j #> 245 k j #> 246 l j #> 247 m j #> 248 n j #> 249 o j #> 250 p j #> 251 q j #> 252 r j #> 253 s j #> 254 t j #> 255 u j #> 256 v j #> 257 w j #> 258 x j #> 259 y j #> 260 z j #> 261 a k #> 262 b k #> 263 c k #> 264 d k #> 265 e k #> 266 f k #> 267 g k #> 268 h k #> 269 i k #> 270 j k #> 271 k k #> 272 l k #> 273 m k #> 274 n k #> 275 o k #> 276 p k #> 277 q k #> 278 r k #> 279 s k #> 280 t k #> 281 u k #> 282 v k #> 283 w k #> 284 x k #> 285 y k #> 286 z k #> 287 a l #> 288 b l #> 289 c l #> 290 d l #> 291 e l #> 292 f l #> 293 g l #> 294 h l #> 295 i l #> 296 j l #> 297 k l #> 298 l l #> 299 m l #> 300 n l #> 301 o l #> 302 p l #> 303 q l #> 304 r l #> 305 s l #> 306 t l #> 307 u l #> 308 v l #> 309 w l #> 310 x l #> 311 y l #> 312 z l #> 313 a m #> 314 b m #> 315 c m #> 316 d m #> 317 e m #> 318 f m #> 319 g m #> 320 h m #> 321 i m #> 322 j m #> 323 k m #> 324 l m #> 325 m m #> 326 n m #> 327 o m #> 328 p m #> 329 q m #> 330 r m #> 331 s m #> 332 t m #> 333 u m #> 334 v m #> 335 w m #> 336 x m #> 337 y m #> 338 z m #> 339 a n #> 340 b n #> 341 c n #> 342 d n #> 343 e n #> 344 f n #> 345 g n #> 346 h n #> 347 i n #> 348 j n #> 349 k n #> 350 l n #> 351 m n #> 352 n n #> 353 o n #> 354 p n #> 355 q n #> 356 r n #> 357 s n #> 358 t n #> 359 u n #> 360 v n #> 361 w n #> 362 x n #> 363 y n #> 364 z n #> 365 a o #> 366 b o #> 367 c o #> 368 d o #> 369 e o #> 370 f o #> 371 g o #> 372 h o #> 373 i o #> 374 j o #> 375 k o #> 376 l o #> 377 m o #> 378 n o #> 379 o o #> 380 p o #> 381 q o #> 382 r o #> 383 s o #> 384 t o #> 385 u o #> 386 v o #> 387 w o #> 388 x o #> 389 y o #> 390 z o #> 391 a p #> 392 b p #> 393 c p #> 394 d p #> 395 e p #> 396 f p #> 397 g p #> 398 h p #> 399 i p #> 400 j p #> 401 k p #> 402 l p #> 403 m p #> 404 n p #> 405 o p #> 406 p p #> 407 q p #> 408 r p #> 409 s p #> 410 t p #> 411 u p #> 412 v p #> 413 w p #> 414 x p #> 415 y p #> 416 z p #> 417 a q #> 418 b q #> 419 c q #> 420 d q #> 421 e q #> 422 f q #> 423 g q #> 424 h q #> 425 i q #> 426 j q #> 427 k q #> 428 l q #> 429 m q #> 430 n q #> 431 o q #> 432 p q #> 433 q q #> 434 r q #> 435 s q #> 436 t q #> 437 u q #> 438 v q #> 439 w q #> 440 x q #> 441 y q #> 442 z q #> 443 a r #> 444 b r #> 445 c r #> 446 d r #> 447 e r #> 448 f r #> 449 g r #> 450 h r #> 451 i r #> 452 j r #> 453 k r #> 454 l r #> 455 m r #> 456 n r #> 457 o r #> 458 p r #> 459 q r #> 460 r r #> 461 s r #> 462 t r #> 463 u r #> 464 v r #> 465 w r #> 466 x r #> 467 y r #> 468 z r #> 469 a s #> 470 b s #> 471 c s #> 472 d s #> 473 e s #> 474 f s #> 475 g s #> 476 h s #> 477 i s #> 478 j s #> 479 k s #> 480 l s #> 481 m s #> 482 n s #> 483 o s #> 484 p s #> 485 q s #> 486 r s #> 487 s s #> 488 t s #> 489 u s #> 490 v s #> 491 w s #> 492 x s #> 493 y s #> 494 z s #> 495 a t #> 496 b t #> 497 c t #> 498 d t #> 499 e t #> 500 f t #> 501 g t #> 502 h t #> 503 i t #> 504 j t #> 505 k t #> 506 l t #> 507 m t #> 508 n t #> 509 o t #> 510 p t #> 511 q t #> 512 r t #> 513 s t #> 514 t t #> 515 u t #> 516 v t #> 517 w t #> 518 x t #> 519 y t #> 520 z t #> 521 a u #> 522 b u #> 523 c u #> 524 d u #> 525 e u #> 526 f u #> 527 g u #> 528 h u #> 529 i u #> 530 j u #> 531 k u #> 532 l u #> 533 m u #> 534 n u #> 535 o u #> 536 p u #> 537 q u #> 538 r u #> 539 s u #> 540 t u #> 541 u u #> 542 v u #> 543 w u #> 544 x u #> 545 y u #> 546 z u #> 547 a v #> 548 b v #> 549 c v #> 550 d v #> 551 e v #> 552 f v #> 553 g v #> 554 h v #> 555 i v #> 556 j v #> 557 k v #> 558 l v #> 559 m v #> 560 n v #> 561 o v #> 562 p v #> 563 q v #> 564 r v #> 565 s v #> 566 t v #> 567 u v #> 568 v v #> 569 w v #> 570 x v #> 571 y v #> 572 z v #> 573 a w #> 574 b w #> 575 c w #> 576 d w #> 577 e w #> 578 f w #> 579 g w #> 580 h w #> 581 i w #> 582 j w #> 583 k w #> 584 l w #> 585 m w #> 586 n w #> 587 o w #> 588 p w #> 589 q w #> 590 r w #> 591 s w #> 592 t w #> 593 u w #> 594 v w #> 595 w w #> 596 x w #> 597 y w #> 598 z w #> 599 a x #> 600 b x #> 601 c x #> 602 d x #> 603 e x #> 604 f x #> 605 g x #> 606 h x #> 607 i x #> 608 j x #> 609 k x #> 610 l x #> 611 m x #> 612 n x #> 613 o x #> 614 p x #> 615 q x #> 616 r x #> 617 s x #> 618 t x #> 619 u x #> 620 v x #> 621 w x #> 622 x x #> 623 y x #> 624 z x #> 625 a y #> 626 b y #> 627 c y #> 628 d y #> 629 e y #> 630 f y #> 631 g y #> 632 h y #> 633 i y #> 634 j y #> 635 k y #> 636 l y #> 637 m y #> 638 n y #> 639 o y #> 640 p y #> 641 q y #> 642 r y #> 643 s y #> 644 t y #> 645 u y #> 646 v y #> 647 w y #> 648 x y #> 649 y y #> 650 z y #> 651 a z #> 652 b z #> 653 c z #> 654 d z #> 655 e z #> 656 f z #> 657 g z #> 658 h z #> 659 i z #> 660 j z #> 661 k z #> 662 l z #> 663 m z #> 664 n z #> 665 o z #> 666 p z #> 667 q z #> 668 r z #> 669 s z #> 670 t z #> 671 u z #> 672 v z #> 673 w z #> 674 x z #> 675 y z #> 676 z z ## Another fast method; See ## https://stackoverflow.com/questions/10405637/use-outer-instead-of-expand-grid expand.grid.jc <- function(seq1, seq2) { cbind( Var1 = rep.int(seq1, length(seq2)), Var2 = rep.int(seq2, rep.int(length(seq1), length(seq2))) ) } # \\donttest{ microbenchmark::microbenchmark(rxExpandGrid(letters, letters), expand.grid.jc(letters, letters)) #> Unit: microseconds #> expr min lq mean median uq #> rxExpandGrid(letters, letters) 23.303 23.915 55.36609 25.052 26.264 #> expand.grid.jc(letters, letters) 15.889 17.212 186.50146 18.680 19.662 #> max neval #> 2326.174 100 #> 4709.102 100 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand grid internal function — rxExpandGrid_","title":"Expand grid internal function — rxExpandGrid_","text":"Expand grid internal function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand grid internal function — rxExpandGrid_","text":"","code":"rxExpandGrid_(c1, c2, type)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand grid internal function — rxExpandGrid_","text":"c1 character vector items expanded c2 second character vector items expanded type 0 typical data frame, 1 symengine sensitivity expansion","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandGrid_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand grid internal function — rxExpandGrid_","text":"data frame (type = 0) symengine string (type=1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"Expand /else clauses multiple different types lines.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"","code":"rxExpandIfElse(model, removeInis = TRUE, removePrint = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"model Model can character, rxode2 model. needs normalized syntax, (...){} line. else statement must line closing bracket statement previous line. else statment must also contain opening bracket, like code else {} removeInis boolean indicating parameter initializations removed model. removePrint boolean indicating printing statements removed model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"named character vector. names vector logical conditions, values lines satisfy logical conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandIfElse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Expand if/else clauses into multiple different types of lines. — rxExpandIfElse","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand second order sensitivity — rxExpandSens2_","title":"Expand second order sensitivity — rxExpandSens2_","text":"Expand second order sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand second order sensitivity — rxExpandSens2_","text":"","code":"rxExpandSens2_(state, s1, s2)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand second order sensitivity — rxExpandSens2_","text":"state state expand s1 variables calculate sensitivity s2 variables calculate second order sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens2_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand second order sensitivity — rxExpandSens2_","text":"string symengine second order sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":null,"dir":"Reference","previous_headings":"","what":"Expand sensitivity — rxExpandSens_","title":"Expand sensitivity — rxExpandSens_","text":"Expand sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Expand sensitivity — rxExpandSens_","text":"","code":"rxExpandSens_(state, calcSens)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Expand sensitivity — rxExpandSens_","text":"state state expand calcSens variables calculate sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxExpandSens_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Expand sensitivity — rxExpandSens_","text":"symengine string expanded sensitivity","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply the fixed population estimated parameters — rxFixPop","title":"Apply the fixed population estimated parameters — rxFixPop","text":"Apply fixed population estimated parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply the fixed population estimated parameters — rxFixPop","text":"","code":"rxFixPop(ui, returnNull = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply the fixed population estimated parameters — rxFixPop","text":"ui rxode2 ui function returnNull boolean unchanged values return original ui (FALSE) null (TRUE)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply the fixed population estimated parameters — rxFixPop","text":"returnNull TRUE, NULL nothing changed, changed model ui. returnNull FALSE, return ui matter changed .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Apply the fixed population estimated parameters — rxFixPop","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFixPop.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Apply the fixed population estimated parameters — rxFixPop","text":"","code":"One.comp.transit.allo <- function() { ini({ # Where initial conditions/variables are specified lktr <- log(1.15) #log k transit (/h) lcl <- log(0.15) #log Cl (L/hr) lv <- log(7) #log V (L) ALLC <- fix(0.75) #allometric exponent cl ALLV <- fix(1.00) #allometric exponent v prop.err <- 0.15 #proportional error (SD/mean) add.err <- 0.6 #additive error (mg/L) eta.ktr ~ 0.5 eta.cl ~ 0.1 eta.v ~ 0.1 }) model({ #Allometric scaling on weight cl <- exp(lcl + eta.cl + ALLC * logWT70) v <- exp(lv + eta.v + ALLV * logWT70) ktr <- exp(lktr + eta.ktr) # RxODE-style differential equations are supported d/dt(depot) = -ktr * depot d/dt(central) = ktr * trans - (cl/v) * central d/dt(trans) = ktr * depot - ktr * trans ## Concentration is calculated cp = central/v # And is assumed to follow proportional and additive error cp ~ prop(prop.err) + add(add.err) }) } m <- rxFixPop(One.comp.transit.allo) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments m #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> lktr lcl lv prop.err add.err #> 0.1397619 -1.8971200 1.9459101 0.1500000 0.6000000 #> #> Omega ($omega): #> eta.ktr eta.cl eta.v #> eta.ktr 0.5 0.0 0.0 #> eta.cl 0.0 0.1 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 central #> 3 3 trans #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 lcl eta.cl id #> 2 lv eta.v id #> 3 lktr eta.ktr id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> lktr <- 0.139761942375159 #> lcl <- -1.89711998488588 #> lv <- 1.94591014905531 #> prop.err <- c(0, 0.15) #> add.err <- c(0, 0.6) #> eta.ktr ~ 0.5 #> eta.cl ~ 0.1 #> eta.v ~ 0.1 #> }) #> model({ #> cl <- exp(lcl + eta.cl + 0.75 * logWT70) #> v <- exp(lv + eta.v + 1 * logWT70) #> ktr <- exp(lktr + eta.ktr) #> d/dt(depot) = -ktr * depot #> d/dt(central) = ktr * trans - (cl/v) * central #> d/dt(trans) = ktr * depot - ktr * trans #> cp = central/v #> cp ~ prop(prop.err) + add(add.err) #> }) #> } # now everything is already fixed, so calling again will do nothing rxFixPop(m) #> ── rxode2-based free-form 3-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> lktr lcl lv prop.err add.err #> 0.1397619 -1.8971200 1.9459101 0.1500000 0.6000000 #> #> Omega ($omega): #> eta.ktr eta.cl eta.v #> eta.ktr 0.5 0.0 0.0 #> eta.cl 0.0 0.1 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 central #> 3 3 trans #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 lcl eta.cl id #> 2 lv eta.v id #> 3 lktr eta.ktr id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> lktr <- 0.139761942375159 #> lcl <- -1.89711998488588 #> lv <- 1.94591014905531 #> prop.err <- c(0, 0.15) #> add.err <- c(0, 0.6) #> eta.ktr ~ 0.5 #> eta.cl ~ 0.1 #> eta.v ~ 0.1 #> }) #> model({ #> cl <- exp(lcl + eta.cl + 0.75 * logWT70) #> v <- exp(lv + eta.v + 1 * logWT70) #> ktr <- exp(lktr + eta.ktr) #> d/dt(depot) = -ktr * depot #> d/dt(central) = ktr * trans - (cl/v) * central #> d/dt(trans) = ktr * depot - ktr * trans #> cp = central/v #> cp ~ prop(prop.err) + add(add.err) #> }) #> } # if you call it with returnNull=TRUE when no changes have been # performed, the function will return NULL rxFixPop(m, returnNull=TRUE) #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":null,"dir":"Reference","previous_headings":"","what":"Clear memoise cache for rxode2 — rxForget","title":"Clear memoise cache for rxode2 — rxForget","text":"Clear memoise cache rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Clear memoise cache for rxode2 — rxForget","text":"","code":"rxForget()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Clear memoise cache for rxode2 — rxForget","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxForget.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Clear memoise cache for rxode2 — rxForget","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":null,"dir":"Reference","previous_headings":"","what":"Add/Create C functions for use in rxode2 — rxFun","title":"Add/Create C functions for use in rxode2 — rxFun","text":"Add/Create C functions use rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add/Create C functions for use in rxode2 — rxFun","text":"","code":"rxFun(name, args, cCode) rxRmFun(name)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add/Create C functions for use in rxode2 — rxFun","text":"name can either give name user function simple R function wish convert C. rxode2 convert R function C, name function match function name provided number arguments match R function provided. Hence, providing R function conversion C, rest arguments implied. args gives arguments user function cCode C-code new function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFun.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add/Create C functions for use in rxode2 — rxFun","text":"","code":"# \\donttest{ # Right now rxode2 is not aware of the function fun # Therefore it cannot translate it to symengine or # Compile a model with it. try(rxode2(\"a=fun(a,b,c)\")) #> #> #> Error : syntax errors (see above) # Note for this approach to work, it cannot interfere with C # function names or reserved rxode2 special terms. Therefore # f(x) would not work since f is an alias for bioavailability. fun <- \" double fun(double a, double b, double c) { return a*a+b*a+c; } \" # C-code for function rxFun(\"fun\", c(\"a\", \"b\", \"c\"), fun) ## Added function # Now rxode2 knows how to translate this function to symengine rxToSE(\"fun(a,b,c)\") #> [1] \"fun(a,b,c)\" # And will take a central difference when calculating derivatives rxFromSE(\"Derivative(fun(a,b,c),a)\") #> [1] \"(fun((a)+6.05545445239334e-06,b,c)-fun(a,b,c))/6.05545445239334e-06\" ## Of course, you could specify the derivative table manually rxD(\"fun\", list( function(a, b, c) { paste0(\"2*\", a, \"+\", b) }, function(a, b, c) { return(a) }, function(a, b, c) { return(\"0.0\") } )) rxFromSE(\"Derivative(fun(a,b,c),a)\") #> [1] \"2*a+b\" # You can also remove the functions by `rxRmFun` rxRmFun(\"fun\") # you can also use R functions directly in rxode2 gg <- function(x, y) { x + y } f <- rxode2({ z = gg(x, y) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(1:10) |> as.data.frame() e$x <- 1:10 e$y <- 21:30 rxSolve(f, e) #> Warning: not thread safe method, using 1 core #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time z x y #> #> 1 1 22 1 21 #> 2 2 24 2 22 #> 3 3 26 3 23 #> 4 4 28 4 24 #> 5 5 30 5 25 #> 6 6 32 6 26 #> # ℹ 4 more rows # Note that since it touches R, it can only run single-threaded. # There are also requirements for the function: # # 1. It accepts one value per argument (numeric) # # 2. It returns one numeric value # If it is a simple function (like gg) you can also convert it to C # using rxFun and load it into rxode2 rxFun(gg) #> → finding duplicate expressions in d(gg)/d(x)... #> → finding duplicate expressions in d(gg)/d(y)... #> converted R function 'gg' to C (will now use in rxode2) #> converted R function 'rx_gg_d_x' to C (will now use in rxode2) #> converted R function 'rx_gg_d_y' to C (will now use in rxode2) #> Added derivative table for 'gg' rxSolve(f, e) #> compiled with R user function 'gg'; now there is a clashing C user function #> triggered a recompile to use the C user function (they are always preferred) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time z x y #> #> 1 1 22 1 21 #> 2 2 24 2 22 #> 3 3 26 3 23 #> 4 4 28 4 24 #> 5 5 30 5 25 #> 6 6 32 6 26 #> # ℹ 4 more rows # to stop the recompile simply reassign the function f <- rxode2(f) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ rxSolve(f, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 10 × 4 #> time z x y #> #> 1 1 22 1 21 #> 2 2 24 2 22 #> 3 3 26 3 23 #> 4 4 28 4 24 #> 5 5 30 5 25 #> 6 6 32 6 26 #> # ℹ 4 more rows rxRmFun(\"gg\") rm(gg) rm(f) # You can also automatically convert a R function to R code (and # calculate first derivatives) fun <- function(a, b, c) { a^2+b*a+c } rxFun(fun) #> → finding duplicate expressions in d(fun)/d(a)... #> → finding duplicate expressions in d(fun)/d(b)... #> → finding duplicate expressions in d(fun)/d(c)... #> converted R function 'fun' to C (will now use in rxode2) #> converted R function 'rx_fun_d_a' to C (will now use in rxode2) #> converted R function 'rx_fun_d_b' to C (will now use in rxode2) #> converted R function 'rx_fun_d_c' to C (will now use in rxode2) #> Added derivative table for 'fun' # You can see the R code if you want with rxC message(rxC(\"fun\")) #> double fun(double a, double b, double c) { #> double _lastValue=NA_REAL; #> _lastValue = R_pow_di(a,2)+b*a+c; #> return _lastValue; #> } # you can also remove both the function and the # derivatives with rxRmFun(\"fun\") rxRmFun(\"fun\") # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":null,"dir":"Reference","previous_headings":"","what":"Add user function to rxode2 — rxFunParse","title":"Add user function to rxode2 — rxFunParse","text":"adds user function rxode2 can called. needed, functions can differentiated numerical differences adding derivatives rxode2's internal derivative table rxode2's rxD function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add user function to rxode2 — rxFunParse","text":"","code":"rxFunParse(name, args, cCode) rxRmFunParse(name)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add user function to rxode2 — rxFunParse","text":"name gives name user function args gives arguments user function cCode C-code new function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add user function to rxode2 — rxFunParse","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxFunParse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Add user function to rxode2 — rxFunParse","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":null,"dir":"Reference","previous_headings":"","what":"rxGetControl option from ui — rxGetControl","title":"rxGetControl option from ui — rxGetControl","text":"rxGetControl option ui","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxGetControl option from ui — rxGetControl","text":"","code":"rxGetControl(ui, option, default)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxGetControl option from ui — rxGetControl","text":"ui rxode2 ui object option Option get default Default value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxGetControl option from ui — rxGetControl","text":"Option (present) default value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxGetControl option from ui — rxGetControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":null,"dir":"Reference","previous_headings":"","what":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"S3 method getting distribution lines rxode2 simulation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"","code":"rxGetDistributionSimulationLines(line) # S3 method for class 'norm' rxGetDistributionSimulationLines(line) # S3 method for class 'dnorm' rxGetDistributionSimulationLines(line) # S3 method for class 't' rxGetDistributionSimulationLines(line) # S3 method for class 'cauchy' rxGetDistributionSimulationLines(line) # S3 method for class 'ordinal' rxGetDistributionSimulationLines(line) # Default S3 method rxGetDistributionSimulationLines(line) # S3 method for class 'rxUi' rxGetDistributionSimulationLines(line)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"line Parsed rxode2 model environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"Lines simulation ipred dv. based idea focei parameters defined","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetDistributionSimulationLines.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This is a S3 method for getting the distribution lines for a rxode2 simulation — rxGetDistributionSimulationLines","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the linear compartment model true function — rxGetLin","title":"Get the linear compartment model true function — rxGetLin","text":"Get linear compartment model true function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the linear compartment model true function — rxGetLin","text":"","code":"rxGetLin( model, linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), verbose = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the linear compartment model true function — rxGetLin","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . linCmtSens method calculate linCmt() solutions verbose TRUE verbose linear compartmental model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the linear compartment model true function — rxGetLin","text":"model linCmt() replaced linCmtA()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetLin.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the linear compartment model true function — rxGetLin","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Get model properties without compiling it. — rxGetModel","title":"Get model properties without compiling it. — rxGetModel","text":"Get model properties without compiling .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get model properties without compiling it. — rxGetModel","text":"","code":"rxGetModel( model, calcSens = NULL, calcJac = NULL, collapseModel = NULL, indLin = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get model properties without compiling it. — rxGetModel","text":"model rxode2 specification calcSens boolean indicating rxode2 calculate sensitivities according specified ODEs. calcJac boolean indicating rxode2 calculate Jacobain according specified ODEs. collapseModel boolean indicating rxode2 remove LHS variables calculating sensitivities. indLin Calculate inductive linearization matrices compile inductive linearization support.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get model properties without compiling it. — rxGetModel","text":"rxode2 trans list","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get model properties without compiling it. — rxGetModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 seed — rxGetSeed","title":"Get the rxode2 seed — rxGetSeed","text":"Get rxode2 seed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 seed — rxGetSeed","text":"","code":"rxGetSeed()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 seed — rxGetSeed","text":"rxode2 seed state -1 seed set","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetSeed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the rxode2 seed — rxGetSeed","text":"","code":"# without setting seed rxGetSeed() #> [1] -1 # Now set the seed rxSetSeed(42) rxGetSeed() #> [1] 42 rxnorm() #> [1] -0.640542 rxGetSeed() #> [1] 44 # don't use the rxode2 seed again rxSetSeed(-1) rxGetSeed() #> [1] -1 rxnorm() #> [1] -0.6812928 rxGetSeed() #> [1] -1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Get rxode2 model from object — rxGetrxode2","title":"Get rxode2 model from object — rxGetrxode2","text":"Get rxode2 model object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get rxode2 model from object — rxGetrxode2","text":"","code":"rxGetrxode2(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get rxode2 model from object — rxGetrxode2","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxGetrxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get rxode2 model from object — rxGetrxode2","text":"rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":null,"dir":"Reference","previous_headings":"","what":"Format rxSolve and related objects as html. — rxHtml","title":"Format rxSolve and related objects as html. — rxHtml","text":"Format rxSolve related objects html.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Format rxSolve and related objects as html. — rxHtml","text":"","code":"rxHtml(x, ...) # S3 method for class 'rxSolve' rxHtml(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Format rxSolve and related objects as html. — rxHtml","text":"x rxode2 object ... Extra arguments sent kable","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Format rxSolve and related objects as html. — rxHtml","text":"html code rxSolve object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxHtml.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Format rxSolve and related objects as html. — rxHtml","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the preferred factoring by state — rxIndLinState","title":"Set the preferred factoring by state — rxIndLinState","text":"Set preferred factoring state","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the preferred factoring by state — rxIndLinState","text":"","code":"rxIndLinState(preferred = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the preferred factoring by state — rxIndLinState","text":"preferred list state's preferred factorization","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the preferred factoring by state — rxIndLinState","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinState.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set the preferred factoring by state — rxIndLinState","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":null,"dir":"Reference","previous_headings":"","what":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"one state ODE separated specifies incorporated matrix exponential.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"","code":"rxIndLinStrategy(strategy = c(\"curState\", \"split\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"strategy strategy inductive linearization matrix building curState Prefer parameterizing terms current state, followed first state observed term. split Split parameterization states term dividing number states term adding matrix term state.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIndLinStrategy.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This sets the inductive linearization strategy for matrix building — rxIndLinStrategy","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":null,"dir":"Reference","previous_headings":"","what":"Initial Values and State values for a rxode2 object — rxInits","title":"Initial Values and State values for a rxode2 object — rxInits","text":"Returns initial values rxDll object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Initial Values and State values for a rxode2 object — rxInits","text":"","code":"rxInits( obj, vec = NULL, req = NULL, defaultValue = 0, noerror = FALSE, noini = FALSE, rxLines = FALSE ) rxInit( obj, vec = NULL, req = NULL, defaultValue = 0, noerror = FALSE, noini = FALSE, rxLines = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Initial Values and State values for a rxode2 object — rxInits","text":"obj rxDll, rxode2, named vector representing default initial arguments vec supplied, named vector model. req Required names, required order ODE solver defaultValue number NA representing default value parameters missing vec, required req. noerror boolean specifying error thrown missing parameter values default = NA","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Initial Values and State values for a rxode2 object — rxInits","text":"Initial values rxDll object","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInits.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Initial Values and State values for a rxode2 object — rxInits","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a positive base — rxIntToBase","title":"Convert a positive base — rxIntToBase","text":"Convert positive base","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a positive base — rxIntToBase","text":"","code":"rxIntToBase(x, base = 36L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a positive base — rxIntToBase","text":"x integer convert base can 2 36","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a positive base — rxIntToBase","text":"sequence letters representing number(s) input","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a positive base — rxIntToBase","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToBase.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a positive base — rxIntToBase","text":"","code":"rxIntToBase(1:100) #> [1] \"1\" \"2\" \"3\" \"4\" \"5\" \"6\" \"7\" \"8\" \"9\" \"a\" \"b\" \"c\" \"d\" \"e\" \"f\" #> [16] \"g\" \"h\" \"i\" \"j\" \"k\" \"l\" \"m\" \"n\" \"o\" \"p\" \"q\" \"r\" \"s\" \"t\" \"u\" #> [31] \"v\" \"w\" \"x\" \"y\" \"z\" \"10\" \"11\" \"12\" \"13\" \"14\" \"15\" \"16\" \"17\" \"18\" \"19\" #> [46] \"1a\" \"1b\" \"1c\" \"1d\" \"1e\" \"1f\" \"1g\" \"1h\" \"1i\" \"1j\" \"1k\" \"1l\" \"1m\" \"1n\" \"1o\" #> [61] \"1p\" \"1q\" \"1r\" \"1s\" \"1t\" \"1u\" \"1v\" \"1w\" \"1x\" \"1y\" \"1z\" \"20\" \"21\" \"22\" \"23\" #> [76] \"24\" \"25\" \"26\" \"27\" \"28\" \"29\" \"2a\" \"2b\" \"2c\" \"2d\" \"2e\" \"2f\" \"2g\" \"2h\" \"2i\" #> [91] \"2j\" \"2k\" \"2l\" \"2m\" \"2n\" \"2o\" \"2p\" \"2q\" \"2r\" \"2s\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a positive integer to a letter series — rxIntToLetter","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"Convert positive integer letter series","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"","code":"rxIntToLetter(x, base = 26L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"x integer convert base can 2 26","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"sequence letters representing number(s) input","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIntToLetter.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a positive integer to a letter series — rxIntToLetter","text":"","code":"rxIntToLetter(1:100) #> [1] \"b\" \"c\" \"d\" \"e\" \"f\" \"g\" \"h\" \"i\" \"j\" \"k\" \"l\" \"m\" \"n\" \"o\" \"p\" #> [16] \"q\" \"r\" \"s\" \"t\" \"u\" \"v\" \"w\" \"x\" \"y\" \"z\" \"ba\" \"bb\" \"bc\" \"bd\" \"be\" #> [31] \"bf\" \"bg\" \"bh\" \"bi\" \"bj\" \"bk\" \"bl\" \"bm\" \"bn\" \"bo\" \"bp\" \"bq\" \"br\" \"bs\" \"bt\" #> [46] \"bu\" \"bv\" \"bw\" \"bx\" \"by\" \"bz\" \"ca\" \"cb\" \"cc\" \"cd\" \"ce\" \"cf\" \"cg\" \"ch\" \"ci\" #> [61] \"cj\" \"ck\" \"cl\" \"cm\" \"cn\" \"co\" \"cp\" \"cq\" \"cr\" \"cs\" \"ct\" \"cu\" \"cv\" \"cw\" \"cx\" #> [76] \"cy\" \"cz\" \"da\" \"db\" \"dc\" \"dd\" \"de\" \"df\" \"dg\" \"dh\" \"di\" \"dj\" \"dk\" \"dl\" \"dm\" #> [91] \"dn\" \"do\" \"dp\" \"dq\" \"dr\" \"ds\" \"dt\" \"du\" \"dv\" \"dw\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":null,"dir":"Reference","previous_headings":"","what":"Invert matrix using RcppArmadillo. — rxInv","title":"Invert matrix using RcppArmadillo. — rxInv","text":"Invert matrix using RcppArmadillo.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Invert matrix using RcppArmadillo. — rxInv","text":"","code":"rxInv(matrix)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Invert matrix using RcppArmadillo. — rxInv","text":"matrix matrix inverted.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxInv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Invert matrix using RcppArmadillo. — rxInv","text":"inverse pseudo inverse matrix.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":null,"dir":"Reference","previous_headings":"","what":"Check the type of an object using Rcpp — rxIs","title":"Check the type of an object using Rcpp — rxIs","text":"Check type object using Rcpp","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check the type of an object using Rcpp — rxIs","text":"","code":"rxIs(obj, cls)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check the type of an object using Rcpp — rxIs","text":"obj Object check cls Type class. s3 classes lists/environments primitive classes checked. matrix types distinguished numeric.matrix, integer.matrix, logical.matrix, character.matrix well traditional matrix class. Additionally checks event.data.frame data.frame object time, evid amt. (UPPER, lower Title cases accepted)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check the type of an object using Rcpp — rxIs","text":"boolean indicating object member class.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Check the type of an object using Rcpp — rxIs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":null,"dir":"Reference","previous_headings":"","what":"Checks if the rxode2 object was built with the current build — rxIsCurrent","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"Checks rxode2 object built current build","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"","code":"rxIsCurrent(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsCurrent.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Checks if the rxode2 object was built with the current build — rxIsCurrent","text":"boolean indicating built current rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"Determine DLL associated rxode2 object loaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"","code":"rxIsLoaded(obj) rxDllLoaded(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"Boolean returning rxode2 library loaded.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxIsLoaded.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Determine if the DLL associated with the rxode2 object is loaded — rxIsLoaded","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":null,"dir":"Reference","previous_headings":"","what":"Left handed Variables — rxLhs","title":"Left handed Variables — rxLhs","text":"returns model calculated variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Left handed Variables — rxLhs","text":"","code":"rxLhs(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Left handed Variables — rxLhs","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Left handed Variables — rxLhs","text":"character vector listing calculated parameters","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLhs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Left handed Variables — rxLhs","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":null,"dir":"Reference","previous_headings":"","what":"Lock/unlocking of rxode2 dll file — rxLock","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"Lock/unlocking rxode2 dll file","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"","code":"rxLock(obj) rxUnlock(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxLock.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lock/unlocking of rxode2 dll file — rxLock","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the md5 of an rxode2 object or file — rxMd5","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"md5 based model possibly extra c code supplied model. addition md5 based syntax options, compiled rxode2 library md5, rxode2 version/repository.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"","code":"rxMd5(model, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . ... ignored arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"rxode2 object, return named list: file_md5 model's file's md5 parsed_md5 parsed model's file's md5. Otherwise return md5 based arguments provided","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxMd5.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the md5 of an rxode2 object or file — rxMd5","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":null,"dir":"Reference","previous_headings":"","what":"All model variables for a rxode2 object — rxModelVars","title":"All model variables for a rxode2 object — rxModelVars","text":"Return known model variables specified rxode2 object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"All model variables for a rxode2 object — rxModelVars","text":"","code":"rxModelVars(obj) rxModelVarsS3(obj) # S3 method for class 'rxUi' rxModelVarsS3(obj) # Default S3 method rxModelVarsS3(obj)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"All model variables for a rxode2 object — rxModelVars","text":"obj rxode2 family objects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"All model variables for a rxode2 object — rxModelVars","text":"list rxode2 model properties including: params character vector names model parameters lhs character vector names model calculated parameters state character vector compartments rxode2 object trans named vector translated model properties including type jacobian specified, C function prefixes, well C functions names called compiled model. md5 named vector gives digest model (file_md5) parsed model (parsed_md5) model named vector giving input model (model), normalized model (comments standard syntax parsing, normModel), interim code used generate final C file parseModel","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"All model variables for a rxode2 object — rxModelVars","text":"items calculated compilation; built-rxode2 compiled DLL. allow extension, s3 hook added function rxModelVarsS3.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModelVars.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"All model variables for a rxode2 object — rxModelVars","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxModels information — rxModels_","title":"Get the rxModels information — rxModels_","text":"Get rxModels information","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxModels information — rxModels_","text":"","code":"rxModels_(env = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the rxModels information — rxModels_","text":"env boolean returns environment models stored (TRUE), currently assigned rxode2 model variables (FALSE).","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxModels_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxModels information — rxModels_","text":"internal rxModels information environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the normalized model — rxNorm","title":"Get the normalized model — rxNorm","text":"get syntax preferred model processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the normalized model — rxNorm","text":"","code":"rxNorm(obj, condition = NULL, removeInis, removeJac, removeSens)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the normalized model — rxNorm","text":"obj rxode2 family objects condition Character string logical condition use subsetting normalized model. missing, condition set via rxCondition, return whole code conditional settings intact. condition set rxCondition, use condition. removeInis boolean indicating parameter initialization removed model removeJac boolean indicating Jacobians removed. removeSens boolean indicating sensitivities removed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the normalized model — rxNorm","text":"Normalized Normal syntax (comments)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxNorm.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the normalized model — rxNorm","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":null,"dir":"Reference","previous_headings":"","what":"Optimize rxode2 for computer evaluation — rxOptExpr","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"optimizes rxode2 code computer evaluation calculating redundant expressions .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"","code":"rxOptExpr(x, msg = \"model\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"x rxode2 model can accessed rxNorm msg name type object rxode2 optimizing message optimizing. example \"model\" produce following message optimizing model: finding duplicate expressions model...","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"Optimized rxode2 model text. order type lhs state variables maintained evaluation sped . parameters names maintained, order may modified.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxOptExpr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Optimize rxode2 for computer evaluation — rxOptExpr","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":null,"dir":"Reference","previous_headings":"","what":"Parameters specified by the model — rxParams","title":"Parameters specified by the model — rxParams","text":"returns model's parameters required solve ODE system, can used pipe parameters rxode2 solve","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parameters specified by the model — rxParams","text":"","code":"rxParams(obj, ...) # S3 method for class 'rxode2' rxParams( obj, constants = TRUE, ..., params = NULL, inits = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, dfSub = NULL, sigma = NULL, dfObs = NULL, nSub = NULL, nStud = NULL ) # S3 method for class 'rxSolve' rxParams( obj, constants = TRUE, ..., params = NULL, inits = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, dfSub = NULL, sigma = NULL, dfObs = NULL, nSub = NULL, nStud = NULL ) # S3 method for class 'rxEt' rxParams( obj, ..., params = NULL, inits = NULL, iCov = NULL, keep = NULL, thetaMat = NULL, omega = NULL, dfSub = NULL, sigma = NULL, dfObs = NULL, nSub = NULL, nStud = NULL ) rxParam(obj, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parameters specified by the model — rxParams","text":"obj rxode2 family objects ... arguments including scaling factors compartment. includes S# = numeric scale compartment # dividing compartment amount scale factor, like NONMEM. constants boolean indicting constants included list parameters. Currently rxode2 parses constants variables case wish change without recompiling rxode2 model. params numeric named vector values every parameter ODE system; names must correspond parameter identifiers used ODE specification; inits vector initial values state variables (e.g., amounts compartment), order vector must state variables (e.g., PK/PD compartments); iCov data frame individual non-time varying covariates combine events dataset. iCov dataset one covariate per ID match event table keep Columns keep either input dataset iCov dataset. iCov dataset, column kept per line. input dataset, records added data LOCF (Last Observation Carried forward) imputation performed. thetaMat Named theta matrix. omega Estimate Covariance matrix. omega list, assume block matrix convert full matrix simulations. omega NA using rxode2 ui model, subject variability described omega matrix set zero. dfSub Degrees freedom sample subject variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. sigma Named sigma covariance Cholesky decomposition covariance matrix. names columns indicate parameters simulated. simulated every observation solved system. sigma NA using rxode2 ui model, unexplained variability described sigma matrix set zero. dfObs Degrees freedom sample unexplained variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. nSub Number subject variabilities (ETAs) simulated every realization parameters. nStud Number virtual studies characterize uncertainty estimated parameters.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parameters specified by the model — rxParams","text":"extracting parameters rxode2 model, character vector listing parameters model.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParams.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parameters specified by the model — rxParams","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Prepare Error function for inclusion in rxode2 — rxParseErr","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"Prepare Error function inclusion rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"","code":"rxParseErr( x, baseTheta, ret = \"rx_r_\", init = NULL, addProp = c(\"combined2\", \"combined1\") )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"x error function baseTheta Base theta start numbering add(.) prop(.) . ret Internal return type. changed user... init Initialization vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"rxode2 transformed text","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseErr.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Prepare Error function for inclusion in rxode2 — rxParseErr","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":null,"dir":"Reference","previous_headings":"","what":"Parse PK function for inclusion in rxode2 — rxParsePk","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"Parse PK function inclusion rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"","code":"rxParsePk(x, init = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"x PK function init Initialization vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"rxode2 transformed text.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePk.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Parse PK function for inclusion in rxode2 — rxParsePk","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":null,"dir":"Reference","previous_headings":"","what":"Prepare Pred function for inclusion in rxode2 — rxParsePred","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"Prepare Pred function inclusion rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"","code":"rxParsePred(x, init = NULL, err = NULL, addProp = c(\"combined2\", \"combined1\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"x pred function init Initialization vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"rxode2 transformed text.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParsePred.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Prepare Pred function for inclusion in rxode2 — rxParsePred","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"Silence rxode2's C/C++ messages","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"","code":"rxParseSetSilentErr(silent)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"silent can 0L \"noisy\" 1L \"silent\"","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSetSilentErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Silence some of rxode2's C/C++ messages — rxParseSetSilentErr","text":"TRUE; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":null,"dir":"Reference","previous_headings":"","what":"Respect suppress messages — rxParseSuppressMsg","title":"Respect suppress messages — rxParseSuppressMsg","text":"turns silent REprintf C suppressMessages() turned . makes REprintf act like messages R, can suppressed suppressMessages()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Respect suppress messages — rxParseSuppressMsg","text":"","code":"rxParseSuppressMsg()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Respect suppress messages — rxParseSuppressMsg","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Respect suppress messages — rxParseSuppressMsg","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxParseSuppressMsg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Respect suppress messages — rxParseSuppressMsg","text":"","code":"# rxParseSuppressMsg() is called with rxode2() # Note the errors are output to the console try(rxode2parse(\"d/dt(matt)=/3\"), silent = TRUE) #> # When using suppressMessages, the output is suppressed suppressMessages(try(rxode2parse(\"d/dt(matt)=/3\"), silent = TRUE)) # In rxode2, we use REprintf so that interrupted threads do not crash R # if there is a user interrupt. This isn't captured by R's messages, but # This interface allows the `suppressMessages()` to suppress the C printing # as well # If you want to suppress messages from rxode2 in other packages, you can use # this function"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates a package from compiled rxode2 models — rxPkg","title":"Creates a package from compiled rxode2 models — rxPkg","text":"Creates package compiled rxode2 models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates a package from compiled rxode2 models — rxPkg","text":"","code":"rxPkg( ..., package, wd = getwd(), action = c(\"install\", \"build\", \"binary\", \"create\"), license = c(\"gpl3\", \"lgpl\", \"mit\", \"agpl3\"), name = \"Firstname Lastname\", fields = list() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates a package from compiled rxode2 models — rxPkg","text":"... Models build package package String package name create wd character string working directory create subdirectory according modName. specified, subdirectory named “modName.d” created populated C file, dynamic loading library, plus various working files. missing, files created (removed) temporary directory, rxode2 DLL model created current directory named rx_????_platform, example rx_129f8f97fb94a87ca49ca8dafe691e1e_i386.dll action Type action take package created license type license package. name Full name author fields named list fields add DESCRIPTION, potentially overriding default values. See use_description() can set personalized defaults using package options.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates a package from compiled rxode2 models — rxPkg","text":"function returns nothing used side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPkg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Creates a package from compiled rxode2 models — rxPkg","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate a from a Poisson process — rxPp","title":"Simulate a from a Poisson process — rxPp","text":"Simulate Poisson process","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate a from a Poisson process — rxPp","text":"","code":"rxPp( n, lambda, gamma = 1, prob = NULL, t0 = 0, tmax = Inf, randomOrder = FALSE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate a from a Poisson process — rxPp","text":"n Number time points simulate Poisson process lambda Rate Poisson process gamma Asymmetry rate Poisson process. gamma=1.0, simulates homogenous Poisson process. gamma<1.0, Poisson process events early, gamma > 1.0, Poisson process events late process. gamma non-zero, tmax infinite indicate end Poisson process simulated. pharamcometric cases, end study. Internally uses rate : l(t) = lambdagamma(t/tmax)^(gamma-1) prob specified, probability function one argument, time, gives probability Poisson time t accepted rejection time. t0 starting time Poisson process tmax maximum time Poisson process randomOrder TRUE randomize order Poisson events. default (FALSE) returns Poisson process order events occurred.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate a from a Poisson process — rxPp","text":"returns vector Poisson process times; dropout >= tmax, rest times = tmax indicate dropout equal tmax.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate a from a Poisson process — rxPp","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate a from a Poisson process — rxPp","text":"","code":"## Sample homogenous Poisson process of rate 1/10 rxPp(10, 1 / 10) #> [1] 12.38682 13.16377 27.35351 30.27454 34.06746 39.23769 58.13355 #> [8] 72.97714 102.32911 113.87403 ## Sample inhomogenous Poisson rate of 1/10 rxPp(10, 1 / 10, gamma = 2, tmax = 100) #> [1] 60.28221 61.96611 62.71870 76.52984 87.25892 94.17678 100.00000 #> [8] 100.00000 100.00000 100.00000 ## Typically the Poisson process times are in a sequential order, ## using randomOrder gives the Poisson process in random order rxPp(10, 1 / 10, gamma = 2, tmax = 10, randomOrder = TRUE) #> [1] 10 10 10 10 10 10 10 10 10 10 ## This uses an arbitrary function to sample a non-homogenous Poisson process rxPp(10, 1 / 10, prob = function(x) { 1/(1+abs(x)) }) #> [1] 149.2766 291.7273 377.5511 497.7551 625.0034 666.2430 791.0833 #> [8] 846.1187 867.2486 1088.2302"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":null,"dir":"Reference","previous_headings":"","what":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"determined internal preferred condition name list .errIdenticalDists","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"","code":"rxPreferredDistributionName(dist)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"dist input distribution","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"Preferred distribution term","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPreferredDistributionName.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Change distribution name to the preferred distribution name term — rxPreferredDistributionName","text":"","code":"rxPreferredDistributionName(\"dt\") #> [1] \"t\" rxPreferredDistributionName(\"add\") #> [1] \"add\" # can be vectorized rxPreferredDistributionName(c(\"add\",\"dt\")) #> add dt #> \"add\" \"t\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":null,"dir":"Reference","previous_headings":"","what":"rxode2 progress bar functions — rxProgress","title":"rxode2 progress bar functions — rxProgress","text":"rxProgress sets progress bar","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxode2 progress bar functions — rxProgress","text":"","code":"rxProgress(num, core = 0L) rxTick() rxProgressStop(clear = TRUE) rxProgressAbort(error = \"Aborted calculation\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxode2 progress bar functions — rxProgress","text":"num Tot number operations track core Number cores show. 1, show number cores clear Boolean telling clear progress bar completion (displayed). default TRUE error rxProgressAbort error displayed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxode2 progress bar functions — rxProgress","text":"return NULL invisibly.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"rxode2 progress bar functions — rxProgress","text":"rxTick progress bar tick rxProgressStop stop progress bar rxProgressAbort shows abort rxProgressStop called.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxode2 progress bar functions — rxProgress","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxProgress.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"rxode2 progress bar functions — rxProgress","text":"","code":"f <- function() { on.exit({ rxProgressAbort() }) rxProgress(100) for (i in 1:100) { rxTick() Sys.sleep(1 / 100) } rxProgressStop() } # \\donttest{ f() # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":null,"dir":"Reference","previous_headings":"","what":"Prune branches (ie if/else) from rxode2 — rxPrune","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"prunes branches (ie /else) rxode2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"","code":"rxPrune(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"x rxode2 model can accessed rxNorm","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"Pruned rxode2 model text.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxPrune.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Prune branches (ie if/else) from rxode2 — rxPrune","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates a rxRateDur object — rxRateDur","title":"Creates a rxRateDur object — rxRateDur","text":"primarily display information rate","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates a rxRateDur object — rxRateDur","text":"","code":"rxRateDur(x) # S3 method for class 'rxRateDur' x[...] as.rxRateDur(x) # S3 method for class 'rxRateDur' as.character(x, ...) # S3 method for class 'rxRateDur' x[[...]]"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates a rxRateDur object — rxRateDur","text":"x rxRateDur data ... parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRateDur.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates a rxRateDur object — rxRateDur","text":"rxRateDur object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":null,"dir":"Reference","previous_headings":"","what":"Reload rxode2 DLL — rxReload","title":"Reload rxode2 DLL — rxReload","text":"Can useful debugging","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reload rxode2 DLL — rxReload","text":"","code":"rxReload()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reload rxode2 DLL — rxReload","text":"boolean object reloaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReload.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Reload rxode2 DLL — rxReload","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":null,"dir":"Reference","previous_headings":"","what":"rxRemoveControl options for UI object — rxRemoveControl","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"rxRemoveControl options UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"","code":"rxRemoveControl(ui)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"ui rxode2 ui object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRemoveControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxRemoveControl options for UI object — rxRemoveControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":null,"dir":"Reference","previous_headings":"","what":"Rename items inside of a rxode2 ui model — rxRename","title":"Rename items inside of a rxode2 ui model — rxRename","text":"rxRename() changes names individual variables, lhs, ode states using new_name = old_name syntax","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rename items inside of a rxode2 ui model — rxRename","text":"","code":"rxRename(.data, ..., envir = parent.frame()) .rxRename(.data, ..., envir = parent.frame()) rename.rxUi(.data, ...) rename.function(.data, ...) # S3 method for class 'rxUi' rxRename(.data, ...) # S3 method for class '`function`' rxRename(.data, ...) # Default S3 method rxRename(.data, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rename items inside of a rxode2 ui model — rxRename","text":".data rxode2 ui function, named data consistent dplyr::rename() ... rename items envir Environment evaluation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Rename items inside of a rxode2 ui model — rxRename","text":"New model items renamed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Rename items inside of a rxode2 ui model — rxRename","text":"similar dplyr's rename() function. dplyr loaded, s3 methods work ui objects. Note .rxRename() internal function called renaming likely need call unless writing extension function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Rename items inside of a rxode2 ui model — rxRename","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRename.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Rename items inside of a rxode2 ui model — rxRename","text":"","code":"ocmt <- function() { ini({ tka <- exp(0.45) # Ka tcl <- exp(1) # Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- exp(3.45) # log V ## the label(\"Label name\") works with all models add.sd <- 0.7 }) model({ ka <- tka cl <- tcl v <- tv d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } ocmt %>% rxRename(cpParent=cp) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 1.568312 2.718282 31.500392 0.700000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 1.56831218549017 #> tcl <- 2.71828182845905 #> tv <- 31.5003923087479 #> add.sd <- c(0, 0.7) #> }) #> model({ #> ka <- tka #> cl <- tcl #> v <- tv #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cpParent = center/v #> cpParent ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":null,"dir":"Reference","previous_headings":"","what":"Rep R0 for foce — rxRepR0_","title":"Rep R0 for foce — rxRepR0_","text":"Rep R0 foce","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Rep R0 for foce — rxRepR0_","text":"","code":"rxRepR0_(neta)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Rep R0 for foce — rxRepR0_","text":"neta ETA substitute","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRepR0_.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Rep R0 for foce — rxRepR0_","text":"Returns string R code substitute rx_r expression symengine environment .s","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":null,"dir":"Reference","previous_headings":"","what":"Require namespace, otherwise throw error. — rxReq","title":"Require namespace, otherwise throw error. — rxReq","text":"Require namespace, otherwise throw error.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Require namespace, otherwise throw error. — rxReq","text":"","code":"rxReq(pkg)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Require namespace, otherwise throw error. — rxReq","text":"pkg Package required function work.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Require namespace, otherwise throw error. — rxReq","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReq.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Require namespace, otherwise throw error. — rxReq","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReservedKeywords.html","id":null,"dir":"Reference","previous_headings":"","what":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","title":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","text":"list description rxode2 supported reserved keywords","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReservedKeywords.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","text":"","code":"rxReservedKeywords"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxReservedKeywords.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A list and description of rxode2 supported reserved keywords — rxReservedKeywords","text":"data frame 3 columns 31 rows Reserved Name Reserved Keyword Name Meaning Reserved Keyword Meaning Alias Keyword Alias","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxResidualError.html","id":null,"dir":"Reference","previous_headings":"","what":"A description of Rode2 supported residual errors — rxResidualError","title":"A description of Rode2 supported residual errors — rxResidualError","text":"description Rode2 supported residual errors","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxResidualError.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A description of Rode2 supported residual errors — rxResidualError","text":"","code":"rxResidualError"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxResidualError.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A description of Rode2 supported residual errors — rxResidualError","text":"data frame 6 columns 181 rows Error model description type residual error Functional Form additive proportional functional form used Transformation type transformation done DV prediction code Example code residual error type addProp type add+prop residual error default equivalent lhs left handed side specification represents, either response variable, compartment specification","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate from a (truncated) multivariate normal — rxRmvn","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"simulated fast, thread-safe threefry simulator can use multiple cores generate random deviates.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"","code":"rxRmvn( n, mu = NULL, sigma, lower = -Inf, upper = Inf, ncores = 1, isChol = FALSE, keepNames = TRUE, a = 0.4, tol = 2.05, nlTol = 1e-10, nlMaxiter = 100L )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"n Number random row vectors simulated matrix use simulation (faster). mu mean vector sigma Covariance matrix multivariate normal list covariance matrices. list covariance matrix, matrix simulate n matrices combine full matrix lower vector lower bound truncated multivariate norm upper vector upper bound truncated multivariate norm ncores Number cores used simulation isChol boolean indicating sigma cholesky decomposition covariance matrix. keepNames Keep names either mean covariance matrix. threshold switching methods; can tuned maximum speed; three cases considered: case 1: < l < u case 2: l < u < -case 3: otherwise l=lower u = upper tol case 3 used possibilities, tol value controls acceptance rejection inverse-transformation; abs(u-l)>tol, uses accept-reject randn nlTol Tolerance newton line-search nlMaxiter Maximum iterations newton line-search","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"n==integer (default) output (n x d) matrix -th row -th simulated vector. .matrix(n) random vector store n, provided user, function returns NULL invisibly.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"John K. Salmon, Mark . Moraes, Ron O. Dror, David E. Shaw (2011). Parallel Random Numbers: Easy 1, 2, 3. D. E. Shaw Research, New York, NY 10036, USA. thread safe multivariate normal inspired mvnfast package Matteo Fasiolo https://CRAN.R-project.org/package=mvnfast concept truncated multivariate normal taken Zdravko Botev Botev (2017) doi:10.1111/rssb.12162 Botev L'Ecuyer (2015) doi:10.1109/WSC.2015.7408180 converted thread safe simulation;","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"Matthew Fidler, Zdravko Botev Matteo Fasiolo","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxRmvn.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate from a (truncated) multivariate normal — rxRmvn","text":"","code":"## From mvnfast ## Unlike mvnfast, uses threefry simulation d <- 5 mu <- 1:d # Creating covariance matrix tmp <- matrix(rnorm(d^2), d, d) mcov <- tcrossprod(tmp, tmp) set.seed(414) rxRmvn(4, 1:d, mcov) #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 2.483107 6.938897 6.910732 7.5964797 #> [2,] -0.9739857 3.041282 6.229306 -1.526767 3.8730490 #> [3,] 2.4207266 3.456173 3.313576 5.525857 7.6456551 #> [4,] 1.2860568 1.475712 3.326761 -2.651293 0.7908656 set.seed(414) rxRmvn(4, 1:d, mcov) #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 2.483107 6.938897 6.910732 7.5964797 #> [2,] -0.9739857 3.041282 6.229306 -1.526767 3.8730490 #> [3,] 2.4207266 3.456173 3.313576 5.525857 7.6456551 #> [4,] 1.2860568 1.475712 3.326761 -2.651293 0.7908656 set.seed(414) rxRmvn(4, 1:d, mcov, ncores = 2) # r.v. generated on the second core are different #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 1.8084689 4.297630 7.977365 7.564832 #> [2,] 5.5150470 0.3966498 8.007903 8.341058 6.026243 #> [3,] -0.9739857 2.4356366 4.731163 3.460645 5.831939 #> [4,] 0.4524881 3.0939983 2.584720 2.797358 5.528742 ###### Here we create the matrix that will hold the simulated # random variables upfront. A <- matrix(NA, 4, d) class(A) <- \"numeric\" # This is important. We need the elements of A to be of class \"numeric\". set.seed(414) rxRmvn(A, 1:d, mcov, ncores = 2) # This returns NULL ... A # ... but the result is here #> [,1] [,2] [,3] [,4] [,5] #> [1,] 5.8385385 1.8084689 4.297630 7.977365 7.564832 #> [2,] 5.5150470 0.3966498 8.007903 8.341058 6.026243 #> [3,] -0.9739857 2.4356366 4.731163 3.460645 5.831939 #> [4,] 0.4524881 3.0939983 2.584720 2.797358 5.528742 ## You can also simulate from a truncated normal: rxRmvn(10, 1:d, mcov, lower = 1:d - 1, upper = 1:d + 1) #> [,1] [,2] [,3] [,4] [,5] #> [1,] 0.8049130 1.636456 3.048092 4.282005 4.797902 #> [2,] 1.0226637 1.667080 3.507530 4.459110 4.714118 #> [3,] 1.0579423 1.467899 3.121131 3.239619 4.934069 #> [4,] 0.6999089 2.048211 3.245750 3.275490 4.816539 #> [5,] 1.1674782 2.062341 2.755494 4.859300 5.170974 #> [6,] 1.1400382 1.626747 3.147992 4.157155 4.714692 #> [7,] 1.0986637 2.477932 2.562834 3.159794 5.327605 #> [8,] 0.9468902 1.995504 2.550678 4.921664 4.993267 #> [9,] 1.0225550 2.512505 2.996419 3.260261 4.891580 #> [10,] 0.7723391 2.080293 3.388499 4.736703 4.847944 # You can also simulate from different matrices (if they match # dimensions) by using a list of matrices. matL <- lapply(1:4, function(...) { tmp <- matrix(rnorm(d^2), d, d) tcrossprod(tmp, tmp) }) rxRmvn(4, setNames(1:d, paste0(\"a\", 1:d)), matL) #> a1 a2 a3 a4 a5 #> [1,] 3.8274046 2.1035743 0.5028009 4.5098402 5.189021 #> [2,] -0.9871330 3.8835057 6.0910523 5.1594862 4.132973 #> [3,] 3.4611290 6.9818905 2.4784421 5.1440327 8.310619 #> [4,] -2.6283293 -5.0190437 2.8076771 -0.5884730 1.060942 #> [5,] 0.3451536 0.5718889 3.7057607 4.3772555 3.829498 #> [6,] -1.1689889 1.9051966 4.0675628 2.0180889 5.571646 #> [7,] -1.7018538 -0.7786124 5.4574824 3.9037163 6.126236 #> [8,] -3.9766942 -0.8582446 5.4820712 -0.5706566 4.047896 #> [9,] 0.8420574 -0.4096991 3.9764994 4.7655857 4.167223 #> [10,] 1.3644751 5.2068446 1.3430378 3.6687705 8.175402 #> [11,] 1.5705584 3.1771677 1.9140454 6.9388794 5.757319 #> [12,] 0.6404211 11.0776336 5.3814729 10.6267879 6.349803 #> [13,] 0.2352059 0.8413157 -0.6291679 3.7003445 4.517157 #> [14,] 3.7622838 -1.0087429 0.1514493 0.7595107 4.988589 #> [15,] 0.4968318 3.1695539 6.2533925 3.9780854 5.781146 #> [16,] -3.7275917 2.3933661 1.3926983 6.3064293 2.905874"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":null,"dir":"Reference","previous_headings":"","what":"Load a model into a symengine environment — rxS","title":"Load a model into a symengine environment — rxS","text":"Load model symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Load a model into a symengine environment — rxS","text":"","code":"rxS(x, doConst = TRUE, promoteLinSens = FALSE, envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Load a model into a symengine environment — rxS","text":"x rxode2 object doConst Load constants environment well. promoteLinSens Promote solved linear compartment systems sensitivity-based solutions. envir default NULL; Environment put symengine variables .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Load a model into a symengine environment — rxS","text":"rxode2/symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxS.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Load a model into a symengine environment — rxS","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":null,"dir":"Reference","previous_headings":"","what":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"seeds engine based number cores used random number generation","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"","code":"rxSeedEng(ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"ncores number cores use.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSeedEng.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This seeds the engine based on the number of cores used in random number generation — rxSeedEng","text":"","code":"rxSeedEng() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":null,"dir":"Reference","previous_headings":"","what":"rxSetControl options for UI object — rxSetControl","title":"rxSetControl options for UI object — rxSetControl","text":"rxSetControl options UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxSetControl options for UI object — rxSetControl","text":"","code":"rxSetControl(ui, control)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxSetControl options for UI object — rxSetControl","text":"ui rxode2 ui object control Default value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxSetControl options for UI object — rxSetControl","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxSetControl options for UI object — rxSetControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":null,"dir":"Reference","previous_headings":"","what":"Assign covariates for piping — rxSetCovariateNamesForPiping","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"Assign covariates piping","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"","code":"rxSetCovariateNamesForPiping(covariates = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"covariates NULL (covariates), list covariates. nlmixr uses function set covariates pipe nlmixr fit.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetCovariateNamesForPiping.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Assign covariates for piping — rxSetCovariateNamesForPiping","text":"","code":"# First set the name of known covariates # Note this is case sensitive rxSetCovariateNamesForPiping(c(\"WT\",\"HT\", \"TC\")) one.compartment <- function() { ini({ tka <- 0.45 ; label(\"Log Ka\") tcl <- 1 ; label(\"Log Cl\") tv <- 3.45 ; label(\"Log V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.err <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d / dt(depot) <- -ka * depot d/dt(depot) <- -ka * depot d / dt(center) <- ka * depot - cl / v * center cp <- center / v cp ~ add(add.err) }) } # now TC is detected as a covariate instead of a population parameter one.compartment %>% model({ka <- exp(tka + eta.ka + TC * cov_C)}) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ add covariate `TC` (known covariate) #> ℹ add population parameter `cov_C` and set estimate to 1 #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.err cov_C #> 0.45 1.00 3.45 0.70 1.00 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level covariates #> 1 tka eta.ka id TC*cov_C #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Log Ka\") #> tcl <- 1 #> label(\"Log Cl\") #> tv <- 3.45 #> label(\"Log V\") #> add.err <- c(0, 0.7) #> cov_C <- 1 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka + TC * cov_C) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.err) #> }) #> } # You can turn it off by simply adding it back rxSetCovariateNamesForPiping() one.compartment %>% model({ka <- exp(tka + eta.ka + TC * cov_C)}) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ℹ add population parameter `TC` and set estimate to 1 #> ℹ add population parameter `cov_C` and set estimate to 1 #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.err TC cov_C #> 0.45 1.00 3.45 0.70 1.00 1.00 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0.6 0.0 0.0 #> eta.cl 0.0 0.3 0.0 #> eta.v 0.0 0.0 0.1 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.45 #> label(\"Log Ka\") #> tcl <- 1 #> label(\"Log Cl\") #> tv <- 3.45 #> label(\"Log V\") #> add.err <- c(0, 0.7) #> TC <- 1 #> cov_C <- 1 #> eta.ka ~ 0.6 #> eta.cl ~ 0.3 #> eta.v ~ 0.1 #> }) #> model({ #> ka <- exp(tka + eta.ka + TC * cov_C) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) <- -ka * depot #> d/dt(depot) <- -ka * depot #> d/dt(center) <- ka * depot - cl/v * center #> cp <- center/v #> cp ~ add(add.err) #> }) #> } # The covariates you set with `rxSetCovariateNamesForPiping()` # are turned off every time you solve (or fit in nlmixr)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":null,"dir":"Reference","previous_headings":"","what":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"Set Initial conditions time zero instead first observed/dosed time","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"","code":"rxSetIni0(ini0 = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"ini0 TRUE (default), set initial conditions time zero. Otherwise initial conditions first observed time.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetIni0.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set Initial conditions to time zero instead of the first observed/dosed time — rxSetIni0","text":"boolean ini0, though called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"Set variables model piping automatic covarite selection","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"","code":"rxSetPipingAuto( thetamodelVars = rex::rex(or(\"tv\", \"t\", \"pop\", \"POP\", \"Pop\", \"TV\", \"T\", \"cov\", \"err\", \"eff\")), covariateExceptions = rex::rex(start, or(\"wt\", \"sex\", \"crcl\", \"kout\"), end), etaParts = c(\"eta\", \"ETA\", \"Eta\", \"ppv\", \"PPV\", \"Ppv\", \"iiv\", \"Iiv\", \"bsv\", \"Bsv\", \"BSV\", \"bpv\", \"Bpv\", \"BPV\", \"psv\", \"PSV\", \"Psv\") )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"thetamodelVars prefixes theta model variables regular expression covariateExceptions regular expression covariates always covariates etaParts list eta prefixes/post-fixes identify variable subject variability","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"called startup set defaults, though can change wish piping can work differently individual setup","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetPipingAuto.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set the variables for the model piping automatic covarite selection — rxSetPipingAuto","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":null,"dir":"Reference","previous_headings":"","what":"Defunct setting of product — rxSetProd","title":"Defunct setting of product — rxSetProd","text":"Defunct setting product","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Defunct setting of product — rxSetProd","text":"","code":"rxSetProd(type = c(\"long double\", \"double\", \"logify\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Defunct setting of product — rxSetProd","text":"type used type product","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Defunct setting of product — rxSetProd","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":null,"dir":"Reference","previous_headings":"","what":"Set timing for progress bar — rxSetProgressBar","title":"Set timing for progress bar — rxSetProgressBar","text":"Set timing progress bar","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set timing for progress bar — rxSetProgressBar","text":"","code":"rxSetProgressBar(seconds = 1)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set timing for progress bar — rxSetProgressBar","text":"seconds sets number seconds need elapse drawing next segment progress bar. zero turns progress bar.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set timing for progress bar — rxSetProgressBar","text":"nothing, used side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetProgressBar.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set timing for progress bar — rxSetProgressBar","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the parallel seed for rxode2 random number generation — rxSetSeed","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"sets seed rxode2 parallel random number generation. set, whenever seed set threefry vandercorput simulation engine, use seed, increment number seeds continue sequence next time random number generator called.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"","code":"rxSetSeed(seed)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"seed integer represents rxode2 parallel internal random number generator seed. positive, use seed random number generation increment reseed parallel new engines called. negative, turn rxode2 seed generate seed R's uniform random number generator. Best practice set seed.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"contrast, called, time vandercorput threefry simulation engines seeded comes uniform random number generated standard R random seed. may cause duplicate seed based R seed state. means correlations simulations exist avoid birthday problem picking exactly seed using seed state R random number generator. times seed called, likely becomes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"JD Cook. (2016). Random number generator seed mistakes. https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSeed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set the parallel seed for rxode2 random number generation — rxSetSeed","text":"","code":"rxSetSeed(42) # seed with generator 42 rxnorm() #> [1] -0.640542 # Use R's random number generator rnorm(1) #> [1] 0.04863385 rxSetSeed(42) # reproduces the same number rxnorm() #> [1] -0.640542 # But R's random number is not the same rnorm(1) #> [1] 1.220873 # If we reset this to use the R's seed # (internally rxode2 uses a uniform random number to span seeds) # This can lead to duplicate sequences and seeds rxSetSeed(-1) # Now set seed works for both. # This is not recommended, but illustrates the different types of # seeds that can be generated. set.seed(42) rxnorm() #> [1] 0.235007 rnorm(1) #> [1] -0.5646982 set.seed(42) rxnorm() #> [1] 0.235007 rnorm(1) #> [1] -0.5646982"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":null,"dir":"Reference","previous_headings":"","what":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"Silence rxode2's C/C++ messages","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"","code":"rxSetSilentErr(silent)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"silent can 0L \"noisy\" 1L \"silent\"","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSilentErr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Silence some of rxode2's C/C++ messages — rxSetSilentErr","text":"TRUE; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":null,"dir":"Reference","previous_headings":"","what":"Defunct setting of sum — rxSetSum","title":"Defunct setting of sum — rxSetSum","text":"Defunct setting sum","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Defunct setting of sum — rxSetSum","text":"","code":"rxSetSum(type = c(\"pairwise\", \"fsum\", \"kahan\", \"neumaier\", \"c\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Defunct setting of sum — rxSetSum","text":"type used type product","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetSum.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Defunct setting of sum — rxSetSum","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":null,"dir":"Reference","previous_headings":"","what":"Setup the initial conditions. — rxSetupIni","title":"Setup the initial conditions. — rxSetupIni","text":"Setup initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Setup the initial conditions. — rxSetupIni","text":"","code":"rxSetupIni(obj, inits = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Setup the initial conditions. — rxSetupIni","text":"obj rxode2 object inits numeric vector initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Setup the initial conditions. — rxSetupIni","text":"initial conditions setup","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupIni.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Setup the initial conditions. — rxSetupIni","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":null,"dir":"Reference","previous_headings":"","what":"Setup the initial conditions. — rxSetupScale","title":"Setup the initial conditions. — rxSetupScale","text":"Setup initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Setup the initial conditions. — rxSetupScale","text":"","code":"rxSetupScale(obj, scale = NULL, extraArgs = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Setup the initial conditions. — rxSetupScale","text":"obj rxode2 object scale numeric vector scales extraArgs list extra args parse initial conditions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Setup the initial conditions. — rxSetupScale","text":"setup scale changing compartment values","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSetupScale.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Setup the initial conditions. — rxSetupScale","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":null,"dir":"Reference","previous_headings":"","what":"Use Shiny to help develop an rxode2 model — rxShiny","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"Use Shiny help develop rxode2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"","code":"rxShiny( object, params = NULL, events = NULL, inits = NULL, ..., data = data.frame() ) # S3 method for class 'rxSolve' rxShiny( object, params = NULL, events = NULL, inits = NULL, ..., data = data.frame() ) # Default S3 method rxShiny( object = NULL, params = NULL, events = NULL, inits = NULL, ..., data = data.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"object rxode2 family objects. supplied 2-compartment indirect effect model used. supplied, use model associated rxode2 object model exploration. params Initial parameters model events Event information (currently ignored) inits Initial estimates model ... arguments passed rxShiny. Currently anything. data data like plot. data time variable well compartment calculated variable matches rxode2 model, data added plot specific compartment calculated variable.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"Nothing; Starts shiny server","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxShiny.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Use Shiny to help develop an rxode2 model — rxShiny","text":"Zufar Mulyukov Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"Simulate Parameters Theta/Omega specification","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"","code":"rxSimThetaOmega( params = NULL, omega = NULL, omegaDf = NULL, omegaLower = as.numeric(c(R_NegInf)), omegaUpper = as.numeric(c(R_PosInf)), omegaIsChol = FALSE, omegaSeparation = \"auto\", omegaXform = 1L, nSub = 1L, thetaMat = NULL, thetaLower = as.numeric(c(R_NegInf)), thetaUpper = as.numeric(c(R_PosInf)), thetaDf = NULL, thetaIsChol = FALSE, nStud = 1L, sigma = NULL, sigmaLower = as.numeric(c(R_NegInf)), sigmaUpper = as.numeric(c(R_PosInf)), sigmaDf = NULL, sigmaIsChol = FALSE, sigmaSeparation = \"auto\", sigmaXform = 1L, nCoresRV = 1L, nObs = 1L, dfSub = 0, dfObs = 0, simSubjects = TRUE, simVariability = as.logical(c(NA_LOGICAL)) )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"params Named Vector rxode2 model parameters omega Estimate Covariance matrix. omega list, assume block matrix convert full matrix simulations. omega NA using rxode2 ui model, subject variability described omega matrix set zero. omegaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. omegaLower Lower bounds simulated ETAs (default -Inf) omegaUpper Upper bounds simulated ETAs (default Inf) omegaIsChol Indicates omega supplied Cholesky decomposed matrix instead traditional symmetric matrix. omegaSeparation Omega separation strategy Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. omegaXform taking omega values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. nSub Number subject variabilities (ETAs) simulated every realization parameters. thetaMat Named theta matrix. thetaLower Lower bounds simulated population parameter variability (default -Inf) thetaUpper Upper bounds simulated population unexplained variability (default Inf) thetaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. thetaIsChol Indicates theta supplied Cholesky decomposed matrix instead traditional symmetric matrix. nStud Number virtual studies characterize uncertainty estimated parameters. sigma Named sigma covariance Cholesky decomposition covariance matrix. names columns indicate parameters simulated. simulated every observation solved system. sigma NA using rxode2 ui model, unexplained variability described sigma matrix set zero. sigmaLower Lower bounds simulated unexplained variability (default -Inf) sigmaUpper Upper bounds simulated unexplained variability (default Inf) sigmaDf Degrees freedom sigma t-distribution. default equivalent Inf, normal distribution. sigmaIsChol Boolean indicating sigma Cholesky decomposition instead symmetric covariance sigmaSeparation separation strategy sigma; Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. sigmaXform taking sigma values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. nCoresRV Number cores used simulation sigma variables. default 1. reproduce results need run platform number cores. reason set one, regardless number cores used threaded ODE solving. nObs Number observations simulate (sigma matrix) dfSub Degrees freedom sample subject variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. dfObs Degrees freedom sample unexplained variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. simSubjects boolean indicated rxode2 simulate subjects studies (TRUE, default) studies (FALSE) simVariability determines variability simulated. NA (default) determined solver.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"data frame simulated subjects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSimThetaOmega.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate Parameters from a Theta/Omega specification — rxSimThetaOmega","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Options, Solving & Simulation of an ODE/solved system — rxSolve","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"uses rxode2 family objects, file, model specification solve ODE system. many options solved rxode2 model, first required object, events -times optional params inits.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"","code":"rxSolve( object, params = NULL, events = NULL, inits = NULL, scale = NULL, method = c(\"liblsoda\", \"lsoda\", \"dop853\", \"indLin\"), sigdig = NULL, atol = 1e-08, rtol = 1e-06, maxsteps = 70000L, hmin = 0, hmax = NA_real_, hmaxSd = 0, hini = 0, maxordn = 12L, maxords = 5L, ..., cores, covsInterpolation = c(\"locf\", \"linear\", \"nocb\", \"midpoint\"), naInterpolation = c(\"locf\", \"nocb\"), keepInterpolation = c(\"na\", \"locf\", \"nocb\"), addCov = TRUE, sigma = NULL, sigmaDf = NULL, sigmaLower = -Inf, sigmaUpper = Inf, nCoresRV = 1L, sigmaIsChol = FALSE, sigmaSeparation = c(\"auto\", \"lkj\", \"separation\"), sigmaXform = c(\"identity\", \"variance\", \"log\", \"nlmixrSqrt\", \"nlmixrLog\", \"nlmixrIdentity\"), nDisplayProgress = 10000L, amountUnits = NA_character_, timeUnits = \"hours\", theta = NULL, thetaLower = -Inf, thetaUpper = Inf, eta = NULL, addDosing = FALSE, stateTrim = Inf, updateObject = FALSE, omega = NULL, omegaDf = NULL, omegaIsChol = FALSE, omegaSeparation = c(\"auto\", \"lkj\", \"separation\"), omegaXform = c(\"variance\", \"identity\", \"log\", \"nlmixrSqrt\", \"nlmixrLog\", \"nlmixrIdentity\"), omegaLower = -Inf, omegaUpper = Inf, nSub = 1L, thetaMat = NULL, thetaDf = NULL, thetaIsChol = FALSE, nStud = 1L, dfSub = 0, dfObs = 0, returnType = c(\"rxSolve\", \"matrix\", \"data.frame\", \"data.frame.TBS\", \"data.table\", \"tbl\", \"tibble\"), seed = NULL, nsim = NULL, minSS = 10L, maxSS = 1000L, infSSstep = 12, strictSS = TRUE, istateReset = TRUE, subsetNonmem = TRUE, maxAtolRtolFactor = 0.1, from = NULL, to = NULL, by = NULL, length.out = NULL, iCov = NULL, keep = NULL, indLinPhiTol = 1e-07, indLinPhiM = 0L, indLinMatExpType = c(\"expokit\", \"Al-Mohy\", \"arma\"), indLinMatExpOrder = 6L, drop = NULL, idFactor = TRUE, mxhnil = 0, hmxi = 0, warnIdSort = TRUE, warnDrop = TRUE, ssAtol = 1e-08, ssRtol = 1e-06, safeZero = TRUE, safeLog = TRUE, safePow = TRUE, sumType = c(\"pairwise\", \"fsum\", \"kahan\", \"neumaier\", \"c\"), prodType = c(\"long double\", \"double\", \"logify\"), sensType = c(\"advan\", \"autodiff\", \"forward\", \"central\"), linDiff = c(tlag = 1.5e-05, f = 1.5e-05, rate = 1.5e-05, dur = 1.5e-05, tlag2 = 1.5e-05, f2 = 1.5e-05, rate2 = 1.5e-05, dur2 = 1.5e-05), linDiffCentral = c(tlag = TRUE, f = TRUE, rate = TRUE, dur = TRUE, tlag2 = TRUE, f2 = TRUE, rate2 = TRUE, dur2 = TRUE), resample = NULL, resampleID = TRUE, maxwhile = 1e+05, atolSens = 1e-08, rtolSens = 1e-06, ssAtolSens = 1e-08, ssRtolSens = 1e-06, simVariability = NA, nLlikAlloc = NULL, useStdPow = FALSE, naTimeHandle = c(\"ignore\", \"warn\", \"error\"), addlKeepsCov = FALSE, addlDropSs = TRUE, ssAtDoseTime = TRUE, ss2cancelAllPending = FALSE, envir = parent.frame() ) # S3 method for class '`function`' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'rxUi' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'rxode2tos' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'nlmixr2FitData' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'nlmixr2FitCore' rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # Default S3 method rxSolve( object, params = NULL, events = NULL, inits = NULL, ..., theta = NULL, eta = NULL, envir = parent.frame() ) # S3 method for class 'rxSolve' update(object, ...) # S3 method for class 'rxode2' predict(object, ...) # S3 method for class '`function`' predict(object, ...) # S3 method for class 'rxUi' predict(object, ...) # S3 method for class 'rxSolve' predict(object, ...) # S3 method for class 'rxEt' predict(object, ...) # S3 method for class 'rxParams' predict(object, ...) # S3 method for class 'rxode2' simulate(object, nsim = 1L, seed = NULL, ...) # S3 method for class 'rxSolve' simulate(object, nsim = 1L, seed = NULL, ...) # S3 method for class 'rxParams' simulate(object, nsim = 1L, seed = NULL, ...) # S3 method for class 'rxSolve' solve(a, b, ...) # S3 method for class 'rxUi' solve(a, b, ...) # S3 method for class '`function`' solve(a, b, ...) # S3 method for class 'rxode2' solve(a, b, ...) # S3 method for class 'rxParams' solve(a, b, ...) # S3 method for class 'rxEt' solve(a, b, ...) rxControl( ..., params = NULL, events = NULL, inits = NULL, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"object either rxode2 family objects, file-name rxode2 model specification, string rxode2 model specification. params numeric named vector values every parameter ODE system; names must correspond parameter identifiers used ODE specification; events eventTable object describing input (e.g., doses) dynamic system observation sampling time points (see eventTable()); inits vector initial values state variables (e.g., amounts compartment), order vector must state variables (e.g., PK/PD compartments); scale numeric named vector scaling ode parameters system. names must correspond parameter identifiers ODE specification. ODE variables divided scaling factor. example scale=c(center=2) divide center ODE variable 2. method method solving ODEs. Currently supports: \"liblsoda\" thread safe lsoda. supports parallel thread-based solving, ignores user Jacobian specification. \"lsoda\" – LSODA solver. support parallel thread-based solving, allows user Jacobian specification. \"dop853\" – DOP853 solver. support parallel thread-based solving user Jacobian specification \"indLin\" – Solving inductive linearization. rxode2 dll must setup specially use solving routine. sigdig Specifies \"significant digits\" ode solving requests. specified controls relative absolute tolerances ODE solvers. default tolerance 0.5*10^(-sigdig-2) regular ODEs. sensitivity equations default 0.5*10\\^(-sigdig-1.5) (sensitivity changes applicable liblsoda). also controls atol/rtol steady state solutions. ssAtol/ssRtol 0.5*10\\^(-sigdig) sensitivities 0.5*10\\^(-sigdig+0.625). default unspecified (NULL) uses standard atol/rtol. atol numeric absolute tolerance (1e-8 default) used ODE solver determine good solution achieved; also used solved linear model check prior doses add anything solution. rtol numeric relative tolerance (1e-6 default) used ODE solver determine good solution achieved. also used solved linear model check prior doses add anything solution. maxsteps maximum number (internally defined) steps allowed one call solver. (5000 default) hmin minimum absolute step size allowed. default value 0. hmax maximum absolute step size allowed. hmax=NA (default), uses average difference + hmaxSd*sd times sampling events. hmaxSd user specified parameter defaults zero. hmax=NULL rxode2 uses maximum difference times sampling events. value 0 equivalent infinite maximum absolute step size. hmaxSd number standard deviations time difference add hmax. default 0 hini step size attempted first step. default value determined solver (hini = 0) maxordn maximum order allowed nonstiff (Adams) method. default 12. can 1 12. maxords maximum order allowed stiff (BDF) method. default value 5. can 1 5. ... arguments including scaling factors compartment. includes S# = numeric scale compartment # dividing compartment amount scale factor, like NONMEM. cores Number cores used parallel ODE solving. equivalent calling setRxThreads() covsInterpolation specifies interpolation method time-varying covariates. solving ODEs often samples times outside sampling time specified events. happens, time varying covariates interpolated. Currently can : \"linear\" interpolation, interpolates covariate solving line observed covariates extrapolating new covariate value. \"locf\" – Last observation carried forward (default). \"nocb\" – Next Observation Carried Backward. method NONMEM uses. \"midpoint\" Last observation carried forward midpoint; Next observation carried backward midpoint. time-varying covariates missing value present, interpolation method use either \"locf\" \"nocb\" throughout type covariate interpolation selected. using linear midpoint interpolation, lower point interpolation use locf interpolate missing covariates upper point use nocb interpolate missing covariates. naInterpolation specifies interpolation method time-varying covariates instantaneous value NA (explicit interpolation) covsInterpolation either \"midpoint\" \"linear\". can : \"locf\" – last observation carried forward (default) \"nocb\" – next observation carried backward. look prior value (backwards/locf) instantaneously missing, next value instantaneously missing. covariates missing find end/beginning individual record, switch direction. really missing, return missing. keepInterpolation specifies interpolation method variables keep column. nlmixr2 creates mtime, addl doses etc, items originally dataset. interpolation methods can choose : \"locf\" – last observation carried forward (default) \"nocb\" – next observation carried backward. \"na\" – interpolation, simply put NA interpolated keep covariates. addCov boolean indicating covariates added output matrix data frame. default disabled. sigma Named sigma covariance Cholesky decomposition covariance matrix. names columns indicate parameters simulated. simulated every observation solved system. sigma NA using rxode2 ui model, unexplained variability described sigma matrix set zero. sigmaDf Degrees freedom sigma t-distribution. default equivalent Inf, normal distribution. sigmaLower Lower bounds simulated unexplained variability (default -Inf) sigmaUpper Upper bounds simulated unexplained variability (default Inf) nCoresRV Number cores used simulation sigma variables. default 1. reproduce results need run platform number cores. reason set one, regardless number cores used threaded ODE solving. sigmaIsChol Boolean indicating sigma Cholesky decomposition instead symmetric covariance sigmaSeparation separation strategy sigma; Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. sigmaXform taking sigma values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. nDisplayProgress integer indicating minimum number c-based solves progress bar shown. default 10,000. amountUnits supplies dose units data frame supplied instead event table. importing data rxode2 event table. timeUnits supplies time units data frame supplied instead event table. importing data rxode2 event table. theta vector parameters named THETA\\[#\\] added parameters thetaLower Lower bounds simulated population parameter variability (default -Inf) thetaUpper Upper bounds simulated population unexplained variability (default Inf) eta vector parameters named ETA\\[#\\] added parameters addDosing Boolean indicating solve add rxode2 EVID related columns. also include dosing information estimates doses. default, rxode2 includes estimates observations. (default FALSE). addDosing NULL, include EVID=0 solve exclude model-times EVID=2. addDosing NA classic rxode2 EVID events returned. addDosing TRUE add event information NONMEM-style format; subsetNonmem=FALSE rxode2 also include extra event types (EVID) ending infusion modeled times: EVID=-1 modeled rate infusions turned (matches rate=-1) EVID=-2 modeled duration infusions turned (matches rate=-2) EVID=-10 specified rate infusions turned (matches rate>0) EVID=-20 specified dur infusions turned (matches dur>0) EVID=101,102,103,... Modeled time 101 first model time, 102 second etc. stateTrim amounts/concentrations one states value, trim value. default Inf. Also trims -stateTrim large negative amounts/concentrations. want trim range say c(0, 2000000) may specify 2 values lower upper range make sure state values reasonable range. updateObject internally used flag update rxode2 solved object (supplying rxode2 solved object) well returning new object. probably modify FALSE default unless willing unexpected results. omega Estimate Covariance matrix. omega list, assume block matrix convert full matrix simulations. omega NA using rxode2 ui model, subject variability described omega matrix set zero. omegaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. omegaIsChol Indicates omega supplied Cholesky decomposed matrix instead traditional symmetric matrix. omegaSeparation Omega separation strategy Tells type separation strategy simulating covariance parameter uncertainty standard deviations modeled thetaMat matrix. \"lkj\" simulates correlation matrix rLKJ1 matrix distribution parameter eta equal degrees freedom nu (nu-1)/2 \"separation\" simulates identity inverse Wishart covariance matrix nu degrees freedom. converted covariance matrix augmented modeled standard deviations. computationally complex \"lkj\" prior, performs better covariance matrix size greater equal 10 \"auto\" chooses \"lkj\" dimension matrix less 10 \"separation\" greater equal 10. omegaXform taking omega values thetaMat simulations (using separation strategy covariance simulation), thetaMat values turned int standard deviation values: identity standard deviation values directly modeled params thetaMat matrix variance params thetaMat simulates variance directly modeled thetaMat matrix log params thetaMat simulates log(sd) nlmixrSqrt params thetaMat simulates inverse cholesky decomposed matrix x\\^2 modeled along diagonal. works diagonal matrix. nlmixrLog params thetaMat simulates inverse cholesky decomposed matrix exp(x\\^2) along diagonal. works diagonal matrix. nlmixrIdentity params thetaMat simulates inverse cholesky decomposed matrix. works diagonal matrix. omegaLower Lower bounds simulated ETAs (default -Inf) omegaUpper Upper bounds simulated ETAs (default Inf) nSub Number subject variabilities (ETAs) simulated every realization parameters. thetaMat Named theta matrix. thetaDf degrees freedom t-distribution simulation. default NULL equivalent Inf degrees, simulate normal distribution instead t-distribution. thetaIsChol Indicates theta supplied Cholesky decomposed matrix instead traditional symmetric matrix. nStud Number virtual studies characterize uncertainty estimated parameters. dfSub Degrees freedom sample subject variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. dfObs Degrees freedom sample unexplained variability matrix inverse Wishart distribution (scaled) scaled inverse chi squared distribution. returnType tells type object returned. currently supported types : \"rxSolve\" (default) return reactive data frame can change easily change different pieces solve update data frame. currently standard solving method rxode2, used rxSolve(object, ...), solve(object,...), \"data.frame\" – returns plain, non-reactive data frame; Currently slightly faster returnType=\"matrix\" \"matrix\" – returns plain matrix column names attached solved object. used object$run well object$solve \"data.table\" – returns data.table; data.table created reference (ie setDt()), fast. \"tbl\" \"tibble\" returns tibble format. seed object specifying random number generator initialized nsim represents number simulations. rxode2, supply single subject event tables (created [eventTable()]) minSS Minimum number iterations steady-state dose maxSS Maximum number iterations steady-state dose infSSstep Step size determining constant infusion reached steady state. default large value, 12. strictSS Boolean indicating strict steady-state required. strict steady-state (TRUE) required least minSS doses administered total number steady states doses continue maxSS reached, atol rtol every compartment reached. However, ODE solving problems occur minSS reached whole subject considered invalid solve. strictSS FALSE long minSS reached last good solve ODE solving problems occur considered steady state, even though either atol, rtol maxSS achieved. istateReset TRUE, reset ISTATE variable 1 lsoda liblsoda doses, like deSolve; FALSE, reset ISTATE variable doses. subsetNonmem subset NONMEM compatible EVIDs . default TRUE. maxAtolRtolFactor maximum atol/rtol FOCEi routines may adjust . default 0.1 observations event table, start observations value. default zero. observations event table, end observations value. default 24 + maximum dose time. observations event table, amount increment observations . length.number observations create observations event table. default 200. iCov data frame individual non-time varying covariates combine events dataset. iCov dataset one covariate per ID match event table keep Columns keep either input dataset iCov dataset. iCov dataset, column kept per line. input dataset, records added data LOCF (Last Observation Carried forward) imputation performed. indLinPhiTol requested accuracy tolerance exponential matrix. indLinPhiM maximum size Krylov basis indLinMatExpType matrix exponential type use rxode2. Currently following supported: Al-Mohy Uses exponential matrix method Al-Mohy Higham (2009) arma Use exponential matrix RcppArmadillo expokit Use exponential matrix Roger B. Sidje (1998) indLinMatExpOrder integer, order approximation used, Al-Mohy expokit values. best value depends machine precision (slightly matrix). use 6 default. drop Columns drop output idFactor boolean indicates original ID values maintained. changes default sequentially ordered ID factor original ID values original dataset. default enabled. mxhnil maximum number messages printed (per problem) warning T + H = T step (H = step size). must positive result non-default value. default value 0 (infinite). hmxi inverse maximum absolute value H used. hmxi = 0.0 allowed corresponds infinite hmax1 (default). hminandhmximay changed time, take effect next change ofHis considered. option considered withmethod=\"liblsoda\"`. warnIdSort Warn ID present rxode2 assumes order parameters/iCov order parameters input dataset. warnDrop Warn column(s) supposed dropped, present. ssAtol Steady state atol convergence factor. Can vector based state. ssRtol Steady state rtol convergence factor. Can vector based state. safeZero Use safe zero divide. default turned may turn wish. safeLog Use safe log. enabled value taking log() negative zero, return log(machine epsilon). default turned . safePow Use safe powers. enabled power negative base zero, return machine epsilon^(negative power). default turned . sumType Sum type use sum() rxode2 code blocks. pairwise uses pairwise sum (fast, default) fsum uses PreciseSum package's fsum function (accurate) kahan uses Kahan correction neumaier uses Neumaier correction c uses correction: default/native summing prodType Product use prod() rxode2 blocks long double converts long double, performs multiplication converts back. double uses standard double scale multiplication. sensType Sensitivity type linCmt() model: advan Use direct advan solutions autodiff Use autodiff advan solutions forward Use forward difference solutions central Use central differences linDiff gives linear difference amount types linear compartment model parameters sensitivities calculated. named components numeric vector : \"lag\" Central compartment lag \"f\" Central compartment bioavailability \"rate\" Central compartment modeled rate \"dur\" Central compartment modeled duration \"lag2\" Depot compartment lag \"f2\" Depot compartment bioavailability \"rate2\" Depot compartment modeled rate \"dur2\" Depot compartment modeled duration linDiffCentral gives parameters use central differences linear compartment model parameters. components linDiff resample character vector model variables resample input dataset; sampling done replacement. NULL FALSE resampling done. TRUE resampling done covariates input dataset resampleID boolean representing resampling done individual basis TRUE (ie. whole patient selected) covariate resampled independent subject identifier FALSE. resampleID=TRUE correlations parameters retained, resampleID=FALSE ignores patient covariate correaltions. Hence default resampleID=TRUE. maxwhile represents maximum times loop evaluated exiting. default 100000 atolSens Sensitivity atol, can different atol liblsoda. allows less accurate solve gradients (desired) rtolSens Sensitivity rtol, can different rtol liblsoda. allows less accurate solve gradients (desired) ssAtolSens Sensitivity absolute tolerance (atol) calculating steady state achieved sensitivity compartments. ssRtolSens Sensitivity relative tolerance (rtol) calculating steady state achieved sensitivity compartments. simVariability determines variability simulated. NA (default) determined solver. nLlikAlloc number log likelihood endpoints used model. allows independent log likelihood per endpoint focei nlmixr2. likely set, though hurt anything (just may take memory larger allocations). useStdPow uses C's pow exponentiation instead R's R_pow R_pow_di. default FALSE naTimeHandle Determines time handling happens time becomes NA: current options : ignore ignores NA time input passes . warn (default) produce warning end solve, continues solving passing NA time error stop solve parallel solved ODE (otherwise stopping can crash R) addlKeepsCov determines additional dosing items repeats dose (FALSE) keeps covariates record dose (TRUE) addlDropSs steady state doses addl specification steady state flag dropped repeated doses (TRUE) retained (FALSE) ssAtDoseTime Boolean TRUE back calculates steady concentration actual time dose, otherwise FALSE doses shifted ss2cancelAllPending TRUE SS=2 event type cancels pending doses like SS=1. FALSE pending doses canceled SS=2 (infusions started SS=2 occurred canceled, though). envir environment look R user functions (defaults parent environment) using solve(), equivalent object argument. specify object later argument list overwrites parameter. b using solve(), equivalent params argument. specify params named argument, overwrites output","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"“rxSolve” solve object stores solved value special data.frame type determined returnType. default many rows sampled time points many columns system variables (defined ODEs additional assignments rxode2 model code). also stores information call allow dynamic updating solved object. operations object similar data-frame, expand $ [[\"\"]] access operators assignment operators resolve based different parameter values, initial conditions, solver parameters, events (updating time variable). can call eventTable() methods solved object update event table resolve system equations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"rest document focus different ODE solving methods, followed core solving method's options, rxode2 event handling options, rxode2's numerical stability options, rxode2's output options, finally internal rxode2 options compatibility options.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"\"New Scaling Squaring Algorithm Matrix Exponential\", Awad H. Al-Mohy Nicholas J. Higham, August 2009 Roger B. Sidje (1998). EXPOKIT: Software package computing matrix exponentials. ACM - Transactions Mathematical Software 24(1), 130-156. Hindmarsh, . C. ODEPACK, Systematized Collection ODE Solvers. Scientific Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pp. 55-64. Petzold, L. R. Automatic Selection Methods Solving Stiff Nonstiff Systems Ordinary Differential Equations. Siam J. Sci. Stat. Comput. 4 (1983), pp. 136-148. Hairer, E., Norsett, S. P., Wanner, G. Solving ordinary differential equations , nonstiff problems. 2nd edition, Springer Series Computational Mathematics, Springer-Verlag (1993).","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolve.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Options, Solving & Simulation of an ODE/solved system — rxSolve","text":"Matthew Fidler, Melissa Hallow Wenping Wang","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveFree.html","id":null,"dir":"Reference","previous_headings":"","what":"Free the C solving/parsing information. — rxSolveFree","title":"Free the C solving/parsing information. — rxSolveFree","text":"Take ODE C system free .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveFree.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Free the C solving/parsing information. — rxSolveFree","text":"","code":"rxSolveFree()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveFree.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Free the C solving/parsing information. — rxSolveFree","text":"logical indicating memory successfully freed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":null,"dir":"Reference","previous_headings":"","what":"See if the memory is installed for a solve — rxSolveSetup","title":"See if the memory is installed for a solve — rxSolveSetup","text":"See memory installed solve","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"See if the memory is installed for a solve — rxSolveSetup","text":"","code":"rxSolveSetup()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"See if the memory is installed for a solve — rxSolveSetup","text":"boolean saying memnory currently free rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSolveSetup.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"See if the memory is installed for a solve — rxSolveSetup","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":null,"dir":"Reference","previous_headings":"","what":"This function splits a function based on + or - terms — rxSplitPlusQ","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"uses parser disturb terms within functions. example:","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"","code":"rxSplitPlusQ(x, level = 0, mult = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"x Quoted R expression splitting level Internal level parsing mult boolean split based * / expressions instead. default turned .","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"character vector split expressions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"aexp(b+c)+dlog(e-f)-g*f return c(\"* exp(b + c)\", \"d * log(e - f)\", \"- g * f\")","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSplitPlusQ.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function splits a function based on + or - terms — rxSplitPlusQ","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":null,"dir":"Reference","previous_headings":"","what":"Stack a solved object for things like default ggplot2 plot — rxStack","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"Stack solved object things like default ggplot2 plot","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"","code":"rxStack(data, vars = NULL, doSim = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"data rxode2 object stacked. vars Variables include stacked data; default variables vars NULL. vars sim comes rxode2 ui simulation multiple endpoints (ie CMT simulation), rework data stacked based value based compartments multiple endpoint model. vars sim.endpoint1 subset stack endpoint1, can also `c(\"sim.endpoint1\", \"sim.endpoint2\") \"stack\" subset endpoint1 endpoint2. specify sim type variables prefixed sim otherwise, stack treat differently. doSim boolean determines \"sim\" variable rxSolve dataset actually \"stacking\" based endpoint (TRUE) simply treating sim variable.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"Stacked data value trt, value values trt state lhs variables.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxStack.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Stack a solved object for things like default ggplot2 plot — rxStack","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":null,"dir":"Reference","previous_headings":"","what":"State variables — rxState","title":"State variables — rxState","text":"returns model's compartments states.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"State variables — rxState","text":"","code":"rxState(obj = NULL, state = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"State variables — rxState","text":"obj rxode2 family objects state string indicating state compartment like lookup.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"State variables — rxState","text":"state missing, return character vector states. state string, return compartment number named state.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxState.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"State variables — rxState","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":null,"dir":"Reference","previous_headings":"","what":"Recast model in terms of sum/prod — rxSumProdModel","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"Recast model terms sum/prod","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"","code":"rxSumProdModel(model, expand = FALSE, sum = TRUE, prod = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"model rxode2 model expand Boolean indicating expression expanded. sum Use sum(...) prod Use prod(...)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"model string prod(.) sum(.) operations.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSumProdModel.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Recast model in terms of sum/prod — rxSumProdModel","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":null,"dir":"Reference","previous_headings":"","what":"Get list of supported functions — rxSupportedFuns","title":"Get list of supported functions — rxSupportedFuns","text":"Get list supported functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get list of supported functions — rxSupportedFuns","text":"","code":"rxSupportedFuns()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get list of supported functions — rxSupportedFuns","text":"list supported functions rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSupportedFuns.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get list of supported functions — rxSupportedFuns","text":"","code":"rxSupportedFuns() #> [1] \"gammafn\" \"lgammafn\" \"lgamma\" #> [4] \"loggamma\" \"digamma\" \"trigamma\" #> [7] \"tetragamma\" \"pentagamma\" \"cospi\" #> [10] \"sinpi\" \"tanpi\" \"log1p\" #> [13] \"expm1\" \"factorial\" \"lfactorial\" #> [16] \"lgamma1p\" \"log10\" \"log2\" #> [19] \"log1pexp\" \"phi\" \"pnorm\" #> [22] \"normcdf\" \"qnorm\" \"fabs\" #> [25] \"pow\" \"R_pow\" \"R_pow_di\" #> [28] \"Rx_pow_di\" \"Rx_pow\" \"lbeta\" #> [31] \"abs\" \"acos\" \"acosh\" #> [34] \"asin\" \"asinh\" \"atan\" #> [37] \"atan2\" \"atanh\" \"beta\" #> [40] \"cos\" \"cosh\" \"erf\" #> [43] \"erfc\" \"exp\" \"gamma\" #> [46] \"linCmtA\" \"linCmtC\" \"linCmtB\" #> [49] \"log\" \"polygamma\" \"rxTBS\" #> [52] \"rxTBSi\" \"rxTBSd\" \"rxTBSd2\" #> [55] \"sin\" \"sinh\" \"sqrt\" #> [58] \"tan\" \"tanh\" \"gammap\" #> [61] \"floor\" \"round\" \"ceil\" #> [64] \"trunc\" \"bessel_i\" \"bessel_j\" #> [67] \"bessel_k\" \"bessel_y\" \"logspace_add\" #> [70] \"logspace_sub\" \"fmax2\" \"fmin2\" #> [73] \"sign\" \"fsign\" \"fprec\" #> [76] \"fround\" \"ftrunc\" \"transit\" #> [79] \"gammaq\" \"gammapDer\" \"gammapInv\" #> [82] \"gammapInva\" \"gammaqInv\" \"gammaqInva\" #> [85] \"lowergamma\" \"uppergamma\" \"max\" #> [88] \"min\" \"logit\" \"expit\" #> [91] \"probit\" \"probitInv\" \"tlast\" #> [94] \"tfirst\" \"lag\" \"lead\" #> [97] \"dose\" \"podo\" \"dabs\" #> [100] \"dabs2\" \"abs1\" \"dabs1\" #> [103] \"erfinv\" \"abs0\" \"dosenum\" #> [106] \"first\" \"last\" \"diff\" #> [109] \"is.nan\" \"is.na\" \"is.finite\" #> [112] \"is.infinite\" \"llikPois\" \"llikPoisDlambda\" #> [115] \"llikBinom\" \"llikBinomDprob\" \"llikNbinom\" #> [118] \"llikNbinomDprob\" \"llikNbinomMu\" \"llikNbinomMuDmu\" #> [121] \"llikBeta\" \"llikBetaDshape1\" \"llikBetaDshape2\" #> [124] \"llikT\" \"llikTDdf\" \"llikTDmean\" #> [127] \"llikTDsd\" \"llikChisq\" \"llikChisqDdf\" #> [130] \"llikExp\" \"llikExpDrate\" \"llikF\" #> [133] \"llikFDdf1\" \"llikFDdf2\" \"llikGeom\" #> [136] \"llikGeomDprob\" \"llikUnif\" \"llikUnifDalpha\" #> [139] \"llikUnifDbeta\" \"llikWeibull\" \"llikWeibullDshape\" #> [142] \"llikWeibullDscale\" \"llikGamma\" \"llikGammaDshape\" #> [145] \"llikGammaDrate\" \"llikCauchy\" \"llikCauchyDlocation\" #> [148] \"llikCauchyDscale\" \"llikNorm\" \"llikNormDmean\" #> [151] \"llikNormDsd\" \"llikXPois\" \"llikXPoisDlambda\" #> [154] \"llikXBinom\" \"llikXBinomDprob\" \"llikXNbinomMu\" #> [157] \"llikXNbinomMuDmu\" \"llikXNbinom\" \"llikXNbinomDprob\" #> [160] \"llikXBeta\" \"llikXBetaDshape1\" \"llikXBetaDshape2\" #> [163] \"llikXT\" \"llikXTDdf\" \"llikXTDmean\" #> [166] \"llikXTDsd\" \"llikXChisq\" \"llikXChisqDdf\" #> [169] \"llikXExp\" \"llikXExpDrate\" \"llikXF\" #> [172] \"llikXFDdf1\" \"llikXFDdf2\" \"llikXGeom\" #> [175] \"llikXGeomDprob\" \"llikXUnif\" \"llikXUnifDalpha\" #> [178] \"llikXUnifDbeta\" \"llikXWeibull\" \"llikXWeibullDshape\" #> [181] \"llikXWeibullDscale\" \"llikXGamma\" \"llikXGammaDshape\" #> [184] \"llikXGammaDrate\" \"llikXCauchy\" \"llikXCauchyDlocation\" #> [187] \"llikXCauchyDscale\" \"llikXNorm\" \"llikXNormDmean\" #> [190] \"llikXNormDsd\" \"ReLU\" \"dReLU\" #> [193] \"GELU\" \"dGELU\" \"d2GELU\" #> [196] \"d3GELU\" \"d4GELU\" \"ELU\" #> [199] \"dELU\" \"d2ELU\" \"d2aELU\" #> [202] \"dELUa\" \"d2ELUa\" \"softplus\" #> [205] \"dsoftplus\" \"d2softplus\" \"d3softplus\" #> [208] \"d4softplus\" \"SELU\" \"dSELU\" #> [211] \"lReLU\" \"dlReLU\" \"PReLU\" #> [214] \"dPReLU\" \"d2PReLU\" \"dPReLUa\" #> [217] \"dPReLUa1\" \"Swish\" \"dSwish\" #> [220] \"linCmt\" \"rnorm\" \"rxnorm\" #> [223] \"rxbinom\" \"rbinom\" \"rxcauchy\" #> [226] \"rcauchy\" \"rchisq\" \"rxchisq\" #> [229] \"rexp\" \"rxexp\" \"rbeta\" #> [232] \"rxbeta\" \"rgeom\" \"rxgeom\" #> [235] \"rxpois\" \"rpois\" \"rxt\" #> [238] \"rt\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":null,"dir":"Reference","previous_headings":"","what":"Respect suppress messages — rxSuppressMsg","title":"Respect suppress messages — rxSuppressMsg","text":"turns silent REprintf C suppressMessages() turned . makes REprintf act like messages R, can suppressed suppressMessages()","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Respect suppress messages — rxSuppressMsg","text":"","code":"rxSuppressMsg()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Respect suppress messages — rxSuppressMsg","text":"Nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Respect suppress messages — rxSuppressMsg","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSuppressMsg.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Respect suppress messages — rxSuppressMsg","text":"","code":"# rxSupressMsg() is called with rxode2() # Note the errors are output to the console try(rxode2(\"d/dt(matt)=/3\"), silent = TRUE) #> #> # When using suppressMessages, the output is suppressed suppressMessages(try(rxode2(\"d/dt(matt)=/3\"), silent = TRUE)) # In rxode2, we use REprintf so that interrupted threads do not crash R # if there is a user interrupt. This isn't captured by R's messages, but # This interface allows the `suppressMessages()` to suppress the C printing # as well # If you want to suppress messages from rxode2 in other packages, you can use # this function"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Omega^-1 and derivatives — rxSymInvChol","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"Get Omega^-1 derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"","code":"rxSymInvChol( invObjOrMatrix, theta = NULL, type = \"cholOmegaInv\", thetaNumber = 0L )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"invObjOrMatrix Object inverse-type calculations. matrix, setup object inversion rxSymInvCholCreate() default arguments return reactive s3 object. Otherwise, use inversion object calculate requested derivative/inverse. theta Thetas used calculation. missing (NULL), special s3 class created returned access Omega^1 objects needed cache based theta used. type type object. Currently following types supported: cholOmegaInv gives Cholesky decomposition Omega Inverse matrix. omegaInv gives Omega Inverse matrix. d(omegaInv) gives d(Omega^-1) withe respect theta parameter specified thetaNumber. d(D) gives d(diagonal(Omega^-1)) respect theta parameter specified thetaNumber parameter thetaNumber types d(omegaInv) d(D), theta number derivative taken . must positive 1 number thetas defining Omega matrix.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"Matrix based parameters environment matrixes calculated variables omega, omegaInv, dOmega, dOmegaInv.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvChol.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get Omega^-1 and derivatives — rxSymInvChol","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":null,"dir":"Reference","previous_headings":"","what":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"Creates object calculating Omega/Omega^-1 derivatives","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"","code":"rxSymInvCholCreate( mat, diag.xform = c(\"sqrt\", \"log\", \"identity\"), create.env = TRUE, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"mat Initial Omega matrix diag.xform transformation diagonal elements OMEGA. chol(Omega^-1) create.env – Create environment calculate inverses. (default TRUE) envir – Environment evaluate function, bu default parent frame.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"rxSymInv object rxSymInv environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholCreate.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Creates an object for calculating Omega/Omega^-1 and derivatives — rxSymInvCholCreate","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholN.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","title":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","text":"Return dimension built-derivatives/inverses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholN.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","text":"","code":"rxSymInvCholN()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSymInvCholN.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the dimension of the built-in derivatives/inverses — rxSymInvCholN","text":"dimension built-derivatives/inverses","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":null,"dir":"Reference","previous_headings":"","what":"Sync options with rxode2 variables — rxSyncOptions","title":"Sync options with rxode2 variables — rxSyncOptions","text":"Accessing rxode2 options via getOption slows solving. allows options synced variables.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sync options with rxode2 variables — rxSyncOptions","text":"","code":"rxSyncOptions(setDefaults = c(\"none\", \"permissive\", \"strict\"))"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sync options with rxode2 variables — rxSyncOptions","text":"setDefaults setup rxode2's default solving options following options: \"none\" leave options alone \"permissive\" permissive option set similar R language specifications. \"strict\" strict option set similar original rxode2(). requires semicolons end lines equals assignment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sync options with rxode2 variables — rxSyncOptions","text":"nothing; called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyncOptions.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Sync options with rxode2 variables — rxSyncOptions","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyntaxFunctions.html","id":null,"dir":"Reference","previous_headings":"","what":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","title":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","text":"list description Rode supported syntax functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyntaxFunctions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","text":"","code":"rxSyntaxFunctions"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxSyntaxFunctions.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"A list and description of Rode supported syntax functions — rxSyntaxFunctions","text":"data frame 3 columns 102 rows Function Reserved function Name Description Description function Aliases Function Aliases","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTempDir.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 temporary directory — rxTempDir","title":"Get the rxode2 temporary directory — rxTempDir","text":"Get rxode2 temporary directory","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTempDir.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 temporary directory — rxTempDir","text":"","code":"rxTempDir()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTempDir.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 temporary directory — rxTempDir","text":"rxode2 temporary directory.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":null,"dir":"Reference","previous_headings":"","what":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"rxTheme ggplot2 theme rxode2 plots","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"","code":"rxTheme( base_size = 11, base_family = \"\", base_line_size = base_size/22, base_rect_size = base_size/22, grid = TRUE )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"base_size base font size, given pts. base_family base font family base_line_size base size line elements base_rect_size base size rect elements grid Boolean indicating grid (TRUE) (FALSE). also character indicating x y.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTheme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxTheme is the ggplot2 theme for rxode2 plots — rxTheme","text":"ggplot2 theme used rxode2","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":null,"dir":"Reference","previous_headings":"","what":"rxode2 to symengine environment — rxToSE","title":"rxode2 to symengine environment — rxToSE","text":"rxode2 symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"rxode2 to symengine environment — rxToSE","text":"","code":"rxToSE( x, envir = NULL, progress = FALSE, promoteLinSens = TRUE, parent = parent.frame() ) .rxToSE(x, envir = NULL, progress = FALSE) rxFromSE( x, unknownDerivatives = c(\"forward\", \"central\", \"error\"), parent = parent.frame() ) .rxFromSE(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"rxode2 to symengine environment — rxToSE","text":"x expression envir default NULL; Environment put symengine variables . progress shows progress bar true. promoteLinSens Promote solved linear compartment systems sensitivity-based solutions. parent parent environment look R-based user functions unknownDerivatives handling derivatives unknown functions, translator translate different types numeric derivatives. currently supported methods :","code":"- `forward` for forward differences - `central` for central differences - `error` for throwing an error for unknown derivatives"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"rxode2 to symengine environment — rxToSE","text":"rxode2 symengine environment","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxToSE.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"rxode2 to symengine environment — rxToSE","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate the model to C code if needed — rxTrans","title":"Translate the model to C code if needed — rxTrans","text":"function translates model C code, needed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate the model to C code if needed — rxTrans","text":"","code":"rxTrans( model, modelPrefix = \"\", md5 = \"\", modName = NULL, modVars = FALSE, ... ) # Default S3 method rxTrans( model, modelPrefix = \"\", md5 = \"\", modName = NULL, modVars = FALSE, ... ) # S3 method for class 'character' rxTrans( model, modelPrefix = \"\", md5 = \"\", modName = NULL, modVars = FALSE, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate the model to C code if needed — rxTrans","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . modelPrefix Prefix model functions compiled make sure multiple rxode2 objects can coexist R session. md5 md5 model parsing, used embed md5 DLL, provide functions like rxModelVars(). modName string used model name. string used naming various aspects computations, including generating C symbol names, dynamic libraries, etc. Therefore, necessary modName consists simple ASCII alphanumeric characters starting letter. modVars returns model variables instead named vector translated properties. ... Ignored parameters.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Translate the model to C code if needed — rxTrans","text":"named vector translated model properties including type jacobian specified, C function prefixes, well C functions names called compiled model.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxTrans.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Translate the model to C code if needed — rxTrans","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":null,"dir":"Reference","previous_headings":"","what":"This function is called when processing rxode2 user functions from the models — rxUdfUi","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"function called processing rxode2 user functions models","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"","code":"rxUdfUi(fun)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"fun function needs parsed changed. R language expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"needs return list following elements: iniDf – modified initial estimate data.frame – model code needs added current line – model code needs added current line replace – replacement code user function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUi.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function is called when processing rxode2 user functions from the models — rxUdfUi","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the control that is being processed or setup control for processing — rxUdfUiControl","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"Return control processed setup control processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"","code":"rxUdfUiControl(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"value specified, assigns control processed, resets assigning NULL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"value data.frame processed NULL.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiControl.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the control that is being processed or setup control for processing — rxUdfUiControl","text":"","code":"rxUdfUiControl()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"Return data.frame processed setup data.frame processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"","code":"rxUdfUiData(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"value specified, assigns data.frame processed, resets assigning NULL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"value data.frame processed NULL.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiData.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the data.frame that is being processed or setup data.frame for processing — rxUdfUiData","text":"","code":"rxUdfUiData() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the current estimation method for the UI processing — rxUdfUiEst","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"Return current estimation method UI processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"","code":"rxUdfUiEst(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"value specified, assigns character value estimation method NULL nothing estimated","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"value estimation method processed NULL","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiEst.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the current estimation method for the UI processing — rxUdfUiEst","text":"","code":"rxUdfUiEst() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"Get rxode2 iniDf current UI processed (return NULL)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"","code":"rxUdfUiIniDf()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"Initial data.frame processed NULL nothing.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniDf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get the rxode2 iniDf of the current UI being processed (or return NULL) — rxUdfUiIniDf","text":"","code":"rxUdfUiIniDf() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the lhs parsed language expression — rxUdfUiIniLhs","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"Return lhs parsed language expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"","code":"rxUdfUiIniLhs()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"lhs language expression NULL","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiIniLhs.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the lhs parsed language expression — rxUdfUiIniLhs","text":"","code":"rxUdfUiIniLhs() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":null,"dir":"Reference","previous_headings":"","what":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"Return model variables processed setup model variables processing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"","code":"rxUdfUiMv(value)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"value specified, assigns model variables processed, resets assigning NULL.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"value modelVariables processed NULL.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiMv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Return the model variables that is being processed or setup model variables for processing — rxUdfUiMv","text":"","code":"rxUdfUiMv() #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":null,"dir":"Reference","previous_headings":"","what":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"called outside function parsing input unexpected returns 1L. useful writing replacement UI functions","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"","code":"rxUdfUiNum()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"integer greater 1L","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiNum.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This gives the current number in the ui of the particular function being called. — rxUdfUiNum","text":"","code":"rxUdfUiNum() #> [1] 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":null,"dir":"Reference","previous_headings":"","what":"Returns if the current ui function is being parsed — rxUdfUiParsing","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"Returns current ui function parsed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"","code":"rxUdfUiParsing()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"logical current ui function parsed","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiParsing.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Returns if the current ui function is being parsed — rxUdfUiParsing","text":"","code":"rxUdfUiParsing() #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":null,"dir":"Reference","previous_headings":"","what":"Reset the rxode2 ui environment variables — rxUdfUiReset","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"Reset rxode2 ui environment variables","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"","code":"rxUdfUiReset()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"NULL silently","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUdfUiReset.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Reset the rxode2 ui environment variables — rxUdfUiReset","text":"","code":"rxUdfUiReset()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":null,"dir":"Reference","previous_headings":"","what":"Compress/Decompress rxode2 ui — rxUiDecompress","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"Compress/Decompress rxode2 ui","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"","code":"rxUiDecompress(ui) rxUiCompress(ui)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"ui rxode2 ui object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"compressed decompressed rxui object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDecompress.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compress/Decompress rxode2 ui — rxUiDecompress","text":"","code":"one.cmt <- function() { ini({ ## You may label each parameter with a comment tka <- 0.45 # Log Ka tcl <- log(c(0, 2.7, 100)) # Log Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- 3.45; label(\"log V\") ## the label(\"Label name\") works with all models eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) | tmp }) } f <- rxode2(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(class(f)) #> [1] \"rxUi\" \"raw\" print(is.environment(f)) #> [1] FALSE f <- rxUiDecompress(f) print(class(f)) #> [1] \"rxUi\" print(is.environment(f)) #> [1] TRUE f <- rxUiCompress(f) print(class(f)) #> [1] \"rxUi\" \"raw\" print(is.environment(f)) #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":null,"dir":"Reference","previous_headings":"","what":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"generic function deparsing certain objects printing rxode2 object. Currently used meta-information rxUiDeparse.rxControl(rxControl(covsInterpolation=\"linear\", method=\"dop853\", naInterpolation=\"nocb\", keepInterpolation=\"nocb\", sigmaXform=\"variance\", omegaXform=\"variance\", returnType=\"data.frame\", sumType=\"fsum\", prodType=\"logify\", sensType=\"central\"), \"ctl\")","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"","code":"rxUiDeparse(object, var) # S3 method for class 'lotriFix' rxUiDeparse(object, var) # Default S3 method rxUiDeparse(object, var) # S3 method for class 'rxControl' rxUiDeparse(object, var)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"object object deparsed var variable name assigned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"parsed R expression can used printing .function() calls.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiDeparse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This is a generic function for deparsing certain objects when printing out a rxode2 object. Currently it is used for any meta-information — rxUiDeparse","text":"","code":"mat <- matrix(c(1, 0.1, 0.1, 1), 2, 2, dimnames=list(c(\"a\", \"b\"), c(\"a\", \"b\"))) rxUiDeparse(matrix(c(1, 0.1, 0.1, 1), 2, 2, dimnames=list(c(\"a\", \"b\"), c(\"a\", \"b\"))), \"x\") #> x <- lotri({ #> a ~ 1 #> b ~ c(0.1, 1) #> })"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":null,"dir":"Reference","previous_headings":"","what":"S3 for getting information from UI model — rxUiGet.cmtLines","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"S3 getting information UI model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"","code":"# S3 method for class 'cmtLines' rxUiGet(x, ...) # S3 method for class 'dvidLine' rxUiGet(x, ...) # S3 method for class 'paramsLine' rxUiGet(x, ...) # S3 method for class 'interpLines' rxUiGet(x, ...) # S3 method for class 'simulationSigma' rxUiGet(x, ...) # S3 method for class 'simulationModel' rxUiGet(x, ...) # S3 method for class 'symengineModelNoPrune' rxUiGet(x, ...) # S3 method for class 'symengineModelPrune' rxUiGet(x, ...) # S3 method for class 'simulationIniModel' rxUiGet(x, ...) rxUiGet(x, ...) # S3 method for class 'levels' rxUiGet(x, ...) # S3 method for class 'state' rxUiGet(x, ...) # S3 method for class 'stateDf' rxUiGet(x, ...) # S3 method for class 'statePropDf' rxUiGet(x, ...) # S3 method for class 'props' rxUiGet(x, ...) # S3 method for class 'theta' rxUiGet(x, ...) # S3 method for class 'lstChr' rxUiGet(x, ...) # S3 method for class 'omega' rxUiGet(x, ...) # S3 method for class 'funTxt' rxUiGet(x, ...) # S3 method for class 'allCovs' rxUiGet(x, ...) # S3 method for class 'muRefTable' rxUiGet(x, ...) # S3 method for class 'multipleEndpoint' rxUiGet(x, ...) # S3 method for class 'funPrint' rxUiGet(x, ...) # S3 method for class 'fun' rxUiGet(x, ...) # S3 method for class 'md5' rxUiGet(x, ...) # S3 method for class 'ini' rxUiGet(x, ...) # S3 method for class 'iniFun' rxUiGet(x, ...) # S3 method for class 'modelFun' rxUiGet(x, ...) # S3 method for class 'model' rxUiGet(x, ...) # S3 method for class 'modelDesc' rxUiGet(x, ...) # S3 method for class 'thetaLower' rxUiGet(x, ...) # S3 method for class 'thetaUpper' rxUiGet(x, ...) # S3 method for class 'lhsVar' rxUiGet(x, ...) # S3 method for class 'varLhs' rxUiGet(x, ...) # S3 method for class 'lhsEta' rxUiGet(x, ...) # S3 method for class 'lhsTheta' rxUiGet(x, ...) # S3 method for class 'lhsCov' rxUiGet(x, ...) # S3 method for class 'etaLhs' rxUiGet(x, ...) # S3 method for class 'thetaLhs' rxUiGet(x, ...) # S3 method for class 'covLhs' rxUiGet(x, ...) # Default S3 method rxUiGet(x, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"x list (UIenvironment, exact). UI environment parsed function rxode2. exact boolean says exact match required. ... arguments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"value requested UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUiGet.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"S3 for getting information from UI model — rxUiGet.cmtLines","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":null,"dir":"Reference","previous_headings":"","what":"Unloads all rxode2 compiled DLLs — rxUnloadAll","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"Unloads rxode2 compiled DLLs","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"","code":"rxUnloadAll()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"List rxode2 dlls still loaded boolean rxode2 dlls unloaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUnloadAll.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Unloads all rxode2 compiled DLLs — rxUnloadAll","text":"","code":"print(rxUnloadAll()) #> NULL"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":null,"dir":"Reference","previous_headings":"","what":"Use model object in your package — rxUse","title":"Use model object in your package — rxUse","text":"Use model object package","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Use model object in your package — rxUse","text":"","code":"rxUse(obj, overwrite = TRUE, compress = \"bzip2\", internal = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Use model object in your package — rxUse","text":"obj model save. overwrite default, use_data() overwrite existing files. really want , set TRUE. compress Choose type compression used save(). one \"gzip\", \"bzip2\", \"xz\". internal run internally. default FALSE","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxUse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Use model object in your package — rxUse","text":"Nothing; used side effects called user","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"Validate rxode2 allows easy validation/qualification nlmixr running testing suite system.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"","code":"rxValidate(type = NULL, skipOnCran = TRUE) rxTest(type = NULL, skipOnCran = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"type Type test filter test type, expression, evaluate contents, respecting skipOnCran skipOnCran TRUE skip test CRAN.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"nothing","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxValidate.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Validate rxode2 This allows easy validation/qualification of nlmixr by running the testing suite on your system. — rxValidate","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":null,"dir":"Reference","previous_headings":"","what":"Version and repository for this dparser package. — rxVersion","title":"Version and repository for this dparser package. — rxVersion","text":"Version repository dparser package.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Version and repository for this dparser package. — rxVersion","text":"","code":"rxVersion( extra = \"\", echo = FALSE, version = sessionInfo()$otherPkgs$rxode2$Version )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Version and repository for this dparser package. — rxVersion","text":"extra extra text display logo echo Boolean echo text logo, default FALSE version Version display/return","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Version and repository for this dparser package. — rxVersion","text":"character vector version repository.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxVersion.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Version and repository for this dparser package. — rxVersion","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":null,"dir":"Reference","previous_headings":"","what":"Preserved seed and possibly set the seed — rxWithSeed","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"Preserved seed possibly set seed","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"","code":"rxWithSeed( seed, code, rxseed = rxGetSeed(), kind = \"default\", normal.kind = \"default\", sample.kind = \"default\" ) rxWithPreserveSeed(code)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"seed R seed use session code code evaluate rxseed rxode2 seed preserved kind character NULL. kind character string, set R's RNG kind desired. Use \"default\" return R default. See ‘Details’ interpretation NULL. normal.kind character string NULL. character string, set method Normal generation. Use \"default\" return R default. NULL makes change. sample.kind character string NULL. character string, set method discrete uniform generation (used sample, instance). Use \"default\" return R default. NULL makes change.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"returns whatever code returning","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxWithSeed.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Preserved seed and possibly set the seed — rxWithSeed","text":"","code":"rxGetSeed() #> [1] -1 rxWithSeed(1, { print(rxGetSeed()) rxnorm() print(rxGetSeed()) rxnorm() }, rxseed=3) #> [1] 3 #> [1] 5 #> [1] 0.03291887"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate beta variable from threefry generator — rxbeta","title":"Simulate beta variable from threefry generator — rxbeta","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate beta variable from threefry generator — rxbeta","text":"","code":"rxbeta(shape1, shape2, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate beta variable from threefry generator — rxbeta","text":"shape1, shape2 non-negative parameters Beta distribution. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate beta variable from threefry generator — rxbeta","text":"beta random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate beta variable from threefry generator — rxbeta","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbeta.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate beta variable from threefry generator — rxbeta","text":"","code":"# \\donttest{ ## Use threefry engine rxbeta(0.5, 0.5, n = 10) # with rxbeta you have to explicitly state n #> [1] 0.9751436 0.8066829 0.6867814 0.1676561 0.8103795 0.8134501 0.9044609 #> [8] 0.7324404 0.9892094 0.7416432 rxbeta(5, 1, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0.8376103 0.9432711 0.8377976 0.8982240 0.9394283 0.9803640 0.8456714 #> [8] 0.9485357 0.9446755 0.7302775 rxbeta(1, 3) #> [1] 0.3928258 ## This example uses `rxbeta` directly in the model rx <- function() { model({ a <- rxbeta(2, 2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Binomial variable from threefry generator — rxbinom","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"","code":"rxbinom(size, prob, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"size number trials (zero ). prob probability success trial. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"binomial random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxbinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Binomial variable from threefry generator — rxbinom","text":"","code":"# \\donttest{ ## Use threefry engine rxbinom(10, 0.9, n = 10) # with rxbinom you have to explicitly state n #> [1] 10 8 10 9 9 10 10 9 8 8 rxbinom(3, 0.5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0 2 0 1 0 1 1 1 0 2 rxbinom(4, 0.7) #> [1] 3 ## This example uses `rxbinom` directly in the model rx <- function() { model({ a <- rxbinom(1, 0.5) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Cauchy variable from threefry generator — rxcauchy","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"","code":"rxcauchy(location = 0, scale = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"location, scale location scale parameters. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"Cauchy random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxcauchy.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Cauchy variable from threefry generator — rxcauchy","text":"","code":"# \\donttest{ ## Use threefry engine rxcauchy(0, 1, n = 10) # with rxcauchy you have to explicitly state n #> [1] -0.07832339 -36.79536681 -0.44862838 -0.91199161 1.35994336 #> [6] 0.71195151 1.12467847 0.19022288 -0.14384748 -35.11349418 rxcauchy(0.5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 2.3081782 -1.6757353 -1.5814166 2.7834458 -1.7317520 -1.4832631 #> [7] 0.7836702 2.3110191 6.1635863 1.0042132 rxcauchy(3) #> [1] 3.17419 ## This example uses `rxcauchy` directly in the model rx <- function() { model({ a <- rxcauchy(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate chi-squared variable from threefry generator — rxchisq","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"","code":"rxchisq(df, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"df degrees freedom (non-negative, can non-integer). n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"chi squared random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxchisq.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate chi-squared variable from threefry generator — rxchisq","text":"","code":"# \\donttest{ ## Use threefry engine rxchisq(0.5, n = 10) # with rxchisq you have to explicitly state n #> [1] 2.478676e-04 3.793880e+00 3.611712e-01 6.995257e-03 1.813673e-02 #> [6] 1.366023e+00 1.688298e-08 6.037984e-01 5.611175e-07 8.675588e-01 rxchisq(5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 7.507190 3.189117 2.854665 8.483108 4.130562 3.109122 11.201978 #> [8] 1.807320 1.445311 9.652453 rxchisq(1) #> [1] 3.842503 ## This example uses `rxchisq` directly in the model rx <- function() { model({ a <- rxchisq(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate exponential variable from threefry generator — rxexp","title":"Simulate exponential variable from threefry generator — rxexp","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate exponential variable from threefry generator — rxexp","text":"","code":"rxexp(rate, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate exponential variable from threefry generator — rxexp","text":"rate vector rates. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate exponential variable from threefry generator — rxexp","text":"exponential random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate exponential variable from threefry generator — rxexp","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxexp.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate exponential variable from threefry generator — rxexp","text":"","code":"# \\donttest{ ## Use threefry engine rxexp(0.5, n = 10) # with rxexp you have to explicitly state n #> [1] 1.8431326 2.3134014 1.0244110 9.4904981 0.1855463 1.1523872 5.0281027 #> [8] 0.9111772 0.1942877 2.1240707 rxexp(5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0.15460877 0.02735520 0.02760776 0.11097349 0.37481604 0.03355450 #> [7] 0.13232471 0.04647764 0.02074676 0.32458266 rxexp(1) #> [1] 1.288496 ## This example uses `rxexp` directly in the model rx <- function() { model({ a <- rxexp(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate F variable from threefry generator — rxf","title":"Simulate F variable from threefry generator — rxf","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate F variable from threefry generator — rxf","text":"","code":"rxf(df1, df2, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate F variable from threefry generator — rxf","text":"df1, df2 degrees freedom. Inf allowed. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate F variable from threefry generator — rxf","text":"f random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate F variable from threefry generator — rxf","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate F variable from threefry generator — rxf","text":"","code":"# \\donttest{ ## Use threefry engine rxf(0.5, 0.5, n = 10) # with rxf you have to explicitly state n #> [1] 9.532075e+06 2.863912e-03 8.063576e+02 1.395311e+03 1.557960e-01 #> [6] 2.507246e+00 7.619383e-04 5.365288e-03 2.802578e+00 5.726426e-01 rxf(5, 1, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 1.12047876 33.11303293 0.08921512 0.94479061 2.93182906 #> [6] 102.35326116 11.89705769 0.25498389 0.56572119 9.37865399 rxf(1, 3) #> [1] 2.070798 ## This example uses `rxf` directly in the model rx <- function() { model({ a <- rxf(2, 2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate gamma variable from threefry generator — rxgamma","title":"Simulate gamma variable from threefry generator — rxgamma","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate gamma variable from threefry generator — rxgamma","text":"","code":"rxgamma(shape, rate = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate gamma variable from threefry generator — rxgamma","text":"shape shape gamma random variable rate alternative way specify scale. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate gamma variable from threefry generator — rxgamma","text":"gamma random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate gamma variable from threefry generator — rxgamma","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate gamma variable from threefry generator — rxgamma","text":"","code":"# \\donttest{ ## Use threefry engine rxgamma(0.5, n = 10) # with rxgamma you have to explicitly state n #> [1] 2.16924972 0.32791780 1.43186446 0.24403811 0.20138156 0.16797717 #> [7] 0.01839832 0.01034082 0.02523000 1.21501823 rxgamma(5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 4.922548 6.106389 3.663807 8.652605 6.790443 1.782911 3.534744 4.323610 #> [9] 5.659426 4.379179 rxgamma(1) #> [1] 1.166406 ## This example uses `rxbeta` directly in the model rx <- function() { model({ a <- rxgamma(2) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate geometric variable from threefry generator — rxgeom","title":"Simulate geometric variable from threefry generator — rxgeom","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate geometric variable from threefry generator — rxgeom","text":"","code":"rxgeom(prob, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate geometric variable from threefry generator — rxgeom","text":"prob probability success trial. 0 < prob <= 1. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate geometric variable from threefry generator — rxgeom","text":"geometric random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate geometric variable from threefry generator — rxgeom","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxgeom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate geometric variable from threefry generator — rxgeom","text":"","code":"# \\donttest{ ## Use threefry engine rxgeom(0.5, n = 10) # with rxgeom you have to explicitly state n #> [1] 2 1 0 2 0 1 0 0 1 2 rxgeom(0.25, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 0 1 9 8 8 16 4 1 3 0 rxgeom(0.75) #> [1] 0 ## This example uses `rxgeom` directly in the model rx <- function() { model({ a <- rxgeom(0.24) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Binomial variable from threefry generator — rxnbinom","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"","code":"rxnbinom(size, prob, n = 1L, ncores = 1L) rxnbinomMu(size, mu, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"size target number successful trials, dispersion parameter (shape parameter gamma mixing distribution). Must strictly positive, need integer. prob probability success trial. 0 < prob <= 1. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks mu alternative parametrization via mean: see ‘Details’.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"negative binomial random deviates. Note rxbinom2 uses mu parameterization rxbinom uses prob parameterization (mu=size/(prob+size))","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnbinom.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Binomial variable from threefry generator — rxnbinom","text":"","code":"# \\donttest{ ## Use threefry engine rxnbinom(10, 0.9, n = 10) # with rxbinom you have to explicitly state n #> [1] 9 10 8 9 9 10 9 9 8 9 rxnbinom(3, 0.5, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 2 2 2 3 2 3 3 1 3 3 rxnbinom(4, 0.7) #> [1] 4 # use mu parameter rxnbinomMu(40, 40, n=10) #> [1] 17 23 23 16 19 21 21 25 17 20 ## This example uses `rxbinom` directly in the model rx <- function() { model({ a <- rxnbinom(10, 0.5) }) } et <- et(1, id = 1:100) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ rx <- function() { model({ a <- rxnbinomMu(10, 40) }) } s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate random normal variable from threefry generator — rxnormV","title":"Simulate random normal variable from threefry generator — rxnormV","text":"Simulate random normal variable threefry generator","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate random normal variable from threefry generator — rxnormV","text":"","code":"rxnormV(mean = 0, sd = 1, n = 1L, ncores = 1L) rxnorm(mean = 0, sd = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate random normal variable from threefry generator — rxnormV","text":"mean vector means. sd vector standard deviations. n number observations ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate random normal variable from threefry generator — rxnormV","text":"normal random number deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxnormV.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate random normal variable from threefry generator — rxnormV","text":"","code":"# \\donttest{ ## Use threefry engine rxnorm(n = 10) # with rxnorm you have to explicitly state n #> [1] 1.06365331 0.06274718 0.98492357 1.16700626 -1.90329250 0.76076741 #> [7] -0.23922302 -0.03627662 1.41384359 2.17594017 rxnorm(n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] -0.23843298 -0.05239444 -0.70639357 -0.14133078 1.05044169 -0.42083889 #> [7] -1.51691623 -0.16579079 0.88339314 -1.17662267 rxnorm(2, 3) ## The first 2 arguments are the mean and standard deviation #> [1] -1.230823 ## This example uses `rxnorm` directly in the model rx <- function() { model({ a <- rxnorm() }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"Set function body rxUi object retaining object information (like data)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"","code":"rxode2(x, envir = environment(x)) <- value # S3 method for class '`function`' rxode2(x, envir = environment(x)) <- value # Default S3 method rxode2(x, envir = environment(x)) <- value rxode(x, envir = environment(x)) <- value RxODE(x, envir = environment(x)) <- value"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"x rxUi object envir environment assignment ocurs value value assigned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"rxode2 ui/function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2-set.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set the function body of an rxUi object while retaining other object information (like data) — rxode2<-","text":"","code":"one.compartment <- function() { ini({ tka <- log(1.57); label(\"Ka\") tcl <- log(2.72); label(\"Cl\") tv <- log(31.5); label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } two.compartment <- function() { ini({ lka <- 0.45 ; label(\"Absorption rate (Ka)\") lcl <- 1 ; label(\"Clearance (CL)\") lvc <- 3 ; label(\"Central volume of distribution (V)\") lvp <- 5 ; label(\"Peripheral volume of distribution (Vp)\") lq <- 0.1 ; label(\"Intercompartmental clearance (Q)\") propSd <- 0.5 ; label(\"Proportional residual error (fraction)\") }) model({ ka <- exp(lka) cl <- exp(lcl) vc <- exp(lvc) vp <- exp(lvp) q <- exp(lq) kel <- cl/vc k12 <- q/vc k21 <- q/vp d/dt(depot) <- -ka*depot d/dt(central) <- ka*depot - kel*central - k12*central + k21*peripheral1 d/dt(peripheral1) <- k12*central - k21*peripheral1 cp <- central / vc cp ~ prop(propSd) }) } ui <- rxode2(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments rxode2(ui) <- two.compartment"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an ODE-based model specification — rxode2","title":"Create an ODE-based model specification — rxode2","text":"Create dynamic ODE-based model object suitably translation fast C code","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an ODE-based model specification — rxode2","text":"","code":"rxode2( model, modName = basename(wd), wd = getwd(), filename = NULL, extraC = NULL, debug = FALSE, calcJac = NULL, calcSens = NULL, collapseModel = FALSE, package = NULL, ..., linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), indLin = FALSE, verbose = FALSE, fullPrint = getOption(\"rxode2.fullPrint\", FALSE), envir = parent.frame() ) RxODE( model, modName = basename(wd), wd = getwd(), filename = NULL, extraC = NULL, debug = FALSE, calcJac = NULL, calcSens = NULL, collapseModel = FALSE, package = NULL, ..., linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), indLin = FALSE, verbose = FALSE, fullPrint = getOption(\"rxode2.fullPrint\", FALSE), envir = parent.frame() ) rxode( model, modName = basename(wd), wd = getwd(), filename = NULL, extraC = NULL, debug = FALSE, calcJac = NULL, calcSens = NULL, collapseModel = FALSE, package = NULL, ..., linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), indLin = FALSE, verbose = FALSE, fullPrint = getOption(\"rxode2.fullPrint\", FALSE), envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an ODE-based model specification — rxode2","text":"model ODE model specification. can : string containing set ordinary differential equations (ODE) expressions defining changes dynamic system. file name ODE system equation contained ODE expression enclosed \\{\\} (see also filename argument). details, see sections “Details” rxode2 Syntax . modName string used model name. string used naming various aspects computations, including generating C symbol names, dynamic libraries, etc. Therefore, necessary modName consists simple ASCII alphanumeric characters starting letter. wd character string working directory create subdirectory according modName. specified, subdirectory named “modName.d” created populated C file, dynamic loading library, plus various working files. missing, files created (removed) temporary directory, rxode2 DLL model created current directory named rx_????_platform, example rx_129f8f97fb94a87ca49ca8dafe691e1e_i386.dll filename file name connection object ODE-based model specification resides. one model filename may specified. extraC Extra c code include model. can useful specify functions model. C functions usually take double precision arguments, return double precision values. debug boolean indicating executable compiled verbose debugging information turned . calcJac boolean indicating rxode2 calculate Jacobain according specified ODEs. calcSens boolean indicating rxode2 calculate sensitivities according specified ODEs. collapseModel boolean indicating rxode2 remove LHS variables calculating sensitivities. package Package name pre-compiled binaries. ... ignored arguments. linCmtSens method calculate linCmt() solutions indLin Calculate inductive linearization matrices compile inductive linearization support. verbose TRUE verbose linear compartmental model fullPrint using printf within model, TRUE print every step (except /indLin), otherwise FALSE print calculating d/dt envir environment look R user functions (defaults parent environment)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an ODE-based model specification — rxode2","text":"object (environment) class rxode2 (see Chambers Temple Lang (2001)) consisting following list strings functions:","code":"* `model` a character string holding the source model specification. * `get.modelVars`a function that returns a list with 3 character vectors, `params`, `state`, and `lhs` of variable names used in the model specification. These will be output when the model is computed (i.e., the ODE solved by integration). * `solve`{this function solves (integrates) the ODE. This is done by passing the code to [rxSolve()]. This is as if you called `rxSolve(rxode2object, ...)`, but returns a matrix instead of a rxSolve object. `params`: a numeric named vector with values for every parameter in the ODE system; the names must correspond to the parameter identifiers used in the ODE specification; `events`: an `eventTable` object describing the input (e.g., doses) to the dynamic system and observation sampling time points (see [eventTable()]); `inits`: a vector of initial values of the state variables (e.g., amounts in each compartment), and the order in this vector must be the same as the state variables (e.g., PK/PD compartments); `stiff`: a logical (`TRUE` by default) indicating whether the ODE system is stiff or not. For stiff ODE systems (`stiff = TRUE`), `rxode2` uses the LSODA (Livermore Solver for Ordinary Differential Equations) Fortran package, which implements an automatic method switching for stiff and non-stiff problems along the integration interval, authored by Hindmarsh and Petzold (2003). For non-stiff systems (`stiff = FALSE`), `rxode2` uses `DOP853`, an explicit Runge-Kutta method of order 8(5, 3) of Dormand and Prince as implemented in C by Hairer and Wanner (1993). `trans_abs`: a logical (`FALSE` by default) indicating whether to fit a transit absorption term (TODO: need further documentation and example); `atol`: a numeric absolute tolerance (1e-08 by default); `rtol`: a numeric relative tolerance (1e-06 by default). The output of \\dQuote{solve} is a matrix with as many rows as there are sampled time points and as many columns as system variables (as defined by the ODEs and additional assignments in the rxode2 model code).} * `isValid` a function that (naively) checks for model validity, namely that the C object code reflects the latest model specification. * `version` a string with the version of the `rxode2` object (not the package). * `dynLoad` a function with one `force = FALSE` argument that dynamically loads the object code if needed. * `dynUnload` a function with no argument that unloads the model object code. * `delete` removes all created model files, including C and DLL files. The model object is no longer valid and should be removed, e.g., `rm(m1)`. * `run` deprecated, use `solve`. * `get.index` deprecated. * `getObj` internal (not user callable) function."},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create an ODE-based model specification — rxode2","text":"Rx name rxode2 meant suggest abbreviation Rx medical prescription, thus suggest package emphasis pharmacometrics modeling, including pharmacokinetics (PK), pharmacodynamics (PD), disease progression, drug-disease modeling, etc. ODE-based model specification may coded inside four places: Inside rxode2({}) block statements: Inside rxode2(\"\") string statement: file name loaded rxode2: model function can parsed rxode2: block statement, character string text file internal rxode2 compilation manager translates ODE system C, compiles loads R session. call rxode2 produces object class rxode2 consists list-like structure (environment) various member functions. last type model (model function), call rxode2 creates parsed rxode2 ui can translated rxode2 compilation model. type function required nlmixr2 estimation can extended modified model piping. reason focused documentation. basic model specification consists one statements optionally terminated semi-colons ; optional comments (comments delimited # end--line). block statements set statements delimited curly braces, { ... }. Statements can either assignments, conditional /else /else, loops (can exited break), special statements, printing statements (debugging/testing). Assignment statements can : simple assignments, left hand identifier (.e., variable). includes string assignments special time-derivative assignments, left hand specifies change amount corresponding state variable (compartment) respect time e.g., d/dt(depot): special initial-condition assignments left hand specifies compartment initial condition specified, e.g. depot(0) = 0 special model event changes including bioavailability (f(depot)=1), lag time (alag(depot)=0), modeled rate (rate(depot)=2) modeled duration (dur(depot)=2). example model features event specification modeled infusions rxode2 data specification found rxode2 events vignette. special change point syntax, model times. model times specified mtime(var)=time special Jacobian-derivative assignments, left hand specifies change compartment ode respect variable. example, d/dt(y) = dy, Jacobian compartment can specified df(y)/dy(dy) = 1. may advantage obtaining solution specifying Jacobian stiff ODE systems. However, stiff systems tried LSODA, actually slightly slowed solving. Special string value declarations tell values string variable take within rxode2 solving structure. values cause factor created variable solving rxode2 model. , declared much way R, : labels() <- c(\"a1\", \"a2\"). Note assignment can done =, <- ~. assigning ~ operator, simple assignments time-derivative assignments output. Note rxode2 model functions assignment ~ can also overloaded residual distribution specification. Special statements can : Compartment declaration statements, can change default dosing compartment assumed compartment number(s) well add extra compartment names end (useful multiple-endpoint nlmixr models); specified cmt(compartmentName) Parameter declaration statements, can make sure input parameters certain order instead ordering parameters order parsed. useful keeping parameter order using 2 different ODE models. specified param(par1, par2,...) Variable interpolation statements, tells interpolation specific covariates. include locf(cov1, cov2, ...) last observation carried forward, nocb(cov1, cov2, ...) next observation carried backward, linear(cov1, cov2, ...) linear interpolation midpoint(cov1, cov2, ...) midpoint interpolation. example model shown : Expressions assignment statements can numeric logical. Numeric expressions can include following numeric operators +, -, *, /, ^ mathematical functions defined C R math libraries (e.g., fabs, exp, log, sin, abs). may also access R’s functions R math libraries, like lgammafn log gamma function. rxode2 syntax case-sensitive, .e., ABC different abc, Abc, ABc, etc.","code":"library(rxode2) mod <- rxode2({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) mod <- rxode2(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \") writeLines(\" # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; \", \"modelFile.rxode2\") mod <- rxode2(filename='modelFile.rxode2') unlink(\"modelFile.rxode2\") mod <- function() { model({ # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3; }) } mod <- rxode2(mod) # or simply mod() if the model is at the end of the function # These model functions often have residual components and initial # (`ini({})`) conditions attached as well. For example the # theophylline model can be written as: one.compartment <- function() { ini({ tka <- 0.45 # Log Ka tcl <- 1 # Log Cl tv <- 3.45 # Log V eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } # after parsing the model mod <- one.compartment() mod$simulationModel # or mod$simulationIniModel # simple assignment C2 <- centr/V2 # time-derivative assignment d/dt(centr) <- F*KA*depot - CL*C2 - Q*C2 + Q*C3;"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"identifiers","dir":"Reference","previous_headings":"","what":"Identifiers","title":"Create an ODE-based model specification — rxode2","text":"Like R, Identifiers (variable names) may consist one alphanumeric, underscore _ period . characters, first character digit underscore _. Identifiers model specification can refer : State variables dynamic system (e.g., compartments pharmacokinetics model). Implied input variable, t (time), tlast (last time point), podo (oral dose, undocumented case absorption transit models). Special constants like pi R’s predefined constants. Model parameters (e.g., ka rate absorption, CL clearance, etc.) Others, created assignments part model specification; referred LHS (left-hand side) variable. Currently, rxode2 modeling language recognizes system state variables “parameters”, thus, values need passed R ODE model (e.g., age) either passed params argument integrator function rxSolve() supplied event data-set. certain variable names rxode2 event tables. avoid confusion, following event table-related items assigned, used state can accessed rxode2 code: cmt dvid addl ss amt dur rate Rprintf print printf id However following variables used model specification: evid ii Sometimes rxode2 generates variables fed back rxode2. Similarly, nlmixr2 generates variables used nlmixr estimation simulation. variables start either rx nlmixr prefixes. avoid problems, suggested use variables starting either rx nlmixr prefixes.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"logical-operators","dir":"Reference","previous_headings":"","what":"Logical Operators","title":"Create an ODE-based model specification — rxode2","text":"Logical operators support standard R operators ==, != >= <= > <. Like R can () () statements, ifelse() expressions. Additionally can standard assignment. instance, following valid: Notice can also use character expressions comparisons. convenience comes cost since character comparisons slower numeric expressions. Unlike R, .numeric .integer logical statements needed, cause syntax error try use function.","code":"cov1 = covm*(sexf == \"female\") + covm*(sexf != \"female\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"supported-functions","dir":"Reference","previous_headings":"","what":"Supported functions","title":"Create an ODE-based model specification — rxode2","text":"supported functions rxode2 can seen rxSupportedFuns(). brief description built-functions following table: Note lag(cmt) = equivalent alag(cmt) = = lag(wt)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"reserved-keywords","dir":"Reference","previous_headings":"","what":"Reserved keywords","title":"Create an ODE-based model specification — rxode2","text":"reserved keywords rxode2 model. following table: Note rxFlag always output 11 calc_lhs since final variables calculated, though can tweak test certain parts rxode2 using flag.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"residual-functions-when-using-rxode-functions","dir":"Reference","previous_headings":"","what":"Residual functions when using rxode2 functions","title":"Create an ODE-based model specification — rxode2","text":"addition ~ hiding output certain types output, also used specify residual output endpoint input rxode2 model function (includes residual model({}) block). specifications form: Indicating variable var variable represents individual central tendencies model also represents compartment specification data-set. can also change compartment name using | syntax, : case var represents central tendency cmt represents compartment dvid specification.","code":"var ~ add(add.sd) var ~ add(add.sd) | cmt"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"transformations","dir":"Reference","previous_headings":"","what":"Transformations","title":"Create an ODE-based model specification — rxode2","text":"normal related distributions, can apply transformation sides using keywords/functions apply transformations. default likelihood transformations calculated untransformed scale. bounded variables like logit-normal probit-normal low high values defaulted 0 1 missing. models wish proportional model one transformation can replace standard deviation NA allow transformations, lnorm(), probitNorm() logitNorm() can combined variance stabilizing yeoJohnson() transformation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"normal-and-t-related-distributions","dir":"Reference","previous_headings":"","what":"Normal and t-related distributions","title":"Create an ODE-based model specification — rxode2","text":"normal t-related distributions, wanted keep ability use skewed distributions additive proportional t/cauchy-space, distributions specified differently comparison supported distributions within nlmixr2: Note normal t-related distributions nlmixr2 calculate cwres npde normal assumption help assess goodness fit model. Also note +dnorm() mostly testing purposes slow estimation procedure nlmixr2. suggest adding (except explicit testing). multiple endpoint models mix non-normal normal distributions, whole problem shifted log-likelihood method estimation nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"notes-on-additive-proportional-models","dir":"Reference","previous_headings":"","what":"Notes on additive + proportional models","title":"Create an ODE-based model specification — rxode2","text":"two different ways specify additive proportional models, call combined1 combined2, way Monolix calls two distributions (avoid software differences naming). first, combined1, assumes additive proportional differences standard deviation scale, : y=f+(+b* f^c)*err second, combined2, assumes additive proportional differences combined variance scale: y=f+[sqrt(^2+b^2 *f^(2c))]*err default nlmixr2/rxode2 otherwise specified combined2 since mirrors adding 2 normal distributions statistics add variances (standard deviations). However, combined1 can describe data possibly even better combined2 possible options rxode2/nlmixr2.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"distributions-of-known-likelihoods","dir":"Reference","previous_headings":"","what":"Distributions of known likelihoods","title":"Create an ODE-based model specification — rxode2","text":"residuals related normal, t-distribution cauchy, often residual specification form: compartment specification left handed side specification. generalized likelihood can specify:","code":"cmt ~ dbeta(alpha, beta) ll(cmt) ~ llik specification"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"ordinal-likelihoods","dir":"Reference","previous_headings":"","what":"Ordinal likelihoods","title":"Create an ODE-based model specification — rxode2","text":"Finally, ordinal likelihoods/simulations can specified 2 ways. first : err represents compartment p0 probability specific category: model ensure sum p values less 1. Additionally can write arbitrary number categories ordinal model described . seems little p0 probability category 1 sometimes scores non-whole numbers. can modeled follows: numeric categories specified explicitly, probabilities remain :","code":"err ~ c(p0, p1, p2) err ~ c(p0=0, p1=1, p2=2, 3)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"general-table-of-supported-residual-distributions","dir":"Reference","previous_headings":"","what":"General table of supported residual distributions","title":"Create an ODE-based model specification — rxode2","text":"general supported following table (available rxode2::rxResidualError)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"creating-rxode-models","dir":"Reference","previous_headings":"","what":"Creating rxode2 models","title":"Create an ODE-based model specification — rxode2","text":"NA","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"note-on-strings-in-rxode-","dir":"Reference","previous_headings":"","what":"Note on strings in rxode2","title":"Create an ODE-based model specification — rxode2","text":"Strings converted double values inside rxode2, hence can refer integer corresponding string value string value . covariates calculated fly based data likely try , though aware. strings defined model, fixed used. example: also replaced : Since \"Med\" already defined wanted can pre-declare levels (order) give better control : can see number changed since declaration change numbers variable tAPGAR. levels() statements need declared variable occurs ensure numbering consistent declared.","code":"if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- \"Med\" } if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- \"High\" } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- \"Low\" } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- \"Med\" } else { tAPGAR<- 3 } levels(tAPGAR) <- c(\"Med\", \"Low\", \"High\") if (APGAR == 10 || APGAR == 8 || APGAR == 9) { tAPGAR <- 3 } else if (APGAR == 1 || APGAR == 2 || APGAR == 3) { tAPGAR <- 2 } else if (APGAR == 4 || APGAR == 5 || APGAR == 6 || APGAR == 7) { tAPGAR <- 1 } else { tAPGAR<- 1 }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Create an ODE-based model specification — rxode2","text":"Chamber, J. M. Temple Lang, D. (2001) Object Oriented Programming R. R News, Vol. 1, . 3, September 2001. https://cran.r-project.org/doc/Rnews/Rnews_2001-3.pdf. Hindmarsh, . C. ODEPACK, Systematized Collection ODE Solvers. Scientific Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pp. 55-64. Petzold, L. R. Automatic Selection Methods Solving Stiff Nonstiff Systems Ordinary Differential Equations. Siam J. Sci. Stat. Comput. 4 (1983), pp. 136-148. Hairer, E., Norsett, S. P., Wanner, G. Solving ordinary differential equations , nonstiff problems. 2nd edition, Springer Series Computational Mathematics, Springer-Verlag (1993). Plevyak, J. dparser, https://dparser.sourceforge.net/. Web. 12 Oct. 2015.","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Create an ODE-based model specification — rxode2","text":"Melissa Hallow, Wenping Wang Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an ODE-based model specification — rxode2","text":"","code":"# \\donttest{ mod <- function() { ini({ KA <- .291 CL <- 18.6 V2 <- 40.2 Q <- 10.5 V3 <- 297.0 Kin <- 1.0 Kout <- 1.0 EC50 <- 200.0 }) model({ # A 4-compartment model, 3 PK and a PD (effect) compartment # (notice state variable names 'depot', 'centr', 'peri', 'eff') C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot; d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3; d/dt(peri) <- Q*C2 - Q*C3; d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff; eff(0) <- 1 }) } m1 <- rxode2(mod) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments print(m1) #> ── rxode2-based free-form 4-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> KA CL V2 Q V3 Kin Kout EC50 #> 0.291 18.600 40.200 10.500 297.000 1.000 1.000 200.000 #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 centr #> 3 3 peri #> 4 4 eff #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> KA <- 0.291 #> CL <- 18.6 #> V2 <- 40.2 #> Q <- 10.5 #> V3 <- 297 #> Kin <- 1 #> Kout <- 1 #> EC50 <- 200 #> }) #> model({ #> C2 <- centr/V2 #> C3 <- peri/V3 #> d/dt(depot) <- -KA * depot #> d/dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3 #> d/dt(peri) <- Q * C2 - Q * C3 #> d/dt(eff) <- Kin - Kout * (1 - C2/(EC50 + C2)) * eff #> eff(0) <- 1 #> }) #> } # Step 2 - Create the model input as an EventTable, # including dosing and observation (sampling) events # QD (once daily) dosing for 5 days. qd <- et(amountUnits = \"ug\", timeUnits = \"hours\") %>% et(amt = 10000, addl = 4, ii = 24) # Sample the system hourly during the first day, every 8 hours # then after qd <- qd %>% et(0:24) %>% et(from = 24 + 8, to = 5 * 24, by = 8) # Step 3 - solve the system qd.cp <- rxSolve(m1, qd) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ head(qd.cp) #> time C2 C3 depot centr peri eff #> 1 0 [h] 0.00000 0.0000000 10000.000 0.000 0.0000 1.000000 #> 2 1 [h] 43.99334 0.9113641 7475.157 1768.532 270.6751 1.083968 #> 3 2 [h] 54.50866 2.6510696 5587.797 2191.248 787.3677 1.179529 #> 4 3 [h] 51.65163 4.4243597 4176.966 2076.396 1314.0348 1.227523 #> 5 4 [h] 44.37513 5.9432612 3122.347 1783.880 1765.1486 1.233503 #> 6 5 [h] 36.46382 7.1389804 2334.004 1465.845 2120.2772 1.214084 # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":null,"dir":"Reference","previous_headings":"","what":"Internal translation to get model variables list — rxode2parse","title":"Internal translation to get model variables list — rxode2parse","text":"Internal translation get model variables list","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Internal translation to get model variables list — rxode2parse","text":"","code":"rxode2parse( model, linear = FALSE, linCmtSens = c(\"linCmtA\", \"linCmtB\", \"linCmtC\"), verbose = FALSE, code = NULL, envir = parent.frame() )"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Internal translation to get model variables list — rxode2parse","text":"model Model (either file name string) linear boolean indicating linear compartment model generated linCmt() (default FALSE) linCmtSens Linear compartment model sensitivity type verbose boolean indicating type model detected linCmt() parsing code file name c code written (testing purposes mostly, needs rxode2 anything fancy) envir environment look R user functions (defaults parent environment)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Internal translation to get model variables list — rxode2parse","text":"rxModelVars object model variables rxode2 syntax expression","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parse.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Internal translation to get model variables list — rxode2parse","text":"","code":"rxode2parse(\"a=3\") #> #> rxode2 model variables (see str to see all variables) #> value$params: a"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":null,"dir":"Reference","previous_headings":"","what":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"Control packages loaded rxode2 model dll loaded","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"","code":"rxode2parseGetPackagesToLoad() rxode2parseAssignPackagesToLoad(pkgs = rxode2parseGetPackagesToLoad())"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"pkgs packages make sure loaded every time load rxode2 model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"List packages load","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"Matthew Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPackagesToLoad.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Control the packages that are loaded when a rxode2 model dll is loaded — rxode2parseGetPackagesToLoad","text":"","code":"rxode2parseGetPackagesToLoad() #> [1] \"rxode2ll\" \"lotri\" rxode2parseAssignPackagesToLoad(rxode2parseGetPackagesToLoad()) #> [1] \"rxode2ll\" \"lotri\""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":null,"dir":"Reference","previous_headings":"","what":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"sets function gets currently assigned function pointer assignments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"","code":"rxode2parseAssignPointerTranslation(var)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"var List packages pointer assignment called.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"Nothing, called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignPointerTranslation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This sets function gets the currently assigned function pointer assignments — rxode2parseAssignPointerTranslation","text":"","code":"rxode2parseAssignPointerTranslation(\"rxode2\")"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":null,"dir":"Reference","previous_headings":"","what":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"assigns c level linkages roxde2 model","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"","code":"rxode2parseAssignTranslation(df)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"df data frame containing character column names rxFun, fun, type, package, packageFun integer column names argMin argMax","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"Nothing called side effects","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseAssignTranslation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This assigns the c level linkages for a roxde2 model — rxode2parseAssignTranslation","text":"","code":"rxode2parseAssignTranslation(rxode2parseGetTranslation())"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":null,"dir":"Reference","previous_headings":"","what":"This gives the derivative table for rxode2 — rxode2parseD","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"help allow registration functions rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"","code":"rxode2parseD()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"Derivative table environment rxode2","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"environment derivative table; example: Derivative(f(,b,c), ) = fa() Derivative(f(,b,c), b) = fb() Derivative(f(,b,c), c) = fc() derivative table f : assign(\"f\", list(fa(,b,c), fb(,b,c), fc(,b,c)), rxode2parseD()) fa translates arguments derivative respect fb translates arguments derivative respect b list NULL rxode2 know take derivative respect argument. list shorter length arguments argument derivative arguments specified taken.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseD.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This gives the derivative table for rxode2 — rxode2parseD","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":null,"dir":"Reference","previous_headings":"","what":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"function gets currently assigned function pointer assignments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"","code":"rxode2parseGetPointerAssignment()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"currently assigned pointer assignments","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetPointerAssignment.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This function gets the currently assigned function pointer assignments — rxode2parseGetPointerAssignment","text":"","code":"rxode2parseGetTranslation() #> rxFun fun type package #> 1 linCmtA linCmtA linCmtA_p rxode2 #> 2 linCmtB linCmtB linCmtB_p rxode2 #> 3 linCmtC linCmtC linCmtA_p rxode2 #> 4 rxnorm rxnorm rxode2i_fn2 rxode2 #> 5 rxbinom rxbinom rxode2i_rxbinom rxode2 #> 6 rxnbinom rxnbinom rxode2i_rxbinom rxode2 #> 7 rxnbinomMu rxnbinomMu rxode2i_rxbinom rxode2 #> 8 rxcauchy rxcauchy rxode2i_fn2 rxode2 #> 9 rxchisq rxchisq rxode2i_fn rxode2 #> 10 rxexp rxexp rxode2i_fn rxode2 #> 11 rxf rxf rxode2i_fn2 rxode2 #> 12 rxgeom rxgeom rxode2i_ifn rxode2 #> 13 rxgamma rxgamma rxode2i_fn2 rxode2 #> 14 rxbeta rxbeta rxode2i_fn2 rxode2 #> 15 rxpois rxpois rxode2i_ifn rxode2 #> 16 rxt_ rxt_ rxode2i_fn rxode2 #> 17 rxunif rxunif rxode2i_fn2 rxode2 #> 18 rxweibull rxweibull rxode2i_fn2 rxode2 #> 19 rinorm rinorm rxode2i2_fn2 rxode2 #> 20 ribinom ribinom rxode2i2_ribinom rxode2 #> 21 rinbinom rinbinom rxode2i2_ribinom rxode2 #> 22 rinbinomMu rinbinomMu rxode2i2_ribinom rxode2 #> 23 ricauchy ricauchy rxode2i2_fn2 rxode2 #> 24 richisq richisq rxode2i2_fn rxode2 #> 25 riexp riexp rxode2i2_fn rxode2 #> 26 rif rif rxode2i2_fn2 rxode2 #> 27 rigeom rigeom rxode2i2_ifn rxode2 #> 28 rigamma rigamma rxode2i2_fn2 rxode2 #> 29 ribeta ribeta rxode2i2_fn2 rxode2 #> 30 ripois ripois rxode2i2_ifn rxode2 #> 31 rit_ rit_ rxode2i2_fn rxode2 #> 32 riunif riunif rxode2i2_fn2 rxode2 #> 33 riweibull riweibull rxode2i2_fn2 rxode2 #> 34 ReLU ReLU rxode2_fn rxode2 #> 35 dReLU dReLU rxode2_fn rxode2 #> 36 GELU GELU rxode2_fn rxode2 #> 37 dGELU dGELU rxode2_fn rxode2 #> 38 d2GELU d2GELU rxode2_fn rxode2 #> 39 d3GELU d3GELU rxode2_fn rxode2 #> 40 d4GELU d4GELU rxode2_fn rxode2 #> 41 softplus softplus rxode2_fn rxode2 #> 42 dsoftplus dsoftplus rxode2_fn rxode2 #> 43 d2softplus d2softplus rxode2_fn rxode2 #> 44 d3softplus d3softplus rxode2_fn rxode2 #> 45 d4softplus d4softplus rxode2_fn rxode2 #> 46 SELU SELU rxode2_fn rxode2 #> 47 dSELU dSELU rxode2_fn rxode2 #> 48 lReLU lReLU rxode2_fn rxode2 #> 49 dlReLU dlReLU rxode2_fn rxode2 #> 50 Swish Swish rxode2_fn rxode2 #> 51 dSwish dSwish rxode2_fn rxode2 #> 52 PReLU PReLU rxode2_fn2 rxode2 #> 53 dPReLU dPReLU rxode2_fn2 rxode2 #> 54 dPReLUa dPReLUa rxode2_fn2 rxode2 #> 55 dPReLUa1 dPReLUa1 rxode2_fn2 rxode2 #> 56 ELU ELU rxode2_fn2 rxode2 #> 57 dELU dELU rxode2_fn2 rxode2 #> 58 d2ELU d2ELU rxode2_fn2 rxode2 #> 59 d2aELU d2aELU rxode2_fn2 rxode2 #> 60 dELUa dELUa rxode2_fn2 rxode2 #> 61 d2ELUa d2ELUa rxode2_fn2 rxode2 #> 62 phi phi rxode2_fn rxode2 #> 63 gammap gammap rxode2_fn2 rxode2 #> 64 gammaq gammaq rxode2_fn2 rxode2 #> 65 gammapInv gammapInv rxode2_fn2 rxode2 #> 66 gammapInva gammapInva rxode2_fn2 rxode2 #> 67 gammaqInv gammaqInv rxode2_fn2 rxode2 #> 68 gammaqInva gammaqInva rxode2_fn2 rxode2 #> 69 uppergamma uppergamma rxode2_fn2 rxode2 #> 70 lowergamma lowergamma rxode2_fn2 rxode2 #> 71 gammapDer gammapDer rxode2_fn2 rxode2 #> 72 logit logit rxode2_fn3 rxode2 #> 73 expit expit rxode2_fn3 rxode2 #> 74 simeta simeta _simfun rxode2 #> 75 simeps simeps _simfun rxode2 #> 76 llikNorm _llikNorm rxode2_llikNormFun rxode2ll #> 77 llikNormDmean _llikNormDmean rxode2_llikNormFun rxode2ll #> 78 llikNormDsd _llikNormDsd rxode2_llikNormFun rxode2ll #> 79 llikPois _llikPois rxode2_llikPoisFun rxode2ll #> 80 llikPoisDlambda _llikPoisDlambda rxode2_llikPoisFun rxode2ll #> 81 llikBinom _llikBinom rxode2_llikBinomFun rxode2ll #> 82 llikBinomDprob _llikBinomDprob rxode2_llikBinomFun rxode2ll #> 83 llikNbinom _llikNbinom rxode2_llikBinomFun rxode2ll #> 84 llikNbinomDprob _llikNbinomDprob rxode2_llikBinomFun rxode2ll #> 85 llikNbinomMu _llikNbinomMu rxode2_llikBinomFun rxode2ll #> 86 llikNbinomMuDmu _llikNbinomMuDmu rxode2_llikBinomFun rxode2ll #> 87 llikBeta _llikBeta rxode2_llikBetaFun rxode2ll #> 88 llikBetaDshape1 _llikBetaDshape1 rxode2_llikBetaFun rxode2ll #> 89 llikBetaDshape2 _llikBetaDshape2 rxode2_llikBetaFun rxode2ll #> 90 llikT _llikT rxode2_llikTFun rxode2ll #> 91 llikTDdf _llikTDdf rxode2_llikTFun rxode2ll #> 92 llikTDmean _llikTDmean rxode2_llikTFun rxode2ll #> 93 llikTDsd _llikTDsd rxode2_llikTFun rxode2ll #> 94 llikChisq _llikChisq rxode2_llikChisqFun rxode2ll #> 95 llikChisqDdf _llikChisqDdf rxode2_llikChisqFun rxode2ll #> 96 llikExp _llikExp rxode2_llikExpFun rxode2ll #> 97 llikExpDrate _llikExpDrate rxode2_llikExpFun rxode2ll #> 98 llikF _llikF rxode2_llikFFun rxode2ll #> 99 llikFDdf1 _llikFDdf1 rxode2_llikFFun rxode2ll #> 100 llikFDdf2 _llikFDdf2 rxode2_llikFFun rxode2ll #> 101 llikGeom _llikGeom rxode2_llikGeomFun rxode2ll #> 102 llikGeomDp _llikGeomDp rxode2_llikGeomFun rxode2ll #> 103 llikUnif _llikUnif rxode2_llikUnifFun rxode2ll #> 104 llikUnifDalpha _llikUnifDalpha rxode2_llikUnifFun rxode2ll #> 105 llikUnifDbeta _llikUnifDbeta rxode2_llikUnifFun rxode2ll #> 106 llikWeibull _llikWeibull rxode2_llikWeibullFun rxode2ll #> 107 llikWeibullDshape _llikWeibullDshape rxode2_llikWeibullFun rxode2ll #> 108 llikWeibullDscale _llikWeibullDscale rxode2_llikWeibullFun rxode2ll #> 109 llikGamma _llikGamma rxode2_llikGammaFun rxode2ll #> 110 llikGammaDshape _llikGammaDshape rxode2_llikGammaFun rxode2ll #> 111 llikGammaDrate _llikGammaDrate rxode2_llikGammaFun rxode2ll #> 112 llikCauchy _llikCauchy rxode2_llikCauchyFun rxode2ll #> 113 llikCauchyDlocation _llikCauchyDlocation rxode2_llikCauchyFun rxode2ll #> 114 llikCauchyDscale _llikCauchyDscale rxode2_llikCauchyFun rxode2ll #> packageFun argMin argMax threadSafe #> 1 linCmtA 20 20 1 #> 2 linCmtB 21 21 1 #> 3 linCmtC 20 20 1 #> 4 rxnorm NA NA 1 #> 5 rxbinom NA NA 1 #> 6 rxnbinom NA NA 1 #> 7 rxnbinomMu NA NA 1 #> 8 rxcauchy NA NA 1 #> 9 rxchisq NA NA 1 #> 10 rxexp NA NA 1 #> 11 rxf NA NA 1 #> 12 rxgeom NA NA 1 #> 13 rxgamma NA NA 1 #> 14 rxbeta NA NA 1 #> 15 rxpois NA NA 1 #> 16 rxt_ NA NA 1 #> 17 rxunif NA NA 1 #> 18 rxweibull NA NA 1 #> 19 rinorm NA NA 1 #> 20 ribinom NA NA 1 #> 21 rinbinom NA NA 1 #> 22 rinbinomMu NA NA 1 #> 23 ricauchy NA NA 1 #> 24 richisq NA NA 1 #> 25 riexp NA NA 1 #> 26 rif NA NA 1 #> 27 rigeom NA NA 1 #> 28 rigamma NA NA 1 #> 29 ribeta NA NA 1 #> 30 ripois NA NA 1 #> 31 rit_ NA NA 1 #> 32 riunif NA NA 1 #> 33 riweibull NA NA 1 #> 34 ReLU 1 1 1 #> 35 dReLU 1 1 1 #> 36 GELU 1 1 1 #> 37 dGELU 1 1 1 #> 38 d2GELU 1 1 1 #> 39 d3GELU 1 1 1 #> 40 d4GELU 1 1 1 #> 41 softplus 1 1 1 #> 42 dsoftplus 1 1 1 #> 43 d2softplus 1 1 1 #> 44 d3softplus 1 1 1 #> 45 d4softplus 1 1 1 #> 46 SELU 1 1 1 #> 47 dSELU 1 1 1 #> 48 lReLU 1 1 1 #> 49 dlReLU 1 1 1 #> 50 Swish 1 1 1 #> 51 dSwish 1 1 1 #> 52 PReLU 2 2 1 #> 53 dPReLU 2 2 1 #> 54 dPReLUa 2 2 1 #> 55 dPReLUa1 2 2 1 #> 56 ELU 2 2 1 #> 57 dELU 2 2 1 #> 58 d2ELU 2 2 1 #> 59 d2aELU 2 2 1 #> 60 dELUa 2 2 1 #> 61 d2ELUa 2 2 1 #> 62 phi NA NA 1 #> 63 gammap 2 2 1 #> 64 gammaq 2 2 1 #> 65 gammapInv 2 2 1 #> 66 gammapInva 2 2 1 #> 67 gammaqInv 2 2 1 #> 68 gammaqInva 2 2 1 #> 69 uppergamma 2 2 1 #> 70 lowergamma 2 2 1 #> 71 gammapDer 2 2 1 #> 72 logit NA NA 1 #> 73 expit NA NA 1 #> 74 simeta NA NA 1 #> 75 simeps NA NA 1 #> 76 rxLlikNorm 3 3 1 #> 77 rxLlikNormDmean 3 3 1 #> 78 rxLlikNormDsd 3 3 1 #> 79 rxLlikPois 2 2 1 #> 80 rxLlikPoisDlambda 2 2 1 #> 81 rxLlikBinom 3 3 1 #> 82 rxLlikBinomDprob 3 3 1 #> 83 rxLlikNbinom 3 3 1 #> 84 rxLlikNbinomDprob 3 3 1 #> 85 rxLlikNbinomMu 3 3 1 #> 86 rxLlikNbinomMuDmu 3 3 1 #> 87 rxLlikBeta 3 3 1 #> 88 rxLlikBetaDshape1 3 3 1 #> 89 rxLlikBetaDshape2 3 3 1 #> 90 rxLlikT 4 4 1 #> 91 rxLlikTDdf 4 4 1 #> 92 rxLlikTDmean 4 4 1 #> 93 rxLlikTDsd 4 4 1 #> 94 rxLlikChisq 2 2 1 #> 95 rxLlikChisqDdf 2 2 1 #> 96 rxLlikExp 2 2 1 #> 97 rxLlikExpDrate 2 2 1 #> 98 rxLlikF 3 3 1 #> 99 rxLlikFDdf1 3 3 1 #> 100 rxLlikFDdf2 3 3 1 #> 101 rxLlikGeom 2 2 1 #> 102 rxLlikGeomDp NA NA 1 #> 103 rxLlikUnif 3 3 1 #> 104 rxLlikUnifDalpha 3 3 1 #> 105 rxLlikUnifDbeta 3 3 1 #> 106 rxLlikWeibull 3 3 1 #> 107 rxLlikWeibullDshape 3 3 1 #> 108 rxLlikWeibullDscale 3 3 1 #> 109 rxLlikGamma 3 3 1 #> 110 rxLlikGammaDshape 3 3 1 #> 111 rxLlikGammaDrate 3 3 1 #> 112 rxLlikCauchy 3 3 1 #> 113 rxLlikCauchyDlocation 3 3 1 #> 114 rxLlikCauchyDscale 3 3 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":null,"dir":"Reference","previous_headings":"","what":"This function gets the currently assigned translations — rxode2parseGetTranslation","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"function gets currently assigned translations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"","code":"rxode2parseGetTranslation()"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"currently assigned translations","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxode2parseGetTranslation.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This function gets the currently assigned translations — rxode2parseGetTranslation","text":"","code":"rxode2parseGetTranslation() #> rxFun fun type package #> 1 linCmtA linCmtA linCmtA_p rxode2 #> 2 linCmtB linCmtB linCmtB_p rxode2 #> 3 linCmtC linCmtC linCmtA_p rxode2 #> 4 rxnorm rxnorm rxode2i_fn2 rxode2 #> 5 rxbinom rxbinom rxode2i_rxbinom rxode2 #> 6 rxnbinom rxnbinom rxode2i_rxbinom rxode2 #> 7 rxnbinomMu rxnbinomMu rxode2i_rxbinom rxode2 #> 8 rxcauchy rxcauchy rxode2i_fn2 rxode2 #> 9 rxchisq rxchisq rxode2i_fn rxode2 #> 10 rxexp rxexp rxode2i_fn rxode2 #> 11 rxf rxf rxode2i_fn2 rxode2 #> 12 rxgeom rxgeom rxode2i_ifn rxode2 #> 13 rxgamma rxgamma rxode2i_fn2 rxode2 #> 14 rxbeta rxbeta rxode2i_fn2 rxode2 #> 15 rxpois rxpois rxode2i_ifn rxode2 #> 16 rxt_ rxt_ rxode2i_fn rxode2 #> 17 rxunif rxunif rxode2i_fn2 rxode2 #> 18 rxweibull rxweibull rxode2i_fn2 rxode2 #> 19 rinorm rinorm rxode2i2_fn2 rxode2 #> 20 ribinom ribinom rxode2i2_ribinom rxode2 #> 21 rinbinom rinbinom rxode2i2_ribinom rxode2 #> 22 rinbinomMu rinbinomMu rxode2i2_ribinom rxode2 #> 23 ricauchy ricauchy rxode2i2_fn2 rxode2 #> 24 richisq richisq rxode2i2_fn rxode2 #> 25 riexp riexp rxode2i2_fn rxode2 #> 26 rif rif rxode2i2_fn2 rxode2 #> 27 rigeom rigeom rxode2i2_ifn rxode2 #> 28 rigamma rigamma rxode2i2_fn2 rxode2 #> 29 ribeta ribeta rxode2i2_fn2 rxode2 #> 30 ripois ripois rxode2i2_ifn rxode2 #> 31 rit_ rit_ rxode2i2_fn rxode2 #> 32 riunif riunif rxode2i2_fn2 rxode2 #> 33 riweibull riweibull rxode2i2_fn2 rxode2 #> 34 ReLU ReLU rxode2_fn rxode2 #> 35 dReLU dReLU rxode2_fn rxode2 #> 36 GELU GELU rxode2_fn rxode2 #> 37 dGELU dGELU rxode2_fn rxode2 #> 38 d2GELU d2GELU rxode2_fn rxode2 #> 39 d3GELU d3GELU rxode2_fn rxode2 #> 40 d4GELU d4GELU rxode2_fn rxode2 #> 41 softplus softplus rxode2_fn rxode2 #> 42 dsoftplus dsoftplus rxode2_fn rxode2 #> 43 d2softplus d2softplus rxode2_fn rxode2 #> 44 d3softplus d3softplus rxode2_fn rxode2 #> 45 d4softplus d4softplus rxode2_fn rxode2 #> 46 SELU SELU rxode2_fn rxode2 #> 47 dSELU dSELU rxode2_fn rxode2 #> 48 lReLU lReLU rxode2_fn rxode2 #> 49 dlReLU dlReLU rxode2_fn rxode2 #> 50 Swish Swish rxode2_fn rxode2 #> 51 dSwish dSwish rxode2_fn rxode2 #> 52 PReLU PReLU rxode2_fn2 rxode2 #> 53 dPReLU dPReLU rxode2_fn2 rxode2 #> 54 dPReLUa dPReLUa rxode2_fn2 rxode2 #> 55 dPReLUa1 dPReLUa1 rxode2_fn2 rxode2 #> 56 ELU ELU rxode2_fn2 rxode2 #> 57 dELU dELU rxode2_fn2 rxode2 #> 58 d2ELU d2ELU rxode2_fn2 rxode2 #> 59 d2aELU d2aELU rxode2_fn2 rxode2 #> 60 dELUa dELUa rxode2_fn2 rxode2 #> 61 d2ELUa d2ELUa rxode2_fn2 rxode2 #> 62 phi phi rxode2_fn rxode2 #> 63 gammap gammap rxode2_fn2 rxode2 #> 64 gammaq gammaq rxode2_fn2 rxode2 #> 65 gammapInv gammapInv rxode2_fn2 rxode2 #> 66 gammapInva gammapInva rxode2_fn2 rxode2 #> 67 gammaqInv gammaqInv rxode2_fn2 rxode2 #> 68 gammaqInva gammaqInva rxode2_fn2 rxode2 #> 69 uppergamma uppergamma rxode2_fn2 rxode2 #> 70 lowergamma lowergamma rxode2_fn2 rxode2 #> 71 gammapDer gammapDer rxode2_fn2 rxode2 #> 72 logit logit rxode2_fn3 rxode2 #> 73 expit expit rxode2_fn3 rxode2 #> 74 simeta simeta _simfun rxode2 #> 75 simeps simeps _simfun rxode2 #> 76 llikNorm _llikNorm rxode2_llikNormFun rxode2ll #> 77 llikNormDmean _llikNormDmean rxode2_llikNormFun rxode2ll #> 78 llikNormDsd _llikNormDsd rxode2_llikNormFun rxode2ll #> 79 llikPois _llikPois rxode2_llikPoisFun rxode2ll #> 80 llikPoisDlambda _llikPoisDlambda rxode2_llikPoisFun rxode2ll #> 81 llikBinom _llikBinom rxode2_llikBinomFun rxode2ll #> 82 llikBinomDprob _llikBinomDprob rxode2_llikBinomFun rxode2ll #> 83 llikNbinom _llikNbinom rxode2_llikBinomFun rxode2ll #> 84 llikNbinomDprob _llikNbinomDprob rxode2_llikBinomFun rxode2ll #> 85 llikNbinomMu _llikNbinomMu rxode2_llikBinomFun rxode2ll #> 86 llikNbinomMuDmu _llikNbinomMuDmu rxode2_llikBinomFun rxode2ll #> 87 llikBeta _llikBeta rxode2_llikBetaFun rxode2ll #> 88 llikBetaDshape1 _llikBetaDshape1 rxode2_llikBetaFun rxode2ll #> 89 llikBetaDshape2 _llikBetaDshape2 rxode2_llikBetaFun rxode2ll #> 90 llikT _llikT rxode2_llikTFun rxode2ll #> 91 llikTDdf _llikTDdf rxode2_llikTFun rxode2ll #> 92 llikTDmean _llikTDmean rxode2_llikTFun rxode2ll #> 93 llikTDsd _llikTDsd rxode2_llikTFun rxode2ll #> 94 llikChisq _llikChisq rxode2_llikChisqFun rxode2ll #> 95 llikChisqDdf _llikChisqDdf rxode2_llikChisqFun rxode2ll #> 96 llikExp _llikExp rxode2_llikExpFun rxode2ll #> 97 llikExpDrate _llikExpDrate rxode2_llikExpFun rxode2ll #> 98 llikF _llikF rxode2_llikFFun rxode2ll #> 99 llikFDdf1 _llikFDdf1 rxode2_llikFFun rxode2ll #> 100 llikFDdf2 _llikFDdf2 rxode2_llikFFun rxode2ll #> 101 llikGeom _llikGeom rxode2_llikGeomFun rxode2ll #> 102 llikGeomDp _llikGeomDp rxode2_llikGeomFun rxode2ll #> 103 llikUnif _llikUnif rxode2_llikUnifFun rxode2ll #> 104 llikUnifDalpha _llikUnifDalpha rxode2_llikUnifFun rxode2ll #> 105 llikUnifDbeta _llikUnifDbeta rxode2_llikUnifFun rxode2ll #> 106 llikWeibull _llikWeibull rxode2_llikWeibullFun rxode2ll #> 107 llikWeibullDshape _llikWeibullDshape rxode2_llikWeibullFun rxode2ll #> 108 llikWeibullDscale _llikWeibullDscale rxode2_llikWeibullFun rxode2ll #> 109 llikGamma _llikGamma rxode2_llikGammaFun rxode2ll #> 110 llikGammaDshape _llikGammaDshape rxode2_llikGammaFun rxode2ll #> 111 llikGammaDrate _llikGammaDrate rxode2_llikGammaFun rxode2ll #> 112 llikCauchy _llikCauchy rxode2_llikCauchyFun rxode2ll #> 113 llikCauchyDlocation _llikCauchyDlocation rxode2_llikCauchyFun rxode2ll #> 114 llikCauchyDscale _llikCauchyDscale rxode2_llikCauchyFun rxode2ll #> packageFun argMin argMax threadSafe #> 1 linCmtA 20 20 1 #> 2 linCmtB 21 21 1 #> 3 linCmtC 20 20 1 #> 4 rxnorm NA NA 1 #> 5 rxbinom NA NA 1 #> 6 rxnbinom NA NA 1 #> 7 rxnbinomMu NA NA 1 #> 8 rxcauchy NA NA 1 #> 9 rxchisq NA NA 1 #> 10 rxexp NA NA 1 #> 11 rxf NA NA 1 #> 12 rxgeom NA NA 1 #> 13 rxgamma NA NA 1 #> 14 rxbeta NA NA 1 #> 15 rxpois NA NA 1 #> 16 rxt_ NA NA 1 #> 17 rxunif NA NA 1 #> 18 rxweibull NA NA 1 #> 19 rinorm NA NA 1 #> 20 ribinom NA NA 1 #> 21 rinbinom NA NA 1 #> 22 rinbinomMu NA NA 1 #> 23 ricauchy NA NA 1 #> 24 richisq NA NA 1 #> 25 riexp NA NA 1 #> 26 rif NA NA 1 #> 27 rigeom NA NA 1 #> 28 rigamma NA NA 1 #> 29 ribeta NA NA 1 #> 30 ripois NA NA 1 #> 31 rit_ NA NA 1 #> 32 riunif NA NA 1 #> 33 riweibull NA NA 1 #> 34 ReLU 1 1 1 #> 35 dReLU 1 1 1 #> 36 GELU 1 1 1 #> 37 dGELU 1 1 1 #> 38 d2GELU 1 1 1 #> 39 d3GELU 1 1 1 #> 40 d4GELU 1 1 1 #> 41 softplus 1 1 1 #> 42 dsoftplus 1 1 1 #> 43 d2softplus 1 1 1 #> 44 d3softplus 1 1 1 #> 45 d4softplus 1 1 1 #> 46 SELU 1 1 1 #> 47 dSELU 1 1 1 #> 48 lReLU 1 1 1 #> 49 dlReLU 1 1 1 #> 50 Swish 1 1 1 #> 51 dSwish 1 1 1 #> 52 PReLU 2 2 1 #> 53 dPReLU 2 2 1 #> 54 dPReLUa 2 2 1 #> 55 dPReLUa1 2 2 1 #> 56 ELU 2 2 1 #> 57 dELU 2 2 1 #> 58 d2ELU 2 2 1 #> 59 d2aELU 2 2 1 #> 60 dELUa 2 2 1 #> 61 d2ELUa 2 2 1 #> 62 phi NA NA 1 #> 63 gammap 2 2 1 #> 64 gammaq 2 2 1 #> 65 gammapInv 2 2 1 #> 66 gammapInva 2 2 1 #> 67 gammaqInv 2 2 1 #> 68 gammaqInva 2 2 1 #> 69 uppergamma 2 2 1 #> 70 lowergamma 2 2 1 #> 71 gammapDer 2 2 1 #> 72 logit NA NA 1 #> 73 expit NA NA 1 #> 74 simeta NA NA 1 #> 75 simeps NA NA 1 #> 76 rxLlikNorm 3 3 1 #> 77 rxLlikNormDmean 3 3 1 #> 78 rxLlikNormDsd 3 3 1 #> 79 rxLlikPois 2 2 1 #> 80 rxLlikPoisDlambda 2 2 1 #> 81 rxLlikBinom 3 3 1 #> 82 rxLlikBinomDprob 3 3 1 #> 83 rxLlikNbinom 3 3 1 #> 84 rxLlikNbinomDprob 3 3 1 #> 85 rxLlikNbinomMu 3 3 1 #> 86 rxLlikNbinomMuDmu 3 3 1 #> 87 rxLlikBeta 3 3 1 #> 88 rxLlikBetaDshape1 3 3 1 #> 89 rxLlikBetaDshape2 3 3 1 #> 90 rxLlikT 4 4 1 #> 91 rxLlikTDdf 4 4 1 #> 92 rxLlikTDmean 4 4 1 #> 93 rxLlikTDsd 4 4 1 #> 94 rxLlikChisq 2 2 1 #> 95 rxLlikChisqDdf 2 2 1 #> 96 rxLlikExp 2 2 1 #> 97 rxLlikExpDrate 2 2 1 #> 98 rxLlikF 3 3 1 #> 99 rxLlikFDdf1 3 3 1 #> 100 rxLlikFDdf2 3 3 1 #> 101 rxLlikGeom 2 2 1 #> 102 rxLlikGeomDp NA NA 1 #> 103 rxLlikUnif 3 3 1 #> 104 rxLlikUnifDalpha 3 3 1 #> 105 rxLlikUnifDbeta 3 3 1 #> 106 rxLlikWeibull 3 3 1 #> 107 rxLlikWeibullDshape 3 3 1 #> 108 rxLlikWeibullDscale 3 3 1 #> 109 rxLlikGamma 3 3 1 #> 110 rxLlikGammaDshape 3 3 1 #> 111 rxLlikGammaDrate 3 3 1 #> 112 rxLlikCauchy 3 3 1 #> 113 rxLlikCauchyDlocation 3 3 1 #> 114 rxLlikCauchyDscale 3 3 1"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate ordinal value — rxord","title":"Simulate ordinal value — rxord","text":"Simulate ordinal value","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate ordinal value — rxord","text":"","code":"rxord(...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate ordinal value — rxord","text":"... probabilities simulated. sum number one.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate ordinal value — rxord","text":"number 1 (number probabilities specified + 1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate ordinal value — rxord","text":"values entered 'rxord' simulation simulate probability falling group. falls outside specified probabilities, simulate group (number probabilities specified + 1)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Simulate ordinal value — rxord","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxord.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate ordinal value — rxord","text":"","code":"# This will give values 1, and 2 rxord(0.5) #> [1] 1 rxord(0.5) #> [1] 1 rxord(0.5) #> [1] 2 rxord(0.5) #> [1] 1 # This will give values 1, 2 and 3 rxord(0.3, 0.3) #> [1] 1 rxord(0.3, 0.3) #> [1] 2 rxord(0.3, 0.3) #> [1] 3"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate random Poisson variable from threefry generator — rxpois","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"","code":"rxpois(lambda, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"lambda vector (non-negative) means. n number random values return. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"poission random number deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxpois.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate random Poisson variable from threefry generator — rxpois","text":"","code":"# \\donttest{ ## Use threefry engine rxpois(lambda = 3, n = 10) # with rxpois you have to explicitly state n #> [1] 3 3 1 2 3 3 1 0 2 0 rxpois(lambda = 3, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 7 4 3 1 4 2 5 4 1 2 rxpois(4) ## The first arguments are the lambda parameter #> [1] 5 ## This example uses `rxpois` directly in the model rx <- function() { model({ a <- rxpois(3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate student t variable from threefry generator — rxt","title":"Simulate student t variable from threefry generator — rxt","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate student t variable from threefry generator — rxt","text":"","code":"rxt(df, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate student t variable from threefry generator — rxt","text":"df degrees freedom (\\(> 0\\), maybe non-integer). df = Inf allowed. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate student t variable from threefry generator — rxt","text":"t-distribution random numbers","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate student t variable from threefry generator — rxt","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate student t variable from threefry generator — rxt","text":"","code":"# \\donttest{ ## Use threefry engine rxt(df = 3, n = 10) # with rxt you have to explicitly state n #> [1] 1.6094795 -1.3710940 -0.9229834 1.0161250 -2.0310447 -0.8507196 #> [7] 0.2127626 -0.6144251 -0.2323978 0.3797032 rxt(df = 3, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] -0.446762682 -1.056179821 -1.156572073 -0.008248407 -1.100226271 #> [6] -3.805767432 -1.119541966 -0.043513549 -0.532069970 -1.022693743 rxt(4) ## The first argument is the df parameter #> [1] -0.5747198 ## This example uses `rxt` directly in the model rx <- function() { model({ a <- rxt(3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate uniform variable from threefry generator — rxunif","title":"Simulate uniform variable from threefry generator — rxunif","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate uniform variable from threefry generator — rxunif","text":"","code":"rxunif(min = 0, max = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate uniform variable from threefry generator — rxunif","text":"min, max lower upper limits distribution. Must finite. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate uniform variable from threefry generator — rxunif","text":"uniform random numbers","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate uniform variable from threefry generator — rxunif","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxunif.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate uniform variable from threefry generator — rxunif","text":"","code":"# \\donttest{ ## Use threefry engine rxunif(min = 0, max = 4, n = 10) # with rxunif you have to explicitly state n #> [1] 1.3061140 1.2325494 3.5528744 0.7267568 2.6946057 3.9863650 0.8839350 #> [8] 0.6969313 3.2520449 2.0732372 rxunif(min = 0, max = 4, n = 10, ncores = 2) # You can parallelize the simulation using openMP #> [1] 1.7674899 2.6858923 3.7162267 1.0223610 0.5648740 1.2287296 0.4351249 #> [8] 1.3137895 3.4122299 2.2783367 rxunif() #> [1] 0.2577899 ## This example uses `rxunif` directly in the model rx <- function() { model({ a <- rxunif(0, 3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":null,"dir":"Reference","previous_headings":"","what":"Simulate Weibull variable from threefry generator — rxweibull","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"Care taken method encounter birthday problem, described https://www.johndcook.com/blog/2016/01/29/random-number-generator-seed-mistakes/. Since sitmo threefry, currently generates one random deviate uniform distribution seed engine threefry run code.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"","code":"rxweibull(shape, scale = 1, n = 1L, ncores = 1L)"},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"shape, scale shape scale parameters, latter defaulting 1. n number observations. length(n) > 1, length taken number required. ncores Number cores simulation rxnorm simulates using threefry sitmo generator. rxnormV used simulate vandercorput simulator, since satisfy normal properties changed simple alias rxnorm. longer supported rxode2({}) blocks","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"Weibull random deviates","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"Therefore, simple call random number generated followed second call random number generated may identical seeds. number random number generator calls increased probability birthday problem increase. key avoid problem either run simulations rxode2 environment (therefore one seed series seeds whole simulation), pre-generate random variables used simulation, seed rxode2 engine rxSetSeed() Internally ID seeded unique number results depend number cores used.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/rxweibull.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Simulate Weibull variable from threefry generator — rxweibull","text":"","code":"# \\donttest{ ## Use threefry engine # with rxweibull you have to explicitly state n rxweibull(shape = 1, scale = 4, n = 10) #> [1] 3.38395126 6.19722188 3.84734369 2.21973549 10.37015755 0.61922145 #> [7] 15.36768019 1.22637210 0.09650896 2.16265536 # You can parallelize the simulation using openMP rxweibull(shape = 1, scale = 4, n = 10, ncores = 2) #> [1] 2.36399417 1.76052260 2.00263924 0.48001680 1.10358707 0.09843464 #> [7] 2.00454395 1.69938698 3.09457548 7.49950264 rxweibull(3) #> [1] 1.120598 ## This example uses `rxweibull` directly in the model rx <- function() { model({ a <- rxweibull(1, 3) }) } et <- et(1, id = 1:2) s <- rxSolve(rx, et) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":null,"dir":"Reference","previous_headings":"","what":"Softplus Activation Function — softplus","title":"Softplus Activation Function — softplus","text":"Softplus Activation Function","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Softplus Activation Function — softplus","text":"","code":"softplus(x)"},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Softplus Activation Function — softplus","text":"x numeric vector","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Softplus Activation Function — softplus","text":"numeric vector","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Softplus Activation Function — softplus","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/softplus.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Softplus Activation Function — softplus","text":"","code":"softplus(c(-1, 0, 1, 2)) #> [1] 0.3132617 0.6931472 1.3132617 2.1269280 # You can use rxode2 too: r <- rxode2({ s <- softplus(time) }) #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ e <- et(c(-1, 0, 1, 2)) rxSolve(r, e) #> ── Solved rxode2 object ── #> ── Parameters (value$params): ── #> # A tibble: 1 × 0 #> ── Initial Conditions (value$inits): ── #> named numeric(0) #> ── First part of data (object): ── #> # A tibble: 4 × 2 #> time s #> #> 1 -1 0.313 #> 2 0 0.693 #> 3 1 1.31 #> 4 2 2.13"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":null,"dir":"Reference","previous_headings":"","what":"Dosing/Amt geom/stat — stat_amt","title":"Dosing/Amt geom/stat — stat_amt","text":"dosing geom shows vertical lines dose occurs","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dosing/Amt geom/stat — stat_amt","text":"","code":"stat_amt( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, ... ) geom_amt( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dosing/Amt geom/stat — stat_amt","text":"mapping Set aesthetic mappings created aes(). specified inherit.aes = TRUE (default), combined default mapping top level plot. must supply mapping plot mapping. data data displayed layer. three options: NULL, default, data inherited plot data specified call ggplot(). data.frame, object, override plot data. objects fortified produce data frame. See fortify() variables created. function called single argument, plot data. return value must data.frame, used layer data. function can created formula (e.g. ~ head(.x, 10)). position position adjustment use data layer. can used various ways, including prevent overplotting improving display. position argument accepts following: result calling position function, position_jitter(). method allows passing extra arguments position. string naming position adjustment. give position string, strip function name position_ prefix. example, use position_jitter(), give position \"jitter\". information ways specify position, see layer position documentation. show.legend logical. layer included legends? NA, default, includes aesthetics mapped. FALSE never includes, TRUE always includes. can also named logical vector finely select aesthetics display. inherit.aes FALSE, overrides default aesthetics, rather combining . useful helper functions define data aesthetics inherit behaviour default plot specification, e.g. borders(). ... arguments passed layer()'s params argument. arguments broadly fall one 4 categories . Notably, arguments position argument, aesthetics required can passed .... Unknown arguments part 4 categories ignored. Static aesthetics mapped scale, fixed value apply layer whole. example, colour = \"red\" linewidth = 3. geom's documentation Aesthetics section lists available options. 'required' aesthetics passed params. Please note passing unmapped aesthetics vectors technically possible, order required length guaranteed parallel input data. constructing layer using stat_*() function, ... argument can used pass parameters geom part layer. example stat_density(geom = \"area\", outline.type = \"\"). geom's documentation lists parameters can accept. Inversely, constructing layer using geom_*() function, ... argument can used pass parameters stat part layer. example geom_area(stat = \"density\", adjust = 0.5). stat's documentation lists parameters can accept. key_glyph argument layer() may also passed .... can one functions described key glyphs, change display layer legend.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Dosing/Amt geom/stat — stat_amt","text":"returns stat_amt context ggplot2 plot","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Dosing/Amt geom/stat — stat_amt","text":"Requires following aesthetics: x representing x values, usually time amt representing dosing values; missing zero dose given","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_amt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Dosing/Amt geom/stat — stat_amt","text":"","code":"# \\donttest{ library(rxode2) library(units) #> udunits database from /usr/share/xml/udunits/udunits2.xml ## Model from RxODE tutorial mod1 <- function() { ini({ KA <- 2.94E-01 CL <- 1.86E+01 V2 <- 4.02E+01 Q <- 1.05E+01 V3 <- 2.97E+02 Kin <- 1 Kout <- 1 EC50 <- 200 }) model({ C2 <- centr/V2 C3 <- peri/V3 d/dt(depot) <- -KA*depot d/dt(centr) <- KA*depot - CL*C2 - Q*C2 + Q*C3 d/dt(peri) <- Q*C2 - Q*C3 d/dt(eff) <- Kin - Kout*(1-C2/(EC50+C2))*eff }) } ## These are making the more complex regimens of the rxode2 tutorial ## bid for 5 days bid <- et(timeUnits=\"hr\") %>% et(amt=10000,ii=12,until=set_units(5, \"days\")) ## qd for 5 days qd <- et(timeUnits=\"hr\") %>% et(amt=20000,ii=24,until=set_units(5, \"days\")) ## bid for 5 days followed by qd for 5 days et <- seq(bid,qd) %>% et(seq(0,11*24,length.out=100)) bidQd <- rxSolve(mod1, et, addDosing=TRUE) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> #> #> using C compiler: ‘gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0’ # by default dotted and under-stated plot(bidQd, C2) + geom_amt(aes(amt=amt)) # of course you can make it a bit more visible plot(bidQd, C2) + geom_amt(aes(amt=amt), col=\"red\", lty=1, linewidth=1.2) # }"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":null,"dir":"Reference","previous_headings":"","what":"Censoring geom/stat — stat_cens","title":"Censoring geom/stat — stat_cens","text":"censoring geom shows left right censoring specified nlmixr input data-set fit","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Censoring geom/stat — stat_cens","text":"","code":"stat_cens( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, width = 0.01, ... ) geom_cens( mapping = NULL, data = NULL, position = \"identity\", show.legend = NA, inherit.aes = TRUE, width = 0.01, ... )"},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Censoring geom/stat — stat_cens","text":"mapping Set aesthetic mappings created aes(). specified inherit.aes = TRUE (default), combined default mapping top level plot. must supply mapping plot mapping. data data displayed layer. three options: NULL, default, data inherited plot data specified call ggplot(). data.frame, object, override plot data. objects fortified produce data frame. See fortify() variables created. function called single argument, plot data. return value must data.frame, used layer data. function can created formula (e.g. ~ head(.x, 10)). position position adjustment use data layer. can used various ways, including prevent overplotting improving display. position argument accepts following: result calling position function, position_jitter(). method allows passing extra arguments position. string naming position adjustment. give position string, strip function name position_ prefix. example, use position_jitter(), give position \"jitter\". information ways specify position, see layer position documentation. show.legend logical. layer included legends? NA, default, includes aesthetics mapped. FALSE never includes, TRUE always includes. can also named logical vector finely select aesthetics display. inherit.aes FALSE, overrides default aesthetics, rather combining . useful helper functions define data aesthetics inherit behaviour default plot specification, e.g. borders(). width represents width (\\ censoring box ... arguments passed layer()'s params argument. arguments broadly fall one 4 categories . Notably, arguments position argument, aesthetics required can passed .... Unknown arguments part 4 categories ignored. Static aesthetics mapped scale, fixed value apply layer whole. example, colour = \"red\" linewidth = 3. geom's documentation Aesthetics section lists available options. 'required' aesthetics passed params. Please note passing unmapped aesthetics vectors technically possible, order required length guaranteed parallel input data. constructing layer using stat_*() function, ... argument can used pass parameters geom part layer. example stat_density(geom = \"area\", outline.type = \"\"). geom's documentation lists parameters can accept. Inversely, constructing layer using geom_*() function, ... argument can used pass parameters stat part layer. example geom_area(stat = \"density\", adjust = 0.5). stat's documentation lists parameters can accept. key_glyph argument layer() may also passed .... can one functions described key glyphs, change display layer legend.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Censoring geom/stat — stat_cens","text":"returns ggplot2 stat","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/stat_cens.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Censoring geom/stat — stat_cens","text":"Requires following aesthetics: x Represents independent variable, often time scale y represents dependent variable CENS censoring information; (-1 right censored, 0 censoring 1 left censoring) LIMIT represents corresponding limit () add boxes representing areas fit censored.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":null,"dir":"Reference","previous_headings":"","what":"Summary of rxDll object — summary.rxDll","title":"Summary of rxDll object — summary.rxDll","text":"gives expanded information rxDll object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Summary of rxDll object — summary.rxDll","text":"","code":"# S3 method for class 'rxDll' summary(object, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Summary of rxDll object — summary.rxDll","text":"object RxDll object ... arguments. Includes noprint, logical telling object print rxDll object first. default FALSE","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Summary of rxDll object — summary.rxDll","text":"object returned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxDll.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Summary of rxDll object — summary.rxDll","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":null,"dir":"Reference","previous_headings":"","what":"Print expanded information about the rxode2 object. — summary.rxode2","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"prints expanded information rxode2 object.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"","code":"# S3 method for class 'rxode2' summary(object, ...)"},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"object rxode2 object ... Ignored parameters","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"object returned","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/summary.rxode2.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Print expanded information about the rxode2 object. — summary.rxode2","text":"Matthew L.Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":null,"dir":"Reference","previous_headings":"","what":"Swaps the matrix list with a cube — swapMatListWithCube","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"Swaps matrix list cube","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"","code":"swapMatListWithCube(matrixListOrCube)"},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"matrixListOrCube Either list 2-dimensional matrices cube matrices","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"list cube (opposite format input)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/swapMatListWithCube.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Swaps the matrix list with a cube — swapMatListWithCube","text":"","code":"# Create matrix list matLst <- cvPost(10, lotri::lotri(a+b~c(1, 0.25, 1)), 3) print(matLst) #> [[1]] #> a b #> a 0.90286405 0.02935214 #> b 0.02935214 0.40145363 #> #> [[2]] #> a b #> a 1.0020557 0.1998196 #> b 0.1998196 2.4359680 #> #> [[3]] #> a b #> a 1.47206777 -0.05884101 #> b -0.05884101 1.04139365 #> # Convert to cube matCube <- swapMatListWithCube(matLst) print(matCube) #> , , 1 #> #> a b #> a 0.90286405 0.02935214 #> b 0.02935214 0.40145363 #> #> , , 2 #> #> a b #> a 1.0020557 0.1998196 #> b 0.1998196 2.4359680 #> #> , , 3 #> #> a b #> a 1.47206777 -0.05884101 #> b -0.05884101 1.04139365 #> # Convert back to list matLst2 <- swapMatListWithCube(matCube) print(matLst2) #> [[1]] #> a b #> a 0.90286405 0.02935214 #> b 0.02935214 0.40145363 #> #> [[2]] #> a b #> a 1.0020557 0.1998196 #> b 0.1998196 2.4359680 #> #> [[3]] #> a b #> a 1.47206777 -0.05884101 #> b -0.05884101 1.04139365 #>"},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":null,"dir":"Reference","previous_headings":"","what":"This function tests if this object is a iniDf as needed by the UI — testIniDf","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"function tests object iniDf needed UI","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"","code":"testIniDf(iniDf) assertIniDf(iniDf, extra = \"\", .var.name = .vname(iniDf), null.ok = FALSE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"iniDf object test rxode2 ui iniDf data.frame extra information append error message .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname. null.ok [logical(1)] set TRUE, x may also NULL. case type check x performed, additional checks disabled.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"boolean, indicating object valid initialization data frame","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"assertIniDf(): Assert object valid rxode2 ui initialization data frame","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testIniDf.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"This function tests if this object is a iniDf as needed by the UI — testIniDf","text":"","code":"testIniDf(TRUE) #> [1] FALSE"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":null,"dir":"Reference","previous_headings":"","what":"Test if rxode2 uses linear solved systems — testRxLinCmt","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"Test rxode2 uses linear solved systems","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"","code":"testRxLinCmt(ui, extra = \"\", .var.name = .vname(ui)) assertRxLinCmt(ui, extra = \"\", .var.name = .vname(ui))"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"ui rxode2 model extra Extra text append error message (like \"focei\") .var.name [character(1)] Name checked object print assertions. Defaults heuristic implemented vname.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"TRUE model uses linear solved systems, FALSE otherwise","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"assertRxLinCmt(): Assert rxode2 uses linear solved systems","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxLinCmt.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Test if rxode2 uses linear solved systems — testRxLinCmt","text":"","code":"one.cmt <- function() { ini({ ## You may label each parameter with a comment tka <- 0.45 # Log Ka tcl <- log(c(0, 2.7, 100)) # Log Cl ## This works with interactive models ## You may also label the preceding line with label(\"label text\") tv <- 3.45; label(\"log V\") ## the label(\"Label name\") works with all models eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } testRxLinCmt(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] TRUE"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":null,"dir":"Reference","previous_headings":"","what":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"Test rxode2 model parameters user defined boundaries","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"","code":"testRxUnbounded(ui) assertRxUnbounded(ui, extra = \"\", .var.name = .vname(ui)) warnRxBounded(ui, extra = \"\", .var.name = .vname(ui))"},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"ui rxode2 ui extra extra information append error message .var.name variable name","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"boolean indicating parameters user defined boundaries","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"assertRxUnbounded(): Assert rxode2 model parameters user defined boundaries warnRxBounded(): Warn rxode2 model parameters user defined boundaries","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/testRxUnbounded.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Test if the rxode2 model has any parameters with user defined boundaries — testRxUnbounded","text":"","code":"one.cmt <- function() { ini({ tka <- 0.45; label(\"Ka\") tcl <- log(c(0, 2.7, 100)); label(\"Cl\") tv <- 3.45; label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) linCmt() ~ add(add.sd) }) } testRxUnbounded(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> [1] FALSE try(assertRxUnbounded(one.cmt)) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> Error : 'one.cmt' can not have user defined boundaries warnRxBounded(one.cmt) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> Warning: 'one.cmt' has the following user-defined boundaries: tcl"},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"Convert event data trial duration data helper function create custom event table. observation time start first event time (baseline) end trial duration. interval spacing observation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"","code":"toTrialDuration(ev, trialEnd, interval, writeDir = NULL)"},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"ev event data trialEnd extend trial duration. Must time unit event data interval observation interval. Must time unit event data writeDir NULL, write output csv file","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"Omar Elashkar","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/toTrialDuration.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert event data to trial duration data A helper function to create a custom event table. The observation time will start from the first event time (baseline) and end at trial duration. The interval is the spacing between each observation. — toTrialDuration","text":"","code":"# Create event table with unique time for each ID ev = et(data.frame(id = rep(1:10, 3), time = runif(min = 10, max = 20, n = 30))) # select the duration and spacing interval (assuming time is in years) toTrialDuration(ev, trialEnd = 1.5, interval = 0.2) #> ── EventTable with 80 records ── #> 0 dosing records (see value$get.dosing(); add with add.dosing or et) #> 80 observation times (see value$get.sampling(); add with add.sampling or et) #> ── First part of value: ── #> # A tibble: 80 × 4 #> id time amt evid #> #> 1 1 12.6 NA 0:Observation #> 2 1 12.8 NA 0:Observation #> 3 1 13.0 NA 0:Observation #> 4 1 13.2 NA 0:Observation #> 5 1 13.4 NA 0:Observation #> 6 1 13.6 NA 0:Observation #> 7 1 13.8 NA 0:Observation #> 8 1 14.0 NA 0:Observation #> 9 2 11.4 NA 0:Observation #> 10 2 11.6 NA 0:Observation #> # ℹ 70 more rows"},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":null,"dir":"Reference","previous_headings":"","what":"Update for rxUi — update.rxUi","title":"Update for rxUi — update.rxUi","text":"Update rxUi","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update for rxUi — update.rxUi","text":"","code":"# S3 method for class 'rxUi' update(object, ..., envir = parent.frame())"},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update for rxUi — update.rxUi","text":"object rxode2 UI object ... Lines update envir Environment evaluating ini() style calls","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/update.rxUi.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update for rxUi — update.rxUi","text":"new rxode2 updated UI object","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":null,"dir":"Reference","previous_headings":"","what":"uppergamma: upper incomplete gamma function — uppergamma","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"tgamma boost library","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"","code":"uppergamma(a, z)"},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"numeric '' parameter upper incomplete gamma z numeric 'z' parameter upper incomplete gamma","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"uppergamma results","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"uppergamma function given : \\(uppergamma(, z) = \\int_{z}^{\\infty}t^{-1}\\cdot e^{-t} dt\\)","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"Matthew L. Fidler","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/uppergamma.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"uppergamma: upper incomplete gamma function — uppergamma","text":"","code":"uppergamma(1, 3) #> [1] 0.04978707 uppergamma(1:3, 3) #> [1] 0.04978707 0.19914827 0.84638016 uppergamma(1, 1:3) #> [1] 0.36787944 0.13533528 0.04978707"},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":null,"dir":"Reference","previous_headings":"","what":"Set random effects and residual error to zero — zeroRe","title":"Set random effects and residual error to zero — zeroRe","text":"Set random effects residual error zero","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set random effects and residual error to zero — zeroRe","text":"","code":"zeroRe(object, which = c(\"omega\", \"sigma\"), fix = TRUE)"},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set random effects and residual error to zero — zeroRe","text":"object model modify types parameters set zero fix parameters fixed zero value?","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set random effects and residual error to zero — zeroRe","text":"object parameters set zero","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Set random effects and residual error to zero — zeroRe","text":"Bill Denney","code":""},{"path":"https://nlmixr2.github.io/rxode2/reference/zeroRe.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Set random effects and residual error to zero — zeroRe","text":"","code":"one.compartment <- function() { ini({ tka <- log(1.57); label(\"Ka\") tcl <- log(2.72); label(\"Cl\") tv <- log(31.5); label(\"V\") eta.ka ~ 0.6 eta.cl ~ 0.3 eta.v ~ 0.1 add.sd <- 0.7 }) model({ ka <- exp(tka + eta.ka) cl <- exp(tcl + eta.cl) v <- exp(tv + eta.v) d/dt(depot) = -ka * depot d/dt(center) = ka * depot - cl / v * center cp = center / v cp ~ add(add.sd) }) } zeroRe(one.compartment) #> #> #> ℹ parameter labels from comments are typically ignored in non-interactive mode #> ℹ Need to run with the source intact to parse comments #> ── rxode2-based free-form 2-cmt ODE model ────────────────────────────────────── #> ── Initalization: ── #> Fixed Effects ($theta): #> tka tcl tv add.sd #> 0.4510756 1.0006319 3.4499875 0.0000000 #> #> Omega ($omega): #> eta.ka eta.cl eta.v #> eta.ka 0 0 0 #> eta.cl 0 0 0 #> eta.v 0 0 0 #> attr(,\"lotriFix\") #> eta.ka eta.cl eta.v #> eta.ka TRUE FALSE FALSE #> eta.cl FALSE TRUE FALSE #> eta.v FALSE FALSE TRUE #> #> States ($state or $stateDf): #> Compartment Number Compartment Name #> 1 1 depot #> 2 2 center #> ── μ-referencing ($muRefTable): ── #> theta eta level #> 1 tka eta.ka id #> 2 tcl eta.cl id #> 3 tv eta.v id #> #> ── Model (Normalized Syntax): ── #> function() { #> ini({ #> tka <- 0.451075619360217 #> label(\"Ka\") #> tcl <- 1.00063188030791 #> label(\"Cl\") #> tv <- 3.44998754583159 #> label(\"V\") #> add.sd <- fix(0, 0) #> eta.ka ~ fix(0) #> eta.cl ~ fix(0) #> eta.v ~ fix(0) #> }) #> model({ #> ka <- exp(tka + eta.ka) #> cl <- exp(tcl + eta.cl) #> v <- exp(tv + eta.v) #> d/dt(depot) = -ka * depot #> d/dt(center) = ka * depot - cl/v * center #> cp = center/v #> cp ~ add(add.sd) #> }) #> }"},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-development-version","dir":"Changelog","previous_headings":"","what":"rxode2 (development version)","title":"rxode2 (development version)","text":"Rework tad() related functions use interface compartments (way depend order compartments); See #815. Also allow dummy variables ignore state requirements (parsing mu-referenced equations). Add getRxNpars api. allows development version babelmixr2 better check model loaded unload/reload necessary. Add rxUdfUiControl() rxode2 user function get control information something like nlmixr2","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-302","dir":"Changelog","previous_headings":"","what":"rxode2 3.0.2","title":"rxode2 3.0.2","text":"CRAN release: 2024-10-30 Bug fix api, censoring function pointer updated (#801). Query rxode2.verbose.pipe run time instead requiring set loading rxode2. correct values boundaries logit, expit, probit, probitInv (instead NA). cases break anything. Add new style user function modifies ui parsing just using function (presence data). Used new user function interface allow random functions rxode2 ui functions named. example, can use rxnorm(sd=3) instead use rxnorm(0, 3), although rxnorm() still works.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-301","dir":"Changelog","previous_headings":"","what":"rxode2 3.0.1","title":"rxode2 3.0.1","text":"CRAN release: 2024-09-22 Explicitly initialize order vector stop valgrind warning (requested CRAN)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-300","dir":"Changelog","previous_headings":"","what":"rxode2 3.0.0","title":"rxode2 3.0.0","text":"CRAN release: 2024-09-18","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"breaking-changes-3-0-0","dir":"Changelog","previous_headings":"","what":"Breaking Changes","title":"rxode2 3.0.0","text":"model properties moved $params $props conflict low level rxode2 model $params Error specifying wd without modName Linear midpoint time two points, rxode2 handles missing values changed. missing value lower requested time, look backward finds first non-missing value (missing start looking forward). missing value higher requested time, algorithm look forward finds first non-missing value (missing, start looking backward). order ODEs now determined order cmt() d/dt(). Compartment properties, tad() compartment related variables longer affect compartment sorting. option rxode2.syntax.require.ode.first longer anything. handling zeros “safely” changed (see #775) safeZero=TRUE denominator division expression zero, use Machine’s small number/eps (can see value .Machine$double.eps) saveLog=TRUE x log(x) less equal zero, change log(eps) safePow=TRUE expression x^y zero x negative number y replace x eps. Since protection divide zero changed, results also change. conservative protection mechanism applied previously. Random numbers rxode2 different using dop853, lsoda indLin methods. now seed random numbers way liblsoda, random number provided different solving methods. arguments saved rxSolve items like thetaMat reduced matrices used solving, full matrices (likely break many items)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"possible-breaking-changes-though-unlikely-3-0-0","dir":"Changelog","previous_headings":"","what":"Possible breaking changes (though unlikely)","title":"rxode2 3.0.0","text":"iCov longer merged event dataset. makes solving iCov slightly faster (#743)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-3-0-0","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 3.0.0","text":"can remove covariances every omega piping %>% ini(diag()) can bit granular removing covariances either eta.ka eta.cl : %>% ini(diag(eta.ka, eta.cl)) anything correlations eta.cl %>% ini(diag(eta.cl)) can also remove individual covariances %>% ini(-cov(, b)) %>% ini(-cor(,b)). can specify type interpolation applied added dosing records (added records) columns kept keep= option rxSolve(). new option keepInterpolation can locf last observation carried forward, nocb next observation carried backward, well NA puts NA imputed data rows. See #756. Note: interpolation linear/midpoint factors/characters changes locf warning (#759) Also note, default keep interpolation na Now can specify interpolation method per covariate model: linear(var1, var2) says var1 var2 use linear interpolation time-varying covariate. also use linear(var1) locf() declares variables using last observation carried forward nocb() declares variables using next observation carried backward midpoint() declares variables using midpoint interpolation linear(), locf(), locb(), midpoint(), params(), cmt() dvid() declarations now ignored loading rxode2 model rxS() Strings can assigned variables rxode2. Strings can now enclosed single quote well double quote. limitation rxode2 using string since R-parser changes single quotes double quotes. (impact rxode2({}) ui/function form). robust string encoding symengine (adapted utils::URLencode() utils::URLdecode()) Empty arguments rxRename() give warning (#688) Promoting covariates parameters model piping (via ini()) now allows setting bounds (#692) Added assertCompartmentName(), assertCompartmentExists(), assertCompartmentNew(), testCompartmentExists(), assertVariableExists() testVariableExists(), assertVariableNew(), assertVariableName(), assertParameterValue() verify value valid nlmixr2 compartment name, nlmixr2 compartment/variable exists model, variable name, parameter value (#726; #733) Added assertRxUnbounded(), testRxUnbounded(), warnRxBounded() allow nlmixr2 warn methods ignore boundaries #760 Added functions tad0(), tafd0(), tlast0() tfirst0() give 0 instead NA dose administered yet. useful use ODEs since NAs break solving (can used bit robustly models like Weibull absorption). rxode2 binary link lotri, means changes lotri package require rxode2 recompiled (cases) crash system. rxode2 also binary linkage PreciseSums binary linkage dparser reduced C structures , making changes dparser less likely cause segmentation faults rxode2 wasn’t recompiled. new model property added $props$cmtProp $statePropDf. data-frames showing compartment properties (currently ini, f, alag, rate dur) rxode2 ui model. comes lower level model variable $stateProp information encoded integers state. new generic method rxUiDeparse can used deparse meta information readable expressions; currently default supports lower triangular matrices lotri, can extended support types objects like ’nlmixr2’s foceiControl() instance.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-3-0-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 3.0.0","text":"Fix ui$props$endpoint ui endpoint defined terms ode instead lhs. See #754 Fix ui$props ui linear compartment model without ka defined. Model extraction modelExtract() now extract model properties. Note model property alag(cmt) lag(cmt) give value. See #745 assigning reserved variables, parser error. See #744 Linear interpolation now adjust times well values NA values observed. Fix keeping data NA values crash R; Also fixed incorrect NA interpolations. See #756 using cmt() sometimes next statement corrupted normalized syntax (like instance locf); bug fixed (#763) keep now error trying keep items rxode2 output data-frame calculated (#764)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"big-change-3-0-0","dir":"Changelog","previous_headings":"","what":"Big change","title":"rxode2 3.0.0","text":"request CRAN, combine rxode2parse, rxode2random, rxode2et package; changes packages now placed :","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.13","title":"rxode2 3.0.0","text":"Fix import data NA times","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-1","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.12","title":"rxode2 3.0.0","text":"Fix formatting issues identified m1mac, requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-2","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.11","title":"rxode2 3.0.0","text":"Make stacking flexible help rxode2 types plots Add toTrialDuration Omar Elashkar convert event data trial duration data Fix Issue #23 prefer variable values NSE values","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-3","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.10","title":"rxode2 3.0.0","text":"Fix dollar sign accessing objects (like data frames), pointed @frbrz (issue #16) Use rxode2parse functions internal event table creation (moved ). Dropped C++14 let system decide.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2et-3-0-0-4","dir":"Changelog","previous_headings":"Big change > rxode2et (no changes before merge)","what":"rxode2et 2.0.9","title":"rxode2 3.0.0","text":"Split et(), eventTable() related functions. Also split rxStack() rxCbindStudyIndividual() package. Added NEWS.md file track changes package.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-before-merge-3-0-0","dir":"Changelog","previous_headings":"Big change","what":"rxode2random (before merge)","title":"rxode2 3.0.0","text":"Fix bug simulating nested variables (#25)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.1.0","title":"rxode2 3.0.0","text":"Breaking Change changed distributions standard C++ boost::random. Since dependent compiler, makes random numbers generated Mac, Windows Linux every distribution. Unfortunately new random number transformation, simulation results likely different . exception uniform number, always platforms.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-1","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.13","title":"rxode2 3.0.0","text":"Fixed formatting issues (requested CRAN identified m1mac)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-2","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.12","title":"rxode2 3.0.0","text":"Added function dfWishart gives (simulation) approximation degrees freedom Wishart match rse value. Added function swapMatListWithCube swaps omegaList omegaCube values Ensure outputs integers (instead long integers) requested CRAN checking functions.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-3","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.11","title":"rxode2 3.0.0","text":"Fix qassert LTO","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-4","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.10","title":"rxode2 3.0.0","text":"Moved fast factor rxode2parse allow etTrans moved ","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2random-3-0-0-5","dir":"Changelog","previous_headings":"Big change > rxode2random (before merge)","what":"rxode2random 2.0.9","title":"rxode2 3.0.0","text":"Initial release rxode2random, separates parallel safe, random number generation ‘rxode2’ separate package reduce ‘rxode2’ compilation time. make CRAN maintenance bit easier. Added NEWS.md file track changes package.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-fixed-before-merging-3-0-0","dir":"Changelog","previous_headings":"Big change","what":"rxode2parse (fixed before merging)","title":"rxode2 3.0.0","text":"requested CRAN remove C code SET_TYPEOF longer part C R API.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.19","title":"rxode2 3.0.0","text":"Added evid suffix 60 cases evid=2 adds event (fixes tad() calculation certain edge cases) Initialize variables NA","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-1","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.18","title":"rxode2 3.0.0","text":"Removed linear compartment solutions gradients rxode2parse (rxode2) compiled intel c++ compiler (since crashes compiling). Fixed m1mac string issues requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-2","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.17","title":"rxode2 3.0.0","text":"Added ability query R user functions rxode2 model (force single threaded solve) Moved core rxFunParse rxRmFunParse C R user function clashes can handled Model variables now tracks compartments lag-time defined compartment steady state doses (NONMEM equivalent SS=1, SS=2), additional tracking time-point added track time lagged dose given. upshot, lagged dose start steady state concentration shifted + ii - lag rxode2 (currently ode systems ) release calculates non bio-availability adjusted duration rates instead trying figure rate duration solving. Make double assignment error, ie <- b <- NA times ignored (warning) Steady state bolus doses addl treated non steady state events (like observed NONMEM) Timsort upgraded; drop radix support rxode2 structure etTrans now supports keeping logical vectors (appropriate version rxode2). Security fixes applied requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-3","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.16","title":"rxode2 3.0.0","text":"Import data.table explicitly R code (imported C/C++ code)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-4","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.15","title":"rxode2 3.0.0","text":"Updates make flags support CXX17.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-5","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.14","title":"rxode2 3.0.0","text":"‘linCmt()’ translations ‘alpha’, ‘beta’, ‘gamma’, ‘k21’, ‘k31’, ‘vc’ now error instead ignoring ‘gamma’ ‘k31’ give 2 cmt solution transit compartment internal code now changes dose 0.0 dose administered depot compartment. way dosing central compartment (without dosing transit compartment) give NA depot compartment (consequently central compartment) Moved rxDerived added tests well. Moved etTransParse added tests well (makes etTrans). addition following changes made etTransParse()/etTrans(): internal translation (etTrans()) drop times infusions stop. , infusion stopped last observation time infusion stopped dropped. interferes linCmt() models. Breaking change/bug fix evid=2 considered observations translating data internal rxode2 event structure Fix edge case find infusion duration first item dosing record time 0. Fixed bug certain infusions rate, ii /ss data items dropped output addDosing=TRUE Also internal functions convert classic NONMEM events rxode2 events internal function gives information linear compartmental model translation type, useful babelmixr2 ‘time’ model now case insensitive Use function declaration rxode2parseGetTranslation() determine thread safety functions available rxode2 Add check correct number function arguments parser. Like R, known functions can assigned variable function can still called (changing variable value). example can variable gamma well function gamma(). Fix garbled error messages occur certain messages. Fixed errors occurred using capitalized AMT variables model.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-6","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.13","title":"rxode2 3.0.0","text":"Version bump dparser (binaries built correctly)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-7","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.12","title":"rxode2 3.0.0","text":"Bug fix strict prototypes Removed sprintf noted CRAN Made rxode2parse dll binary independent rxode2()","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-8","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.11","title":"rxode2 3.0.0","text":"Bug fix strict aliasing requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-9","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.10","title":"rxode2 3.0.0","text":"Use strict aliasing requested CRAN","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2parse-3-0-0-10","dir":"Changelog","previous_headings":"Big change > rxode2parse (fixed before merging)","what":"rxode2parse 2.0.9","title":"rxode2 3.0.0","text":"Initial release split rxode2parse rxode2 reduce compilation time ‘rxode2’","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-213","dir":"Changelog","previous_headings":"","what":"rxode2 2.1.3","title":"rxode2 2.1.3","text":"CRAN release: 2024-05-28","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-1-3","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.1.3","text":"Make sure object uncompressed rxode2 ui solving rxSolve (See #661) Fix #670 using last simulated observation residual trailing doses.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-1-3","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.1.3","text":"Create function see rxode2 solve loaded memory (rxode2::rxSolveSetup()) Create new function fixes rxode2 population values model (drops initial estimates); rxFixPop()","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"other-changes-2-1-3","dir":"Changelog","previous_headings":"","what":"Other changes","title":"rxode2 2.1.3","text":"Pendantic -remap (requested CRAN) gcc USBAN fix (requested CRAN)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-212","dir":"Changelog","previous_headings":"","what":"rxode2 2.1.2","title":"rxode2 2.1.2","text":"CRAN release: 2024-01-30","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"other-changes-2-1-2","dir":"Changelog","previous_headings":"","what":"Other changes","title":"rxode2 2.1.2","text":"rxUi compression now defaults fast compression Fixes String literal formatting issues identified CRAN (#643) Removes linear compartment solutions gradients intel c++ compiler (since crash compiler).","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-210","dir":"Changelog","previous_headings":"","what":"rxode2 2.1.0","title":"rxode2 2.1.0","text":"CRAN release: 2023-12-11","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"breaking-changes-2-1-0","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"rxode2 2.1.0","text":"Steady state lag times longer shifted lag time solved steady state default. addition steady state original time dosing also back-calculated. want old behavior can bring back option ssAtDoseTime=FALSE. “dop853” now uses hmax/h0 values rxControl() rxSolve(). may change ODE solving using “dop853” specified (xgxr available), x axis longer assumed hours","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-1-0","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.1.0","text":"User defined functions can now R functions. many R functions can converted C rxFun() (can see C code afterwards rxC(\"funName\")) Parallel solving models require sorting (like modeled lag times, modeled duration etc) now solve parallel instead downgrading single threaded solving Steady state infusions duration infusions greater inter-dose interval now supported. Added $symengineModelNoPrune $symengineModelPrune loading models rxode2 rxS() plotting creating confidence intervals multiple endpoint models simulated rxode2 ui model, can plot/summarize endpoint sim. (ie. confint(model, \"sim\") plot(model, sim)). want summarize subset endpoints, can focus endpoint pre-pending endpoint sim. example wanted plot/summarize endpoint eff use sim.eff. (ie confint(model, \"sim.eff\") plot(model, sim.eff)) Added model$simulationIniModel prepend initial conditions ini({}) block classic rxode2({}) model. Now model$simulationModel model$simulationIniModel save use initialization values compiled model, solve original ui model. Allow ini(model) <- NULL drop ini block .ini(NULL) gives ini({}) (Issue #523) Add function modelExtract() extract model lines allow modifying changing model piping simply assigning modified lines model(ui) <- newModifiedLines Add Algebraic mu-referencing detection (mu2) allows express mu-referenced covariates : Instead previously required (log.WT.div.70.5 calculated data) mu expressions. ui now information allow transformation data internally transformation old mu-referencing style run optimization. Allow steady state infusions duration infusion greater inter-dose interval solved. Solves now possibly print information issuing “solve system” error function rxSetPipingAuto() now exported change way affect piping individual setup Allow covariates specified model piping, mod %>% model(=var+3, cov=\"var\") add \"var\" covariate. calculating confidence intervals rxode2 simulated objects can now use stratify simulation summary. example can now stratify gender race : confint(sim, \"sim\", =c(\"race\", \"gender\")) calculating intervals rxode2 simulated objects can now use ci=FALSE calculates default intervals without bands percentiles; can also choose match secondary bands limits levels use ci=0.99 instance new function introduced meanProbs() calculates mean expected confidence bands either normal t distribution related new function introduced calculates mean confidence bands Bernoulli/Binomial distribution (binomProbs()) calculating intervals rxode2 simulated objects can also use mean=TRUE use mean first level confidence using meanProbs(). confidence interval can override n used confidence interval using n=#. can also change prediction interval instead using pred=TRUE. Also calculating intervals rxode2 simulated object can also use mean=\"binom\" use binomial distributional information (ci) first level confidence using binomProbs(). confidence interval can override n used confidence interval using n=#. can also change prediction interval instead using pred=TRUE. pred=TRUE can override number predicted samples m=# plotting confint derived intervals rxode2 simulation, can now subset based simulated value like plot(ci, Cc) plot variable Cc summarized even also summarized eff (instance). rxode2 ui compressed ui object, can modify ini block $ini <- modify model block $model <-. equivalent ini(model) <- model(model) <-, respectively. Otherwise, object added user defined components function (ie $meta). object uncompressed, simply assigns environment instead (just like ). printing meta information happens lotri compatible matrix, use lotri express instead default R expression. Allow character vectors converted expressions piping (#552) rxAppendModel() now take arbitrary number models append together; also better handling models duplicate parameters models without ini() blocks (#617 / #573 / #575). keep now also keep attributes input data (special handling levels); means broader variety classes kept carrying information (example ordered factors, data frame columns unit information, etc) Piping arguments append ini() model() aligned perform similarly. Therefore ini(append=) now can take expressions instead simply strings model(append=) can also take strings. Also model piping now can specify integer line number modified just like ini() . Also model(append=FALSE) changed model(append=NULL). behavior don’t specify argument, behavior changed align ini() piping. Hence model(append=TRUE) append model(append=FALSE) now pre-pend model. model(append=NULL) modify lines like behavior ini(append=NULL). default model(line) modifying line -place still applies. breaking change, code perform . Labels can now dropped ini(param=label(NULL)). Also parameters can dropped idiom model(param=NULL) ini(param=NULL) changes parameter covariate align idiom dropping parameters rxRename refactored run faster","code":"cl <- exp(tcl + eta.cl + wt_cl * log(WT/70.5)) cl <- exp(tcl + eta.cl + wt_cl * log.WT.div.70.5)"},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"internal-new-features-2-1-0","dir":"Changelog","previous_headings":"","what":"Internal new features","title":"rxode2 2.1.0","text":"Add .model() list expressions, implies model(ui) <- ui$lstExpr assign model components. also robustly work character vectors Simulated objects rxSolve now can access model variables $rxModelVars Simulation models UI now use rxerr.endpoint instead err.endpoint sigma residual error. align convention internally generated variables start rx nlmixr Sorting uses timsort now, upgraded latest version Morwenn","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-1-0","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.1.0","text":"Simulating/solving functions/ui now prefers params omega sigma model (#632) Piping add constants initial estimates constants specified model({}) block (like k <- 1), ini block Bug fix geom_amt() aes transformation x Bug fix covariate updates may affect multiple compartment models (like issue #581)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"maintenance-fixes-2-1-0","dir":"Changelog","previous_headings":"","what":"Maintenance fixes","title":"rxode2 2.1.0","text":"Modify plot code work development xgxr","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2014","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.14","title":"rxode2 2.0.14","text":"CRAN release: 2023-10-07 CRAN requested FORTRAN kind changed portable; commented code, simply removed comment. Bug-fix geom_amt(); also now uses linewidth least ggplot2 3.4.0 documentation cleaned rxode2 2.0.13","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2013","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.13","title":"rxode2 2.0.13","text":"CRAN release: 2023-04-22","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-0-13","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.0.13","text":"bug fixed zeroRe() function works correlated omega values. bug fixed rename() function works initial conditions compartments (cmt(0))","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-0-13","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.0.13","text":"new function zeroRe() allows simple setting omega /sigma values zero model (#456) Diagonal zeros omega sigma matrices treated zeros model. corresponding omega sigma matrices drop columns/rows diagonals zero create new omega sigma matrix simulation. idiom NONMEM uses simulation matrices. Add ability pipe model estimates another model parentModel %>% ini(modelWithNewEsts) Add ability append model statements piping using %>% model(x=3, append=d/dt(depot)), still supports appending append=TRUE pre-pending append=NA (default replace lines append=FALSE) rxSolve’s keep argument now maintain character factor classes input data class (#190) Parameter labels may now modified via ini(param = label(\"text\")) (#351). Parameter order may modified via append argument ini() piping model. example, ini(param = 1, append = 0) ini(param = label(\"text\"), append = \"param2\") (#352).","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"internal-changes-2-0-13","dir":"Changelog","previous_headings":"","what":"Internal changes","title":"rxode2 2.0.13","text":"lower/upper bounds outside required bounds, adjustment displayed. initial values piped break model’s boundary condition reset boundary unbounded message boundary reset. Added .rxUi() function convert following objects rxUi objects: rxode2, rxModelVars, function. Converting nlmixr2 fits rxUi placed s3 method corresponding package. assertRxUi(x) now uses .rxUi() can extended outside rxode2/nlmixr2. rxode2 now supports addl ss doses Moved rxDerived rxode2parse (re-exported ). Added test transit compartment solving absence dosing transit compartment (fixed rxode2parse solving tested ) Using ini() without arguments rxode2 type function return ini() block. Also added method ini(mod) <- iniBlock modify ini block wish. iniBlock expression. Using model() without arguments rxode2 type function return model() block. Also added new method model(mod) <- modelBlock Added new method rxode2(mod) <- modFunction allows replacing function new function maintaining meta information ui (like information comes nonmem2rx models). modFunction body new function, new function, new rxode2 ui. rxode2 ui objects now $sticky item inside internal (compressed) environment. $sticky tells variables keep “significant” change ui piping sort model change. respected model piping, modifying model ini(mod)<-, model(mod)<-, rxode2(mod)<-. significant change change model block, change number estimates, change value estimates. Estimate bounds, weather estimate fixed estimate label changes considered significant. Added .ini() method convert various formats ini expression. used internally ini(mod)<-. want assign something new can convert ini expression, add method .ini(). Added .model() method convert various formats model expression. used internally model(mod)<-. want assign something new can convert model expression, add method .model().","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2011","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.11","title":"rxode2 2.0.11","text":"CRAN release: 2022-11-01 Give meaningful error ‘rxode2’ ui models error expressions Break ABI requirement roxde2() rxode2parse() new rxode2parse fix sprintf exclusion shown CRAN.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-2010","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.10","title":"rxode2 2.0.10","text":"CRAN release: 2022-10-20 Time invariant covariates can now contain ‘NA’ values. column ‘NA’ entire id, now ‘rxode2’ warns id column instead just id. fix CRAN issues ‘nlmixr2est’, make version dependency explicit.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-209","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.9","title":"rxode2 2.0.9","text":"CRAN release: 2022-10-19 Remove log likelihoods ‘rxode2’ reduce compilation time increase maintainability ‘rxode2’. transferred ‘rxode2ll’ (requested CRAN). Remove parsing ‘rxode2’ solved linear compartment code move ‘rxode2parse’ reduce compilation time (requested CRAN). Remove random number generation ‘rxode2’ move ‘rxode2random’ reduce compilation time (requested CRAN). Remove event table translation generation ‘rxode2’ move ‘rxode2et’ reduce compilation time (requested CRAN). Change rxode2 ui object compressed, serialized object default. reduce C stack size problem occurs many environments R. Warn ignoring items simulations Export method change ‘rxode2’ solve methods internal integers Bug fix time invariant covariates identified time variant covariate individual’s time starts 0.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-208","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.8","title":"rxode2 2.0.8","text":"CRAN release: 2022-09-23","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"breaking-changes-2-0-8","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"rxode2 2.0.8","text":"rxgamma now allows rate input. aligns internal rxode2 version rxgamma clarifies used. also aligned llikGamma function used generalized likelihood estimation. ui cauchy simulations now follow ui normal t distributions, means can combine transformations. cauchy t distribution one degree freedom. ui dnorm() norm() longer equivalent add(). Now allows use loglik llikNorm() instead standard nlmixr2 style focei likelihood. done adding dnorm() end line. also means dnorm() now doesn’t take arguments. Vandercorput normal removed (non-random number generator)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-0-8","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.0.8","text":"Allow models nlmixr2 form without ini({}) block Allow model piping omega matrix f %>% ini(omegaMatrix) Standard models created rxode2() can piped model function Families log-likelihood added rxode2 mixed likelihood nonlinear mixed effects models may specified run. memory footprint rxode2 solving reduced Piping now allow named strings (issue #249)","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-0-8","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.0.8","text":"rxode2’s symengine convert sqrt(2) M_SQRT_2 M_SQRT2. fixed; noticeable nlmixr2 log-likelihood estimation methods rxode2 treats DV non-covariate etTran (last time duplicate model). noticeable nlmixr2 log-likelihood estimation methods.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"new-features-2-0-8-1","dir":"Changelog","previous_headings":"","what":"New features","title":"rxode2 2.0.8","text":"new flag (rxFlag) created tell rxode2 solving process . useful debugging. outputting variable always 11 calculating left handed equations. using conjunction printf() methods, double variable formatted \"%f\". additional option fullPrint added rxode2() allows rprintf() used almost rxode2() steps (inductive linearization matrix exponential exception ) instead just integration ddt step. defaults FALSE.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-207","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.7","title":"rxode2 2.0.7","text":"CRAN release: 2022-05-17 Removed accidental ^S news requested CRAN. Bug fix complicated mu-referencing. Change rxode2 md5 depend C/C++/Fortran code headers R files. way binary compatibility nlmixr2est rxode2, new version nlmixr2est need submitted CRAN.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"rxode2-206","dir":"Changelog","previous_headings":"","what":"rxode2 2.0.6","title":"rxode2 2.0.6","text":"CRAN release: 2022-05-09","code":""},{"path":[]},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"solving-controls-2-0-6","dir":"Changelog","previous_headings":"Breaking changes","what":"Solving controls","title":"rxode2 2.0.6","text":"options rxControl rxSolve strict. camelCase now always used. Old options like add.cov transit_abs longer supported, addCov supported. new option, sigdig added rxControl(), controls common significant figure options like atol, rtol, ssAtol, ssRtol, single option.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"simulations-2-0-6","dir":"Changelog","previous_headings":"Breaking changes","what":"Simulations","title":"rxode2 2.0.6","text":"simulations, $simulationSigma now assumes diagonal matrix. sigma values assumed standard normal, uncorrelated endpoints. Simulation uncertainty still draw identity diagonal matrix Parallel solving now seeds simulation per individual based initial seed plus simulation id. makes simulation reproducible regardless number cores running simulation.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"other-breaking-changes-2-0-6","dir":"Changelog","previous_headings":"Breaking changes","what":"Other breaking changes","title":"rxode2 2.0.6","text":"Solved objects now access underlying rxode model $rxode2 instead $rxode Since change names, rxode2, rxode RxODE perform function. Options changed RxODE.syntax rxode2.syntax. Assigning states rxode2.syntax.assign.state (RxODE.syntax.assign.state) longer supported. Enforcing “pure” assignment syntax = syntax longer supported rxode2.syntax.assign longer supported (RxODE.syntax.assign). Since R supports ** exponentiation operator, pure syntax without ** can longer enabled. Hence rxode2.syntax.star.pow (RxODE.syntax.star.pow) longer effect. “pure” syntax requires semicolon can longer enabled. Therefore rxode2.syntax.require.semicolon (RxODE.syntax.require.semicolon) longer effect. syntax state(0) can longer turned . rxode2.syntax.allow.ini0 (RxODE.syntax.allow.ini0) removed. Variable dots variable state names like state.name works R. Therefore, “pure” syntax excluding . values variables enforced rxode2.syntax.allow.dots (RxODE.syntax.allow.dots). mnemonic et(rate=model) et(dur=model) mnemonics removed. rate needs set -1 -2 manually instead. function rxode2Test() removed favor using testthat directly. Transit compartments need use new evid, evid=7. said, transitAbs option longer supported. ID columns input parameter data frames sorted merged original dataset ; underlying assumption ID order now checked outside rxode2(). Note event data frame still sorted.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"additional-features-2-0-6","dir":"Changelog","previous_headings":"","what":"Additional features","title":"rxode2 2.0.6","text":"UI functions nlmixr ported work rxode2 directly. rxModelVars({}) now supported. may now combine 2 models rxode2 rxAppendModel(). fact, long first value rxode2 evaluated ui model, can use c/rbind bind 2 models together. may now append model lines piping using %>% model(lines, append=TRUE) can also pre-pend lines %>% model(lines, append=NA) may now rename model variables, states defined parameters %>% rxRename(new=old) dplyr loaded: %>% rename(new=old) can fix parameters %>% ini(tcl=fix) %>% ini(fix(tcl)) well unfix parameters %>% ini(tcl=unfix) %>% ini(unfix(tcl))","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"internal-changes-2-0-6","dir":"Changelog","previous_headings":"","what":"Internal changes","title":"rxode2 2.0.6","text":"Strict R headers enforced places Since many changes incompatible, version renamed rxode2 rxode2() printout longer uses rules centered headings make display better larger variety systems.","code":""},{"path":"https://nlmixr2.github.io/rxode2/news/index.html","id":"bug-fixes-2-0-6","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"rxode2 2.0.6","text":"tad() related time features reset start infusion (opposed starting beginning end infusion)","code":""}]