Known issues: https://github.com/PredictiveEcology/SpaDES/issues
SpaDES.core package and remove unused dependencies archivist, devtools, hunspell, igraphRandomFields to Suggests (needed for vignettes etc. in SpaDES.core and SpaDES.tools)SpaDES-ecosystem packagesSpaDES package split into several (#198):
SpaDES and into new package reproducible. reproducible added to Imports.SpaDES and into new package quickPlot. quickPlot added to Imports.SpaDES and into new package SpaDES.addins.SpaDES and into new package SpaDES.core. SpaDES.core added to Imports.SpaDES and into new package SpaDES.tools. SpaDES.tools added to Imports.shiny-related components moved out of SpaDES and into new package SpaDES.shiny.minimum R version increased from 3.2.2 to 3.3.3 as required by several dependencies.
added bit, fastmatch, fastdigest and Rcpp packages to Imports.
removed stringr package from Imports.
getFileName. Wasn’t used.p. Use params or P instead.shine moved out of SpaDES into the SpaDES.shiny package.versionWarning. Wasn’t used.iii-cache which shows many of the ways to use Cache and build it into a larger reproducible workflow.simList@.envir slot. This means that module functions can be called by their name only, without a sim$ prefix. Also, there should not be any name clashes between modules, so each module can have its own init function, say. This has been implemented in a backwards compatible way, but the old way may be deprecated down the road.saveSimList which saves all environments recursively and file-backed objects, such as Raster objects (currently only one implemented).Copy, moved it to reproducible, and here added a method for simList objects that deep copies all environments recursively.speedup in gaussMap; now 1.getPaths() to return the list of working dirs from the optionssetPaths() as wrapper for setting the options for working dirs; uses ~/SpaDES as default base pathdownloadModule checks for and uses environment variable GITHUB_PAT if it exists (alleviates 403 download errors caused by GitHub download limits)spread2: new function that is more robust than spread, slightly slower under some situations, but faster in many others. The function is designed to be used as a building block for more complex spreading, where the user can wrap spread2 inside a custom function that iteratively calls spread2, while optionally changing any of the input arguments.returnDT, which slightly improves speed in cases where the user wants the output to become a data.table. This simply prevents a call to as.matrix in the return(), which was occurring if the return value was a data.table.copyModule for creating a copy of an existing modulerblindlist( ). This improved DES speed by > 40%. Benchmarking of 1400 events in 1.6 seconds now; previously 3.0 seconds.Copy (capital C) as replacement for copy which conflicts with data.table::copy, and add queues argument to do a deep copy of the event queues.spread: minor speedups, plus 3 new parameters relativeSpreadProb, numNeighs & exactSizesdistanceFromEachPoint: uses faster Rcpp code for some use cases & can now take arbitrary columns in either from or to arguments%fin% as faster replacement for %in%dev.noRSGD() to bypass the RStudio graphics device for your current session (sets the device option for your platform).checksums(..., write = TRUE) ignores the contents of CHECKSUMS.txt, overwriting that file with the checksums of all files in the module’s data/ directory. This makes it easier to update the checksum file, e.g., when adding new data (#332).improved documentation
modules are now run with their required packages (reqdPkgs in metadata) temporarily bumped to the top of the search path (i.e., search()) during each event. search path is restored on.exit from spades or simInit call
change order of parsing of modules: defineModule is last, so can use objects defined within module for parameters
improved simInit debug mechanism – passing character string of module name will enter into a browser call inside doEvent
improvements to caching –> these are moved to reproducible package:
Raster* objects & S4 methods - now it normally persists across sessions;Cache (upper case) which derives cacheRepo arg automatically from either the cachePath(sim), if used within a module, or getPath()$cachePath if not within a module. Also, the upper case removes the name conflict with archivist::cache;fastdigest::fastdigest for RAM objects and digest::digest for disk-backed objects;.useCache parameter, which can be logical indicating whole module or character indicating individual events);.inputObjects function in simInit, via .useCache parameter in module?Cache for details.keepCacheimplemented checkModuleLocal() to check for presence of module files in the module dir before attempting download from remote module repository
improve module template to auto fill module author info using devtools.desc.author option if set.
zipModule now has data argument, allowing data to be omitted from zipped module.
improved moduleDiagram to show _INPUT_ node in different colour from the other modules
spades.modulePath option) is now set to a temporary location to avoid unintentionally writing to the user’s home directory.spades.modulesPath and spades.modulesRepo options to spades.modulePath and spades.moduleReposhowCache, clearCachestricter package version dependencies in Imports and Suggests
debug argument in spades() can now take any expression, character strings. TRUE/FALSE changed behavior to show only current event.
timeunits: when there are parent and grandparent modules, if timeunit is defined, it overrides the “smallest unit” rule. Thus, a parent module can force a timeunit.
Plot - enhancements and fixes:
col arg to Plot (mimicks cols). Was lost from version 1.1.2;Plot (e.g., barplot, plot, etc.);arr argument to Plot(), allowing passing of arrangement;title arg in Plot() to accept character for plot title;Plot can use character passed to title as a title;clickValues, legends correct for wide variety of types;new arg in Plot(). Now it does one plot at a time, not whole device. Use clearPlot() to wipe whole device.Add modulesGraph, showing parent and child module relationships.
Add filesOnly arg to shine(). This can be in preparation for publishing to www.shinyapps.io or other pages. Currently still alpha.
Add POM: Pattern Oriented Modeling (#269). A simple interface to a simList object, allowing fitting parameters to data.
add .inputObjects functionality – function that runs during simInit() to create default inputObjects
add P as a namespaced shortcut for params: P(sim) would replace params(sim)$moduleName when called from within that module
allow params(sim) & start(sim) & others in defineModule() by changing parse order in module metadata
add explicit cl arg to parallel aware functions, for more control
newModule gains new arguments type = c("child", "parent") and children = c(). See ?newModule (#300).
module structure now includes an R subfolder for R scripts. These will be parsed during simInit.
checksums updated to use faster hashing algorithm (xxhash64) and now only requires a single hash value per file (#295)
fixed bugs in module template
fixed bug in cir (#288, #311)
improved use of package options; added new option spades.modulesPath.
improved downloadModule to use option spades.modulesPath (#309)
improved specification of module inputs and outputs (#189, #214, PR #310)
remove module version warning (#312)
other tweaks and fixes
dplyr updategtools and secr from Importsspread enhancements: circular spreading, landscape-based functions, allow overlapping eventscir and bug fix (#290)rings whose argument names closer match to cirspread, rings, cirPlot now clips symbols (generally points) to plotting area. This will allow future “wiping” of plot area.dev() returns dev.cur invisibly, allowing for finer control of plotting devicesdistanceFromEachPoint, a multipoint version of raster::distanceFromPointssplitRaster (#276, #284)mergeRaster (#282, #283)randomPolygons (uses spread internally now)normalizePathgtools to Importsexperiment that did not allow parallel spawning on some systems and crashed with empty outputs argument* fix minor bugs in sampleModules?inputs and ?outputs.plotInitialTime and .saveInitialTime arguments to spades() to easily allow turning off plotting and savinginputs and outputs, including extension-based automated outputs, using data.frame instead of data.table allowing lists to be passed for “arguments”n in setColors (#70), and partial n if nameddplyr updatesPlot accepts colour column in SpatialPointDataFrame objectscol arg to Plot (mimicks cols)experiment function, a wrapper around spades for running multiple simulations (#265)shine function, with simList signature (#261)copy function, which does a deep copy of a simList objectRColorBrewer to ImportsPlot colours to be set in the Plot call using cols argumentPlot colours to be set in the Plot call using RColorBrewer palettesPlot legendseventPrioritysimList object: current, to store the current eventcurrent and current<- to get and set the current eventdefineParameter now coerces the default value to match the type classobjectNames() for external useoutputPath updates output(sim)$file file paths, in addition to just paths(sim)$outputPatharchivist version 2.0 or greatermoduleCoverage testing and template (PR #257)is.factor(raster) is TRUEsimList show method (#260)downloader from Imports (#203)covr to Suggests and lazyeval to ImportsDiagrammeR version 0.8.2 or higher which fixes mermaid/knitr/pandoc error (https://github.com/rich-iannone/DiagrammeR/issues/139)downloadData to download module data (with #205)checksums to verify MD5 hashes of data files (with #205)newModule with RStudio on Windows (#209)cachePath to paths slot (#227)checksum (#230)NA to arbitrary class for which no suitable NA type exists (#231)spread() (#237)newModule (PR #242, PR #245)simInit can be named differently from their objects (#247)downloadModule and downloadData now also download children modules/datadivergentColors to generate divergent colour palettes for legendsloadPackages.spatialObjects class to spatialObjects and exportSpaDES package version doesn’t match module versionsimInit (modules can be character)inputs data.frame construction in simInit (#225).parseModule (#215)simList accessors now work with .simList superclass (#217)%>% bug in demo (#218)rmarkdown::render for vignettes (with #219)documentation to module metadata (see ?defineModule) (#224)inputs data.frame construction in simInit (#225)attach the simulation environment (#212)no longer rely on side effects to update objects in global environment; instead uses simulation environments (#185) (not backwards compatible!)
sample modules rewritten to use simulation environments (#185) (not backwards compatible!).
redefined simList class:
.simList contains all previous simList slots except .envirsimList extends .simList by adding slot .envirsimList_ extends .simList by adding slot .listsimList_ can be used internally to save a simList object, because saving lists of objects to file is more reliable that saving environments.fastshp can be installed from Rforge as a CRAN-like repository (instead of relying on devtools::install_github)
software requirements changed: depends R (>=3.2.0)
moved data.table, grid, raster, and sp from Depends to Imports (#207).
add archivist, ff, ffbase to Imports; add lubridate to Imports (with #151)
removed magrittr from Imports (%>% is now exported by igraph)
most external methods/classes imported using importFrom; except methods, graphics, igraph, and utils (because of methods/classes which are not exported) (#201)
simulations now use timeunit (instead of timestep) specified in metadata (#151)
defineModule requires timeunit to be a character string instead of numeric (with #151)
simulation checkpointing fixed (#191, #130)
ls and ls.str can now be used with simList objects to list objects in the simulation environment
objs returns a list containing all the objects in the simulation environment
new function splitRaster to divide RasterLayer into several tiles
new function normPath (extracted from checkPath) to more strictly normalize filepaths without checking that they exist.
new function classFilter to filter list of objects by their type
new function packages to get all packages required by a simulation
new function rndstr to generate random strings
new function append_attr to append list items and keep their attributes
improved loadPackages
improved .objectNames
defineParameter now accepts min, max, and description values (#172; #175)
defineModule better handles NA values (#138)
various Plot improvements.
new plotting functions to produce overview diagrams of simulations (#181; #184):
eventDiagram shows Gantt chart of event sequencesmoduleDiagram shows igraph network diagram of dependenciesobjectDiagram shows sequence diagram of object dependencies between modulesimproved simList show and debug methods (#57; #73)
improvements to loadFiles:
data.tablepackage::function notation in load (#174)added “metamodules” which specify module groups (#176)
improved test coverage (see #139)
all functions imported explicitly (@importFrom).
three entire packages imported: methods, graphics, igraph (because of classes which are not exported from igraph) (#201)
removed package dependencies on raster, sp, data.table, grid. Use importFrom instead (#207).
improved documentation and vignettes
added cache mechanism to hash function calls to spades (#206)
fixed progress bar bug (#147)
prepend copyright info to LICENSE and README (with #140)
various other bug fixes
This is a minor release update to satisfy CRAN submission requirements.
added the Queen as copyright holder (#140)
explicitly use GPL-3 (previously used GPL) (#140)
modules now require metadata; module code without it will break!
reloadModuleLaternew module directory structure (#125):
moduleName/
|_ moduleName.R # the actual module code file, incl. module metadata
|_ moduleName.Rmd # longform documentation and usage info, etc.
|_ citation.bib # properly formatted bibtex citation for the module
|_ LICENSE # license file describing the allowed usage etc. of the module
|_ README # incl. module metadata in addition to version change info, etc.updated package dependencies:
downloader, dplyr, fpCompare, httr, magrittr, stringr to Importsupdated vignettes and documentation improvements
transferred project to PredictiveEcology/SpaDES from achubaty/SpaDES.
overhaul to Plot function:
*Named objects.SpatialPolygons objects much faster than default plot:
fastshp.
The suggested package fastshp can be installed with:
install_github("s-u/fastshp")Plot improvementsdeprecated all *Named functionality
*Named objectsnew function, clearPlot can be used to clean all hidden metadata about a plot
new function, randomPolygons, will create random raster maps (not vector maps) of polygons
numerous bugfixes
Plot function, including dramatically faster for files on diskSpaDES