The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
By default nlmixr2save writes fits into the working
directory: fit := nlmixr2(...) caches to
./fit.zip, and saveFit(fit) writes
./fit.zip. In a project with more than a couple of models,
that quickly mixes fits in with scripts, reports and data. This article
shows how to keep them all in one place – a models/
directory – by default.
:= fits in a directoryThe := operator reads three options:
| Option | Default | Effect |
|---|---|---|
nlmixr2save.dir |
"." |
Directory the cache files live in (created when needed) |
nlmixr2save.prefix |
"" |
String prepended to the variable name to name the cache file |
nlmixr2save.check |
TRUE |
Whether a cached fit is checked against the current model, data and arguments |
To send every cache to models/, set the directory
once:
library(nlmixr2)
library(nlmixr2save)
options(nlmixr2save.dir = "models")
fit := nlmixr2(one.cmt, theo_sd, est = "focei") # fits, writes models/fit.zip
fit := nlmixr2(one.cmt, theo_sd, est = "focei") # loads models/fit.zipThe directory is created the first time something is cached there.
Other values assigned with := (simulations, or functions
registered with saveFitRandom()) are cached there too, as
models/<name>.rds.
A prefix keeps caches from different analyses apart in the same directory:
options(nlmixr2save.dir = "models", nlmixr2save.prefix = "pk-")
fit := nlmixr2(one.cmt, theo_sd, est = "focei") # models/pk-fit.zipThe prefix applies only to the file name on disk. The variable is
still fit, and inside the archive the fit is stored under
its bare name, so models/pk-fit.zip is an ordinary fit
archive that loadFit() reads like any other.
Options last for the R session, so set them where every script and report picks them up.
A project .Rprofile. R runs the
.Rprofile in the directory it starts in, so the setting
applies to every session in the project:
The setup chunk of a report. When a report should be self-contained, set the option at the top instead:
Only for part of a script.
withr::local_options() or
withr::with_options() restore the previous value
afterwards:
withr::with_options(list(nlmixr2save.dir = "models/sensitivity"), {
fitLow := nlmixr2(one.cmt, theo_sd, est = "focei")
fitHigh := nlmixr2(one.cmt, theo_sd, est = "saem")
})A relative nlmixr2save.dir is resolved against the
working directory at the time of the :=. An R
Markdown or Quarto document is rendered from its own folder, so
"models" means reports/models/ for a report in
reports/, but models/ at the project root for
a script run from there. To point everything at one directory, give an
absolute path, for example with the here package:
saveFit() and loadFit() do not read
nlmixr2save.dir; give them the path directly. The directory
is created if needed:
saveFit(fit, "models/run001") # writes models/run001.zip
fit2 <- loadFit("models/run001.zip") # or loadFit("models/run001")The archive holds the fit under its bare name (run001),
not the path it was saved to, so models/run001.zip can be
moved, renamed or sent to a colleague and still loads from wherever it
ends up. loadFit() extracts it to a temporary directory, so
loading never writes into your working directory.
By default := refits when the cached fit no longer
matches the model, the data or the arguments, and when the fit was made
with a different nlmixr2est or rxode2 version
it asks what to do (or, when rendering, warns). For a
models/ directory committed to version control, where the
cache is the result, turn the check off so a cached fit is
loaded whenever it exists:
:= then fits only when the file is missing, and compares
nothing – not the model, not the data, and not the package versions.
Delete the file, or call nlmixr2saveInvalidate(), to refit.
See vignette("version-tracking") for how the two checks
combine.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.