mcpField
T
tooluniverse-polygenic-risk-score

tooluniverse-polygenic-risk-score

github.com/mims-harvard数据与数据库1.8k349 次安装3 天前更新
代码仓库

关于 tooluniverse-polygenic-risk-score

这是一个用于构建和解读多基因风险评分的 ToolUniverse skill,结合 GWAS 与基因型数据。它优先检查 PGS Catalog 已发表模型,并强调考虑祖源的概率性解读,而非疾病诊断。

主要功能

  1. 01查找 GWAS 关联变异
  2. 02构建加权 PRS 模型
  3. 03根据基因型计算评分
  4. 04标准化评分并估算百分位
  5. 05查看 PGS 验证与祖源数据

适用场景

  1. 01估算复杂疾病的遗传易感性
  2. 02解读个人 PRS 百分位
  3. 03比较某性状的已发表风险评分

MCP 相关

该 skill 指导使用 ToolUniverse 遗传学工具,包括 GWAS Catalog、PGS Catalog、变异注释和 LD Score 回归工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-polygenic-risk-score

安装后在 Claude Code 中输入/tooluniverse-polygenic-risk-score确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.template
check_data.py
python_implementation.py
test_prs_tools.py
test_skill_comprehensive.py

详细介绍

多基因风险评分(PRS)构建器

使用全基因组关联研究(GWAS)数据构建并解读复杂疾病的多基因风险评分。

推理策略

多基因风险评分预测的是遗传风险,而不是疾病。PRS 较高意味着相对于人群而言风险升高——这并不表示此人一定会患上该疾病;PRS 较低也不意味着具有免疫力。PRS 的表现因祖源而异,差异可能很大:将基于欧洲人群的 PRS 应用于西非人群时,其预测能力可能下降 50–70%,因为基础 GWAS 是根据欧洲人群的等位基因频率和连锁不平衡(LD)模式训练的。发现性 GWAS 中的效应值容易受到赢家诅咒影响(在单项研究中被高估);请始终优先采用大型荟萃分析或经验证的 PGS Catalog 模型提供的权重。解读 PRS 时,应始终结合非遗传风险因素;对于大多数复杂疾病,环境因素的影响不亚于遗传因素,甚至更大。

查询数据,不要猜测:不要假设某个性状的效应值、等位基因频率或达到全基因组显著性的 SNP;请始终查询 GWAS Catalog(gwas_get_associations_for_trait)获取实际数据。不要假设某个性状存在经过验证的 PRS 模型;请通过 PubMed 搜索检查 PGS Catalog。

概述

适用场景:

  • “计算我的 2 型糖尿病遗传风险”
  • “构建冠状动脉疾病的多基因风险评分”
  • “我对阿尔茨海默病有怎样的遗传易感性?”
  • “解读我的乳腺癌风险 PRS 百分位数”

此技能的功能:

  • 从 GWAS Catalog 提取达到全基因组显著性的变异(p < 5e-8)
  • 使用效应值(beta 系数)构建加权 PRS 模型
  • 根据基因型数据计算个人风险评分
  • 将 PRS 解读为人群百分位数和风险类别

此技能不具备的功能:

  • 诊断疾病(PRS 是概率性的,而非确定性的)
  • 替代临床评估或遗传咨询
  • 考虑非遗传因素(生活方式、环境)
  • 提供治疗建议

方法

PRS 计算公式

多基因风险评分通过对遗传变异进行加权求和来计算:

PRS = Σ (dosage_i × effect_size_i)

其中:

  • dosage_i:SNP i 上效应等位基因的数量(0、1 或 2)
  • effect_size_i:来自 GWAS 的 beta 系数或 log(优势比)
标准化

原始 PRS 会标准化为 z 分数,以便解读:

z-score = (PRS - population_mean) / population_std

这样即可与人群分布进行比较并计算百分位数。

显著性阈值
  • 全基因组显著性:p < 5×10⁻⁸(默认阈值)
  • 该阈值校正了全基因组约 100 万项独立检验
  • 放宽阈值(例如 p < 1×10⁻⁵)可以纳入更多 SNP,但也可能增加噪声
效应值处理
  • 连续性状(例如身高、BMI):Beta 系数(每个等位基因对应的性状单位)
  • 二分类性状(例如疾病):将优势比转换为 log-odds(beta = ln(OR))
  • 缺少效应值或不显著的 SNP 会被排除

数据来源

