- CRAN resubmission following restoration of dependency packages.
- drop support for R 4.1, as it is no longer supported by several dependencies.
- remove suggested dependency
SpaDES.addinswhich is archived on CRAN.
- fix html problems highlighted by CRAN checks.
- remove suggested package
spelling.
- drop support for R 3.6, as it is no longer supported by several dependencies.
- resubmit due to archived dependency
SpaDES.tools, which is back on CRAN.
- move
SpaDES.addinsto Suggests (#359).
- drop support for R 3.5, as it is no longer supported by several dependencies.
- fix CRAN check errors
- fix discrepancy in vignette title
- new package hexsticker and cheatsheet
- drop support for R 3.3 and 3.4, as these are no longer supported by several dependencies.
- move caching vignette to
SpaDES.corepackage and remove unused dependenciesarchivist,devtools,hunspell,igraph - add
RandomFieldsto Suggests (needed for vignettes etc. inSpaDES.coreandSpaDES.tools) - new 'Getting Started' vignette describing the
SpaDES-ecosystem packages
- change maintainer email address.
- update LandWeb app URL in README.
- update cache vignette.
- update package dependencies to include those used in tests.
- minor bugfix concerning imports
-
SpaDESpackage split into several (#198):- caching moved out of
SpaDESand into new packagereproducible.reproducibleadded to Imports. - plotting moved out of
SpaDESand into new packagequickPlot.quickPlotadded to Imports. - all RStudio addins moved out of
SpaDESand into new packageSpaDES.addins. - core DES components moved out of
SpaDESand into new packageSpaDES.core.SpaDES.coreadded to Imports. - additional modelling utilities (non-core components) moved out of
SpaDESand into new packageSpaDES.tools.SpaDES.toolsadded to Imports. shiny-related components moved out ofSpaDESand into new packageSpaDES.shiny.
- caching moved out of
-
minimum R version increased from
3.2.2to3.3.3as required by several dependencies. -
added
bit,fastmatch,fastdigestandRcpppackages to Imports. -
removed
stringrpackage from Imports.
getFileName. Wasn't used.p. UseparamsorPinstead.shinemoved out ofSpaDESinto theSpaDES.shinypackage.versionWarning. Wasn't used.
iii-cachewhich shows many of the ways to useCacheand build it into a larger reproducible workflow.
- namespaced module functions have now been implemented via a nested environment in the
simList@.envirslot. This means that module functions can be called by their name only, without asim$prefix. Also, there should not be any name clashes between modules, so each module can have its owninitfunction, say. This has been implemented in a backwards compatible way, but the old way may be deprecated down the road. - new functions
saveSimListwhich saves all environments recursively and file-backed objects, such asRasterobjects (currently only one implemented). - Created a generic for
Copy, moved it toreproducible, and here added a method forsimListobjects that deep copies all environments recursively. - change default value for
speedupingaussMap; now 1. - new function
getPaths()to return the list of working dirs from the options - new function
setPaths()as wrapper for setting the options for working dirs; uses~/SpaDESas default base path downloadModulechecks for and uses environment variableGITHUB_PATif 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 wrapspread2inside a custom function that iteratively callsspread2, while optionally changing any of the input arguments.- adj - has a new argument
returnDT, which slightly improves speed in cases where the user wants the output to become adata.table. This simply prevents a call toas.matrixin thereturn(), which was occurring if the return value was adata.table. - new function
copyModulefor creating a copy of an existing module
- add C++ internal functions for speed
- event queues (event, completed, current) now do shallow copies of pre-existing data.tables, rather than
rblindlist( ). This improved DES speed by > 40%. Benchmarking of 1400 events in 1.6 seconds now; previously 3.0 seconds. - add
Copy(capital C) as replacement forcopywhich conflicts withdata.table::copy, and addqueuesargument to do a deep copy of the event queues. spread: minor speedups, plus 3 new parametersrelativeSpreadProb,numNeighs&exactSizesdistanceFromEachPoint: uses faster Rcpp code for some use cases & can now take arbitrary columns in eitherfromortoarguments- use
%fin%as faster replacement for%in%
- workaround issues with RStudio graphics on Linux (with #116): use
dev.noRSGD()to bypass the RStudio graphics device for your current session (sets thedeviceoption for your platform). checksums(..., write = TRUE)ignores the contents ofCHECKSUMS.txt, overwriting that file with the checksums of all files in the module'sdata/directory. This makes it easier to update the checksum file, e.g., when adding new data (#332).- improved module versioning (#321)
- minor bugfixes for unusual cases
- some broken examples were fixed
-
improved documentation
-
modules are now run with their required packages (
reqdPkgsin metadata) temporarily bumped to the top of the search path (i.e.,search()) during each event.searchpath is restoredon.exitfromspadesorsimInitcall -
change order of parsing of modules:
defineModuleis last, so can use objects defined within module for parameters -
improved
simInitdebug mechanism -- passing character string of module name will enter into abrowsercall insidedoEvent -
improvements to caching --> these are moved to
reproduciblepackage:- improved caching for
Raster*objects & S4 methods - now it normally persists across sessions; - add
Cache(upper case) which derivescacheRepoarg automatically from either thecachePath(sim), if used within a module, orgetPath()$cachePathif not within a module. Also, the upper case removes the name conflict witharchivist::cache; - uses
fastdigest::fastdigestfor RAM objects anddigest::digestfor disk-backed objects; - add caching mechanisms at the module-level and event-level (via new
.useCacheparameter, which can be logical indicating whole module or character indicating individual events); - add caching for
.inputObjectsfunction insimInit, via.useCacheparameter in module - detailed caching overview now in cache help:
?Cachefor details. - strips dirname for outputs and inputs, i.e., only keeps the filename, not absolute paths. This may not be stringent enough in some cases.
- New cache-related function:
keepCache
- improved caching for
-
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.authoroption if set. -
zipModulenow hasdataargument, allowing data to be omitted from zipped module. -
improved
moduleDiagramto show_INPUT_node in different colour from the other modules
- Default module path (set via
spades.modulePathoption) is now set to a temporary location to avoid unintentionally writing to the user's home directory. - add options for cache, input, output dirs (defaults to a temp dir until changed by user)
- rename
spades.modulesPathandspades.modulesRepooptions tospades.modulePathandspades.moduleRepo - New cache-related functions:
showCache,clearCache
-
stricter package version dependencies in Imports and Suggests
-
debugargument inspades()can now take any expression, character strings.TRUE/FALSEchanged 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:
- more robust base plotting and many visual tests on Windows;
- re-add
colarg toPlot(mimickscols). Was lost from version 1.1.2; - allow any arbitrary function to be used internally to
Plot(e.g., barplot, plot, etc.); - add
arrargument toPlot(), allowing passing of arrangement; - allow
titlearg inPlot()to accept character for plot title; Plotcan use character passed totitleas a title;- some additional functionality for plotting of factor rasters, incl.
clickValues, legends correct for wide variety of types; - change
newarg inPlot(). Now it does one plot at a time, not whole device. UseclearPlot()to wipe whole device.
-
Add
modulesGraph, showing parent and child module relationships. -
Add
filesOnlyarg toshine(). 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
simListobject, allowing fitting parameters to data. -
add
.inputObjectsfunctionality -- function that runs duringsimInit()to create defaultinputObjects -
add
Pas a namespaced shortcut forparams:P(sim)would replaceparams(sim)$moduleNamewhen called from within that module -
allow
params(sim)&start(sim)& others indefineModule()by changing parse order in module metadata -
add explicit
clarg to parallel aware functions, for more control -
newModulegains new argumentstype = c("child", "parent")andchildren = c(). See?newModule(#300). -
module structure now includes an R subfolder for R scripts. These will be parsed during
simInit. -
checksumsupdated 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
downloadModuleto use optionspades.modulesPath(#309) -
improved specification of module inputs and outputs (#189, #214, PR #310)
-
remove module version warning (#312)
-
other tweaks and fixes
- fix bug associated with forthcoming
dplyrupdate - remove
gtoolsandsecrfrom Imports spreadenhancements: circular spreading, landscape-based functions, allow overlapping events- enhancements to
cirand bug fix (#290) - new function
ringswhose argument names closer match tocir - performance enhancements in
spread,rings,cir - add cache and progress args to spades and experiment functions
Plotnow clips symbols (generally points) to plotting area. This will allow future "wiping" of plot area.dev()returnsdev.curinvisibly, allowing for finer control of plotting devices- add
distanceFromEachPoint, a multipoint version ofraster::distanceFromPoints - improve
splitRaster(#276, #284) - new function
mergeRaster(#282, #283) - changed and performance boost to
randomPolygons(usesspreadinternally now) - minor performance enhancements
- many more and improved unit tests
- fix OSX CRAN check errors caused by inconsistent use of
normalizePath
- add
gtoolsto Imports - bug fix in
experimentthat did not allow parallel spawning on some systems and crashed with emptyoutputsargument* fix minor bugs insampleModules - lots of documentation enhancements, esp.
?inputsand?outputs - add
.plotInitialTimeand.saveInitialTimearguments tospades()to easily allow turning off plotting and saving - more robust
inputsandoutputs, including extension-based automated outputs, usingdata.frameinstead ofdata.tableallowing lists to be passed for "arguments" - allow vectorized
ninsetColors(#70), and partialnif named - many more unit tests (#139)
- other bug fixes
- fix issues associated with upcoming
dplyrupdates - performance enhancements: much faster simulation execution
Plotaccepts colour column inSpatialPointDataFrameobjects- add
colarg toPlot(mimickscols) - add
experimentfunction, a wrapper aroundspadesfor running multiple simulations (#265) - add
shinefunction, withsimListsignature (#261) - add
copyfunction, which does a deep copy of asimListobject - add
RColorBrewerto Imports - allow
Plotcolours to be set in thePlotcall usingcolsargument - allow
Plotcolours to be set in thePlotcall usingRColorBrewerpalettes - fix bug when plotting certain real-numbered rasters
- fix bug in
Plotlegends - fix bug in assigning vectors as default module parameter values
- fix bug that prevented printing simulation times
- fix bug in event list sorting by
eventPriority - new slot in
simListobject:current, to store the current event - new accessors
currentandcurrent<-to get and set the current event defineParameternow coerces thedefaultvalue to match the typeclass- export
objectNames()for external use outputPathupdatesoutput(sim)$filefile paths, in addition to justpaths(sim)$outputPath- other bug fixes
- require
archivistversion 2.0 or greater - improved
moduleCoveragetesting and template (PR #257) - correct legends from rasters so that
is.factor(raster)isTRUE - user defined time units can be used in module metadata "timeunit".
- add module timeunits to
simListshow method (#260)
- require R version 3.2.2 or higher
- remove
downloaderfrom Imports (#203) - add
covrto Suggests andlazyevalto Imports - require
DiagrammeRversion 0.8.2 or higher which fixes mermaid/knitr/pandoc error (rich-iannone/DiagrammeR#139) - add data source info module metadata (#205)
- new function
downloadDatato download module data (with #205) - new function
checksumsto verify MD5 hashes of data files (with #205) - warn instead of error when using e.g.,
newModulewith RStudio on Windows (#209) - more control of caching behaviour: added
cachePathto paths slot (#227) - only download data if file doesn't exist or checksum mismatch (#229)
- allow multiple checksums per file in
checksum(#230) - fix error caused by coercing
NAto arbitrary class for which no suitableNAtype exists (#231) - use warnings instead of errors for missing modules metadata (#233)
- add event priorities (#236)
- enhanced functionality of
spread()(#237) - add unit tests and coverage to
newModule(PR #242, PR #245) - objects passed to
simInitcan be named differently from their objects (#247) downloadModuleanddownloadDatanow also download children modules/data- new function
divergentColorsto generate divergent colour palettes for legends - improve efficiency of
loadPackages - change
.spatialObjectsclass tospatialObjectsand export - add .Rdata and .rds files to automatic loading.
- warn user if
SpaDESpackage version doesn't match module version - allow more signatures in
simInit(modules can be character) - other bug fixes
- fully fix
inputsdata.frame construction insimInit(#225)
- update maintainer's and authors' email addresses
- fix bug in
.parseModule(#215) - improve dependency graph & module diagram (#216)
simListaccessors now work with.simListsuperclass (#217)- fix
%>%bug in demo (#218) - use
rmarkdown::renderfor vignettes (with #219) - improve documentation (including #219)
- reduce sizes of built vignettes (#222)
- add slot
documentationto module metadata (see?defineModule) (#224) - fix
inputsdata.frame construction insimInit(#225) - various other bug fixes
- no longer
attachthe simulation environment (#212) - improve documentation
- bug fixes
-
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
simListclass:- new superclass
.simListcontains all previoussimListslots except.envir - class
simListextends.simListby adding slot.envir - new class
simList_extends.simListby adding slot.list simList_can be used internally to save asimListobject, because saving lists of objects to file is more reliable that saving environments.
- new superclass
-
fastshpcan be installed from Rforge as a CRAN-like repository (instead of relying ondevtools::install_github) -
software requirements changed: depends R (>=3.2.0)
-
moved
data.table,grid,raster, andspfrom Depends to Imports (#207). -
add
archivist,ff,ffbaseto Imports; addlubridateto Imports (with #151) -
removed
magrittrfrom Imports (%>%is now exported byigraph) -
most external methods/classes imported using
importFrom; exceptmethods,graphics,igraph, andutils(because of methods/classes which are not exported) (#201) -
simulations now use
timeunit(instead oftimestep) specified in metadata (#151) -
defineModulerequirestimeunitto be a character string instead of numeric (with #151) -
simulation checkpointing fixed (#191, #130)
-
lsandls.strcan now be used withsimListobjects to list objects in the simulation environment -
objsreturns a list containing all the objects in the simulation environment -
new function
splitRasterto divideRasterLayerinto several tiles -
new function
normPath(extracted fromcheckPath) to more strictly normalize filepaths without checking that they exist. -
new function
classFilterto filter list of objects by their type -
new function
packagesto get all packages required by a simulation -
new function
rndstrto generate random strings -
new function
append_attrto append list items and keep their attributes -
improved
loadPackages -
improved
.objectNames -
defineParameternow acceptsmin,max, and description values (#172; #175) -
defineModulebetter handlesNAvalues (#138) -
various
Plotimprovements. -
new plotting functions to produce overview diagrams of simulations (#181; #184):
eventDiagramshows Gantt chart of event sequencesmoduleDiagramshows igraph network diagram of dependenciesobjectDiagramshows sequence diagram of object dependencies between modules
-
improved
simListshow and debug methods (#57; #73) -
improvements to
loadFiles:- use
data.table - allow
package::functionnotation in load (#174) - bug fixes
- use
-
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 fromigraph) (#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
LICENSEandREADME(with #140) -
various other bug fixes
This is a minor release update to satisfy CRAN submission requirements.
- bug fix when saving files
-
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!
- new module dependency checking and metadata structure (#126)
- explicit declaration of parameters, and object (data) dependencies
- deprecated use of
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:
- added
downloader,dplyr,fpCompare,httr,magrittr,stringrtoImports
- added
-
updated vignettes and documentation improvements
-
transferred project to
PredictiveEcology/SpaDESfromachubaty/SpaDES. -
overhaul to
Plotfunction:-
no longer needs
*Namedobjects. -
now handles
SpatialPolygonsobjects much faster than defaultplot:- Uses package
fastshp.-
The suggested package
fastshpcan be installed with:install_github("s-u/fastshp")
-
- Uses package
-
numerous other
Plotimprovements
-
-
deprecated all
*Namedfunctionality- All code will break that uses
*Namedobjects
- All code will break that uses
-
new function,
clearPlotcan 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
- second public ("beta") release
- more improvements to
Plotfunction, including dramatically faster for files on disk - added second "Model" that adds and integrates 3 sample modules, Fire, Succession and Aging
- added Plotting vignette
- bugfixes
- first public ("beta") release
- reworked plotting and visualization (it's faster, more reliable)
- added additional parameter checks and improved debugging
- new and improved documentation:
- two new vignettes (introduction to SpaDES and how modules work)
- new demo highlighting visualization components
- more complete code documentation
- numerous bug fixes
- renamed package to
SpaDES
- first working alpha version
- lots of "wishlist" items still to be implemented