Practical Problem 7: Neutral Gene Surfing Patterns
This problem is about neutral gene surfing, a topic we will discuss in class.
The simulation will be patch based. We imagine we have two types of species X and Y that can inhabit a patch. Let's denote by the discrete variables $x$ and $y$ the number of individuals of X and of Y at a patch location.
Let's say no more than $M$ individuals can occupy a patch so that $x+y\leq M $. $M$ should be slider parameter and a good value is say 30.
We let x
and y
be individual patch variables. So every patch has occupancy numbers $x$ and $y$ that can change over time.
Initially we want $x=y=0$ everywhere except for a region in the center (a circle of radius R, typically like 1/4 of the world-size) where $x$ should be some random discrete number between 0 and $M$ and $y=M-x$.
You can color the patches like this:
ask patches [set pcolor rgb (x / M * 255) (y / M * 255) 0]
Simulation
- ask all patches with $x+y>0$ to pick one random neighboring patch that is not "filled" ($x+y< M$):
ask one-of neighbors with [ x + y < M]...
- with probability $p=x/(x+y)$ the neighboring patch increases its own $x$ variable by 1. with probability $1-p$ the y value is increased. This can be accomplished using the code snippet:
let p x / (x + y)
ifelse random-float 1 < p [set x x + 1][set y y + 1]