此技能使用 ToolUniverse GWAS 工具进行查询:

  1. GWAS Catalog(EMBL-EBI)

    • 经整理的 GWAS 关联数据,涵盖 5000 多项研究
    • 工具:gwas_search_associations(参数:disease_trait、size;也可使用 gwas_get_associations_for_trait)、gwas_get_snps_for_gene(参数:gene_symbol)、dbsnp_get_variant_by_rsid
    • 注意:disease_trait 搜索会返回与该性状关联的结果,而该性状可能是多个关联 EFO 性状之一。如需精确筛选,请通过 efo_trait 参数使用 EFO ID。
  2. Open Targets Genetics

    • 集成遗传学平台,提供精细定位的可信集合
    • 工具:OpenTargets_search_gwas_studies_by_disease、EnsemblVEP_annotate_hgvs(用于分析变异后果/频率)
  3. 变异注释

    • gnomad_search_variants + gnomad_get_variant — 群体等位基因频率(通过 VEP colocated_variants 获取特定祖源的数据)
    • MyVariant_query_variants — 一次调用即可获取 CADD、SIFT、PolyPhen、ClinVar 和 gnomAD 数据
    • gnomad_get_gene_constraints — 用于目标优先级排序的基因约束指标(pLI、oe_lof)
  4. PGS Catalog(pgscatalog.org,EMBL-EBI)— 在基于原始 GWAS 关联构建任何内容之前,先检查此项

    • 此技能的最佳实践中已指出“有可用的已验证 PRS 时,优先使用 PGS Catalog 中的数据”——这些工具正是为此而设。无需 API 密钥。
    • PGSCatalog_search_traits(query=...) — 将自由文本性状名称解析为对应的 EFO/MONDO trait_id(例如,“2 型糖尿病” -> MONDO_0005148),并查看已发表评分的数量。务必使用工具返回的 trait_id——不要猜测或重复使用记忆中的 EFO/MONDO ID,因为搜索可能会解析为不同但正确的本体术语。
    • PGSCatalog_get_scores_by_trait(trait_id=...) — 列出该性状的所有已发表 PGS:PGS ID、变异数量、开发方法(LDpred、P+T、全基因组显著变异等)、基因组版本和来源文献。同一性状可能有 50 多种规模和质量差异巨大的评分(例如,2 型糖尿病评分从 2014 年的 62 个变异版本,到包含 690 万个变异的 LDpred 模型都有)——不要默认第一个结果就是最佳选择。
    • PGSCatalog_get_score(pgs_id=...) — 获取某个评分的完整元数据,包括其开发队列(GWAS)和评估队列的 ancestry_distribution。信任评分前,请先阅读这些信息:如果某评分在 100% 欧洲样本上开发(ancestry_distribution.dev.dist: {"EUR": 100}),这正是此技能上文所警示的可迁移性风险,即使它后来在更多元化的队列中接受了评估。
    • PGSCatalog_get_performance_metrics(pgs_id=...) — 获取各评估队列实际发表的验证指标:AUROC/C-index、风险比/优势比(包括“前 10% 与其余人群”的比较)、R²,每项指标都对应具体的祖源和样本量。借此判断评分对特定人群是否可信——如果高 AUROC 仅在欧洲队列中测得,就无法说明其对其他祖源人群的表现;请查找与目标人群相符的评估记录,或注明缺少此类记录。

核心概念

多基因风险评分(PRS)

多基因风险评分汇总多个遗传变异的效应,以估计个体对某种性状或疾病的遗传易感性。与由单个突变导致的孟德尔遗传病不同,复杂疾病涉及数百至数千个变异,每个变异的效应都很小。

主要特征:

  • 连续分布:PRS 在人群中呈钟形曲线
  • 相对风险:将个体与人群平均水平进行比较
  • 概率性:PRS 高不代表必然患病,PRS 低也不代表一定受到保护
  • 祖源特异性:PRS 的准确性取决于 GWAS 祖源与目标人群祖源是否匹配
GWAS(全基因组关联研究)

GWAS 会在数百万个 SNP 中比较病例与对照组的等位基因频率(或与性状值进行相关分析),以识别与疾病相关的变异。

研究设计:

  • 发现队列:初步识别关联
  • 复制队列:在独立样本中验证
  • 样本量:研究规模越大,越能检测到较小的效应(统计效能 ∝ √N)
  • 多重检验校正:针对约 1M 次检验进行 Bonferroni 类校正
效应大小与比值比
  • Beta(β):每增加一份效应等位基因,性状的变化量
    • 示例:β = 0.5 kg/m² 表示每份等位基因使 BMI 增加 0.5 个单位
  • 比值比(OR):疾病患病比值的乘数变化
    • OR = 1.5 表示每份等位基因使患病比值增加 50%
    • 转换为 beta:β = ln(OR)
连锁不平衡(LD)与聚类

