nlmixr2/rxode2 mu referencing 2.0

This month, I will talk about about a new iteration of mu-referencing in nlmixr2, which I call mu2. What is mu referencing in nlmixr2 mu-referencing is combining a fixed effect, random effect and possibly a covariate in the form: [ \theta_\mathsf{pop}+\eta_\mathsf{individual}+\theta_\mathsf{covariate}\times \mathsf{DataCovariate} ] Often they are placed in exponentials for these to be log-normally distributed like: [ \exp\left(\theta_\mathsf{pop}+\eta_\mathsf{individual}+\theta_\mathsf{covariate}\times \mathsf{DataCovariate}\right) ] In optimization routines like saem, these are switched out with a single parameter during optimization classically called (\phi) in both NONMEM and Monolix.

nlmixr2 2.1.2/ rxode2 2.1.3

Both nlmixr2 and rxode2 have been updated, the below describes all the nlmixr2 related packages (maintained by the nlmixr2 team). Most of items in this release are bug fixes. One of the changes will make random number generation platform independent. Unfortunately, this means simulations from within rxode2/nlmixr2 will have different numbers drawn from random distributions but I think platform independence is important enough to push this change through. Versions of new packages nlmixr2 2.

nlmixr2/rxode2 user functions

One of the exciting new features of the recent rxode2 is user functions. This allows you to define your own R functions for use in nlmixr2 or rxode2. This new feature can really help make your code more concise by reusing custom transformations or apply more complex routines. This can call R functions directly, but at a cost – single threaded and slower execution. However, you can reduce the cost by converting the R functions to C automatically with rxFun().

nlmixr2/rxode2 steady state changes

One of the things that I changed in the last release was steady state. Once I created the nonmem2rx package, I searched for NONMEM control streams that we could test the import from, especially those with attached data. I ran across nmtests that uses NONMEM to test against mrgsolve and how it behaves. During that test I noticed that rxode2 did not follow the convention of NONMEM in lagged steady state doses.

nlmixr2 2.1.0/ rxode2 2.1.1

nlmixr2 2.1.0 was released 9 Jan 2024 which requires the newest (and recently released) engine packages nlmixr2est 2.2.0 (released 12 Dec 2023) and rxode2 2.0.10 (released 13 Dec 2023). I will be blogging about a few new features but want to mention a few now: More flexible mu referencing User defined functions can now be used with nlmixr2 and rxode2 Event handling changes Many new estimation methods for population only fitting The truncated changelog for these packages are below:

rxode2 2.0.9/2.0.10

rxode2 2.0.9 has been released, and rxode2 2.0.10 will be released soon! I want to personally thank all those who have submitted issues, and helped with the development. Without the support rxode2 wouldn’t be the tool it is today. This is the first CRAN-visible release since rxode2 2.0.7 and I would like to highlight a few new interesting features: ‘rxode2’ can now have more flexible model functions The key features are:

mrgsolve vs rxode2

mrgsolve vs rxode2 One of the most common questions I get is, “What are the differences between mrgsolve (1) and rxode2?”. The most common reasons for this question are: I really don’t know what tool to use, what are the advantages of each? I really like one of the tools (either mrgsolve or rxode2) and I want to let my colleagues know how nice my favorite tool is. I am not really the best person to answer this question since I am most familiar with rxode2 and can’t answer all the questions about mrgsolve.

RxODE and rxode2

RxODE vs rxode2 Since rxode2 came out recently, I am getting many questions about what is the difference between rxode2 and RxODE. I think the biggest reason for the question is – is this update going to break all the nice things I already do with RxODE? Or maybe why should I bother to change? I feel the same way when I have big changes in things I use. For me, I love the ability to pipe and change data with the tidyverse, and similar tools, but hate when they change things that affect my code.