关于 tooluniverse-gwas-trait-to-gene
面向研究人员的 ToolUniverse 技能,通过 GWAS Catalog 和 Open Targets Genetics 数据查找疾病及性状相关基因。它依据关联显著性、重复研究、精细定位和 L2G 评分排序候选基因,并强调关联不等于因果。
主要功能
- 01搜索 GWAS 关联和研究
- 02按显著性及重复验证排序基因
- 03获取精细定位可信集
- 04用 L2G 评分筛选候选基因
- 05说明祖源与基因映射局限
适用场景
- 01寻找疾病相关的遗传候选基因
- 02优先筛选潜在药物靶点
- 03将 GWAS 变异映射到候选基因
MCP 相关
该技能使用 ToolUniverse 工具搜索 GWAS Catalog,并获取 Open Targets Genetics 的精细定位和位点到基因证据。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mims-harvard/ tooluniverse --skill tooluniverse-gwas-trait-to-gene安装后在 Claude Code 中输入/tooluniverse-gwas-trait-to-gene确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.env.templatepython_implementation.pytest_gwas_tools.pytest_skill_comprehensive.py详细介绍
GWAS 性状到基因发现
最近的基因往往是错误的。 使用 Open Targets 的 L2G(位点到基因)评分,该评分整合了 eQTL、染色质互作和距离数据。L2G > 0.5 表示强预测;不能仅凭位置映射就认定某基因为因果基因。单项 GWAS 研究的 p < 5e-8 只能作为提示——要获得高置信度,必须在独立队列中重复验证。GWAS 命中是在所研究人群中的关联;由于连锁不平衡(LD)模式不同,不同祖源人群的效应大小乃至涉及的基因都可能不同。应将 GWAS 基因列表视为有待验证的候选基因排名,而非已确认的因果基因。
查找,不要猜测:切勿假定性状到基因的映射或 L2G 评分——务必调用 gwas_search_associations 和 OpenTargets_get_study_credible_sets 获取最新数据;随着新的 GWAS 发表,关联数据会不断更新。
使用全基因组关联研究(GWAS)发现与疾病和性状相关的基因
概述
此技能可通过分析两个主要资源中的 GWAS 数据,系统地发现与疾病/性状相关的基因:
- GWAS Catalog(EBI/NHGRI):经过整理的已发表 GWAS 目录,包含超过 500,000 项关联
- Open Targets Genetics:经过精细定位的 GWAS 信号及位点到基因(L2G)预测
使用场景
临床研究
- “哪些基因与 2 型糖尿病相关?”
- “查找冠状动脉疾病的遗传风险因素”
- “哪些基因会影响阿尔茨海默病易感性?”
药物靶点发现
- 识别具有强遗传证据、表明与疾病存在因果关系的基因
- 根据 L2G 评分和跨研究重复验证情况确定靶点优先级
- 查找具有全基因组显著性关联(p < 5e-8)的基因
功能基因组学
- 将疾病相关变异映射到候选基因
- 分析复杂性状的遗传结构
- 理解多基因疾病机制
工作流
1. Trait Search → Search GWAS Catalog by disease/trait name
↓
2. SNP Aggregation → Collect genome-wide significant SNPs (p < 5e-8)
↓
3. Gene Mapping → Extract mapped genes from associations
↓
4. Evidence Ranking → Score by p-value, replication, fine-mapping
↓
5. Annotation (Optional) → Add L2G predictions from Open Targets
关键概念
全基因组显著性
- 标准阈值:p < 5×10⁻⁸
- 对约 1M 个常见变异进行多重检验校正
- 更高置信度:p < 5×10⁻¹⁰ 或在多项研究中重复验证
基因映射方法
- 位置映射:距离先导 SNP 最近的基因
- 精细定位:通过统计方法筛选可信变异
- 位点到基因(L2G):整合多种证据类型的评分
证据置信度级别
- 高:L2G 评分 > 0.5,或多项研究的 p < 5e-10
- 中:2 项或更多研究的 p < 5e-8
- 低:单项研究或显著性处于边缘水平
必需的 ToolUniverse 工具
GWAS Catalog(11 个工具)
gwas_get_associations_for_trait- 获取某性状的所有关联(按 p 值排序)。注意:此工具已损坏——请使用可正常工作的替代工具gwas_search_associations(query=trait)gwas_search_snps- 根据基因映射搜索 SNPgwas_get_snp_by_id- 获取 SNP 详情(MAF、后果、位置)gwas_get_study_by_id- 获取研究元数据gwas_search_associations- 根据筛选条件搜索关联(推荐用于查询性状)gwas_search_studies- 按性状/队列搜索研究gwas_get_associations_for_snp- 获取某 SNP 的所有关联gwas_get_variants_for_trait- 获取某性状的变异。没有 p 值阈值参数(传入的参数会被静默忽略)——请在客户端根据pvalue_mantissa/pvalue_exponent进行筛选(见下文说明)gwas_get_studies_for_trait- 获取某性状的研究gwas_get_snps_for_gene- 获取映射到某基因的 SNP。参数为gene_symbol(不是mapped_gene)gwas_get_associations_for_study- 获取某项研究中的关联
Open Targets Genetics(6 个工具)
OpenTargets_search_gwas_studies_by_disease- 按疾病本体搜索研究OpenTargets_get_study_credible_sets- 获取研究的精细定位位点OpenTargets_get_variant_credible_sets- 获取变异的可信集合OpenTargets_get_variant_info- 获取变异注释(频率、后果)OpenTargets_get_gwas_study- 获取研究元数据OpenTargets_get_credible_set_detail- 获取可信集合的详细信息
参数
必需
trait- 疾病/性状名称(例如,“2 型糖尿病”“冠状动脉疾病”)
可选
p_value_threshold- 显著性阈值(默认值:5e-8)min_evidence_count- 研究的最小数量(默认值:1)max_results- 返回基因的最大数量(默认值:100)use_fine_mapping- 包含 L2G 预测(默认值:true)disease_ontology_id- Open Targets 的疾病本体 ID(例如,“MONDO_0005148”)
输出架构
{
"genes": [
{
"symbol": str, # Gene symbol (e.g., "TCF7L2")
"min_p_value": float, # Most significant p-value
"evidence_count": int, # Number of independent studies
"snps": [str], # Associated SNP rs IDs
"studies": [str], # GWAS study accessions
"l2g_score": float | null, # Locus-to-gene score (0-1)
"credible_sets": int, # Number of credible sets
"confidence_level": str # "High", "Medium", or "Low"
}
],
"summary": {
"trait": str,
"total_associations": int,
"significant_genes": int,
"data_sources": ["GWAS Catalog", "Open Targets"]
}
}
示例结果
2 型糖尿病
TCF7L2: p=1.2e-98, 15 studies, L2G=0.82 → High confidence
KCNJ11: p=3.4e-67, 12 studies, L2G=0.76 → High confidence
PPARG: p=2.1e-45, 8 studies, L2G=0.71 → High confidence
FTO: p=5.6e-42, 10 studies, L2G=0.68 → High confidence
IRS1: p=8.9e-38, 6 studies, L2G=0.54 → High confidence
阿尔茨海默病
APOE: p=1.0e-450, 25 studies, L2G=0.95 → High confidence
BIN1: p=2.3e-89, 18 studies, L2G=0.88 → High confidence
CLU: p=4.5e-67, 16 studies, L2G=0.82 → High confidence
ABCA7: p=6.7e-54, 14 studies, L2G=0.79 → High confidence
CR1: p=8.9e-52, 13 studies, L2G=0.75 → High confidence
最佳实践
1. 使用疾病本体 ID 提高精确度
# Instead of:
discover_gwas_genes("diabetes") # Ambiguous
# Use:
discover_gwas_genes(
"type 2 diabetes",
disease_ontology_id="MONDO_0005148" # Specific
)
2. 按证据强度筛选
# For drug targets, require strong evidence:
discover_gwas_genes(
"coronary artery disease",
p_value_threshold=5e-10, # Stricter than GWAS threshold
min_evidence_count=3, # Multiple independent studies
use_fine_mapping=True # Include L2G predictions
)
3. 谨慎解读结果
- 关联 ≠ 因果关系:GWAS 可识别相关变异,但这些变异不一定对应因果基因
- 连锁不平衡:主导 SNP 可能标记附近基因中的真实因果变异
- 精细定位:与位置映射相比,L2G 分数能提供更有力的因果基因证据
- 功能证据:使用正交数据进行验证(eQTL、敲除模型等)
工具专属说明(已更新)
gwas_get_variants_for_trait -- 按 p 值筛选
此工具没有 p 值阈值参数。p_value_threshold=... 参数会被静默忽略(已通过实时验证:无论是否提供该参数,输出都相同),因此请自行筛选返回的关联结果。使用 sort="p_value", direction="asc" 可优先获取关联最强的结果,并使用 page/size 进行分页(metadata.pagination.totalElements 是总数)。
result = tu.tools.gwas_get_variants_for_trait(
trait="type 2 diabetes", size=200, sort="p_value", direction="asc"
)
def genome_wide_significant(a, exp=-8, mant=5): # p < 5e-8
return (a['pvalue_exponent'], a['pvalue_mantissa']) < (exp, mant)
hits = [a for a in result['data'] if genome_wide_significant(a)]
请按 pvalue_mantissa 和 pvalue_exponent 筛选,而不要按 p_value 筛选:对于非常小的 p 值(例如 3 x 10^-1315),p_value 浮点数会下溢为 0.0,因此无法据此与阈值进行比较。
gwas_get_associations_for_trait -- 已损坏
此工具在大多数查询中都会返回错误。请改用可靠的替代工具 gwas_search_associations(query=<trait>)。响应格式为 {data: [{...}], metadata: {...}}。
gwas_get_snps_for_gene -- 参数重命名
为提高明确性,参数已从 mapped_gene 重命名为 gene_symbol。请使用:
result = tu.tools.gwas_get_snps_for_gene(gene_symbol="TCF7L2")
编程式访问(工具之外)
当 ToolUniverse 工具返回的结果有限,或需要完整的 GWAS Catalog 时:
import requests, pandas as pd
# Download full GWAS Catalog (all associations, ~37MB TSV)
url = "https://www.ebi.ac.uk/gwas/api/search/downloads/alternative"
df = pd.read_csv(url, sep="\t")
# Filter locally by trait or gene
hits = df[df["DISEASE/TRAIT"].str.contains("type 2 diabetes", case=False, na=False)]
gene_hits = df[df["MAPPED_GENE"].str.contains("TCF7L2", na=False)]
# Per-study associations via REST
study_id = "GCST001234"
assocs = requests.get(f"https://www.ebi.ac.uk/gwas/rest/api/studies/{study_id}/associations").json()
# Summary statistics (when available)
# Check study page for fullPvalueSet=true, then download from linked FTP
请参阅 tooluniverse-data-wrangling 技能,了解分页、批量下载和格式解析模式。
局限性
-
基因映射的不确定性
- 位置映射会将 SNP 分配给最近的基因(可能不正确)
- 只有部分研究提供精细定位
- 基因间变异难以映射
-
人群偏倚
- 大多数 GWAS 研究针对欧洲人群
- 不同祖源人群中的效应大小可能不同
- 稀有变异往往代表不足
-
样本量依赖性
- 规模较大的研究会发现更多关联
- 较早的小规模研究可能出现假阴性
- 单凭 p 值无法反映效应大小
-
验证错误
- 部分 ToolUniverse 工具有 oneOf 验证问题
- 必要时使用
validate=False参数 - Python 实现会自动处理此问题
相关技能
- 变异到疾病关联:查询特定 SNP(例如,rs7903146 → T2D)
- 基因到疾病关联:查找与已知基因相关的疾病
- 药物靶点优先级排序:根据遗传证据排列靶点
- 群体遗传学分析:比较不同人群的等位基因频率
数据源
GWAS Catalog
- 管理方:EBI 和 NHGRI
- URL:https://www.ebi.ac.uk/gwas/
- 覆盖范围:100,000 多篇出版物,500,000 多项关联
- 更新频率:每周
Open Targets Genetics
- 管理方:Open Targets 联盟
- URL:https://genetics.opentargets.org/
- 覆盖范围:精细定位 GWAS、L2G 预测、QTL 共定位
- 更新频率:每季度
引用
如果您在研究中使用此技能,请引用:
Buniello A, et al. (2019) The NHGRI-EBI GWAS Catalog of published genome-wide
association studies. Nucleic Acids Research, 47(D1):D1005-D1012.
Mountjoy E, et al. (2021) An open approach to systematically prioritize causal
variants and genes at all published human GWAS trait-associated loci.
Nature Genetics, 53:1527-1533.
支持
如遇到以下问题:
- 技能功能:在 tooluniverse/skills 中提交问题
- GWAS 数据:联系 GWAS Catalog 或 Open Targets 支持团队
- 工具错误:查看 ToolUniverse 工具状态