相邻变异往往会一起遗传(LD)。为避免重复计数:

  • LD 聚类:选择相互独立的变异(在 1 Mb 窗口内 r² < 0.1)
  • 精细定位:用于识别因果变异的统计方法
  • 此技能使用原始关联结果;生产环境中的 PRS 应包含 LD 剪枝
群体分层

祖源匹配时,GWAS 和 PRS 的准确度最高:

  • 群体结构:不同祖源的等位基因频率不同
  • 可迁移性:在欧洲人群上训练的 PRS 在非欧洲人群中的表现较差
  • 解决方案:在多元祖源队列上训练 PRS,或使用祖源匹配的参考数据

应用

临床风险评估

PRS 可用于对个体进行风险分层,以支持:

  • 筛查项目:针对高风险个体(例如乳腺 X 线摄影、结肠镜检查)
  • 预防策略:针对遗传风险较高者开展生活方式干预
  • 药物反应:基于代谢基因开展药物基因组学分析

示例:Khera 等人(2018)显示,与单基因突变相比,PRS 识别出的冠状动脉疾病风险超过 3 倍的个体数量多 3 倍。

研究应用
  • 基因发现:基于 PRS 的全表型关联研究(PheWAS)
  • 遗传相关性:比较不同性状的 PRS — 但若要严谨地使用 GWAS 汇总统计数据估算跨性状遗传相关性(rg),请使用 run_ldsc_genetic_correlation(LD Score 回归)。该工具只需要汇总统计数据(无需个体基因型),并会校正样本重叠。其方法远比对 PRS 值进行相关分析更合理。
  • 因果推断:使用 PRS 作为工具变量开展孟德尔随机化
  • 模拟研究:对多基因结构进行建模
SNP 遗传力与遗传相关性(LDSC)

在构建 PRS 之前或同时,可直接使用 GWAS 汇总统计数据,量化常见 SNP 能解释多少性状差异,以及不同性状之间的关系:

  • run_ldsc_heritability — 根据一项 GWAS 的汇总统计数据估算基于 SNP 的遗传力(h²_SNP);截距也可指示混杂因素或膨胀是否超过真实的多基因效应。该指标决定了 PRS 的上限(下文所说的“遗传力差距”正是 h²_SNP 减去 PRS R²)。
  • run_ldsc_genetic_correlation — 估算两项 GWAS 之间的遗传相关性(rg),用于研究共同病因及跨性状 PRS 问题。

这两者都是远程工具(LD Score 回归引擎 + 参考 LD 分数面板)。使用它们基于数据验证遗传力或 rg 相关结论,而不是引用文献中的点估计值。

个人基因组学

消费级基因检测(23andMe、Ancestry DNA)会提供原始基因型。用户可以:

  • 计算检测报告未涵盖性状的 PRS
  • 与已发表的 PRS 模型进行比较
  • 了解遗传因素相对于生活方式因素的影响

注意:个人 PRS 不应取代医疗建议。如果缺乏适当的背景说明,检测结果可能会引发焦虑。

局限性和注意事项

  • 遗传力差距:PRS 只能解释一部分遗传力(T2D:约 50% 可遗传,PRS 可解释约 10–20%)。罕见变异、上位性以及基因与环境的相互作用均未纳入。
  • 祖源偏倚:基于欧洲人群的 PRS 在非欧洲人群中的表现会大幅下降。有条件时,应使用多祖源 GWAS 权重。
  • 赢家诅咒:发现阶段的效应量会被高估;应使用荟萃分析权重或 PGS Catalog 中经过验证的模型。
  • 不能用于诊断:PRS 高不代表一定会患病;PRS 低也不代表一定受到保护。对于大多数复杂疾病,环境因素的影响同样大,甚至更大。
  • 可操作性因情况而异:阿尔茨海默病 PRS 可指导的干预措施有限;心血管疾病 PRS 可为他汀类药物或生活方式决策提供参考。务必考虑当事人能根据这些信息采取什么行动。
  • 伦理问题:遗传数据是永久性的,也会影响家人。在美国,GINA 提供就业和健康保险方面的保护,但不包括人寿保险。应提供遗传咨询方面的背景说明。

工作流

0. 从原始 GWAS 开始构建之前,先检查 PGS Catalog

在提取关联数据并从头构建 PRS 之前(以下步骤 1–5),先检查是否已有经过验证的评分:

PGSCatalog_search_traits(query="<trait>")            # resolve to a real trait_id
PGSCatalog_get_scores_by_trait(trait_id="<from above>")   # list candidate scores
PGSCatalog_get_score(pgs_id="<candidate>")                 # check dev-cohort ancestry
PGSCatalog_get_performance_metrics(pgs_id="<candidate>")   # check validated AUROC/OR/R2 by ancestry

