Known issues: https://github.com/PredictiveEcology/SpaDES/issues
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.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
&
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
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
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)
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.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:
*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