A platform for experimenting with spatially explicit individual-based plant modelling
The main functions are
assimilation, for fully spatial models, and
pairwise, for pairwise-interaction competition indices.
assimilation computes effective resource capture (or “assimilation”) indices. One starts with a spatial resource distribution that is typically assumed to be uniform, Plants exert competitive pressure depending on size and distance, described by influence functions. The resource available at each point is allocated to plants according to their local influence and to a partition rule. Finally, the resource uptake is weighted by an efficiency function that depends on size and distance, and is spatially integrated to obtain the plant's assimilation index.
Several examples of influence and efficiency functions are pre-programmed, see influence and efficiency.
Another class of spatial individual-plant models consider only pairwise interactions between a plant and each of its neighbors, ignoring higher-order interactions. These are implemented in function
edges function is useful for handling edge effects.
Some sample data sets are included, see links below.
The package is built on top of the spatstat library (http://www.spatstat.org), which needs to be installed first.
Maintainer: O. Garcia <email@example.com>
García, O. “Siplab, a spatial individual-based plant modelling system”. Computational Ecology and Software 4(4), 215-222. 2014. (http://www.iaees.org/publications/journals/ces/online-version.asp).
García, O. “A generic approach to spatial individual-based modelling and simulation of plant communities”. Mathematical and Computational Forestry and Nat.-Res. Sci. (MCFNS) 6(1), 36-47. 2014. (http://www.mcfns.com/index.php/Journal/article/view/6_36).
1 2 3 4 5 6 7 8 9 10 11 12
# Assume data given as a simple data frame data <- as.data.frame(spruces) # from a spatstat data set head(data) # x-y coordinates in a 56x38 m plot, marks are dbh in meters # Convert to a point pattern object, dbh in cm datap <- ppp(data$x, data$y, c(0, 56), c(0, 38), marks = data$marks * 100) # Hegyi (1974) index hegyi <- pairwise(datap, maxR = 6, kernel = powers.ker, kerpar = list(pi=1, pj=1, pr=1, smark=1)) head(marks(hegyi)) # ZOI model zoi <- assimilation(datap, influence=zoi.inf, infpar=c(k=0.2, smark=1), asym=1)