Recent Releases of mrgsolve

mrgsolve - mrgsolve 1.5.3

  • D_CMT, ALAG_CMT, and simeta() are now available to use in $TABLE ($ERROR), $EVENT, and $PRED code blocks (#1290).

  • Added END_OF_INFUSION syntax, which is true on the internal record that stops an infusion (#1288).

  • mwrite_yaml() and mwrite_cpp() now render block names in upper case, even for blocks coded with lower case in the original model file (#1282).

  • When creating an evt::regimen object (via evtools plugin), the default start time is now the time when the object was created; before this change, the default time was always 0 (#1266).

  • Added methods for evt::regimen objects (via evtools plugin) under the name time_next(); this either gets or sets the time of the next dose in the regimen (#1266).

Bugs Fixed

  • Fixed an issue where time values in the simulated output data frame were off by a very small amount, due to issues with floating point mathematical operations (#1287).

  • Fixed a problem writing a model to file with mwrite_yaml() and mwrite_cpp() when lower case block naming was used (#1282).

  • Fixed a bug where invalid item passed through the $SET block caused an error when reading / building a model (#1271).

  • Fixed a bug where mrgsolve was not matching NONMEM behavior when an EVID=4 record was included in the data set with SS=1; mrgsolve will now match NONMEM behavior in this case, with the output being identical to EVID=1 with SS=1 (#1262).

- R
Published by kylebaron 11 months ago

mrgsolve - mrgsolve 1.5.2

  • Add $EVENT block for writing code related to dosing or other events that are implemented through model code rather than the data set (#1230).

  • Add evt::reset() and evt::reset(self) functions under the evtools plugin; these reset the compartments in a model; overloaded functions are also provided to reset and dose with bolus or infusion (#1222).

  • Completed dosing functionality in evtools plugin; use evt::addl() to schedule additional doses through an evt::ev object; use evt::ii() to set the dosing interval; use evt::ss() to advance the pharmacokinetic system to steady state just prior to dosing; evt::cmt() sets the compartment number; evt::amt() sets the dose amount; evt::rate() sets the infusion rate; see the user guide for the specific signatures that are available (#1227).

  • Add evtools model to modlib(), illustrating how to implement dosing regimens from inside the model a few different ways (#1230).

  • Added more comprehensive checking for duplicate blocks in a model file; duplicate blocks are always handled when allowed; an error message is always issued when duplicates are not allowed (#1238).

  • Code to audit $ODE (or $DES) code, looking for an equation for every model compartment was refactored to use a common approach for both traditional models and models written with the nm-vars plugin; regardless of approach, the user will be warned if mrgsolve does not detect code relevant to every model compartment; the audit system can be bypassed by including the @!audit block option to $ODE (#1235).

  • The autodec plugin was lightly refactored to avoid false positive detection of variables declared as double; plans are in place to narrow the scope of what is detected for declaration in future releases (#1234).

  • R help files (.Rd) reviewed and revised for consistency and formatting (#1246).

- R
Published by kylebaron over 1 year ago

mrgsolve - mrgsolve 1.5.1

  • Fixed yaml_to_cpp() example code to prevent saving the file to the working directory (#1220).

- R
Published by kylebaron almost 2 years ago

mrgsolve - mrgsolve 1.5.0

  • New functions mwrite_yaml() and mwrite_cpp() can write a model object back to a file, accounting for all updates since the model was read from native mrgsolve format using mread() (#1213).

  • New function mread_yaml() for reading back models written out with mwrite_yaml() (#1213).

  • New functions in evtools plugin: evt::replace() works like evt::bolus(), but will replace the amount in a given compartment rather than add to it (#1203).

  • The nm-vars plugin now exposes DEXP(), LOG10(), COS() and SIN() for use in the mrgsolve C++ code blocks (#1199).

  • An error is now generated when KA is equal to CL/VC while simulating from the one-compartment model with analytical solution invoked through $PKMODEL (#1179, #1197).

Bugs Fixed

  • A bug was fixed when certain data frame inputs were passed to as_data_set() (#1115, #1196).

- R
Published by kylebaron almost 2 years ago

mrgsolve - mrgsolve 1.4.2

  • An error will now be issued at simulation time when simulation data sets (data and idata) contain non-numeric data in columns sharing names with parameters; non-numeric data in columns with certain reserved names (like AMT, RATE, II, ADDL, etc.) will also result in an error (#1193).

- R
Published by kylebaron about 2 years ago

mrgsolve - mrgsolve 1.4.1

  • Fix bug in evt::regimen.ii(double) where timing of next dose was not as expected (#1170).

- R
Published by kylebaron over 2 years ago

mrgsolve - mrgsolve 1.4.0

mrgsolve 1.4.0

  • evtools is a new plugin providing API for dynamic dosing from within the model; functions and classes are in the evt namespace (#1149).

  • regimen is a new class located in the evt namespace via the evtools plugin; regimen objects can execute doses in a regular regimen (#1156).

  • mread() and mcode() no longer print a message before the required waiting period on model recompile (#1145).

  • ev_rep() output rownames are cleaned up before returning (#1158).

  • C++ model code blocks (GLOBAL, PREAMBLE, MAIN/PK, ODE/DES, TABLE/ERROR) are now checked for <object>.<attribute> syntax; if found, symbols on both sides of the dot become reserved words when loading and compiling that model; specifically, an error will be generated if either side of the dot (<object> or <attribute>) is found in parameter names, compartment names, ETA labels, or EPS labels (#1159).

  • ETA values are always simulated from OMEGA, even when the user requests they get scraped from data or idata via etasrc argument to mrgsim(); this ensures EPS are reproducible for model runs where etasrc = "omega" (default, ETA are simulated) or, for example, where etaasrc = "data.all" (scrape ETA from the data set) (#1163).

Bugs Fixed

  • Fixed a bug where modeled doses scheduled to happen now were ignored if the time attribute was set to a value prior to the current simulation time (#1152).

  • Fixed a bug in how doses were computed using the until argument to ev() (#1154).

- R
Published by kylebaron over 2 years ago

mrgsolve - mrgsolve 1.3.0

  • The evdata object for modeled events now contains a check_unique member; when set to false, the event will be processed without checking for a matching record in the modeled event log (#1119).

  • The amt attribute in evdata modeled event objects is now considered when looking for duplicate records in the modeled event log (#1119).

Bugs Fixed

  • Fixed a bug where multiple lagged doses given at the same time but with different bioavailability were all given the bioavailability of the last dosing record (#1129, #1130).

  • Fixed a bug where modeled infusions given now were never turned off (#1131).

  • Fixed a bug where the self object (type: databox) could not be passed into functions written into header files that were included through $INCLUDE; these header files are now included immediately preceding any user code written into $GLOBAL (#1125, #1126).

  • Fixed a bug where modeled event log was not getting reset after simulating the first individual; this resulted in events not getting executed in subsequent individuals when matching events were executed in the first individual; this affects modeled events only, not events coming from the data set (#1117, #1118).

  • Fixed a bug in detecting which compartments are receiving doses (#1112, #1113).

- R
Published by kylebaron over 2 years ago

mrgsolve - mrgsolve 1.2.0

  • Data set records at the same time within individual will receive different EPS draws; this is a change from previous behavior where records with the same time received the same value for EPS (#1110).

- R
Published by kylebaron over 2 years ago

mrgsolve - mrgsolve 1.1.0

  • Add new functionality for assessing consistency between names on input data set and parameter names (#1078).

    • New function check_data_names() executes the check.
    • New model specification block $INPUT for marking parameters as "inputs" and expecting them to be present in the data when check_data_names() is called.
    • New $PARAM block attributes @input and @tag for adding tags to parameters which will be checked when check_data_names() is called.
    • New function param_tags() to list parameters and tags for a given model.
  • Now checking TIME and time when assessing upper / lower case name consistency of input data sets (#1099).

  • ETAs can now be passed via idata by passing eta_src as either idata or idata.all to mrgsim() (#1092).

  • Internal refactor of mechanics checking for user interrupt during simulation (#1088).

  • Minor re-factor of mrgsim_nid() and documentation update to be in line with original intent; no meaningful change in functionality (#1086).

  • parameter_list objects can now be passed to param() (#1076).

  • ev_rx() syntax gains & operator allowing specification of multiple events at a single time (#1072).

  • Kyle Meyer added as contributor (#1095).

  • modlib() model 1005 re-coded to reflect the "traditional" model specification syntax (#1069).

  • The model object update() method will again issue a warning when unrecognized arguments are passed (#1068).

Bugs Fixed

  • Fixed bug where ETA in the first column of data was not recognized when using eta_src = "data" or eta_src = "data.all" (#1095).

- R
Published by kylebaron almost 3 years ago

mrgsolve - mrgsolve 1.1.1

  • Remove .x from matlist documentation object per new NOTE output from rdevel (#1103, #1104).

- R
Published by kylebaron almost 3 years ago

mrgsolve - mrgsolve 1.0.9

  • Fix signatures for compiled.mrgmod() and as_tibble.mrgsims() based on new R-devel check findings (#1065).

- R
Published by kylebaron about 3 years ago

mrgsolve - mrgsolve 1.0.8

  • SIGMA() is a new model macro which allows users to access on-diagonal elements of SIGMA in the model (e.g. SIGMA(2) in $ERROR) (#1051, #1052).

  • mrgsim() and mrgsim_q() gain an etasrc argument, allowing ETAs to be either simulated from OMEGA (new default and previously the only behavior) or taken from the input data set (new option), similar to the way parameters can be scraped from the data set (#1037).

  • @etas is a new option for use with the $CAPTURE block to let users name ETAs to be captured into the simulated output; for example, use @etas 1:last to capture all model ETAs in the simulated output (#1055).

  • Drop CXX_STD statement from Makevars file and DESCRIPTION to be consistent with current changes in R-devel; mrgsolve continues to require compiler capable of implementing C++11 standard, but this should be selected automatically by R (#1060).

  • mrgsolve now depends on R >= 3.6.2 (#1060).

Bugs Fixed

  • Fix bug when the path argument is used in the $NMXML or $NMEXT blocks; this bug was introduced through the @cppstem feature in version 1.0.7 (#1046, #1048).

  • Fix bug in mread_cache() where the project directory wasn't getting rendered properly when passing the complete path to the model specification file (#1056).

- R
Published by kylebaron about 3 years ago

mrgsolve - mrgsolve 1.0.7

  • $NMXML and $NMEXT now accept the run argument set to "@cppstem" (i.e
    run = "@cppstem"); in this case, the stem of the NONMEM run will be assumed to be the same as the stem of the mrgsolve model file (#1025).

  • Missing values (NA) in input data sets will be replaced with 0 for the following columns: AMT, CMT, EVID, II, ADDL, RATE, SS as well as their lower case counterparts (#1030).

  • Refactored include order when building a model; this is an internal update and not expected to be visible to the user (#1038).

- R
Published by kylebaron over 3 years ago

mrgsolve - mrgsolve 1.0.6

Bugs Fixed

  • Fix bug in TOUCH_FUNS where parameter and compartment lists were not getting generated properly when mrgsolve was not loaded; bug was detected and fixed prior to upload to CRAN or MPN (#1013).

- R
Published by kyleam almost 4 years ago

mrgsolve - mrgsolve 1.0.5

  • Changed behavior for dosing records where EVID = 4 and SS != 0 to match what is done by NONMEM: the system will be advanced to steady-state but will not be reset; behavior prior to 1.0.5 release was to advance to steady-state and then reset (#1011).

  • Any column in an input data set that has a class attribute will now be dropped in addition to non-numeric columns; this includes columns that are integer64 which can be present in data frames derived from data.table::fread() or other .csv readers (#1008).

  • The $MAIN and $TABLE blocks will no longer get called for actual dose administration records with lag times; this could change time after dose calculations or other calculations that could be happening in those blocks when the actual administration is taking place (#992).

  • Code to update the parameter list was re-factored to be much more efficient (#978).

Bugs Fixed

  • Fix bug where apparent dosing events for additional doses with lag times were not getting scheduled (only records for the actual administration); this doesn't change the simulated output but could change time after dose calculation (#992).

  • Fix bug where special nm-vars variables were not getting recognized as valid capture items during dynamic capture (#987).

  • Fix bug when updating the parameter list with a data frame that included non-numeric columns that were not parameters (#978).

- R
Published by kylebaron almost 4 years ago

mrgsolve - mrgsolve 1.0.4

  • Fix bug where as_data_frame() was not properly working when leading event object was evd type (#948, #955).

  • Add uctran() to convert nmtran data names to upper case (#955).

  • Both lctran() and uctran() are generic and work on data.frame or event (ev) objects (#949, #955).

  • Fix bug where data records with EVID = 3 were getting shifted in time by ALAG (#964, #969).

  • Small negative eigenvalues from OMEGA or SIGMA are set to zero in multivariate normal simulation of ETA and EPS, following the pattern seen in MASS::mvrnorm() (#956, #957).

  • Fixed bug where template parameters (T) were getting modified when nm-vars plugin was used in conjunction with mrgx plugin (#965, #968).

- R
Published by kylebaron about 4 years ago

mrgsolve - mrgsolve 1.0.3

  • Removed assert() statement in LSODA code found by CRAN check (#943).

  • Test class using inherits() not class() from CRAN check (#943).

These changes were made in two versions (1.0.2 and 1.0.3) after iteration with CRAN checks.

- R
Published by kylebaron about 4 years ago

mrgsolve - mrgsolve 1.0.1

  • Add LOG(), EXP(), SQRT() macros when nm-vars plugin is invoked

    931, #936.

  • Use evd() to create an event object which renders nmtran names in upper case (e.g. TIME rather than time) #935, #919.

  • Fixed bug where rate was not getting set for modeled events #934.

  • Fixed bug where self.stop_id() and self.stop_id_cf() had reversed behavior as documented #927, #928.

  • Refactored EVID=3 behavior to leave NEWIND as-is #934.

- R
Published by kylebaron about 4 years ago

mrgsolve - mrgsolve 1.0.0

  • New model syntax: THETA(n) is interpreted as THETAn in the model code; THETA is now a reserved word (#837, #891, #892).

  • New functions collapse_omega(), collapse_sigma() and collapse_matrix() added which help to reshape OMEGA and SIGMA matrix objects with multiple blocks (#897, #900).

  • New plugin nm-vars which implements NONMEM-like syntax for referring to compartments, differential equations, bioavailability factor, infusion duration and rate, and lag time (#904, #891).

  • New plugin autodec which will find user-defined variables in the model code and automatically declare them as type double (#905, #893).

  • Use ii as spacer for setting the between-dose interval when putting event objects in a sequence (c.f. wait) (#906, #901).

  • Start deprecatingsimeta(n) and simeps(n), calls to simeta() or simeps() with an integer argument thus limiting the update to just a single ETA(n) or EPS(n); use in model code will generate warning when loading the model that contains the n integer value (#908, #909).

- R
Published by kylebaron over 4 years ago

mrgsolve - release/0.11.2

mrgsolve 0.11.2

  • In pk2iv, change scaling volume for CENT from V2 (incorrect) to V1 (#831, #832, #833)

  • Fix bug collating multiple $OMEGA or $SIGMA matrices when parsing a model (#863)

  • Refactor how debugging information is processed when using the recover argument to mread() (#853)

  • Fix typo in documentation for as_cmat(); the off-diagonals are assumed to contain correlations (#856)

  • Wrote a as.data.frame.matrix() function in Rcpp; all simulation results return from the C++ simulation code as a data frame (#857)

  • Fix bug where dynamic capture (via mread()) was not allowed for variables declared in $GLOBAL (#868)

- R
Published by kylebaron over 4 years ago

mrgsolve - mrgsolve 0.10.5

  • Suppress warnings when non-numeric columns are dropped when those columns are not relevant to the simulation #709
  • Add $ERROR as an alias for $TABLE in the model file #710
  • Fix bug where warning messages during steady-state finding referenced rtol and atol rather than ss_rtol and ss_atol #703
  • Fix annotation parsing bug when the description included semi-colon #696
  • loadso issues a proper error when the model dll doesn't exist #724
  • Try loading the model with loadso once of the model isn't loaded at the time of simulation #725
  • Throw an error when addl or ss are negative #733
  • Internal refactoring so that there is a hard solver reset when parameters that are copied from data change #744
  • Add tad plugin to calculate time after dose in a specific compartment #702
  • Internal refactor carry_out to respect default nocb behavior #759; see also #744
  • Throw an error when matlist labels are duplicated #730
  • Add capture argument to mread to add to $CAPTURE when compiling the model #704

- R
Published by kylebaron about 5 years ago

mrgsolve - mrgsolve 0.10.8

  • Allow simulation from compartmental models with negative times #778
  • Enable dynamic capture of pre-processor directives at compile time #776
  • Fix error message when requesting invalid items during dynamic capture #776

- R
Published by kylebaron about 5 years ago

mrgsolve - mrgsolve 0.10.9

  • Dosing into a compartment that is off at the time of the dose turns the compartment back on regardless of whether bioavailability is zero or non-zero (this is a bug fix where the compartment was not turned on when bioavailability was zero). (#800)
  • simeta() and simeps() now accept an (optional) integer argument to limit re-simulation to single ETA or EPS values (#789)
  • as.list(mod) output now includes a data frame of C++ variables and pre-processor definitions in the cpp_variables slot. (#780)
  • $PARAM, $THETA, $CMT, $INIT, $OMEGA and $SIGMA blocks all include the directives @object and @as_object so that block contents can be specified programmatically. @object names an object that was coded into $ENV and @as_object indicates that the block contains code to realize the object. See ?BLOCK_PARSE help topic for more information on how this all works. (#783)
  • $NMEXT now lets the user select between multiple tables for scraping parameter estimates. (#782)

- R
Published by kylebaron about 5 years ago

mrgsolve - mrgsolve 0.11.0

- R
Published by kylebaron about 5 years ago

mrgsolve - mrgsolve 0.11.1

  • mrgsim() will now periodically check for user interrupt signal so that long-running simulations can be stopped using Esc and / or Control-C; the check interval can be modified through the interrupt argument to mrgsim(), but for most applications, this shouldn't need to be changed (#823)
  • mrgsim() will issue a warning if duplicate columns are found in simulated output and rename duplicates using make.names(); thanks @FelicienLL for the report (#827, #828)
  • Users can now turn compartments to OFF when they have active infusions running; this was previously an error (#822)

Milestone: https://github.com/metrumresearchgroup/mrgsolve/milestone/10

- R
Published by kylebaron about 5 years ago

mrgsolve - Release 0.10.3

- R
Published by kylebaron almost 6 years ago

mrgsolve - v0.10.1.9003

- R
Published by kylebaron about 6 years ago

mrgsolve - v0.10.1

This version released to CRAN

- R
Published by kylebaron over 6 years ago

mrgsolve - Release v0.10.0 to CRAN

Archive.zip

all_tests.csv.zip

- R
Published by kylebaron over 6 years ago

mrgsolve - Release v0.9.2 to CRAN

- R
Published by kylebaron almost 7 years ago

mrgsolve - Release v0.9.1 to CRAN

- R
Published by kylebaron almost 7 years ago

mrgsolve - Release to CRAN

- R
Published by kylebaron over 7 years ago

mrgsolve -

- R
Published by kylebaron over 7 years ago

mrgsolve - Released to CRAN

- R
Published by kylebaron about 8 years ago

mrgsolve - Version 0.8.11

Released to CRAN 2018-04-26

- R
Published by kylebaron about 8 years ago

mrgsolve - Release to CRAN

- R
Published by kylebaron over 8 years ago

mrgsolve - Release to CRAN

Important changes

  • The bioavailability parameter now gets updated with each and every dose, regardless of whether it was explicitly coded in the data set or implicitly via addl. The previous behavior had bioavailability parameter locked at the value at the time the initiating dose was implemented
  • Updated package dependency requirements. Notably, mrgsolve now requires Rcpp >= 0.12.12 and dplyr >= 0.7.1

New Features

  • Dosing records with ss=2 are recognized, allowing combining of steady-state dosing regimens under linear kinetics (e.g. 10 mg QAM and 20 mg QPM) (#221)
  • Added function (inventory) that reconciles model parameters with names in an object (e.g. a simulation data set) verify that required parameters can be found in the data object.
  • Added ev_rep, ev_seq, seq.ev, and ev_repeat functions for combining event objects

Bugs fixed

  • PR #214 from @dastoor fixes compatibility issue with new dplyr
  • Fixed bug in deslist implementation #222
  • PR #238 fixes incorrect steady-state values when dose is associated with lagtime (#239)

- R
Published by kylebaron almost 9 years ago

mrgsolve - mrgsolve 0.8.6

Minor changes to improve portability and release to CRAN.

- R
Published by kylebaron about 9 years ago

mrgsolve - mrgsolve 0.8.3

Addresses issue to get compatible with solaris.

- R
Published by kylebaron about 9 years ago

mrgsolve - mrgsolve 0.8.2

This is the first release to CRAN.

- R
Published by kylebaron about 9 years ago

mrgsolve - mrgsolve 0.7.10

New Authors

  • Devin Pastoor is now listed as a contributor. Thanks for all of your help!

New Features

  • Added automatic, on-demand output of time-after-dose (tad) in the simulated output. Use mrgsim(tad=TRUE).
  • Several new functions added to $PLUGIN mrgx, including mrgx::get<T> for getting objects out of $ENV or a package namespace and mrgx::mt_fun() that is just a function that you can assign when declaring Rcpp::Function.
  • Added object argument to idata_set and data_set to get a data.frame (or function to call that returns data.frame) out of $ENV to use for simulation.

Changes / additions

  • Added cmt argument to $PKMODEL. When cmt is set to a character vector or a comma-separated string, $PKMODEL infers the number of compartments and declares them in the model. This means a separate $CMT block is not required when using $PKMODEL.
  • Added cols argument to as_bmat and as_dmat so that a character vector of names can be specified (rather than regular expression) to select data for creating matrix.
  • The preclean argument now causes unlink to be called on the model build directory.
  • Added several functions to help work with $ENV: ls_env, get_env, re_eval_env, update_env.
  • When a dose is administered into a compartment that is off, the compartment is now turned on and the dosing is allowed to proceed. This is a change from previous behavior, where an error was generated.

mrgsolve_0.7.10.tar.gz

- R
Published by kylebaron over 9 years ago

mrgsolve - mrgsolve 0.7.7

Important changes

  • The table() macro in $TABLE is now deprecated (https://github.com/metrumresearchgroup/mrgsolve/pull/129). To get derived values into the simulated output, users should assign to type double and list that variable name in $CAPTURE. See also the capture typedef introduced below.
  • The mrgx plugin was completely removed.
  • Parameter updates via param method with signature missing will check names of input parameters against names of existing parameters. An error is generated if a user attempts to update a parameter that doesn't exist. Note that this does not apply for the param method with signature list (../../issues/144).
  • The git repository was re-organized so that the package lives in the base directory (https://github.com/metrumresearchgroup/mrgsolve/pull/171).

Features

  • Added @ macros for indicating block options in model specification file.
  • Added qsim function for quick(er) simulation runs with just one parameter set.
  • Added recmatrix that creates matrix simulation template for qsim.
  • Added mrgsolve:::render to create a document with overview of model contents. Methods for both mrgmod objects and character strings pointing to a model file.
  • Use mrgsolve:::details to extract model annotation.
  • Added capture typedef in the model specification file. Variables that are type capture are doubles and are automatically appended to $CAPTURE. The capture typedef is not allowed in $ODE and probably should be reserved for $TABLE.
  • simeta is available in $MAIN and simeps is available in $TABLE by default, no $PLUGIN is required.
  • Better support for including R objects in the model via $ENV (../../issues/158).
  • Added assign_ev function to help build simulation data sets from event objects (https://github.com/metrumresearchgroup/mrgsolve/pull/164).
  • Added as_data_frame method from the tibble package (../../issues/166).
  • When annotating model blocks, mrgsolve takes the last parens item as the "units" and the last bracketed item as "options"
  • Added $ operator for mrgmod objects to return the value of a parameter (99748d8a7e4976fc710152c2dfc82da9b059a852).
  • Added mread_cache and mcode_cache functions to build and cache a model (https://github.com/metrumresearchgroup/mrgsolve/pull/143).

Bugs fixed

  • Fixed documentation issue in PKMODEL. The volumes for two-compartment model with no depot should be V1/V2.
  • Fixed bug in knobs where output column names are mal-formed when a user $CAPTUREs a parameter that is also being tweaked as a knob.
  • Fixed bug in annotated model specification when multiple unit or option specifications are made.

Under the hood

  • User-declared double/int/bool in $MAIN, $ODE, $TABLE are kept in unnamed namespace and are local to the file.
  • Started to re-organize the .R files.
  • mrgsolve:::details returns a data frame of information regardless of whether the model was annotated or not (../../issues/165).
  • mrgsolve::details has additional arguments to help control output.
  • Removed pkevent class; all records are datarecord.

- R
Published by kylebaron over 9 years ago

mrgsolve - mrgsolve 0.7.6

Features

  • Added annotated code blocks for $PARAM, $FIXED, $THETA, $CMT, $INIT, and $VCMT. (#107)
  • mrgsolve:::house() model re-coded as an annotated model.
  • Re-implemented $ENV to allow users to create R objects that can be used at certain points when parsing the model. (#115)
  • Added >> signifier to code blocks that allow options; >> at the beginning of the line indicates that the name=value statements that follow are to be parsed as block options.
  • Added object argument for the following blocks: $PARAM, $OMEGA, $SIGMA, $FIXED, $CMT. When object is set to a character string naming an object in $ENV, that object will be used to form the output from the block.

Bugs fixed

  • Fixed a bug which caused simulation run to hang when implementing a dose with a very small lag time. (#109)
  • Fixed a bug where valid.numericlist wasn't returning FALSE for improperly-formed objects.

Under the hood

  • Now using an environment to collect objects when parsing the model specification file.
  • Some small changes to C++ code that calculates compartment amounts for closed form one- and two-compartment models resulting in faster simulation runs.

The source package (built) is attached as mrgsolve_0.7.6.tar.gz. But the recommended installation method is with devtools::install_github("metrumresearchgroup/mrgsolve@v0.7.6", subdir="rdev")

- R
Published by kylebaron over 9 years ago

mrgsolve - mrgsolve 0.7.5

  • The modmrg package was discontinued. All of the pre-coded models are now available in mrgsolve. Simply call mread with the model stem (e.g. pk1cmt, irm3, etc ...) and call modlib() as the project argument. For example: mod <- mread("emax", modlib()) will compile the emax model and return the model object.

The source package (built) is attached as mrgsolve0.7.5.tar.gz. But the recommended installation method is with devtools::installgithub("metrumresearchgroup/mrgsolve@v0.7.5", subdir="rdev")

- R
Published by kylebaron almost 10 years ago

mrgsolve - mrgsolve 0.7.4

  • Tests re-configured
  • Fixed issue with record sorting for lagged doses when using full data_setand obsaug=TRUE (#102)
  • Fixed issue where idata_set wasn't handled properly when it was passed in as tbl (#100)

The source package (built) is attached as mrgsolve_0.7.4.tar.gz. But the recommended installation method is with devtools::install_github("metrumresearchgroup/mrgsolve@v0.7.4", subdir="rdev")

- R
Published by kylebaron almost 10 years ago

mrgsolve - mrgsolve 0.7.3

  • Addressed an issue where model compilation on Windows systems failed when certain symbol names were used in the model (#97). In this release, a dllname-win.def file is created in soloc to export only the functions that mrgsolve needs to use.
  • Added a check on the project argument to mread: if newline(s) are found, an error is generated and the user is prompted to use mcode instead.
  • Several changes under the hood (https://github.com/metrumresearchgroup/mrgsolve/pull/99)

The source package (built) is attached as mrgsolve_0.7.3.tar.gz. But the recommended installation method is with devtools::install_github("metrumresearchgroup/mrgsolve@v0.7.3", subdir="rdev")

- R
Published by kylebaron almost 10 years ago

mrgsolve - mrgsolve 0.7.2

  • Fix bug in #96

- R
Published by kylebaron almost 10 years ago

mrgsolve - mrgsolve 0.7.1

  • Minor change to build process; no longer need to cwd to build dir to build.

- R
Published by kylebaron almost 10 years ago

mrgsolve - mrgsolve 0.7.0

Features

  • Added as_data_set to convert one or more event objects into a data frame that can be passed to data_set. Does something similar to expand.ev, but more control.
  • For special column names (time, amt, rate, evid, ii, addl ,ss, cmt) either lower case or upper case names are recognized. The determination is made on the time / TIME column (always required when using a data set). If time mrgsolve will continue looking for lower case names; if TIME it will look for upper case names. A warning is issued in case both upper and lower case names are included.
  • Added $PLUGIN to let users extend their model specification file. Valid plugins include simeta, Rcpp, RcppArmadillo, and BH. When a plugin is used, mrgsolve will link back the the appropriate package and possibly include appropriate header files when compiling the model. For example, simeta will link back to mrgsolve and RcppArmadillo and allow the modeler to simulate a new set of ETAs. Use Rcpp plugin to simulate random variates from common distibutions in R(e.g. rnorm, rexp etc ... ).

Bugs fixed

  • Fixed issue with ev where no rows were returned if amt wasn't supplied (issue 44).
  • Shortened the path for both the shared object and the name of the .cpp.cpp file when compiling.
  • Fixed bug in touch_funs when large number (> 25) of ETAs in the model (issue 68).

Important changes

  • When using $PKMODEL with ncmt=2 and depot=FALSE, the default PK parameters are CL, V1 (central volume), Q, V2 (peripheral volume). This is a change where the previous volumes were V2 (central) and V3 (peripheral).
  • $CAPTURE now saves output items to slots in std::vector<double>, rather than std::map<std::string,double>. We've known for a while that the std::map wasn't very efficient especially with large simulations. Currently, items in $TABLE are still saved into std::map with table() macro. The plan going forward is to eliminate that table map and force output variables into $CAPTURE.
  • Due to major changes to dplyr, now requiring dplyr >= 0.5.0 (issue 69)
  • The data slot in mrgsims objects is now data.frame
  • The knobs function and plot method has been re-written. Overall behavior for most applications should be the same.

Under the hood

  • C++ symbols for model functions are now stored in the model object (funs slot)
  • The status of the model object (function names and compile status) can be checked with mrgsolve:::funset(mod)
  • A model is considered to be loaded and ready to go if all functions in funs can be found with is.loaded
  • Model shared objects are still stored within the soloc directory (by default tempdir()), but mrgsolve will create a subdirectory structure to organize compilation artifacts. The outer directory is keyed based on the current mrgsolve version number and the computer platform. Inner directories are based on the model name (model(mod)).
  • A source file is created based on the model name and the shared object is created based on that name. If the compilation is successful, the shared object (.so on mac/unix, .dll on Windows) is copied to a .so or .dll file with a unique stem (e.g. model2lj239wsfo.so). This unique shared object is loaded into the R process for use with the model.
  • Every time the model is rebuilt, the build directory is scanned for shared object files. Excluding the main model shared object (unchanging name based on the model), old shared object files are deleted and, if currently loaded (getLoadedDLLs()), are attempted to be dyn.unloaded.
  • Upon model rebuild (via mread or mcode), if there are no changes to the source .cpp file, the source is not overwritten. In that case, make will not re-build the shared object. Using the preclean argument will force re-compilation (see R CMD SHLIB).
  • The header files modelheader.h and mrgsolv.h are no longer copied into the project directory. But CLINK_CPPFLAGS environment variable is modlifed to include <path-to-mrgsolve-package>/inst/base so that these may be linked.
  • The R CMD SHLIB build process always uses intern=TRUE so that output is suppressed on both Windows and mac/unix. The user may still request to view build output with the ignore.stdout argument.
  • Model build always links-to the project directory to look for C++ header files. When including a header file that may change from build to build, always run with preclean=TRUE.
  • mrgsolve now changes the working directory prior to building a model. The working directory is restored on exit from mread.

Deprecated

  • The entire complog system, including:
    • comp_forget a message is issued
    • complog no message is issued
  • trequest argument to mrgsim

- R
Published by kylebaron almost 10 years ago

mrgsolve - mrgsolve 0.6.1

Bugs fixed

  • Fixed a bug when an infusion was attempted with rate > 0 and amt==0. Additionally, an error is generated when an infusion is attempted with zero amt (issue 43).

- R
Published by kylebaron about 10 years ago

mrgsolve - mrgsolve 0.6.0

Bugs fixed

  • Fixed a bug where infusion dosing events with evid 4 were not properly implemented. While investigating that issue, also found similar issue with evid 4 infusions getting scheduled with addl (issue 31).
  • Removed NSE evaluation for arguments passed into ev to avoid unintended issues in evaluation (issue 29).

New features

  • Added mcode function as alternative to using mread when your model is written in an R string. Note the order of the arguments: first model, then code, then project. project defaults to tempdir. So the call is: mod <- mcode("mymodel", code). The equivalent mread call is: mod <- mread("mymodel", tempdir(),code).
  • carry.out() and Req() now take newname = oldname as input. Use this syntax in carry.out when you want to copy a column from the input data set into the simulated data set, changing the column to newname from oldname. Use this syntax in Req when you want to change the names of compartments or output variables spcified in $TABLE / $CAPTURE.
  • Added pkmodel function for easy loading and simulating from 1- and 2-compartment models (issue 39).
  • Added new code block: $PKMODEL for simulating PK model with analytical solutions. The main option for this block is ncmt, which picks the number of compartments for the pk model. See ?PKMODEL for more information and other options (issue 34).

Under the hood

  • Added code attribute to mrgmod objects. The actual source code stays with the model object. see was modified to look at x@code first when showing the model code.
  • Added a tokenizer function (get_tokens), a wrapper for the boost tokenizer) to help checking the model specification file.
  • Data items entered in $FIXED are now implemented as C++ preprocessor directives by default rather than const double variables. Use $SET fixed_type = "define" or $SET fixed_type = "const" to select between the approaches.

- R
Published by kylebaron about 10 years ago

mrgsolve - mrgsolve 0.5.12

Bugs fixed

  • Added missing example model specification files (popExample, viralExample, others)
  • Added mindt attribute to mrgmod objects with default value of .Machine$double.eps*10. When the problem includes an infusion, the calculated end of the infusion may come too close to another record. Usually the solver will fail with the message DLSODA- TOUT(=R1) too close to T(=R2) to start integration.. To fix this, mindt is set to be greater than zero but small. When mindt is greater than zero and tto - tfrom (the times of two adjacent records) is less than mindt, mrgsolve will set tto equal to tfrom (issue 9).
  • zero.re didn't properly update the $SIGMA list when one matrix was named and another was unnamed. This has been fixed. (issue 16)
  • Fixed a bug where infusions with ss=1 caused mrgsolve/R to crash when the infusion duration was equal to or some multiple of the dosing interval. (issue 19)
  • Fixed a bug where setting F_CENT to zero gave undefined behavior. mrgsolve will issue an error if F_CMT is set to zero and the ss flag is set to 1. (issue 22)
  • Fixed bug where dosing records with evid=4 (reset the system and dose) and addl > 0 reset the system for all subsequent doses. Additional doses coming from records with evid=4 will not do system reset. (issue 23)

Important changes

  • New arguments for $NMXML (see ?nmxml) that are easier to understand and consistent with new prefixes and labels for ETA and EPS. name argument is removed. Use tname (to provide a prefix for THETAs), oname (to name the OMEGA matrix), and sname (to name the SIGMA matrix) instead. In general, set theta to be TRUE to import THETAs, set omega to be TRUE to import OMEGA, and set sigma to be TRUE to import SIGMA. Specifying character names tname, oname, and sname will imply theta=TRUE, omega=TRUE, and sigma=TRUE, respectively.

New features

  • New aliases available for setting bioavailability, lag time and infusion duration and rate. For a compartment called DEPOT use: F_DEPOT (bioavailability), ALAG_DEPOT (dosing lag time), D_DEPOT (infusion duration), and / or R_DEPOT (infusion rate). (issue 13)
  • Added slightly more informative messages when DLSODA fails, including clear identification if the value of istate, which is 2 when the solver succeeds and negative when the solver fails.
  • Added labels and prefix options to $OMEGA and $SIGMA. These allow descriptive aliases for ETAs ... e.g. using ETA_CL rather than ETA(1). (issue 15)
  • Added dplyr::slice method for mrgsims objects (issue 11)
  • New argument to mread: quiet. Setting quiet to TRUE will prevent printing messages when mread is called. The default is getOptions("mrgsolve_mread_quiet",FALSE) ... so you can call options(mrgsolve_mread_quiet = TRUE) to globally turn off messages from mread.

- R
Published by kylebaron about 10 years ago

mrgsolve - mrgsolve 0.5.11

Bugs Fixed

  • Fixed paths for project (project) and shared object (soloc) so that "short" paths are used when compiling the model on Windows platforms (info issue 4 and here)
  • Fixed a bug where bioavailability fraction was not accounted for when setting infusion duration in $MAIN with rate=-2 (see issue 3)
  • mrgsolve_example prints a message telling the user to use mrgmod to read and compile the model. The user should use mread. The message has been updated. (info issue 5)
  • Fixed bug where parameters were not correctly read from first row of a data set when certain recsort options were selected (issue 6)

New Features

  • Added $ADVAN2 and $ADVAN4 for implementing one- and two-compartment PK models with analytical solutions rather than ODEs (thanks to contributions by Bill Gillespie and Charles Margossian)
  • Added soloc attribute added to mrgmod and argument added to mread, giving user control over where the shared object is stored; by default it is in tempdir(). soloc needs to be set to local directory when using qapply
  • Added generics for various dplyr_ functions so that mrgsims objects can be piped to mutate, group_by, filter, summarise, do, select, and summarise.each (it's a dot not an underscore). So: mod %>% mrgsim %>% mutate(group=1)
  • You can now set initial conditions though idata; for compartment CMT, include a column in idata called CMT_0
  • Modified update policy for $OMEGA and $SIGMA: if all incoming matrices are unnamed and the signature matches the model object, the update will happen
  • Added mcRNG function as alias to base::RNGkind("L'Ecuyer-CMRG")

Under the hood

  • Changed dosing lag time mechanism so that lag times are calculated as the simulation progresses and dose times in the simulated output are as in the input data
  • Model shared objects are given random names every time the model is compiled and loaded
  • Changes to recsort: 1 and 2 will put explicit doses after observations at the same time, 3 and 4 will put explicit doses before observations at the same time. 2 and 4 will put doses scheduled through addl after observations at the same time; 1 and 3 put doses scheduled through addl before observations at the same tile
  • Various fixes and expansions to documentation
  • Changed R dependency to >= 3.1.2
  • All Ops involving mrgmod objects are now deprecated
  • loadso now returns the model object (invisibly)
  • Compartment names are automatically removed from table map
  • Model specification files in need of compilation are detected via md5sum
  • Minimum of 2 sec wait time is required before re-compiling a model
  • Added init method with signature mrgmod,ANY, with ANY getting coerced to list

- R
Published by kylebaron over 10 years ago