6.1 看得见的实时进化案例


6.1 看得见的实时进化案例

本节摘要:桦尺蛾工业黑化与病原体耐药性是两桩被持续定量追踪的实时演化案。本节用选择方程核算其频率变化的数量级,解释"耐药代价"(cost of resistance)为何让耐药菌在停药后败退,并讨论这些案例对疾病管理策略的直接含义——进化知识在这里是可以省钱的工程参数。

一桩被重新核对的老案

工业黑化(melanism)是教科书常客,但值得核对的是它的数量级:英国曼彻斯特附近,深色型桦尺蛾比例在 19 世纪后半叶从不足 2% 升到 90% 以上,而在 1960 年代反污染立法后的几十年里又跌回个位数。标记-重捕实验直接测得的选择系数高达 0.2–0.5——按第 3 章的方程,这种强度的选择十代之内就能翻盘一个群体。同一时期常见的误解是"进化总是以百万年计";正确的表述是:大幅度的表型更替可以在几十代内完成,只是"新物种"需要更多步骤

另一桩常被质疑的细节也值得说明:早期实验里鸟类捕食的目击证据不足,后来用野外放置死蛾拍照记录捕食痕迹的实验补上了直接观察;同时分子工作定位到 cortex 基因区的一个转座子插入,把"深色"这个表型钉到了一个可追踪的变异上。一个经典案例在质疑中被加固,这正是它适合教学的原因。

演练一:用选择方程核算黑化频率

def melanic_trajectory(p0=0.02, s=0.35, gens=30): """深色显性有利:直接套第3章递推方程""" p = p0; traj = [p] for _ in range(gens): q = 1 - p wbar = p*p + 2*p*q + q*q*(1 - s) # 深色 w=1,浅色 aa w=1-s p = (p*p + p*q) / wbar traj.append(p) return traj rise = melanic_trajectory() print("工业化期 深色频率:", " ".join(f"{rise[g]:.2f}" for g in (0,5,10,20,30))) def reversal(p0=0.95, s=0.30, gens=40): """污染治理后:浅色有利,深色受罚""" p = p0; traj = [p] for _ in range(gens): q = 1 - p wbar = p*p*(1-s) + 2*p*q*(1-s) + q*q # 深色 w=1-s,浅色 aa w=1 p = (p*p*(1-s) + p*q*(1-s)) / wbar traj.append(p) return traj fall = reversal() print("治理后 深色频率: ", " ".join(f"{fall[g]:.2f}" for g in (0,10,20,40)))

两段轨迹复现了完整的钟形历史:三十年上升、四十年回落。注意回落更慢的原因在显性结构——深色等位藏在杂合子里,正如 3.2 节预测的两端减速。

耐药性:一台可以核算的进化机器

耐药的进化要件与蛾完全同构:变异(耐药突变/耐药基因,常经第 5 章的 HGT 快递)、选择(药物浓度就是选择压力)、差异繁殖(耐药菌在药环境下独占繁殖)。核算示例:某肺炎菌株对某药的耐药突变选择系数在治疗剂量下可达 0.5 量级,患者体内感染菌数 10¹⁰ 级——变异供给量与选择强度同时巨大,这就是为什么"单药足量短程"曾是正确策略:要么全杀、要么疗程短到耐药克隆来不及扩张。

耐药的关键管理参数是耐药代价:多数耐药机制(流出泵、修饰酶、 altered 靶点)在无药环境里降低竞争力。停药后,耐药菌以代价 c 的速度被敏感菌反超。

演练二:耐药代价与轮换策略

import random def resistance_management(days=60, s_res=0.5, cost=0.08, m=1e-8, rotate_at=30, seed=0): """先用药 rotate_at 天后停药:耐药频率的兴衰""" rng = random.Random(seed) p = 1e-6 # 初始耐药频率 traj = [] for d in range(days): on_drug = d < rotate_at # 净选择系数:用药时耐药优势 s_res;停药时只剩代价 -cost s_net = s_res if on_drug else -cost q = 1 - p wbar = p*(1+s_net) + q p = p*(1+s_net) / wbar p = min(max(p + m*(1-p), 0), 1) # 突变供给 traj.append(p) return traj traj = resistance_management() for d in (0, 10, 29, 35, 45, 59): print(f"第{d+1:>2}天 耐药频率 {traj[d]:.3e}")

前 30 天耐药频率指数爬升,停药后按代价 steady 回落。这个最小模型支撑着真实策略的两条直觉:药敏轮换(利用代价让敏感菌回来)与联合用药(同时对两个靶点耐药的概率是两个小概率之积)。演化动力学建模(如相关药物治疗领域提出的"按耐药管理而非仅按感染管理"的思路)已把这个框架做成了临床可用的工具。

⚠️ 常见坑:把耐药想成"细菌为了活下来而改变意图"。耐药突变在接触药物之前就已随机存在(或从别的菌种横向获得),药物做的只是筛掉敏感者、把舞台让给耐药者——杀灭不彻底的疗程等于替耐药菌办了一场定向选拔赛。

两个案例的共性核算表

要件 桦尺蛾 耐药菌
变异来源 转座插入(cortex 区) 点突变 + HGT
选择压力 鸟类视觉捕食 药物浓度
选择系数量级 0.2–0.5 0.3–0.7
反向力量 治污后捕食反转 停药后的耐药代价
管理含义 环境治理 剂量/轮换/联合用药

本节要点回顾

  • 实时演化的核算完全落地:选择系数、频率方程、代数,全可复现
  • 显性结构决定回落的尾巴:稀有害等位躲在杂合子里清不干净
  • 耐药代价是可利用的工程参数,支撑轮换与联合用药策略
  • 进化的"慢"只属于物种层面,适应的频率层面以十代计

下一节进入实验室:一台可以每天冻结、随时重放演化历史的时光机。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U