本节摘要:生物学种概念把物种定义为"自然条件下能够互配生殖的群体集合",物种形成因此等于生殖隔离的建立。本节按地理格局分异域、邻域、同域三条路径,清点合子前/合子后隔离机制,解释植物的多倍体快车道,并用两群体分化模拟展示"基因流断开后隔离多快长出来"。
形态种概念(长得不一样就算不同种)在实践里好用,但会被多态性和趋同欺骗。生物学种概念(BSC)换了一把尺子:群体之间是否存在潜在的基因流。由此,物种形成问题被翻译成第 3 章的语言——把 Nm 降到接近零,两套频率方程各自漂流,差异随世代累积,最终即使重新相遇也换不动基因。
三条地理格局:
| 时机 | 机制 | 例子 |
|---|---|---|
| 交配前 | 栖境隔离 | 苹果蝇 vs 山楂蝇在各自果树上活动 |
| 交配前 | 时间隔离 | 同一湖里不同月份产卵的鱼 |
| 交配前 | 行为隔离 | 求偶歌/发光频率差异 |
| 交配前 | 机械隔离 | 生殖器形状不匹配(昆虫为主) |
| 交配后·合子前 | 配子隔离 | 传粉后花粉管不长、精子不融合 |
| 合子后 | 杂种不育/劣育 | 骡子;F2 崩溃(杂交二代分离出劣质组合) |
自然选择偏向合子前隔离的强化(reinforcement):如果杂种后代不育,那么凡是能避免错误交配的个体就多留下纯种后代——浪费被减少到配子之前。 sympatric 物种形成难,恰恰因为初期一点点分化会立刻被基因流冲淡(第 3 章 Nm 判据);它需要"分化快于混合"的局部条件,交配偏好与生态分裂恰好都满足。
import random def divergence_after_split(N=200, p0=0.5, m=0.0, loci=20, gens=300, seed=0): """两群体各自漂变+本地选择,统计位点差异(分化)累积""" rng = random.Random(seed) pops = [[p0] * loci for _ in range(2)] diff_history = [] for _ in range(gens): for i, pop in enumerate(pops): for L in range(loci): # 群体1的位点L受轻微本地选择,群体2反向——模拟两地环境不同 s = 0.02 if (i == 0) == (L % 2 == 0) else -0.02 p = pop[L] p_sel = p * (1 + s) / (p * (1 + s) + (1 - p)) pop[L] = sum(rng.random() < p_sel for _ in range(2*N)) / (2*N) # 每代按 m 交换移民 for L in range(loci): if rng.random() < m: pops[0][L], pops[1][L] = pops[1][L], pops[0][L] diff = sum(abs(pops[0][L] - pops[1][L]) for L in range(loci)) / loci diff_history.append(diff) return diff_history for m in (0.0, 0.01, 0.05): h = divergence_after_split(m=m) print(f"每基因座迁移率 m={m}: 300代后平均频率差 {h[-1]:.3f}(中段峰值附近 {max(h):.3f})")
m = 0 时差异稳定累积到接近 0.5 的水平(本地选择方向相反);m = 0.05 时几乎被搅平——分化与否就在迁移率的几个数量级之间,与第 3 章 Nm 判据吻合。真实测量里,群体间 F_ST 随地理距离上升的斜率,就是这条曲线的野外版本。
import random def polyploid_isolation(N=50, gens=20, seed=3): """植物2倍体群体里出现一个4倍体:与2倍体回交后代不育,隔离即刻完成""" rng = random.Random(seed) pop = ["2x"] * N pop[rng.randrange(N)] = "4x" # 未减数配子融合产生四倍体 history = [] for _ in range(gens): # 4x 与 2x 杂交的后代 3x 不育 -> 4x 只能自交或与 4x 交配 # 这里给 4x 一点育性优势以观察其扩张 newpop = [] for _ in range(N): g = rng.choice(pop) if g == "4x" and rng.random() < 0.7: newpop.append("4x") elif g == "2x" and rng.random() < 0.5: newpop.append("2x") else: newpop.append(rng.choice(pop)) pop = newpop history.append(pop.count("4x") / N) return history h = polyploid_isolation() print("4x 频率轨迹(每4代):", " ".join(f"{h[g]:.2f}" for g in range(0, 20, 4)))
四倍体一旦立住,与二倍体祖先的杂交产出不育的三倍体——生殖隔离不需要累积,一步到位。这解释了显花植物中多倍化事件的高占比(估计三到五成的被子植物物种经历过近期多倍化):植物自交亲和、营养繁殖,恰好补齐了新多倍体最难的第一步(找到一个同倍数配偶)。
⚠️ 常见误读:"物种形成需要无比漫长的时间"。隔离机制本身可以很快——实验室里按寄主植物分群的果蝇若干代内就发展出交配偏好;慢的不是隔离的出现,而是人们划分"物种"时要求的证据链。
下一节把镜头拉到百万年尺度:辐射与灭绝如何联袂写下多样性的账本。