- using R Under development (unstable) (2025-12-19 r89206)
- using platform: x86_64-pc-linux-gnu
- R was compiled by
gcc-15 (Debian 15.2.0-11) 15.2.0
GNU Fortran (Debian 15.2.0-11) 15.2.0
- running under: Debian GNU/Linux forky/sid
- using session charset: UTF-8
- checking for file ‘SpaDES.tools/DESCRIPTION’ ... OK
- checking extension type ... Package
- this is package ‘SpaDES.tools’ version ‘2.0.9’
- package encoding: UTF-8
- checking CRAN incoming feasibility ... [2s/2s] OK
- checking package namespace information ... OK
- checking package dependencies ... INFO
Package suggested but not available for checking: ‘NLMR’
- checking if this is a source package ... OK
- checking if there is a namespace ... OK
- checking for executable files ... OK
- checking for hidden files and directories ... OK
- checking for portable file names ... OK
- checking for sufficient/correct file permissions ... OK
- checking whether package ‘SpaDES.tools’ can be installed ... OK
See the install log for details.
- used C++ compiler: ‘g++-15 (Debian 15.2.0-11) 15.2.0’
- checking package directory ... OK
- checking for future file timestamps ... OK
- checking DESCRIPTION meta-information ... OK
- checking top-level files ... OK
- checking for left-over files ... OK
- checking index information ... OK
- checking package subdirectories ... OK
- checking code files for non-ASCII characters ... OK
- checking R files for syntax errors ... OK
- checking whether the package can be loaded ... [5s/6s] OK
- checking whether the package can be loaded with stated dependencies ... [5s/6s] OK
- checking whether the package can be unloaded cleanly ... [5s/6s] OK
- checking whether the namespace can be loaded with stated dependencies ... [5s/5s] OK
- checking whether the namespace can be unloaded cleanly ... [5s/5s] OK
- checking loading without being on the library search path ... [5s/6s] OK
- checking whether startup messages can be suppressed ... [6s/8s] OK
- checking use of S3 registration ... OK
- checking dependencies in R code ... OK
- checking S3 generic/method consistency ... OK
- checking replacement functions ... OK
- checking foreign function calls ... OK
- checking R code for possible problems ... [29s/36s] OK
- checking Rd files ... [0s/1s] OK
- checking Rd metadata ... OK
- checking Rd line widths ... OK
- checking Rd cross-references ... OK
- checking for missing documentation entries ... OK
- checking for code/documentation mismatches ... OK
- checking Rd \usage sections ... OK
- checking Rd contents ... OK
- checking for unstated dependencies in examples ... OK
- checking line endings in C/C++/Fortran sources/headers ... OK
- checking pragmas in C/C++ headers and code ... OK
- checking compilation flags used ... OK
- checking compiled code ... OK
- checking examples ... [14s/19s] ERROR
Running examples in ‘SpaDES.tools-Ex.R’ failed
The error most likely occurred in:
> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: spread2
> ### Title: Simulate a contagious spread process on a landscape, with
> ### 'data.table' internals
> ### Aliases: spread2
>
> ### ** Examples
>
> library(terra)
terra 1.8.86
Attaching package: ‘terra’
The following object is masked from ‘package:SpaDES.tools’:
wrap
>
> origDTThreads <- data.table::setDTthreads(2L)
> origNcpus <- options(Ncpus = 2L)
>
> a <- rast(ext(0, 10, 0, 10), res = 1)
> sams <- sort(sample(ncell(a), 3))
>
> # Simple use -- similar to spread(...)
> out <- spread2(a, start = sams, 0.225)
> if (interactive()) {
+ terra::plot(out)
+ }
>
> # Use maxSize -- this gives an upper limit
> maxSizes <- sort(sample(1:10, size = length(sams)))
> out <- spread2(a, start = sams, 0.225, maxSize = maxSizes, asRaster = FALSE)
> # check TRUE using data.table .N
> out[, .N, by = "initialPixels"]$N <= maxSizes
[1] TRUE TRUE TRUE
>
> # Use exactSize -- gives an exact size, if there is enough space on the Raster
> exactSizes <- maxSizes
> out <- spread2(a, start = sams, spreadProb = 0.225,
+ exactSize = exactSizes, asRaster = FALSE)
> out[, .N, by = "initialPixels"]$N == maxSizes # should be TRUE TRUE TRUE
[1] TRUE TRUE TRUE
>
> # Use exactSize -- but where it can't be achieved
> exactSizes <- sort(sample(100:110, size = length(sams)))
> out <- spread2(a, start = sams, 1, exactSize = exactSizes)
>
> # Iterative calling -- create a function with a high escape probability
> spreadWithEscape <- function(ras, start, escapeProb, spreadProb) {
+ out <- spread2(ras, start = sams, spreadProb = escapeProb, asRaster = FALSE)
+ while (any(out$state == "sourceActive")) {
+ # pass in previous output as start
+ out <- spread2(ras, start = out, spreadProb = spreadProb,
+ asRaster = FALSE, skipChecks = TRUE) # skipChecks for speed
+ }
+ out
+ }
>
> set.seed(421)
> out1 <- spreadWithEscape(a, sams, escapeProb = 0.25, spreadProb = 0.225)
> set.seed(421)
> out2 <- spread2(a, sams, 0.225, asRaster = FALSE)
> # The one with high escape probability is larger (most of the time)
> NROW(out1) > NROW(out2) ## TODO: not true
[1] FALSE
>
> ## Use neighProbs, with a spreadProb that is a RasterLayer
> # Create a raster of different values, which will be the relative probabilities
> # i.e., they are rescaled to relative probabilities within the 8 neighbour choices.
> # The neighProbs below means 70% of the time, 1 neighbour will be chosen,
> # 30% of the time 2 neighbours.
> # The cells with spreadProb of 5 are 5 times more likely than cells with 1 to be chosen,
> # when they are both within the 8 neighbours
> sp <- rast(ext(0, 3, 0, 3), res = 1, vals = 1:9) #small raster, simple values
> # Check neighProbs worked
> out <- list()
>
> # enough replicates to see stabilized probabilities
> for (i in 1:100) {
+ out[[i]] <- spread2(sp, spreadProbRel = sp, spreadProb = 1,
+ start = 5, iterations = 1,
+ neighProbs = c(1), asRaster = FALSE)
+ }
> out <- data.table::rbindlist(out)[pixels != 5] # remove starting cell
> table(sp[out$pixels])
lyr.1
1 2 3 4 6 7 8 9
3 5 8 8 17 13 26 20
> # should be non-significant -- note no 5 because that was the starting cell
> # This tests whether the null model is true ... there should be proportions
> # equivalent to 1:2:3:4:6:7:8:9 ... i.e,. cell 9 should have 9x as many events
> # spread to it as cell 1. This comes from sp object above which is providing
> # the relative spread probabilities
> keep <- c(1:4, 6:9)
> chisq.test(keep, unname(tabulate(sp[out$pixels]$lyr.1, 9)[keep]),
+ simulate.p.value = TRUE)
Pearson's Chi-squared test with simulated p-value (based on 2000
replicates)
data: keep and unname(tabulate(sp[out$pixels]$lyr.1, 9)[keep])
X-squared = 48, df = NA, p-value = 1
>
> ## Example showing asymmetry
> sams <- ncell(a) / 4 - ncol(a) / 4 * 3
> circs <- spread2(a, spreadProb = 0.213, start = sams,
+ asymmetry = 2, asymmetryAngle = 135,
+ asRaster = TRUE)
Error in `[.data.table`(dd, , `:=`(quantityAdj2, quantityAdj/(mean(quantityAdj)/mean(quantity))), :
attempt access index 7/7 in VECTOR_ELT
Calls: spread2 -> asymmetryAdjust -> [ -> [.data.table
Execution halted
- checking for unstated dependencies in ‘tests’ ... OK
- checking tests ... [117s/150s] ERROR
Running ‘testthat.R’ [117s/149s]
Running the tests in ‘tests/testthat.R’ failed.
Complete output:
> # This file is part of the standard setup for testthat.
> # It is recommended that you do not modify it.
> #
> # Where should you do additional test configuration?
> # Learn more about the roles of various files in:
> # * https://r-pkgs.org/testing-design.html#sec-tests-files-overview
> # * https://testthat.r-lib.org/articles/special-files.html
>
> Sys.setenv("OMP_THREAD_LIMIT" = 2)
> origDTthreads <- data.table::setDTthreads(2L)
>
> library(testthat)
> library(SpaDES.tools)
>
> test_check("SpaDES.tools")
Attaching package: 'data.table'
The following object is masked from 'package:base':
%notin%
Assuming matrix is in latitude/longitude
The CRS provided is not in meters; converting internally to UTM so area will be approximately correct.
Ran 10/10 deferred expressions
Ran 8/8 deferred expressions
Ran 6/6 deferred expressions
Ran 7/7 deferred expressions
Ran 6/6 deferred expressions
Ran 8/8 deferred expressions
duplicate initial loci are provided
duplicate initial loci are provided
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[ FAIL 5 | WARN 0 | SKIP 4 | PASS 1802 ]
══ Skipped tests (4) ═══════════════════════════════════════════════════════════
• On CRAN (3): 'test-splitRaster.R:227:3', 'test-splitRaster.R:288:3',
'test-spread.R:1225:3'
• {NLMR} is not installed (1): 'test-neutralLandscapeMap.R:2:3'
══ Failed tests ════════════════════════════════════════════════════════════════
── Error ('test-spread.R:659:7'): spread stopRule does not work correctly ──────
Error in ``[.data.table`(circs, , `:=`(numEvents, sum(unique(id))), by = indices)`: attempt access index 4/4 in VECTOR_ELT
Backtrace:
▆
1. ├─circs[, `:=`(numEvents, sum(unique(id))), by = indices] at test-spread.R:659:7
2. └─data.table:::`[.data.table`(...) at test-spread.R:659:7
── Error ('test-spread2.R:135:5'): spread2 tests ───────────────────────────────
Error in ``[.data.table`(dt, , `:=`(dups = duplicatedInt(pixels)), by = "initialPixels")`: attempt access index 4/4 in VECTOR_ELT
Backtrace:
▆
1. └─SpaDES.tools::spread2(...) at test-spread2.R:135:5
2. ├─dt[, `:=`(dups = duplicatedInt(pixels)), by = "initialPixels"]
3. └─data.table:::`[.data.table`(...)
── Error ('test-spread2.R:400:5'): spread2 tests -- asymmetry ──────────────────
Error in ``[.data.table`(dd, , `:=`(quantityAdj2, quantityAdj/(mean(quantityAdj)/mean(quantity))), by = "id")`: attempt access index 7/7 in VECTOR_ELT
Backtrace:
▆
1. └─SpaDES.tools::spread2(...) at test-spread2.R:400:5
2. └─SpaDES.tools:::asymmetryAdjust(...)
3. ├─...[]
4. └─data.table:::`[.data.table`(...)
── Failure ('test-spread2.R:653:5'): spread2 tests ─────────────────────────────
Expected `{ ... }` not to throw any errors.
Actually got a <simpleError> with message:
attempt access index 6/6 in VECTOR_ELT
── Error ('test-spread2.R:658:5'): spread2 tests ───────────────────────────────
Error in `eval(code, test_env)`: object 'out' not found
Backtrace:
▆
1. ├─testthat::expect_true("effectiveDistance" %in% colnames(out)) at test-spread2.R:658:5
2. │ └─testthat::quasi_label(enquo(object), label)
3. │ └─rlang::eval_bare(expr, quo_get_env(quo))
4. ├─"effectiveDistance" %in% colnames(out)
5. └─base::colnames(out)
6. └─base::is.data.frame(x)
[ FAIL 5 | WARN 0 | SKIP 4 | PASS 1802 ]
Error:
! Test failures.
Execution halted
- checking PDF version of manual ... [7s/10s] OK
- checking HTML version of manual ... [4s/8s] OK
- checking for non-standard things in the check directory ... OK
- DONE
Status: 2 ERRORs