EpiModel Versions Save

Mathematical Modeling of Infectious Disease Dynamics

v2.4.0

10 months ago

NEW FEATURES

  • Stochastic network models, simulated with netsim, now support multi-layer networks. These are networks with a common common node set but different edge set (e.g., home-based and community-based contact layers). An example implementation can be found at the EpiModel Gallery.
  • Add a get_cumulative_degree function with an interface similar to get_partners. This function helps look up cumulative degree over a time period (e.g., number of partners over the past year) for a specified set of nodes.
  • Generic get_network and set_network functions created for more consistent access to the network objects within netsim_dat class objects.

OTHER

  • update_cumulative_edgelist is now called unconditionally and governed by the cumulative.edgelist control.
  • Attempting to access a cumulative edgelist when the control.net setting cumulative.edgelist == FALSE causes an error.
  • netsim data objects now properly classed as netsim_dat.
  • icm data objects now properly classed as icm_dat, consistent with netsim objects.
  • Update network simulation handling of ergm objects to address backwards incompatible data structures for ergm package v4.5.0.

v2.3.2

1 year ago

NEW FEATURES

  • Estimation with the ergm.ego package estimation is now supported. This is accomplished by passing an egor class object instead of a network class object as the nw argument to netest.
  • Added an end.horizon control setting to control.net. This allows one to remove a set of modules within network epidemic models at a given time step. This end horizon is needed for cost-effectiveness analyses and related models that require tracking person time in the absence of disease transmision.
  • Added .traceback.on.error and .dump.frames.on.error controls to print the traceback on error even on multicore settings and dump.frames for remote debugging.

BUG FIXES

  • Fixed an error where get_attr_history would crash when attribute history of posit_ids argument was integer(0).
  • Changed in the internal behavior of saveout.net: missing elements on some simulations now produce a warning instead of an error. Additionally, elements passed to save.other that are not present in the final object are skipped silently instead of producing an error.

OTHER

v2.3.1

1 year ago

NEW FEATURES

  • netdx now calculates additional summary statistics to quantify variability within and across simulations for model diagnostics. See the help page for the associated print function for futher details: help("print.netdx").
  • get_transmat adds a deduplicate argument to randomly select one transmitting act in the case that multiple potential transmissions occur within a time step to the newly infected person.

BUG FIXES

  • Fix get_sims not properly subsetting el.cuml and _last_unique_id.
  • Fix parallel memory leak in netsim.
  • Rework the network resimulation module to allow for working with observed network data. See this EpiModel Gallery Example.
  • Fix error message for tergmLite/resimulate.network collision

OTHER

  • The tracker.net module was removed as an optional extension module, and this functionality is now default for all network models (built-in and extension models). See the Working with Attributes and Summary Statistics Vignette for more details.
  • Speed up the transmission matrix (transmat) storage by using padded_vector instead of repeated rbind calls. The result of get_transmat(netsim_object) is unchanged.
  • Use unflatten_params in generate_random_params instead of bespoke code.
  • Standardize and speed up the summary calculations and plotting functionality for netdx and netsim objects.
  • Streamline unit tests for testing on CRAN.

v2.3.0

1 year ago

