Forest Dynamic Model III - Rosindell et al. 2010
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Dispersal-limited local community case:The Rosindell et al. (2010) algorithm-3.
He had a census of a dispersal limited local community of size J. To obtain the species abundances for these J individuals, they again used coalescence. they traced the ancestry of K lineages as before, where initially K = J. With each time step there is a probability K/J (initially 1) that he picked one of the lineages, which might then immigrate with probability m or coalesce with probability (1 − m) . K − 1 / J − 1 . The calculations are analogous to the metacommunity case except that instead of a speciation-initiation rate μ they now have an immigration rate m. Lineages that immigrate are then passed to the metacommunity algorithm which accounts for them being drawn from a metacommunity species pool.
HOW IT WORKS
Algorithm 3. Local community dispersal limited sample from a metacommunity with protracted speciation.
This algorithm presents below is published by Rosindell, et al., (2010) in Ecology Letter supporting information section (see ELE1463sm_appendix.pdf).
Input θ and J, τ and m.
Define a vector S of length J with Si = 1 for i = 1, 2, . . . J and define K = J, the number of lineages in the vector.
Define an empty vector V which will contain a list of groups of individuals descending from each immigration from the metacommunity species pool.
Pick a random number 0 ≤ r ≤ 1 (to choose if coalescence or immigration will happen).
Pick a random entry Si from the vector S (to choose which lineage this will happen to).
If r1 <= (m . (J - 1) / [m . (J - 1) + (1 - m) . (K - 1)]) speciation happens: remove Si from the vector S and append it to vector V (then go to 8.).
If r1 > (m . (J - 1) / [m . (J - 1) + (1 - m) . (K - 1)]) coalescence happens: pick a random entry Sj from vector S (where j = i) and set Si = Si + Sj. Then remove Sj from the vector S ( then go to 8.)
Set K = K − 1; now the vector S should have one less element.
If (K > 0), we are not finished so go to 4.
If (K ≤ 0), define t = 0 the total number of units of coalescence time that have passed.
Pick a random number 0 ≤ r ≤ 1 (to choose how many generations until the next coalescence event).
Set t = t − ( ln(r) / [K(K−1)] ).
If τ > t, pick two random entries Vi and Vj from the vector V (where j not equal to i), set K = K - 1 and Vi = Vi + Vj. Then remove Vj from the vector V (then go to 3).
If τ ≤ t, define an empty vector W which will contains a list of species abundances when the algorithm terminates.
Pick a random number 0 ≤ r ≤ 1 (to choose if coalescence or speciation will happen).
Pick a random entry Vi from the vector V (to choose which lineage this will happen to).
If r ≤ θ / [θ+K− 1] , speciation happens: remove Vi from the vector V and append it to vector W (then go to 12).
If r > θ / [θ + K − 1] , coalescence happens: pick a random entry Vj from vector V (where j not equal to i) and set Vi = Vi + Vj then remove Vj from the vector V.
Set K = K − 1; now the vector V should have one less element.
If (K > 0), we are not finished so go to 8.
If (K ≤ 0), the algorithm is complete and W contains the abundances of all species.
HOW TO USE IT
Set the meta-community size, K = (w1 + 1)2.
Decide the fundamental biodiversity number, θ
Decide the τ.
THINGS TO NOTICE
Number of speciations happened in the meta-community is represents by arrow heads.
THINGS TO TRY
Increase the θ and see the number of speciations presents in the given θ and meta-community size.
Increase the meta-community size, K = (w1 + 1)2 and see the number of speciations presents in the meta-community for given θ and τ.
Increase the τ and see the number of speciations presents in the given θ and meta-community size.
EXTENDING THE MODEL
NETLOGO FEATURES
RELATED MODELS
Rosindell, J., Cornell, S. J., Hubbell, S. P., & Etienne, R. S. (2010). Protracted speciation revitalizes the neutral theory of biodiversity: Protracted speciation and neutral theory. Ecology Letters, 13(6), 716–727.
CREDITS AND REFERENCES
- Punchi-Manage, R. (2023i). NetLogo Rosindell et al. (2010)-Algorithm-3. http://netlogo/models/NetLogo-Rosindell-et-al-2010-Algorithm-3.
Please cite the NetLogo software as:
- Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
Comments and Questions
extensions [table csv] globals [V K W-vec index rspec speciation specia spec Wvec speciesi meta-speciesi JM meta-sp meta-time meta-a0 meta-j2 meta-a meta-set2 extinct-species number-of-meta-trees a initial-meta-richness dlocx dlocy random-number2 number time num j x-cor y-cor N richness a0 n-speciation local-set local-di-set local-off-set set-species-who-di set-species-who-off sp hist-frq rel-hist-frq s local-set0 remove-set richness-counts species-who-di di-locx di-locy species-who-off set1-species-who-off meta-set effective-meta-cmmunity-size number-of-local-trees item-x meta-set-new meta-sp-count sp-count j1 i1 k1 j2 i2 k2 meta-richness-counts meta-richness local-richness-counts local-richness hist-frq-meta rel-hist-frq-meta hist-frq-local rel-hist-frq-local t] breed [meta-trees meta-tree] breed [trees tree] meta-trees-own [species meta-species n-speciation-no] trees-own [species h] circles-own [] breed [circles a-circle] patches-own[elevation] to setup3 clear-all set local-richness-counts map count table:values table:group-agents trees [species] set local-richness length local-richness-counts set sp 0 set meta-sp 0 set speciation 0 set specia [] set spec [] set Wvec [] set J (w1 + 1) * (w1 + 1) resize-world 0 w1 0 w1 set JM 0 set K J set t 0 species-gen1 set hist-frq-local sort-by > map count table:values table:group-agents trees [ species ] set rel-hist-frq-local map [ i -> i / count trees ] hist-frq-local set richness-counts map count table:values table:group-agents turtles [ species ] set richness length richness-counts set hist-frq-meta sort-by > map [ i -> i] Wvec update-plots reset-ticks end to species-gen1 set k1 -1 while [k1 < w1 ] [ set k1 k1 + 1 set i1 -1 while [i1 < w1 ] [ set i1 i1 + 1 create-trees 1 [ setxy k1 i1 set shape "circle" set size 1 set num random-float 1 set j1 j1 + 1 set species (sp + 1) set sp sp + 1 set color random-float -50 set spec fput sp spec ] ] ] set local-richness sp end to go3 while [K > 0] [ let r1 random-float 1 if (length spec = 0 )[stop] set rspec one-of spec if-else (r1 <= (m * (J - 1) / (m * (J - 1) + (1 - m) * (K - 1))))[ set speciation speciation + 1 set specia fput rspec specia set spec remove rspec spec let Wvec1 count trees with [species = rspec] set Wvec fput Wvec1 Wvec set sp sp + 1 let color0 60 + random-float -50 ask trees with [species = rspec] [ set species sp set color color0 ;set shape "arrow" ] ] [ if (length spec = 0 )[stop] set spec remove rspec spec let color01 [color] of one-of trees with [species = rspec] ask trees with [species = rspec] [ if (length spec = 0 )[stop] set rspec one-of spec set species rspec set color color01 ] ] set K K - 1 set richness-counts map count table:values table:group-agents turtles [ species ] set richness length richness-counts set hist-frq-local sort-by > map count table:values table:group-agents turtles [ species ] set rel-hist-frq-local map [ i -> i / count turtles ] hist-frq-local set hist-frq-meta sort-by > map [ i -> i ] Wvec update-plots tick ] If (K = 0) [go] end to go set K J while [K > 0] [ let r1 random-float 1 if (length spec = 0 )[stop] set rspec one-of spec if-else (K > 1) [set t t - (ln (r1) / (K * (K - 1 )))] [set t 100000] if-else (tau > t) [ set spec remove rspec spec ask trees with [species = rspec] [ set rspec one-of spec set species rspec set color [color] of one-of trees with [species = rspec] ] set K K - 1 set t 0 set richness-counts map count table:values table:group-agents turtles [ species ] set richness length richness-counts set hist-frq-local sort-by > map count table:values table:group-agents turtles [ species ] set rel-hist-frq-local map [ i -> i / count turtles ] hist-frq-local set hist-frq-meta sort-by > map [ i -> i ] Wvec update-plots tick ] [ if (length spec = 0 )[stop] if-else (r1 <= theta / (theta + K - 1)) [ set speciation speciation + 1 set specia fput rspec specia set spec remove rspec spec let Wvec1 count trees with [species = rspec] set Wvec fput Wvec1 Wvec set sp sp + 1 let color0 60 + random-float -50 ask trees with [species = rspec] [ set species sp set color color0 ;set shape "arrow" ] set K K - 1 set richness-counts map count table:values table:group-agents turtles [ species ] set richness length richness-counts set hist-frq-local sort-by > map count table:values table:group-agents turtles [ species ] set rel-hist-frq-local map [ i -> i / count turtles ] hist-frq-local set hist-frq-meta sort-by > map [ i -> i ] Wvec update-plots tick ] [ if (length spec = 0 )[stop] set spec remove rspec spec let color01 [color] of one-of trees with [species = rspec] ask trees with [species = rspec] [ set rspec one-of spec set species rspec set color color01 ] set K K - 1 set richness-counts map count table:values table:group-agents turtles [ species ] set richness length richness-counts set hist-frq-local sort-by > map count table:values table:group-agents turtles [ species ] set rel-hist-frq-local map [ i -> i / count turtles ] hist-frq-local set hist-frq-meta sort-by > map [ i -> i ] Wvec update-plots tick ] ] ] end ; Copyright 2023i Ruwan Punchi-Manage. ; See Info tab for full copyright and license.
There is only one version of this model, created almost 2 years ago by Ruwan Punchi-Manage.
Attached files
No files
This model does not have any ancestors.
This model does not have any descendants.