Skip to content

Releases: nlmixr2/rxode2

v5.1.2

Choose a tag to compare

@mattfidler mattfidler released this 03 Jun 13:11
07d6beb

rxode2 5.1.2

  • geom_cens() / stat_cens() no longer emit "Ignoring unknown
    aesthetics" warnings when censoring aesthetics are mapped.
    Documentation corrected to describe the two supported lowercase
    forms: lower/upper (both required) or cens (with optional
    limit). The two forms cannot be mixed, lower and upper are
    now required together, and limit without cens is rejected
    rather than silently ignored.

  • Checks for is.loaded() before loading a rxode2 model. This helps fix
    the m1 ODR issue shown in nlmixr2est.

  • Moved dim.rxEt() here instead of in nlmixr2est

v5.1.1

Choose a tag to compare

@mattfidler mattfidler released this 28 May 10:13
da45cd6

rxode2 5.1.1

  • Various low level fixes to allow nlmixr2est to have parallelized
    focei.

  • Parallelized the rxode2 data.frame creation.

  • Use ALTREP for id, sim.id, repeated simulation event columns
    (evid, cmt, ss, amt, rate, dur, ii, time),
    covariates and kept variables when blocks are identical across
    simulations; falls back to filled out columns when runtime event
    mutation is detected (evid_() push growth / per-individual event
    reallocation). Also factors cannot currently be represented by
    altrep, so they are forced to be fully represented.

  • Change compile flags and compiler directives for rxode2 models to
    speed up how they run.

  • Have a pre-allocated context pool for lsoda in both liblsoda and
    lsoda (faster because memory doesn't need to allocated and
    deallocated so often)

  • Change OMP scheduling to dynamic to try to help load-balance the ode
    solving per subject.

  • Simulation normal random numbers before integrating them into your
    solve.

  • Add evid_() function to allow arbitrary doses and observations in
    a rxode2 model.

  • Add splitBolus() function to split or relocate doses in the final
    output. This is done at translation time (but is respected by
    evid_()) so in general is a bit faster then arbitrary doses in an
    estimation step for nlmixr2

  • Add %% operator to valid rxode2 syntax

  • Create per-individual ODE solving tolerances for use in focei.

  • Fix potential security and memory-management issues that could lead
    to crashes or undefined behavior including integer overflow

  • Change dop853 to allow per state tolerances and parallel solving
    like liblsoda.

  • Change dop853 to be able to use dense=TRUE for the 8th order
    dense polynomial interpolation between dosing events.

  • Now dop853 can be parallelized per thread.

  • Change mtime state-based dosing to use less memory.

  • Add plogis() translation inside rxode2 to it's c-based expit()
    functions

  • Refactored et() to be mostly in R, fixing many issues (#722 , #725, #858,
    #732, #723, #721, and #724) and allowing dosing/sampling windows to
    use ii, addl and until (realized immediately)

  • Add linToOde() convert linCmt() models to ODEs.

  • Fix IOV simulation issue observed in #982.

  • Fix sticky variable calculation (#1013, #1025)

  • More easily identify initial conditions (#948)

  • Fix sensitivities in the linCmt() that did not match the ODE (#1018, #1012)

  • Added in-solve addition of observations (obs()), bolus doses
    bolus(), infusion doses infuse() or infuseDur(), system resets
    reset(), compartment replacement replace(), multiplicaton events
    multiply(), and phantom/transit compartment events phantom().
    For more granular control you can also use evid_().

  • Refactor string comparison in rxode2 so that it is actually doing
    an integer comparison when running the ODE solving routine
    (simulation and estimation) instead of using a string comparison.
    It makes using strings like (sex == "male") run faster.

  • Add rxMemoryEstimate() and rxMemSummary() to estimate the amount
    of memory that is required for a rxode2 solve.

  • Add tolFactor, a per individual change of the tolerances to be
    used in solving. This is used have individualized tolerances from
    nlmixr2est.

  • Add serializeFile as an option to save the rxode2 C fitting data and
    then restore as needed.

What's Changed

Full Changelog: v5.0.2...v5.1.1

v5.0.2

Choose a tag to compare

@mattfidler mattfidler released this 20 Mar 15:53
c926192

rxode2 5.0.2

  • Allow state-dependent dur(), rate(), alag(), mtime() now
    allow states to modify their behavior. The state value at the time
    of the event is used to calculate any changes.

  • Fix: all six ODE solve loops now use precomputed timeThread values for
    event times instead of recomputing via getTime_() with ypNA, preventing
    NA propagation for any state-dependent lag scenario.

  • Export the internal .rxGetSeed() and .rxSetSeed() for use in the
    nlmixr2save package.

  • Bug fix for .copyUi() with the new format (5.0+) of rxode2 ui models

  • With new versions of R, getOption() is no longer a bottleneck, so
    syncing to local variables is no longer done internally

  • Allow transforms to return NA.

  • Drop magrittr and use |> instead of %>% in the examples
    (requires R 4.1)

  • Change default model serialization to bzip2 and move binary code
    generation inside of C.

  • Fix where getting seed saves/modifies the RNG scope, as well as a bug fix
    for restoring the random seed state

What's Changed

Full Changelog: v5.0.1...v5.0.2

v5.0.1

Choose a tag to compare

@mattfidler mattfidler released this 09 Dec 18:21
364909e
  • Change random number generation to always return doubles internally as well as no longer take a rxode2 individual structure, this is inferred by the thread number.

  • Change string representation of model variables to internal binary C code (to avoid macOS M1 sanitizer issues with strings).

  • Allow user to change the internal serialization type with options("rxode2.serialize.type"); Currently can be one of “qs2”, “qdata”, “base”, “bzip2” and “xz”. This option must be set before rxode2 is loaded, once loaded it keeps the option initially set. This is set to xz which is from base R, but could be sped up with either "qs2" (more future proof) or "qdata" (a bit faster).

  • Removed lsoda CDIR$ IVDEP directive, as requested by CRAN.

What's Changed

Full Changelog: v5.0.0...v5.0.1

v5.0.0

Choose a tag to compare

@mattfidler mattfidler released this 28 Nov 13:51
f272549

rxode2 5.0.0

  • Better error for tad(depot) when linCmt() doesn't include a
    depot compartment.

  • Remove qs dependency; For rxode2 ui objects, use lists instead of
    serialized objects. The internal C++ code still generates qs2
    sterilization objects (#950)

  • Fixed translation for censoring/limit to account for a possible
    CMT variable before the CENS / LIMIT column (#951, #952)

  • Added dmexpit() for getting the diagonal Jacobian.

  • Added special handling of mixest and mixunif.

What's Changed

New Contributors

  • @Copilot made their first contribution in #953

Full Changelog: v4.1.1...v5.0.0

v4.1.1

Choose a tag to compare

@mattfidler mattfidler released this 08 Oct 12:05
3bc0808

rxode2 4.1.1

  • Stacking for multiple-endpoint ipredSim now matches
    multiple-endpoint sim; Issue #929

  • Fix occasional $props that threw an error with empty properties
    (when using properties like tad0()); Issue #924

  • Allow mixture models mix() to be loaded with rxS() as a step to
    support mixtures in nlmixr2's focei; Issue #933.

  • Identify the correct transformation type for iov variables (#936)

  • Fix multiple compartment simulation edge cases where simulations
    were not being performed (#939)

  • When referencing cmt in models, the variable is forced to be CMT
    (related to #939)

v4.1.0

Choose a tag to compare

@mattfidler mattfidler released this 29 Aug 18:53
8748a54
  • Change rxui $ evaluation when completing in rstudio, fixes strange calculations popping up in rstudio (#909)

  • Add orphan rxode2 model unloading when using rxUnloadAll(), and change the return type to always be a boolean.

  • Add assertRxUiIovNoCor to assert IOVs have no correlations in them.

  • Handle the levels for inter-occasion variability in the ui better (#614)

  • Create a new function mix() that will allow mixture models to be simulated in preparation of mixture support in nlmixr2. This allows mixture models to be specified as: v = mix(v1, p1, v2, p2, v3) where the probability of having v=v1 is modeled by p1, v=v2 is modeled by p2, and v=v3 is modeled by probability 1-p1-p2.

  • Created new functions mlogit() and mexpit() to convert probabilities used in mixture models to log-scaled values. mlogit() converts the probabilities to log-scaled values (using root-finding) and mexpit() converts the log values into probabilities. The equation for the conversion of log to probabilities is $p_i = \frac{exp(x_i)}{1+\sum_{j=1}^{N-1}exp(x_j)}$

  • Added new assertion assertRxUiNoMix which throws an error when a mixture model is present (ie mix())

  • Fix for label processing when calling rxode2(uiModel)

What's Changed

Full Changelog: v4.0.3...v4.1.0

v4.0.3

Choose a tag to compare

@mattfidler mattfidler released this 24 Jul 16:50
a00b7fb

rxode2 4.0.3

  • For CRAN's m1 ASAN checks of nlmixr2est, loading and unloading the
    same dll or by deleting the dll and recreating the exact same code,
    and then loading the dll will cause the ASAN check to flag an odr
    violation. Because of this, a mechanism to not unload dlls has been
    added. This allows the next version of nlmixr2est to not have
    issues with Mac m1 san checks.

v4.0.2

Choose a tag to compare

@mattfidler mattfidler released this 21 Jul 17:36
44ccd4f

rxode2 4.0.2

  • At the request of CRAN, be a bit more careful so that names are not
    duplicated. Now include the md5 hash, a global counter and random 4
    digit and number combination. In addition add the name of the
    original function so it will be easier to debug in the future.

  • Fall back to data.frame rbind when rbind.rxSolve() fails

What's Changed

Full Changelog: v4.0.1...v4.0.2

v4.0.1

Choose a tag to compare

@mattfidler mattfidler released this 18 Jul 00:44
ea9b84d

rxode2 4.0.1

  • Add the ability to use rbind for solved rxode2 frames.

  • Fix LTO issue for _rxode2_calcDerived

What's Changed

Full Changelog: v4.0.0...v4.0.1