Forest Dynamic Model III - Rosindell et al. 2010

No preview image

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.3.0 • Viewed 348 times • Downloaded 21 times • Run 0 times
Download the 'Forest Dynamic Model III - Rosindell et al. 2010' modelDownload this modelEmbed this model

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).

  1. Input θ and J, τ and m.

  2. 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.

  3. Define an empty vector V which will contain a list of groups of individuals descending from each immigration from the metacommunity species pool.

  4. Pick a random number 0 ≤ r ≤ 1 (to choose if coalescence or immigration will happen).

  5. Pick a random entry Si from the vector S (to choose which lineage this will happen to).

  6. 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.).

  7. 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.)

  8. Set K = K − 1; now the vector S should have one less element.

  9. If (K > 0), we are not finished so go to 4.

  10. If (K ≤ 0), define t = 0 the total number of units of coalescence time that have passed.

  11. Pick a random number 0 ≤ r ≤ 1 (to choose how many generations until the next coalescence event).

  12. Set t = t − ( ln(r) / [K(K−1)] ).

  13. 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).

  14. If τ ≤ t, define an empty vector W which will contains a list of species abundances when the algorithm terminates.

  15. Pick a random number 0 ≤ r ≤ 1 (to choose if coalescence or speciation will happen).

  16. Pick a random entry Vi from the vector V (to choose which lineage this will happen to).

  17. If rθ / [θ+K− 1] , speciation happens: remove Vi from the vector V and append it to vector W (then go to 12).

  18. 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.

  19. Set K = K − 1; now the vector V should have one less element.

  20. If (K > 0), we are not finished so go to 8.

  21. 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

Please cite the NetLogo software as:

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

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.