The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

spacc

species accumulating in the neighbourhood

R-CMD-check codecov License: MIT

Spatial species accumulation curves built by nearest-neighbour expansion in C++.

Pick a starting site, then walk outward to its nearest neighbours, counting new species as you go. spacc does that from many starting points (Rcpp/RcppParallel backend), so the curve carries a confidence ribbon showing how richness depends on where you begin. The classical curve in vegan::specaccum() shuffles sites in random order and never sees the map. spacc reproduces that random-order curve and adds the spatial one, so you can read the gap between them.

library(spacc)

coords  <- data.frame(x = runif(100), y = runif(100))
species <- matrix(rbinom(100 * 50, 1, 0.3), nrow = 100)

# spatial accumulation: walk outward by nearest neighbour
sac <- spacc(species, coords, method = "knn", n_seeds = 100)
plot(sac)

Spatial order, not random order

vegan::specaccum() accumulates sites in random or collector order, so geography drops out. spacc() keeps it: each curve follows nearest-neighbour expansion from a real seed site, and the spread across seeds is the spatial signal. Run both and compare them directly.

sac        <- spacc(species, coords, method = "knn",    n_seeds = 100)
sac_random <- spacc(species, coords, method = "random", n_seeds = 100)

comp <- compare(sac, sac_random)   # permutation, bootstrap, or AUC test
plot(comp)

Seven expansion methods are available: knn and kncn (nearest-neighbour and nearest-centroid walks), radius, gaussian, and cone (distance- and direction-weighted growth), random (the classical null), and collector (data order). Geographic coordinates use distance = "haversine" with no projection step.

Backend selection

Nearest-neighbour queries pick a backend by site count, overridable with backend.

Backend Distance Cost per query When
Exact (brute force) any O(n) <= 500 sites (auto)
k-d tree (nanoflann) Euclidean O(log n) > 500 sites (auto)
Ball tree Haversine O(log n) > 500 sites, distance = "haversine"
sac <- spacc(species, coords_lonlat, distance = "haversine", n_seeds = 50)
sac <- spacc(species, coords, backend = "kdtree", n_seeds = 50)

Diversity beyond richness

Accumulation works for more than species counts. Each function carries the spatial ordering through to a different diversity measure, with map = TRUE and as_sf() for GIS output.

hill <- spaccHill(species, coords, q = c(0, 1, 2), n_seeds = 50, map = TRUE)
plot(hill)                       # accumulation curves
plot(hill, type = "map", q = 0)  # per-site richness map

beta <- spaccBeta(species, coords, index = "sorensen", n_seeds = 50)
plot(beta, partition = TRUE)     # turnover vs nestedness

Grouped and spatiotemporal accumulation

Split species into groups (native vs alien, families, any factor) and accumulate each under the same spatial site ordering, or add a temporal axis to weight space against time.

# same spatial walk, separate curve per group
sac_grouped <- spacc(species, coords, groups = status, seed = 42)
plot(sac_grouped, facet = TRUE)

# sites sampled across years: weighted space-time distance
sac_st <- spacc(species, coords, method = "knn",
                time = site_years, w_space = 1, w_time = 0.5)

Fitting and standardizing

Installation

install.packages("pak")
pak::pak("gcol33/spacc")

Documentation

Support

“Software is like sex: it’s better when it’s free.” — Linus Torvalds

I’m a PhD student who builds R packages in my free time because I believe good tools should be free and open. I started these projects for my own work and figured others might find them useful too.

If this package saved you some time, buying me a coffee is a nice way to say thanks. It helps with my coffee addiction.

Buy Me A Coffee

License

MIT (see the LICENSE.md file)

Citation

@software{spacc,
  author = {Colling, Gilles},
  title = {spacc: Fast Spatial Species Accumulation Curves},
  year = {2025},
  url = {https://github.com/gcol33/spacc}
}

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.