A forward simulator for generating synthetic metacommunity data. As an in silico experimental platform, it enables researchers to simulate community shifts, test theoretical frameworks, and benchmark analytical algorithms prior to empirical application. Key capabilities include mechanistic simulations driven by demography, dispersal, and interactions, GIS interoperability via the 'terra' package for dynamic environments, and a virtual ecologist module that simulates imperfect detection and survey errors to mimic real-world biodiversity data.
This package is a forward simulator designed to generate synthetic metacommunity data. As an in silico experimental platform, it enables researchers to computationally generate hypothetical community shifts, test theoretical frameworks and benchmark analytical algorithms prior to empirical application.
Core capabilities include:
terra ecosystem, the package
reads and writes standard spatial formats (such as GeoTIFFs and ESRI
grids), allowing simulations to run across dynamic environments.You can install mrangr with:
install.packages("mrangr")
The mrangr workflow involves initialising a community with spatial
data and interaction parameters, running the simulation, and analysing
the results.
You must provide carrying capacity maps (K_map) and initial abundance
maps (n1_map) as SpatRaster objects. For a community of $N$ species,
the rasters must contain $N$ layers.
# Load example maps
K_map <- rast(system.file("input_maps/K_map_eg.tif", package = "mrangr"))
K_map <- subset(K_map, 1:2)
Interspecific interactions are defined using an interaction matrix ($a$), where values represent the per-capita interaction strength of the species in the column on the species in the row.
# Example for 2 species with symmetric competition
nspec <- 2
a <- matrix(c(NA, -0.8, -0.8, NA), nrow = nspec, ncol = nspec)
Use initialise_com() to create a sim_com_data object. This stores
all parameters, including the intrinsic growth rate ($r$) and the
dispersal rate.
first_com <- initialise_com(
n1_map = round(K_map / 2),
K_map = K_map,
r = 1.1,
a = a,
rate = 1 / 500
)
The sim_com() function executes the simulation over a specified number
of time steps.
first_sim <- sim_com(first_com, time = 100)
You can visualise the final spatial distributions or the change in mean abundance over time.
# Visualise spatial niches at specific time steps
plot(first_sim, time = c(1, 10, 100))
# Plot abundance time series for all species
plot_series(first_sim)
The package includes a virtual_ecologist() function to simulate
real-world observation processes. This allows users to sample the
simulated community at defined points in space and time, incorporating
sampling effort and detection probability into the simulation.
To cite mrangr, please use the citation() function:
library(mrangr)
citation("mrangr")
This work was supported by the National Science Centre, Poland, grant no. 2018/29/B/NZ8/00066 and the Poznań Supercomputing and Networking Centre (grant no. pl0090-01).