rxode2 (development version)
Breaking changes
- Steady state with lag times are no longer shifted by the lag time and then solved to steady state, The concentration at the inter-dose interval is back-calculated.
New features
Steady state infusions with a duration of infusions greater than the inter-dose interval are now supported
Allow
ini(model) <- NULL
to drop ini block andas.ini(NULL)
givesini({})
(Issue #523)Add a function
modelExtract()
to extract model lines to allow modifying them and then changing the model by piping or simply assigning the modified lines withmodel(ui) <- newModifiedLines
Add Algebraic mu-referencing detection (mu2) that allows you to express mu-referenced covariates as:
Instead of the
cl <- exp(tcl + eta.cl + wt_cl * log.WT.div.70.5)
That was previously required (where log.WT.div.70.5
was calculated in the data) for mu expressions. The ui
now has more information to allow transformation of data internally and transformation to the old mu-referencing style to run the optimization.
Allow steady state infusions with a duration of infusion greater than the inter-dose interval to be solved.
Solves will now possibly print more information when issuing a “could not solve the system” error
Internal new features
- Add
as.model()
for list expressions, which impliesmodel(ui) <- ui$lstExpr
will assign model components. It will also more robustly work with character vectors
rxode2 2.0.11
CRAN release: 2022-11-01
Give a more meaningful error for ‘rxode2’ ui models with only error expressions
Break the ABI requirement between
roxde2()
andrxode2parse()
The new
rxode2parse
will fix thesprintf
exclusion shown on CRAN.
rxode2 2.0.10
CRAN release: 2022-10-20
Time invariant covariates can now contain ‘NA’ values.
When a column has ‘NA’ for the entire id, now ‘rxode2’ warns about both the id and column instead of just the id.
To fix some CRAN issues in ‘nlmixr2est’, make the version dependency explicit.
rxode2 2.0.9
CRAN release: 2022-10-19
Remove log likelihoods from ‘rxode2’ to reduce compilation time and increase maintainability of ‘rxode2’. They were transferred to ‘rxode2ll’ (requested by CRAN).
Remove the parsing from ‘rxode2’ and solved linear compartment code and move to ‘rxode2parse’ to reduce the compilation time (as requested by CRAN).
Remove the random number generation from ‘rxode2’ and move to ‘rxode2random’ to reduce the compilation time (as requested by CRAN).
Remove the event table translation and generation from ‘rxode2’ and move to ‘rxode2et’ to reduce the compilation time (as requested by CRAN).
Change the
rxode2
ui object so it is a compressed, serialized object by default. This could reduce theC stack size
problem that occurs with too many environments in R.Warn when ignoring items during simulations
Export a method to change ‘rxode2’ solve methods into internal integers
Bug fix for time invariant covariates identified as time variant covariate when the individual’s time starts after
0
.
rxode2 2.0.8
CRAN release: 2022-09-23
Breaking changes
rxgamma
now only allows arate
input. This aligns with the internalrxode2
version ofrxgamma
and clarifies how this will be used. It is also aligned with thellikGamma
function used for generalized likelihood estimation.ui
cauchy
simulations now follow the ui fornormal
andt
distributions, which means you can combine with transformations. This is because thecauchy
is at
distribution with one degree of freedom.ui
dnorm()
andnorm()
are no longer equivalent toadd()
. Now it allows you to use the loglikllikNorm()
instead of the standardnlmixr2
style focei likelihood. This is done by addingdnorm()
at the end of the line. It also meansdnorm()
now doesn’t take any arguments.Vandercorput normal removed (non-random number generator)
New features
Allow models in the
nlmixr2
form without anini({})
blockAllow model piping of an omega matrix by
f %>% ini(omegaMatrix)
Standard models created with
rxode2()
can no be piped into a model functionFamilies of log-likelihood were added to
rxode2
so that mixed likelihood nonlinear mixed effects models may be specified and run.The memory footprint of a
rxode2
solving has been reducedPiping now allow named strings (issue #249)
Bug fixes
rxode2
’s symengine would convertsqrt(2)
toM_SQRT_2
when it should beM_SQRT2
. This has been fixed; it was most noticeable in nlmixr2 log-likelihood estimation methodsrxode2
treatsDV
as a non-covariate withetTran
(last time it would duplicate if it is in the model). This is most noticeable in the nlmixr2 log-likelihood estimation methods.
New features
A new flag (
rxFlag
) has been created to tell you where in therxode2
solving process you are. This is useful for debugging. If outputting this variable it will always be11
or calculating the left handed equations. If you are using in conjunction with theprintf()
methods, it is a double variable and should be formatted with"%f"
.An additional option of
fullPrint
has been added torxode2()
which allowsrprintf()
to be used in almost all ofrxode2()
steps (inductive linearization and matrix exponential are the exception here) instead of just the integrationddt
step. It defaults toFALSE
.
rxode2 2.0.7
CRAN release: 2022-05-17
Removed accidental
^S
from news as requested by CRAN.Bug fix for more complicated mu-referencing.
Change rxode2 md5 to only depend on the C/C++/Fortran code and headers not the R files. That way if there is binary compatibility between
nlmixr2est
andrxode2
, a new version ofnlmixr2est
will not need to be submitted to CRAN.
rxode2 2.0.6
CRAN release: 2022-05-09
Breaking changes
Solving controls
The options for
rxControl
andrxSolve
are more strict.camelCase
is now always used. Old options likeadd.cov
andtransit_abs
are no longer supported, onlyaddCov
is supported.A new option,
sigdig
has been added torxControl()
, which controls some of the more common significant figure options likeatol
,rtol
,ssAtol
,ssRtol
, with a single option.
Simulations
For simulations,
$simulationSigma
now assumes a diagonal matrix. The sigma values are assumed to be standard normal, and uncorrelated between endpoints. Simulation with uncertainty will still draw from this identity diagonal matrixParallel solving now seeds each simulation per each individual based on the initial seed plus the simulation id. This makes the simulation reproducible regardless of the number of cores running the simulation.
Other breaking changes
Solved objects now access the underlying rxode model with
$rxode2
instead of$rxode
Since this change names,
rxode2
,rxode
andRxODE
all perform the same function.Options were changed from
RxODE.syntax
torxode2.syntax
.Assigning states with
rxode2.syntax.assign.state
(wasRxODE.syntax.assign.state
) is no longer supported.Enforcing “pure” assignment syntax with
=
syntax is no longer supported sorxode2.syntax.assign
is no longer supported (wasRxODE.syntax.assign
).Since R supports
**
as an exponentiation operator, the pure syntax without**
can no longer be enabled. Hencerxode2.syntax.star.pow
(wasRxODE.syntax.star.pow
) no longer has any effect.The “pure” syntax that requires a semicolon can no longer be enabled. Therefore
rxode2.syntax.require.semicolon
(wasRxODE.syntax.require.semicolon
) no longer has any effect.The syntax
state(0)
can no longer be turned off.rxode2.syntax.allow.ini0
(wasRxODE.syntax.allow.ini0
) has been removed.Variable with dots in variable and state names like
state.name
works in R. Therefore, “pure” syntax of excluding.
values from variables cannot be enforced withrxode2.syntax.allow.dots
(wasRxODE.syntax.allow.dots
).The mnemonic
et(rate=model)
andet(dur=model)
mnemonics have been removed.rate
needs to be set to-1
and-2
manually instead.The function
rxode2Test()
has been removed in favor of using testthat directly.Transit compartments need to use a new
evid
,evid=7
. That being said, thetransitAbs
option is no longer supported.ID
columns in input parameter data frames are not sorted or merged with original dataset any more; The underlying assumption of ID order should now be checked outside ofrxode2()
. Note that the event data frame is still sorted.
Additional features
The UI functions of
nlmixr
have been ported to work inrxode2
directly.rxModelVars({})
is now supported.You may now combine 2 models in
rxode2
withrxAppendModel()
. In fact, as long as the first value is a rxode2 evaluated ui model, you can usec
/rbind
to bind 2 or more models together.You may now append model lines with piping using
%>% model(lines, append=TRUE)
you can also pre-pend lines by%>% model(lines, append=NA)
You may now rename model variables, states and defined parameters with
%>% rxRename(new=old)
or ifdplyr
is loaded:%>% rename(new=old)
You can fix parameters with
%>% ini(tcl=fix)
or%>% ini(fix(tcl))
as well as unfix parameters with%>% ini(tcl=unfix)
or%>% ini(unfix(tcl))
Internal changes
Strict R headers are enforced more places
Since there are many changes that could be incompatible, this version has been renamed to
rxode2
rxode2()
printout no longer uses rules and centered headings to make it display better on a larger variety of systems.