Continent-island migration
One-way gene flow pulls an island to the continent frequency, and the gap shrinks by the same fraction every generation.
Read first: Genotype frequencies and Hardy-Weinberg
One-way gene flow
An island that receives migrants from a large mainland ends up with the mainland allele frequency. The Continent-Island module shows how fast it gets there. The model has one locus with alleles A and a. The continent holds a constant frequency P of A. Each generation a fraction m of the island gene pool is replaced by continental migrants, and the rest stays. The island frequency p updates as p(t + 1) = (1 − m)p(t) + mP.
Read m as a share of gene copies. With m = 0.05, 5 of every 100 gene copies on the island come from the mainland each generation. On an island that holds 1,000 gene copies, 50 are new arrivals. The mainland is so large that sending them out does not change its own frequency.
The island is treated as infinitely large, so drift does not act. There is no selection and no mutation. Migration is the only force. That makes the curve exact and smooth.
The default run
The gap shrinks by a fixed fraction
Subtract P from both sides of the update. The result is p(t + 1) − P = (1 − m)(p(t) − P). The gap between island and continent is multiplied by (1 − m) every generation. After t generations the gap is (p₀ − P)(1 − m)^t, so p(t) = P + (p₀ − P)(1 − m)^t.
With the defaults the gap is 0.6 × 0.95^t. It is 0.6 at generation 0 and 0.36 at generation 10. The curve is steepest at the start, because the same fraction of a larger gap is a larger step.
The island ends at P whatever m is. The value of m sets only the speed. The gap halves every ln(0.5) / ln(1 − m) generations, about 0.693 / m for small m. For m = 0.05 that is 13.5 generations, so the island passes the halfway value 0.5 between generations 13 and 14.
The extremes check the formula. With m = 0 nothing arrives and the island stays at p₀. With m = 0.5 the island is at 0.5000 in generation 1, 0.6500 in generation 2 and 0.7250 in generation 3, and it reaches 0.7994 in generation 10. With m = 1 the island equals the continent after one generation. In each case the gap follows (1 − m)^t.
Because the gap shrinks geometrically, the island never quite arrives. It gets close fast and then creeps. With the defaults the island first comes within 0.01 of the continent in generation 80, when it reads 0.7901. Reading the module chart, remember that its y axis scales to the plotted values, so check the tick labels before judging how large a gap looks.
Ten times less migration
Exercise
Compare two migration rates
Open the module and run p(cont) 0.8, p(isle) 0.2, m 0.05, Gen 100. Save the run from the Runs panel. Change m to 0.01, set Gen to 500, run again and tick the saved run.
What to expect. Both curves end at 0.8. The m = 0.05 curve is at 0.7964 in generation 100, and the m = 0.01 curve is at 0.5804. Step 4 of the walkthrough shows the same comparison.
Open the walkthrough step →Starting above the continent
Exercise
Start above and below
Set p(cont) 0.8, m 0.05 and Gen 100. Run with p(isle) 0.2, then with p(isle) 0.95.
What to expect. The first island rises to 0.7964 and the second falls to 0.8009. Both approach 0.8 at the same rate, because only the size of the gap sets the speed.
Open the walkthrough step →Summary
- The island frequency follows p(t + 1) = (1 − m)p(t) + mP, with P fixed.
- The gap to the continent is multiplied by (1 − m) each generation: p(t) = P + (p₀ − P)(1 − m)^t.
- The island always ends at P. Migration rate sets the speed, not the destination.
- The gap halves every ln(0.5) / ln(1 − m) generations: 13.5 for m = 0.05 and 69.0 for m = 0.01.
- A lasting difference between island and continent needs another force, such as local selection, or drift acting on a small island with low Nm.
- The model is exact because it ignores drift. Real islands scatter around the curve.