关于 tooluniverse-population-genetics
面向群体遗传学分析的 ToolUniverse 技能,涵盖群体变异、等位基因频率、GWAS、临床变异和进化约束。提供数据库查询流程与定量遗传学公式,适用于研究分析和计算题。
主要功能
- 01群体等位基因频率查询
- 02GWAS 性状关联检索
- 03临床变异注释
- 04基因约束指标分析
- 05群体遗传学公式与计算
适用场景
- 01比较不同群体的变异频率
- 02检索疾病或性状的 GWAS 关联
- 03评估变异的临床意义
- 04计算选择、遗传漂变或连锁不平衡
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mims-harvard/ tooluniverse --skill tooluniverse-population-genetics安装后在 Claude Code 中输入/tooluniverse-population-genetics确认已加载。
附带文件scripts/popgen_calculator.py
详细介绍
群体遗传学分析
MC 策略:群体遗传学 MC 题目通常考查你是否了解某个定理或结果。先计算答案(使用 popgen_calculator.py 或编写 Python 代码),再与选项匹配。不要试图推测哪个选项“听起来正确”。
使用 ToolUniverse 工具分析群体层面的遗传变异、等位基因频率、GWAS 关联、临床意义和进化约束。
适用场景
当用户询问以下内容时,启用此技能:
- 不同群体中的等位基因频率(gnomAD、1000 Genomes)
- 疾病/性状的 GWAS 关联
- 临床变异解读(ClinVar、VEP)
- 基因层面的约束指标(pLI、LOEUF、o/e 比率)
- 选择、遗传漂变、连锁不平衡或群体结构
- 变异注释和功能影响
查询,不要猜测
对于等位基因频率和关联,先查询 gnomAD/1000Genomes/GWAS Catalog。优先使用 PopGen_hwe_test、PopGen_fst、PopGen_inbreeding 和 PopGen_haplotype_count 工具进行 HWE、Fst、近交和单倍型计算。备用方案:直接运行 popgen_calculator.py。对于理论问题(delta-q、漂变、LD 衰减),请使用下文“理论推理”部分中的公式。
工具速查
| 工具 | 关键参数 | 备注 |
|---|---|---|
gnomad_search_variants | query(必填) | 将 rsID 转换为格式为 "CHR-POS-REF-ALT" 的 variant_id |
gnomad_get_variant | variant_id(必填)、dataset | 群体频率。默认数据集:gnomad_r3;如需最新数据,请使用 gnomad_r4 |
gnomad_get_gene_constraints | gene_symbol(必填) | pLI、o/e 比率。可能超时——重试一次 |
MyVariant_query_variants | query(必填) | 聚合数据:ClinVar + dbSNP + gnomAD + CADD。使用 hg19 坐标 |
EnsemblVEP_annotate_rsid | variant_id(必填) | 功能影响、SIFT、PolyPhen。参数为 "variant_id",不是 "rsid" |
EnsemblVEP_variant_recoder | variant_id(必填) | 在 rsID/HGVS/VCF/SPDI 之间转换 |
gwas_get_snps_for_gene | gene_symbol(必填) | 获取某个基因的所有 GWAS SNP |
gwas_search_associations | query(必填) | 查询疾病/性状的 GWAS(不能使用基因名称——查询基因请使用 gwas_get_snps_for_gene) |
gwas_get_variants_for_trait | trait(必填) | 获取与某个性状相关的变异 |
ClinVar_search_variants | gene、condition、significance | 至少需要一个筛选条件 |
RegulomeDB_query_variant | rsid(必填) | 调控评分(1a = 最强,7 = 最弱) |
重要注意事项
- gnomAD variant_id:格式为
"CHR-POS-REF-ALT"(不带 "chr" 前缀)。务必先通过gnomad_search_variants解析 rsID。 - gwas_search_associations:仅接受疾病/性状名称。基因名称会导致失败。按基因查询请使用
gwas_get_snps_for_gene。 - gwas_search_snps:已损坏(HTTP 500)。请改用
gwas_get_snps_for_gene。 - VEP/ClinVar 响应:格式不固定(列表、
{data, metadata}或{error})。请处理这三种格式。
工作流模式
变异频率:gnomad_search_variants -> gnomad_get_variant(dataset="gnomad_r4") -> MyVariant_query_variants(1000G 群体细分数据)-> EnsemblVEP_annotate_rsid
疾病 GWAS:gwas_search_associations -> gwas_get_variants_for_trait -> 对重点结果使用 gnomad_get_variant -> EuropePMC_search_articles
基因特征分析:gnomad_get_gene_constraints -> gwas_get_snps_for_gene -> ClinVar_search_variants -> PubMed_search_articles
致病性评估:EnsemblVEP_annotate_rsid -> MyVariant_query_variants(CADD、ClinVar)-> gnomad_get_variant(频率)-> RegulomeDB_query_variant(适用于非编码变异)
理论推理(计算题的关键部分)
定量群体遗传学问题需要用到以下公式。请逐步推导,并展示中间值。
选择作用下的等位基因频率变化(delta-q)
对于隐性有害等位基因(适合度:AA=1,Aa=1,aa=1-s):
delta_q = -s * q^2 * p / (1 - s * q^2)
其中 p = freq(A),q = freq(a),s = 选择系数。
对于显性有害等位基因(AA=1,Aa=1-s,aa=1-s):
delta_q = -s * q * p / (1 - s * q * (2 - q))
对于杂合子优势(AA=1-s1,Aa=1,aa=1-s2):
equilibrium: q_hat = s1 / (s1 + s2)
示例:代入题目中的 s1 和 s2;q_hat = s1/(s1+s2)。
低 q 时,针对隐性等位基因的选择作用较慢,因为大多数 a 等位基因隐藏在杂合子中。将 q 从 q0 降至 qt 所需时间:t ~ (1/qt - 1/q0) / s 代。
小群体中的遗传漂变
每代等位基因频率的方差:Var(delta_p) = pq / (2Ne)
新生中性突变的固定概率:1/(2*Ne)
固定时间(以该等位基因最终固定为前提):中性等位基因约需 4*Ne 代
杂合度衰减:H_t = H_0 * (1 - 1/(2*Ne))^t
经过 t 代后,杂合度损失比例约为 1 - e^(-t/(2*Ne))
有效群体大小(Ne)的调整:
- 性别比例不均:Ne = 4NfNm / (Nf + Nm)
- 群体大小波动:Ne = 各代 N 的调和平均数
- 瓶颈:主要由规模最小的一代决定
漂变与选择:当 |s| < 1/(2*Ne) 时,漂变占主导。在 Ne < 50 的群体中,s=0.01 的变异表现为中性。
连锁不平衡(LD)衰减
D = freq(AB) - freq(A)*freq(B),其中 A 和 B 是两个位点上的等位基因。
随重组的衰减:D_t = D_0 * (1 - r)^t,其中 r = 重组率,t = 代数。
LD 半衰期:t_half = -ln(2) / ln(1-r) ~ 0.693/r 代(r 较小时)。
r-squared(标准化 LD):r^2 = D^2 / (pA * pa * pB * pb)。取值范围为 0-1。
有限群体中平衡状态下预期的 r^2:E[r^2] = 1 / (1 + 4Ner)(漂变与重组平衡时)。
实际影响:
- 紧密连锁的位点(r < 0.01):LD 可持续数百代
- 松散连锁的位点(r = 0.5,独立分配):LD 每代减半
- GWAS 标签 SNP 能发挥作用,是因为 LD 会覆盖一定区块;区块大小取决于 Ne 和重组率
- 非洲人群的 LD 区块较短(历史 Ne 较大)-> 需要更密集的 SNP 芯片
Hardy-Weinberg 平衡
对于等位基因 A(频率 p)和 a(频率 q=1-p):预期基因型 AA=p^2、Aa=2pq、aa=q^2。
卡方检验:df=1(2 个等位基因)。首选:使用 PopGen_hwe_test 工具。备选:popgen_calculator.py --type hwe --AA N1 --Aa N2 --aa N3。
偏离 HWE 的原因:非随机交配、选择、迁移、漂变、基因分型错误。纯合子过多 -> 近交或群体结构(Wahlund 效应)。杂合子过多 -> 超显性选择或负向择偶。
遗传力
- H^2(广义遗传力) = V_G / V_P;h^2(狭义遗传力) = V_A / V_P
- V_G 包含所有遗传方差:加性 + 显性 + 上位性。易错点:“广义遗传力”不只是加性遗传方差。
- 在双等位基因(p、q)的 HWE 下:基因型频率为 p^2、2pq、q^2
- 根据基因型计算表型频率:对每种基因型类别,将(基因型频率 * 外显率)求和
- 对数量性状:V_P = V_G + V_E(假设无协方差)
- 存在显性时:指定基因型值(例如 AA=a、Aa=d、aa=-a),计算均值,再根据频率加权的平方偏差计算 V_G
- PGS 与 SNP-h² 易错点:PGS R² 不一定 ≤ h²_SNP。大型 GWAS 中,PGS 可通过常见 SNP 与罕见因果变异之间的 LD 标记这些变异,因此可能超过 SNP-h²。“一定”一词使这一说法为假。h²_SNP 根据常见变异估算;PGS 可以捕获额外的方差。
路径分析(因果图)
- 追踪图中从原因到结果的所有路径(直接和间接)
- 每条路径的贡献 = 该路径上各路径系数的乘积
- 总效应(相关性)= 所有路径贡献之和
- 间接效应可能掩盖(抑制效应)或放大(混杂)直接效应
- 未分析的相关关系(双向箭头)也算作有效路径片段
- 绝不要忽略间接路径——总效应很少只是直接箭头的效应
遗传组合计数(F2 杂交、单倍型计数)
对于两个近交(纯合)品系之间的 n 个 SNP:
- F1 在所有 n 个位点上均为杂合
- F2 中不同的单倍型数 = 2^n(每个 SNP 位点都贡献来自亲本 A 或 B 的等位基因)
- F2 中不同的二倍体基因型数 = 3^n(每个位点上均为 AA、AB、BB 之一)
- F2 中独特的染色体(不同单倍型)数 = 2^n(例如,5 个 SNP → 2^5 = 32;但如果问的是“新型”,则减去 2 个亲本单倍型 → 30)
- 始终编写并运行 Python 代码(
python3 -c "...")来计算这些数量。绝不要手动枚举。 - 对于来自实地数据的样本/计数:将数据解析为一种结构,并以编程方式计算。
突变-选择平衡
有害等位基因的平衡频率:
- 隐性致死:q_hat = sqrt(mu/s) ~ sqrt(mu)(当 s=1 时)
- 显性致死:q_hat = mu/s
- 示例:mu=1e-5,s=1(隐性致死)-> q_hat = 0.003(携带者频率约为 0.006)
F 统计量与种群结构
- Fis:亚种群内部的近交(群体内部杂合子缺失)
- Fst:亚种群之间的分化。Fst = Var(p) / (p_bar * q_bar)
- Fit:总近交。(1-Fit) = (1-Fis)(1-Fst)
- Fst 解释:<0.05 分化较小,0.05-0.15 中等,0.15-0.25 较大,>0.25 非常大
- 首选:使用
PopGen_fst工具。备用方案:popgen_calculator.py --type fst --p1 X --p2 Y --n1 N1 --n2 N2
孟德尔遗传推理框架
对于任何遗传杂交问题,请按以下步骤依次进行。不要跳过步骤。
步骤 1:确定基因、位置和等位基因关系
- 列出杂交中涉及的每个基因
- 确定染色体位置:常染色体或 X 连锁(X 连锁基因在雄性和雌性中表现出不同的遗传方式)
- 确定等位基因关系:显性/隐性、共显性、不完全显性
- 记录基因之间的上位性、抑制基因或修饰基因相互作用
步骤 2:明确写出亲本基因型
- 使用标准记法(例如,常染色体基因写作 Aa Bb;X 连锁基因写作 X^w X^+)
- 对于 X 连锁基因,雄性为半合子(X^w Y),而非纯合子
- 如果未提供亲本基因型,则根据表型和系谱背景推断
步骤 3:为每个基因绘制庞尼特方格
- 对于多基因杂交,分别处理每个基因(若不连锁),然后组合
- 对于连锁基因,使用重组频率调整配子比例
- 对于 X 连锁基因,请记住父亲将 X 染色体传给所有女儿,将 Y 染色体传给所有儿子
步骤 4:计算预期表型比例
- 相乘各独立基因的比例(例如,3:1 x 3:1 = 9:3:3:1)
- 对于 X 连锁遗传:分别计算雄性和雌性的比例,然后按需合并或分别报告
步骤 5:确认比例之和为 1.0
- 将所有比例换算为分数,并确认它们的总和为 1
- 如果总和不为 1,则庞尼特方格或配子计算存在错误
步骤 6:在计算完基因型比例后再应用表型修饰规则
- 对于上位性:先计算完整的基因型比例(例如,9:3:3:1),再合并产生相同表型的基因型类别
- 对于抑制基因:在其他方面呈突变背景的个体中,抑制基因纯合子(su/su)会恢复野生型表型。先确定哪些个体携带突变等位基因,再应用抑制作用
- 示例:在隐性上位性(aa 掩盖 B)情况下,9 A_B_ : 3 A_bb : 3 aaB_ : 1 aabb 变为 9:3:4
大肠杆菌 Hfr 作图框架
对于细菌接合和 Hfr 作图问题:
核心原则
- 在 Hfr x F- 杂交中,Hfr 染色体从转移起点(oriT)开始线性转移
- 基因转移顺序 = 染色体上从起点开始的顺序
- 早期标记(最先进入)最靠近转移起点
- 晚期标记(最后进入)离转移起点最远
中断接合实验
- 在较早时间点出现在重组子的基因更靠近 oriT
- 进入时间可确定基因顺序及基因间的大致距离
- 重组子需要通过同源重组(双交换)整合
标记之间的重组频率
- 关键陷阱:转移片段上相距最远的标记之间,重组频率最高
- 这是因为相距较远的标记进入之间间隔更长,为它们之间发生重组事件提供了更多机会
- 相反,进入时间接近的标记之间重组频率较低
- 不要将“最高重组频率”与“最先进入的标记”混淆——这是两个相反的概念
根据 Hfr 数据排列标记
- 使用进入时间数据,确定基因相对于 oriT 的顺序
- 使用所选标记对之间的重组频率数据,确认或细化顺序
- 可使用起点不同的多个 Hfr 菌株构建环状图谱
遗传学选择题排除策略
通用选择题流程
- 务必评估所有选项后再选择答案
- 不要选第一个看起来正确的选项——可能存在更好或更准确的答案
- 仔细阅读题干中的限定词:“最可能”“最不可能”“不正确”“总是”“从不”
“哪项不正确”类问题
- 独立判断每个陈述为正确或错误
- 选择前在每个选项旁标记“正确”或“错误”
- 答案是标记为“错误”的陈述
- 再次核查:确认该陈述确实错误,而不只是措辞容易误导
“哪种机制”类问题
- 针对题目给出的所有观察结果检验每种可能的机制
- 正确的机制必须解释每一项观察结果,而不只是其中几项
- 排除任何与哪怕一项观察结果相矛盾的机制
需要留意的具体陷阱
- 亚功能化与新功能化:亚功能化 = 在重复基因之间分配祖先已有的功能(两份拷贝都需要,才能实现原有功能)。新功能化 = 一份拷贝获得祖先不具备的真正新功能
- 拷贝数中性的杂合性缺失(LOH):由有丝分裂重组导致(片段性,影响染色体的一部分),而非单亲二体(UPD,影响整条染色体)。题目可能会试图混淆二者
- 外显率与表现度:外显率 = 具有某种基因型的个体中表现出任何表型的比例。表现度 = 这些个体中表型的程度或严重程度。二者是不同概念
- 互补与重组:互补 = 两个不同基因上的突变以反式组合后恢复野生型表型。重组 = 两个相同或不同基因上的突变之间发生交换。互补通过 F1(杂合子)检验;重组通过子代检验
常见遗传学推理陷阱
以下是一些曾导致复杂遗传学问题推理失败的特定模式。回答遗传学选择题前请先复习。
抑制子遗传学
- 抑制子突变在纯合时,可在原本为突变型的遗传背景中恢复野生型表型
- 在同时涉及原始突变和常染色体隐性抑制子的 F2 杂交中:
- 按双因子杂交处理——主突变和抑制子独立分离
- 只有 1/4 的 F2 为抑制子纯合子
- 抑制子只在主突变也为纯合子的个体中起作用
- 使用庞尼特方格列出所有基因型类别,然后应用抑制规则确定表型
非分离(Bridges 的实验)
- Bridges 利用非分离证明了染色体遗传理论
- 雌性减数分裂中的非分离事件会产生 X0 雄性
- 减数分裂 I 非分离:两条 X 染色体移向同一极 -> XX 卵细胞 + O 卵细胞(无 X)
- 减数分裂 II 非分离:姐妹染色单体未能分离 -> 一个次级卵母细胞产生 XX 卵细胞
- Bridges 的经典结果:出现例外的白眼雌性(X^w X^w)和红眼雄性(无 X 卵细胞 + Y 精子 = X0,但这类雄性通常不育)
- 关键区别:要知道哪种非分离类型(MI 还是 MII)会产生哪种特定的配子类型
GWAS LD 区块
- 同一 LD 区块内的 SNP 彼此相关,可能导致假阳性关联增加(一个因果 SNP 会连带非因果标签 SNP)
- 不同 LD 区块间的 SNP 在很大程度上彼此独立,不会产生误导性的跨位点关联
- LD 区块结构因群体而异(由于历史 Ne 较大,非洲群体中的区块较短)
- 要区分因果变异与随行的标签 SNP,需要在 LD 区块内进行精细定位
全基因组复制后的基因保留
- 新功能化:一个拷贝获得新功能 -> 这是最常被提及的复制后基因保留原因(保留两个拷贝,因为两者现在都不可或缺)
- 亚功能化:祖先功能在两个拷贝之间分配 -> 可解释重复拷贝的分化,但必须保留两个拷贝才能维持完整的祖先功能
- 剂量平衡:某些基因以重复拷贝形式保留,以维持蛋白质复合物中的化学计量平衡
- 陷阱:题目可能会问“什么解释了保留”还是“什么解释了分化”——这两者的最佳答案不同
- 对于保留:新功能化(新功能使两个拷贝都不可或缺)
- 对于表达或功能的分化:亚功能化(祖先功能的分配)
高级遗传学陷阱 v2
PGS 与遗传力:“必然为真”的逻辑
对于关于 PGS 和遗传力的“必然为真”类题目:只有当一个陈述在 V_D=0 和 V_D=V_G 两种情况下都成立时,它才是必然为真。检验这两个极端情况。
路径图符号判定流程
不要根据常识猜测路径符号。符号可能与熟知系统中的不同。请遵循以下流程:
- 确定参考方向:什么在变化?什么在增加?
- 对于每条路径 X→Y:只问“当 X 增加时,Y 是增加(+)还是减少(-)?”
- 利用题目中的实验背景(敲除/对照比较、所提供的数据)来确定符号,而不是凭直觉
- 预期存在负路径:路径图考查的是识别负向关系的能力。全部为正几乎总是错误的。直接残差路径(e)的符号通常与预期相反。
卡方:“最可能拒绝”的流程
根据题目给出的预期比例计算卡方值。将其与自由度为(表型类别数 - 1)时的卡方临界值比较。选择卡方值最高的选项,但也要检查哪种模式在生物学上能诊断备择假设。
LD 与误导性 GWAS 关联
重组热点处的 LD 区块边界是 GWAS 定位错误的来源——区块内的强信号并不能保证因果变异位于该区块内。
低频等位基因检测
双链测序(唯一分子标识符 + 双链一致序列)可检测频率为 0.01% 的等位基因——远优于即使测序深度达到 80X 的标准 NGS。单纯增加读数深度并不能帮助检测超罕见变异,因为无论深度如何,Illumina 的错误率(约 0.1%)都会掩盖频率低于约 1% 的变异。要区分真正的罕见变异与测序错误,需要使用错误校正方法(UMI、双链一致序列)。
内置计算脚本
脚本:skills/tooluniverse-population-genetics/scripts/popgen_calculator.py
首选:尽可能使用 ToolUniverse 工具(通过 MCP/SDK),而不是脚本:
PopGen_hwe_test工具——HWE 卡方检验。回退方案:popgen_calculator.py --type hwePopGen_fst工具——Weir-Cockerham Fst。回退方案:popgen_calculator.py --type fstPopGen_inbreeding工具——根据谱系计算近交系数。回退方案:popgen_calculator.py --type inbreedingPopGen_haplotype_count工具——预期单倍型多样性。回退方案:popgen_calculator.py --type haplotypes
回退脚本模式(均需要 --type):
hwe:--AA N --Aa N --aa N—— 带 p 值的 HWE 卡方检验fst:--p1 F --p2 F --n1 N --n2 N—— Weir-Cockerham Fstinbreeding:--pedigree TYPE --generations G—— 根据谱系计算 F(自身、全同胞、半同胞、表亲等)haplotypes:--snps N --generations G --recomb_rate R—— 预期单倍型多样性
核心概念
- MAF:次要等位基因频率。常见:>5%。罕见:<1%。超罕见:<0.01%。
- pLI:LoF 不耐受概率。>0.9 = 单倍剂量不足基因。
- LOEUF:LoF o/e 上限比例。<0.35 = 约束性很强。
- CADD PHRED:>=10 表示前 10%,>=20 表示前 1%,>=30 表示有害性最高的前 0.1%。
- 全基因组显著性:GWAS p < 5e-8(对约 1M 项独立检验进行 Bonferroni 校正)。
- 效应量:OR > 1 = 风险等位基因,< 1 = 保护性等位基因。Beta > 0 = 增加性状值。
证据分级
- T1:ClinVar 致病/可能致病,FDA 药物基因组学
- T2:gnomAD 频率、GTEx eQTL、全基因组显著的 GWAS
- T3:CADD/SIFT/PolyPhen 预测、RegulomeDB、约束指标
- T4:VEP 后果术语、dbSNP 注释、文献提及