master
branch as main
(#366)SpaDES.addins
which is archived on CRAN.spelling
.SpaDES.tools
, which is back on CRAN.SpaDES.addins
to Suggests (#359).SpaDES.core
package and remove unused dependencies archivist
, devtools
, hunspell
, igraph
RandomFields
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.[email protected]
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
& exactSizes
distanceFromEachPoint
: 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.keepCache
implemented 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.moduleRepo
showCache
, clearCache
stricter 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
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 cir
spread
, rings
, cir
Plot
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::distanceFromPoints
splitRaster
(#276, #284)mergeRaster
(#282, #283)randomPolygons
(uses spread
internally now)normalizePath
gtools
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
legendseventPriority
simList
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 class
objectNames()
for external useoutputPath
updates output(sim)$file
file paths, in addition to just paths(sim)$outputPath
archivist
version 2.0 or greatermoduleCoverage
testing and template (PR #257)is.factor(raster)
is TRUE
simList
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 .envir
simList
extends .simList
by adding slot .envir
simList_
extends .simList
by adding slot .list
simList_
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)
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 modulesimprovements to loadFiles
:
data.table
package::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!
reloadModuleLater
new 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 Imports
updated vignettes and documentation improvements
transferred project to PredictiveEcology/SpaDES
from achubaty/SpaDES
.
overhaul to Plot
function:
no longer needs *Named
objects.
now handles SpatialPolygons
objects much faster than default plot
:
fastshp
.
The suggested package fastshp
can be installed with:
install_github("s-u/fastshp")
numerous other Plot
improvements
deprecated 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