Supporting Information Fire, percolation thresholds and the savanna forest transition: A neutral model approach Sebastián R. Abades1, 2, 3, Aurora Gaxiola2,3 and Pablo A. Marquet1, 2, 3, 4,5,6,7* 1 Departamento de Ecología, Facultad de Ciencias Biológicas, Pontificia Universidad Católica de Chile, Alameda 340, C.P. 8331150, Santiago, Chile. 2 Instituto de Ecología y Biodiversidad (IEB), Casilla 653, Santiago, Chile. 3 Laboratorio Internacional en Cambio Global (LINCGlobal) Pontificia Universidad Católica de Chile, Alameda 340, Santiago, Chile. 4 5 The Santa Fe Institute, 1399 Hyde Park Road, Santa Fe, New Mexico 87501, USA Instituto de Sistemas Complejos de Valparaíso (ISCV), Subida Artilleria 470, Valparaíso, Chile 6 Centro de Cambio Global Pontificia Universidad Católica de Chile, Avenida Vicuña Mackenna 4860, Santiago, Chile. 7 South American Institute for Resilience and Sustainability Studies (SARAS),10302 Bella Vista, Maldonado, Uruguay *Corresponding author E-mail: pmarquet@bio.puc.cl 1 APPENDIX S1: Basic percolation theory In this section we make a short review of the basic notions of percolation, critical exponents and scaling laws for spatial clustering phenomena (see Oborny et al.1 for a review akin to metapopulation theory, and Solé and Bascompte 200622 for a general review and applications in ecology). 1. Critical exponents Random site percolation models provide simple examples of spatial critical phenomena2-5. In these models, sites in a lattice (ideally of infinite size) are randomly occupied with a fixed probability, and nearby occupied sites are connected according to some predefined rule, creating clusters of varying sizes4. Usually, one is interested in how different cluster attributes, such as cluster size and other statistics, change as we vary occupation probability6,7. Despite its simplicity, these types of models exhibit a second-order phase transition around a non-trivial occupation probability pc 8,9. This phase transition is characterized by the sudden appearance of a giant cluster that encompasses a large fraction of occupied sites, creating long-range connectivity across space4,9. In other words, if one takes one site at random, the probability that the chosen site belongs to the largest cluster vanishes for p < pc and monotonically increase for p > pc. Close to pc , the size of the spanning cluster LC(p) relates to the distance from the critical point pc by a powerlaw LC(p) ~ (p - pc) 2 where LC(p) is the fraction of sites in the largest cluster, and is a critical exponent. This exponent is regarded as universal, in the sense that its value is not affected by the connectivity rule employed to form clusters (i.e., is independent of the underlying microscopic properties of the system), although do depend on lattice dimensionality. On the contrary, percolation threshold values pc are not universal10,11. Other quantities also behave as power-laws in the vicinity of pc. Let us define the correlation function G(r) as the probability that two sites separated by a distance r apart belong to the same cluster (excluding the spanning cluster from calculations). For large values of r at a fixed p, G(r) decays exponentially as a function of r G(r) ~ -r / e(p) (2) where (p) quantifies the spatial extent of correlations (i.e., the typical diameter of a cluster other than the spanning cluster, or the average distance between two sites belonging to the same cluster). However, in the vicinity of pc long-range correlations appear in the form of a power-law like G(r) ~ r- (3) and consequently (p pc) diverges. This means that scale-invariant pattern develops in space, and there is no longer a typical cluster size. The divergence of the characteristic scale is incorporated into the critical behavior as 3 (p) ~ |p - pc|- (4) where is another universal critical exponent. Another quantity that displays critical behavior is the mean cluster size (p), which corresponds to the average number of sites (or ``mass'') that belong to an s-size cluster (again, excluding the spanning cluster). This quantity behaves like (p) ~ |p - pc|- where is another universal critical exponent controlling the divergence of around pc , an is also related to the absence of a characteristic scale around pc. This occurs because in the vicinity of pc clusters organize in space forming self-affine patterns12. All the above relations (and others not revised here) are asymptotically valid for infinitely large lattices. For lattices of size L L , exponent values are affected by finite size effects created by boundary conditions10,11,13. By exploiting the self-similar nature of percolation at pc , Finite Size Scaling Theory and Renormalization Group Theory have demonstrated that the following size relations are valid around the critical point LC(p) ~ L- (p) ~ L 4 (p) ~ L (8) These lattice size relations are useful to derive asymptotic values for the critical exponents, by extrapolating to a very large lattice size the values obtained at small size maps. Also, as it will be shown below, they allow us to obtain scaling-laws that interrelate critical exponents14-16. 2. Scaling laws Critical exponents are not independent of each other, but relate through several scalinglaws3,17-19. Here, we are interested in one form of scaling-laws that links some of the critical exponents described before, to the fractal dimension in the spatial pattern of clusters. Given that fractals shapes are not compact objects, they fill a fractional dimension D smaller than the Euclidean dimension d in which they are embeded. Thus, near pc a cluster of typical diameter occupies a mass D smaller than the containing Euclidean volume d. Then, around pc , the fraction of occupied volume space D/d is dominated by the spanning probability LC(p). Using Eqs.6-8 we easily found that the fractal dimension relates to critical exponents through the scaling-law D = d – Scaling-laws for other exponents also exist, and have been extensively reviewed elsewhere12,20. The existence of this type of scaling-laws reveals the non-trivial result that, 5 when microscopically disordered systems develop macroscopic order through criticality, they do so in a deep form by creating mechanical dependencies between macroscopic attributes8,16,21. The scaling-law in Eq. 9 is one special case of scaling known as hyperscaling4,12,19, due to the fact that it explicitly includes dimensionality d. We took advantage from the scaling theory reviewed above to test whether geographical populations exhibit hallmarks of criticality. In particular, we assessed the existence of the scaling relations predicted in Eqs. 1, 4 and 5. Furthermore, we tested the hyperscaling hypothesis by contrasting the fractal dimension estimated by Eq. 9 , against the fractal dimensions directly estimated from the geographical species occupancy patterns. REFERENCES 1. Oborny, B., Meszena, G. & Szabo, G. Dynamics of Populations on the verge of extinction. Oikos, 109, 291-296 (2005). 2. Lee, J. C. Lacunarity and percolation phase transitions. J. Stat. Phys. A: Math. Gen., 24, L377-L381 (1991). 3. Stauffer, D. Scaling theory of percolation clusters. Phys. Rep., 1, 1-74 (1979). 4. Stauffer, D. Introduction to Percolation Theory (Taylor & Francis, London, 1985). 5. Aharony, A. Percolation, fractals, and anomalous diffusion. J. Stat. Phys., 34, 931-939 (1984). 6. Leath, P. L. Cluster size and boundary distribution near percolation threshold. Phys. Rev. B, 14, 5046-5055 (1976). 6 7. Manna, S. S. & Naeem, J. Growth probability distribution in percolation. J. Phys. A: Math. Gen., 24, 1593-1601 (1991). 8. Stauffer, D. & Aharony, A. Introduction to Percolation Theory (Taylor & Francis, London, 1992). 9. Stauffer, D. Scaling assumption for animal lattice in percolation theory. J. Stat. Phys., 18, 125-136 (1978). 10. Sornette, D. Critical Phenomena in the Natural Sciences – Chaos, Fractals, Selforganization and disorder: concepts and tools (Springer, Berlin, 2000). 11. Wilson, K. G. The renormalization group and the critical phenomena. Rev. Mod. Phys., 55, 583-600 (1983). 12. Family, F. Fractal dimension and grand universality of critical phenomena. J. Stat. Phys., 36, 881-896 (1984). 13. Fisher, M. E. & Barber, M. N. Scaling theory for finite-size effects in the critical region. Phys. Rev. Lett., 28, 1516-1519 (1972). 14. Chave, J., Levin, S. Scale and scaling in ecological and economic systems. Environ. Res. Econ., 26, 527-557 (2003). 15. Maritan, A., Rinaldo, A., Rodríguez-Iturbe, R., Rigon, R. & Giacometti, A. Scaling in river networks. Phys. Rev. E, 53, 1510-1515 (1996). 16. Carcciolo, S. & Sokal, A. Monte Carlo test of a hyperscaling relation for the twodimensional self-avoiding walk. J. Phys. A: Math. Gen., 20, 2569-2576 (1987). 17. Tang, C. & Bak, P. Critical exponents and scaling relations for self-organized critical phenomena. Phys. Rev. Lett., 60, 2347-2350 (1988). 18. Bunde, A. & Gouyet, J. F. On scaling relations in growth models for percolating 7 clusters and diffusion fronts. J. Phys. A: Math. Gen., 18, L285-L287 (1985). 19. Willemsen, J. F. Investigations on scaling and hyperscaling for invasion percolation. Phys. Rev. Lett., 52, 2197-2200 (1984). 20. Kun, F., Wittel, F. K., Herrmann, H. J., Kroplin, B. H. & Malloy, K. J. Scaling behavior of fragment shapes. Phys. Rev. Lett. 96, 025504-025507 (2006). 21. Shur, M. S. Critical exponents describing divergence of the correlation radius in percolation problems. J. Phys. C: Solid State Phys., 9, L229-L230 (1976). 22. Solé, R. V. and J. Bascompte. Self-organization in complex ecosystems. Princeton University Press, Princeton, NJ. (2006). 8 APPENDIX S2 R code for neutral model simulations This code is provided as is. Comments have been included to guide the user along the workflow. Many chunks of code can be improved by replacing loops by functions of the apply family. Parallelization can also be implemented. require(SDMTools) ######################################################################## ######################## ### Authors: Sebastián Abades, Aurora Gaxiola & Pablo Marquet ### Year: 2014 ### Community neutra simulation ######################################################################## ######################## ### Explanation ######################################################################## ######################## ### All calculations are performed upon a 3d array Mat[i,j,s], wherein each cell ### i,j are spatial coordinated, and k is a layer of abundances for the s-th species. ### Therefore, Mat is an stack of species that is fully updated over the course of ### each iteration. ### Update is performed in two steps: ### i) First, a random proportion of individuals are killed in each site ### ii) New individuals taken from the neighborhood + individuals remaining in the perturbed site ### are sampled, and the site is refilled up to J individuals. ### Functions available are: ### kill.rand : randomly kill individuals across species at a given site ### fill.rand: re-fill empty slots left by death individuals. Sample J-killed individuals ### from neighborhood (9 nn + focal site) ### simula: run the above rules for a given number of iterations (it), number of species(S), ### number of individuals (J), and lattice dimension (N). Output is a list with updated species ### stack (i.e., maps for the last iteration), and snapshots of percolation cluster vs site occupancy sampled ### from different species configurations from t/2 onwards. ### span : calculate one species occupancy (site proportion) and check whether or its spatial pattern percolate ### span2: apply span to the entire stack ######################################################################## ######################## 9 ######################################################################## ######################## ### randomly kill a given proportion of individuals ######################################################################## ######################## kill.rand<-function(vec,prop){ new.J<-ceiling(sum(vec)*prop) while(sum(vec)>=new.J){ to.sample<-which(vec!=0) if(length(to.sample)!=0){ i<-sample(which(vec!=0),1) vec[i]<-vec[i]-1 } } ### in case nagative values arise, set them to zero check<-any(vec<0) if(check==TRUE){ vec[which(vec<1)]<-0 } return(vec) } ######################################################################## ######################## # Immigration from NN + local birth ######################################################################## ######################## fill.rand<-function(Mat,i,j,J){ v1<-Mat[i-1,j-1,];v2<-Mat[i-1,j,];v3<-Mat[i-1,j+1,];v4<-Mat[i,j-1,];v5<Mat[i,j+1,];v6<-Mat[i+1,j-1,];v7<-Mat[i+1,j,];v8<-Mat[i+1,j+1,]; vecinos<-v1+v2+v3+v4+v5+v6+v7+v8 local<-Mat[i,j,] K<-sum(local) delta<-as.integer(round(J-K)) fill<-0 10 if(delta >0){ if(sum(vecinos)==0) vecinos<-1 fill<-rmultinom(1,delta,local+vecinos) } ######################################################################## ######################## ### Neutral community simulation ######################################################################## ######################## simula<-function(N,S,J,it){ #prop<-runif(1,0,1) # if low prop are allowed, same results are obtained, but take much longer to recover the percolation behaviour prop<-runif(1,0.5,.99) # initial condition is even abundance and distribution for all species. JJ<-ceiling(J/S) Mat<-array(JJ,dim=c(N,N,S)) # For ver large matrices, unhide next row. It save Mat in a file outside R. Will not run faster, but # won't crash when reaching default storage limit #Mat<- ff(inds, dim=c(N,N,S),filename="arr.ffd", vmode="double") Mat[1,,]<-0 Mat[(N),,]<-0 Mat[,1,]<-0 Mat[,N,]<-0 # this will store side records of percolation behaviour observed during the simulation out.clust<-NULL pb <- txtProgressBar(min = 2, max = it, style = 3) # Open iterations for(t in 1:it){ #cat("remaining iterations",it-t,"\n") setTxtProgressBar(pb, t) ### Killing rule Mat<-apply(Mat,3,kill.rand, prop=prop) Mat<-array(Mat,dim=c(N,N,S)) 11 ### Here it would be wise to include a rule for taking a random subset of sites to update from vector "barre" ### specially for very large lattices. #barre<-2:(N-1) barre1<-sample(2:(N-1),round(N/4),replace=FALSE) barre2<-sample(2:(N-1),round(N/4),replace=FALSE) for(i in barre1){ for(j in barre2){ upd<-fill.rand(Mat,i,j,J) Mat[i,j,]<-upd } } # close loop for sites update ### Start recording percolation statistics if t>t/2 if(t > t/2){ tmp.clust<-t(sapply(1:dim(Mat)[3],span2,Mat)) out.clust<-rbind(out.clust,tmp.clust) } ### cut simularion if community abundance gets too low if(sum(Mat)<10) return(list(Mat=Mat, out.clus=round(out.clust,2))) ### here can be inserted a cutoff criteria to avoid unnecesary iterations when steady state has been achieved } # close temporal loop close(pb) return(list(Mat=Mat, out.clus=round(out.clust,2))) } # close main function ######################################################################## ######################## ### Check if spanning cluster exists and calculate proportion of sites occupied by species ######################################################################## ######################## span<-function(Mat){ Mat<-ifelse(Mat!=0,1,0) if(sum(Mat)==0) return(0) if(sum(Mat)==prod(Mat)) return(1) ### here we are generous about spanning clusters, and consider one if it touches the 12 ### borders or an adyacent bordering site. Mat<-Mat[-c(1,2,nrow(Mat)-1,nrow(Mat)),] Mat<-Mat[,-c(1,2,nrow(Mat)-1,nrow(Mat))] labs<-ConnCompLabel(Mat) patch<-PatchStat(labs) patch<-patch[patch$patchID!=0,] id<-patch$patchID[which.max(patch$n.cell)[1]] coords<-which(labs==id,arr.ind=TRUE) bordes<-apply(coords,2,range) horiz<-sum(bordes[,1]==c(1,nrow(Mat))) vert<-sum(bordes[,2]==c(1,ncol(Mat))) if(horiz==2 | vert==2){ return(patch$n.cell[which.max(patch$n.cell)[1]]) } else{ return(0) } } ######################################################################## ######################## ### Evaluate span across all species in the stack ######################################################################## ######################## span2<-function(X,M){ Mat<-M[,,X] s<-span(Mat) MM<-ifelse(Mat!=0,1,0) #MM[-c(1,nrow(MM)),-c(1,ncol(MM))]<-0 p<-sum(MM)/prod(dim(MM)) o<-c(p,s) return(o) } 13 APPENDIX S3 Impact of neighborhood geometry upon percolation threshold Relationship between pc and the coordination number (z) to illustrate the effect of different neighbourhoods on percolation probability. A given z value can be achieved by several complex neighborhood arrangements, however, the general pattern indicate that the larger the number of neighbors, the smaller the threshold value. Data taken from: Malarz, K & Galam, S. 2005. Square lattice site percolation at increasing ranges of neighbor interactions. Phys. Rev. E71: 016125. 14