如果目标人群祖源已有经过充分验证的评分,请直接使用其已发布的权重(scoring_file URL),而不是根据原始 GWAS Catalog 关联数据重新推导出更粗略的 PRS——这正是从原始 GWAS 构建的流程(步骤 1–5)必须手动应对的“赢家诅咒”和 LD 聚类问题。只有当 PGS Catalog 中没有该性状的评分,或所有现有评分的开发和评估所用祖源都与待评分人群不匹配时,才退而使用原始关联数据构建评分。

1. 选择性状

确定关注的疾病或性状:

  • 使用标准术语(例如,使用“type 2 diabetes”,而不是“T2D”)
  • 检查 GWAS Catalog 中是否有相关数据
  • 确认有足够的 GWAS 研究(理想情况下样本量 n > 10,000)
2. 收集关联数据

查询全基因组显著关联的 GWAS 数据库:

prs = build_polygenic_risk_score(
    trait="coronary artery disease",
    p_threshold=5e-8,  # Genome-wide significance
    max_snps=1000
)

注意事项:

  • P 值阈值:5e-8 较为严格,1e-5 可纳入更多变异
  • LD 聚类:生产系统应对相关 SNP 进行剪枝
  • 研究质量:优先选择大型荟萃分析,而非小型研究
3. 提取效应量

提取 beta 系数或比值比:

  • 连续性状使用 beta(可直接使用)
  • 二元性状使用 OR(转换为对数优势)
  • 处理缺失值(排除,或根据荟萃分析进行填补)
4. 筛选 SNP

质量控制筛选条件:

  • MAF 筛选:为提高稳健性,排除罕见变异(MAF < 0.01)
  • 基因型 QC:移除缺失率较高(> 10%)的 SNP
  • Hardy-Weinberg:排除违反 HWE 的 SNP(p < 1e-6)
  • 有歧义的 SNP:移除 A/T 和 G/C SNP(链方向存在歧义)
5. 计算评分

计算基因型剂量的加权和:

result = calculate_personal_prs(
    prs_weights=prs,
    genotypes=my_genotypes,
    population_mean=0.0,
    population_std=1.0
)

基因型来源:

  • 23andMe 原始数据导出
  • Ancestry DNA 原始数据
  • 全基因组测序(VCF 文件)
  • SNP 芯片数据(Illumina、Affymetrix)
6. 解读风险

转换为百分位数和风险类别:

result = interpret_prs_percentile(result)
print(f"Percentile: {result.percentile:.1f}%")
print(f"Risk: {result.risk_category}")

风险类别:

  • 低风险:< 第 20 百分位数(遗传保护)
  • 平均风险:第 20–80 百分位数(典型遗传易感性)
  • 风险升高:第 80–95 百分位数(风险中度升高)
  • 高风险:> 第 95 百分位数(风险显著升高)

临床解读:

  • 百分位数以正态分布为前提
  • 表示相对于平均值的风险(而非绝对风险)
  • 应结合家族史和临床风险因素
  • PRS 不能用于诊断——许多高风险个体终生不会患病

最佳实践

  • 在有数据时,使用 PGS Catalog 中经过验证的 PRS(经过外部验证,包含 LD 剪枝和针对特定祖源的权重)
  • 使 GWAS 的祖源与目标人群的祖源相匹配;有多祖源 GWAS 时优先使用
  • 对于高度多基因的性状(身高、受教育程度),较宽松的 p 值阈值能捕获更多信号;对于寡基因性状(IBD、T1D),较严格的阈值效果更好
  • 将 PRS 与临床风险评分(Framingham、QRISK)结合,进行综合预测
  • 在研究中:记录 SNP 选择标准、LD 剪枝参数和 GWAS 的祖源;在留出队列中进行验证;报告按祖源分层的 R² 或 AUC

免责声明

此技能仅用于教育和研究目的。

  • 不得用于临床诊断或治疗决策
  • 未经临床用途验证——临床级 PRS 请使用 PGS Catalog 模型
  • 需要遗传咨询——解读需要专业知识
  • 未考虑家族史、环境或生活方式因素
  • 因祖源而异——准确性取决于 GWAS 祖源是否匹配

如需进行临床遗传检测,请咨询:

  • 遗传咨询师(经 ABGC/ABMGG 认证)
  • 医学遗传学家
  • 接受过基因组学培训的医疗服务提供者

PRS 是一个快速发展的领域。随着研究进展,指南和最佳实践将持续变化。

监管状态:

  • 截至 2024 年,FDA 尚未对 PRS 进行监管
  • 一些国家/地区限制直接面向消费者提供遗传风险报告
  • 在临床实施前,请查阅当地法规

评论

支持 Markdown