NEW FEATURES

  • Network models can now use predefined scenarios with the use_scenario function. See the Working with Model Parameters vignette for details.
  • The trim_netest function has been added to reduce netest object sizes in common use cases.
  • The networkLite class now supports some additional functionalities.
  • Duration = 1 time step models in netsim with tergmLite = FALSE now use tergm simulation to produce a networkDynamic class object, similar to the duration > 1 time step case.
  • netdx now supports heterogeneous dissolution model diagnostics. See the example in help("netdx").
  • plot.netsim now supports type = "duration","dissolution" for homogeneous ("edges-only") dissolution models.
  • Network model parameters can now be supplied to param.net via a data.frame. See the Working with Model Parameters vignette for details.
  • A new term fuzzynodematch was added, to support modeling of more generalized notions of homophily.
  • Network models can now be checkpointed to automate saving, recovering, and restarting simulations after interruption, as might occur with large-scale simulation jobs on high-performance computing (HPC) systems. See help("control.net).

BUG FIXES

  • EpiModel's custom terms absdiffby and absdiffnodemix are now usable again (due to enabling symbol search).
  • The correct formula is now used in sim_nets_t1 when initializing the network with the non-nested edges dissolution approximation approach in netest.
  • References to network class internals have been removed from net.utils.R to make the code function properly with networkLites.
  • update_dissolution now correctly handles duration 1 models.
  • get_edgelists and get_cumulative_edgelists now throw informative errors when the network refers to non-existing networks. get_partners and get_cumulative_edgelists_df will throw errors as well as they call those functions internally.

OTHER

  • The updater.net module was removed as an optional module but its functionalities are now the default behavior for all network models (built-in and custom).
  • The parameters param.updater.list and control.updater.list in param.net and control.net respectively were renamed .param.updater.list and .control.updater.list. The leading dot indicates that these are built-in EpiModel elements not to be confused with the user-defined ones.
  • Dissolution models using the nodefactor term have been deprecated.
  • stergm controls have been deprecated in favor of tergm controls.
  • Formula-style simulations are used consistently for both ergm and tergm simulation, requiring control arguments of class control.simulate.formula and control.simulate.formula.tergm.
  • ndtv is added to "Suggests" (again) and plot.transmat now accepts the transmissionTimeline in the style argument (again).
  • Systematic review and improvement of documentation across the package.
  • netest and netdx now have default control arguments following R's default argument mechanism.
  • Simulation names are now attached to netsim object fields produced via the save.other mechanism.
  • Imputed durational corrections for onset-censored edges are now sampled from a geometric distribution rather than simply using the mean of that distribution.

v2.2.1

2 years ago

NEW FEATURES

  • Improved optional module updater.net allowing it to update the model controls as well as the parameters. See the vignette, "Working with model parameters."
  • General updates to the names and content of the included vignettes.

BUG FIXES

  • Fix dissolution model statistics calculations for netsim in the case with a model with an "end horizon" (when the network is not resimulated at the end of the time series).
  • Fix duplicate printing issues across print.netsim, print.param.net, and print.control.net.
  • Fix use of all.equal in unit tests as requested by CRAN.
  • Change defaults of newly introduced cumulative edgelist functionality to not store it (improves speed).
  • Allow set_attr for posit_ids to return unchanged dat object.

OTHER

  • We have changed the names of arguments from the function get_partners newly introduced in EpiModel v2.2.0: max.age is renamed to truncate for consistency with the other cumulative edgelist functions; only.active is renamed only.active.nodes to clarify that this argument subsets by nodes and not by partnerships.

v2.2.0

2 years ago

NEW FEATURES

  • Developed a general approach to tracking and querying historical and contacts, called a cumulative edgelist. This may be used, for example, to query the recent but non-current contacts of newly infected nodes. See the vignette, "Working with network objects".
  • A create_dat_object helper function was added to standardize the creation of the core dat object within initialize.net.
  • The current timestep within netsim simulations is now stored in the dat object and accessible with get_current_timestep. This eliminates the need to explicitly pass at as a function argument, although that is still allowed.
  • Addition of the get_param_set function that extracts from a netsim object the set of parameters used by each simulation. See the help page: help("get_param_set").
  • Developed a mechanism to store nodal attribute history over the course of a netsim simulation. See the vignette, "Working with attributes and summary statistics."
  • Developed an optional module to define prevalence statistics (also called "epi stats") as functions to be passed to the model as control settings before each netsim simulation. This allows users to avoid updating the prevalence.net module. See the vignette, "Working with attributes and summary statistics."
  • Developed an optional module allowing the update of the model parameters over timesteps within netsim simulations (i.e., time-varying parameters). See the vignette, "Working with model parameters."
  • Improved the random parameterization programming interface to allow correlation between parameters in each simulation (e.g., the ability to pass in a multivariate parameter set for each simulation). See the vignette, "Working with model parameters."

BUG FIXES

  • When calling plot on a netsim object, the arguments in the ellipsis (...) are now correctly passed to the base::plot call.
  • When trying to use the built-in group attribute, netsim will now output a more explicit error if the values used are not only 1 and 2.
  • Fixed the names of the target formation statistics in netdx when edapprox == FALSE that were causing the plotting functions to misbehave.
  • Simplification of the set_transmat function removing the assumption that dat$stats$transmat was to exist only if at != 2 (thanks to @thednainus).
  • More consistent formation and dissolution statistics print between netdx and netsim.
  • Removed duplication in the printing of the parameters when a parameter was defined both as fixed and as random.
  • When using custom netsim modules with type == NULL, some built-in modules no longer stop because they required type to be a string.
  • Fixed issue with Error, Warning or Message in netsim printing twice.
  • Fixed problem with unique ID counter not saved by saveout.net, resulting in the unique ids to start a 1 again when restarting a model from a previous simulation.

Other

v2.1.0

2 years ago

NEW FEATURES

  • Summary network statistics for netsim class objects (epidemic simulations) are now available when tergmLite is used. Previously these network statistics were only available when tergmLite = FALSE but updates to the networkLite class in tergmLite made this possible. These network stats are output with save.nwstats and nwstats.formula arguments in control.net.
  • Developed a general storage and printing mechanism for the recently developed random parameterization interface. See the help page help("param.net").
  • Cleaned up the handling of the initial network simulation in initialize.net, so that the user-facing code in that function is more readable, and the more complex code is put in sim_nets_t1.

BUG FIXES

  • Addressed errors in handling cross-sectional network simulations embedded within a dynamic epidemic model (e.g., contacts that last the length of one time step, specified by duration = 1 in dissolution_coefs).

v2.0.5

2 years ago

Minor updates for CRAN submission.

v2.0.4

3 years ago

NEW FEATURES

  • Added new update_params function to add new parameters to an existing list of network parameters specified in param.net. This aids in workflows that distinguish fixed parameters versus varying parameters that may change across scenarios or simulations.
  • Added new general interface for random parameters in network models that allows randomly drawing a parameter value from a specified statistical distribution, where the distribution may either be a sampling of discrete values or a factory function for any of R's random statistical distribution functions. See help file for generate_random_params for examples.
  • Implemented a standardized approach with helper functions for setting core attributes (those nodal attributes which should be present in any workflows) in network models. This functionality is specified with append_core_attr function in the initialization and arrival modules in any extension models. This includes a standardized implementation of persistent, unique IDs as an attribute that remains constant for nodes even with open population models.

BUG FIXES

  • With the use of a standardized core attribute framework that now correctly handles unique IDs in all models, now the transmission matrix objects output from any network model work consistently and correctly for both closed population and open population models.
  • For DCM models with dt < 1, fix NA output for any .flow variables.
  • Reduce complexity of some unit tests that were stochastically generating errors due to ERGM MCMC estimation problems.
  • Fix problem with temporally extended status variables in network models (i.e., tracking of disease status history across time steps) by simplifying the general approach that works across built-in and extension model types.

OTHER

  • Reimplemented the handling of relational age diagnostics in netdx, with updated numerical summaries in print.netdx and visuals in plot.netdx. Because relational ages are left-censored for any edges that existed at time zero, this led to a misleading diagnostic that ages were lower than the targeted durations. Imputation of a start time for those edges was added, with the option in plot.netdx to visualize with imputed start times (default = TRUE) or not.
  • More consistent approach to trimming unneeded environmental data from ERGM objects implemented with statnet.common::trim_env(), used in netest.
  • Reimplemented the netest "edges dissolution approximation" for efficient estimation of a temporal ERGM via a cross-sectional ERGM estimation with adjustment of formation model coefficients (see netest help page). This new approach further reduces bias in the approximation method, plus now allows for non-nested dissolution models (i.e., dissolution formula does not need to be a subset of the formation formula).

v2.0.3

3 years ago

NEW FEATURES

  • Implemented an error catching approach for netsim so that epidemic modules with errors or warnings are clearly identified in the console.
  • Allow saving the transmission matrix with save.transmat in control.net independently of using tergmLite methods (previously use of tergmLite did not allow for saving these data).
  • Added an infstat parameter to the internal discord_edgelist function used in the infection module, to allow for arbitrary specification of which disease statuses are considered infectious for the purpose of dyad discordance.
  • Added ability to vary node size in plot.netsim with type = 'network' with vertex.cex parameter.

BUG FIXES

  • Fix issue for plot.netdx when plot legend set to FALSE.
  • Updated print.netsim that does not error when displaying new epidemic modules for extension models.
  • Use appropriate tergmLite resimulation methods for netsim for networks with duration of 1 (i.e., one-time contacts handled with cross-sectional ERGMs).

OTHER

  • Further minor edits/updates to EpiModel 2.0 migration documentation (posted on http://epimodel.org/).