name: gwas-database description: “查询NHGRI-EBI GWAS目录中的SNP-性状关联。通过rs ID、疾病/性状、基因搜索变异,检索p值和摘要统计,用于遗传流行病学和多基因风险评分。”
GWAS目录数据库
概述
GWAS目录是一个由美国国家人类基因组研究所(NHGRI)和欧洲生物信息学研究所(EBI)维护的已发表全基因组关联研究的综合存储库。该目录包含从数千个GWAS出版物中整理的SNP-性状关联,包括遗传变异、相关性状和疾病、p值、效应大小,以及许多研究的完整摘要统计。
何时使用此技能
此技能应在涉及以下查询时使用:
- 遗传变异关联:查找与疾病或性状相关的SNP
- SNP查找:检索特定遗传变异(rs ID)的信息
- 性状/疾病搜索:发现表型的遗传关联
- 基因关联:查找特定基因内或附近的变异
- GWAS摘要统计:访问完整的全基因组关联数据
- 研究元数据:检索出版物和队列信息
- 群体遗传学:探索祖先特异性关联
- 多基因风险评分:识别风险预测模型的变异
- 功能基因组学:理解变异效应和基因组背景
- 系统综述:遗传关联的全面文献综合
核心能力
1. 理解GWAS目录数据结构
GWAS目录围绕四个核心实体组织:
- 研究:具有元数据(PMID、作者、队列详情)的GWAS出版物
- 关联:具有统计证据(p ≤ 5×10⁻⁸)的SNP-性状关联
- 变异:具有基因组坐标和等位基因的遗传标记(SNP)
- 性状:表型和疾病(映射到EFO本体术语)
关键标识符:
- 研究访问号:
GCSTID(例如,GCST001234) - 变异ID:
rs数字(例如,rs7903146)或variant_id格式 - 性状ID:EFO术语(例如,EFO_0001360 表示2型糖尿病)
- 基因符号:HGNC批准名称(例如,TCF7L2)
2. 网络界面搜索
https://www.ebi.ac.uk/gwas/ 上的网络界面支持多种搜索模式:
按变异(rs ID):
rs7903146
返回此SNP的所有性状关联。
按疾病/性状:
2型糖尿病
帕金森病
体重指数
返回所有相关的遗传变异。
按基因:
APOE
TCF7L2
返回基因区域内或附近的变异。
按染色体区域:
10:114000000-115000000
返回指定基因组区间内的变异。
按出版物:
PMID:20581827
作者:McCarthy MI
GCST001234
返回研究详情和所有报告的关联。
3. REST API访问
GWAS目录提供两个REST API用于编程访问:
基础URL:
- GWAS目录API:
https://www.ebi.ac.uk/gwas/rest/api - 摘要统计API:
https://www.ebi.ac.uk/gwas/summary-statistics/api
API文档:
- 主API文档:https://www.ebi.ac.uk/gwas/rest/docs/api
- 摘要统计文档:https://www.ebi.ac.uk/gwas/summary-statistics/docs/
核心端点:
-
研究端点 -
/studies/{accessionID}import requests # 获取特定研究 url = "https://www.ebi.ac.uk/gwas/rest/api/studies/GCST001795" response = requests.get(url, headers={"Content-Type": "application/json"}) study = response.json() -
关联端点 -
/associations# 查找变异的关联 variant = "rs7903146" url = f"https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/{variant}/associations" params = {"projection": "associationBySnp"} response = requests.get(url, params=params, headers={"Content-Type": "application/json"}) associations = response.json() -
变异端点 -
/singleNucleotidePolymorphisms/{rsID}# 获取变异详情 url = "https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/rs7903146" response = requests.get(url, headers={"Content-Type": "application/json"}) variant_info = response.json() -
性状端点 -
/efoTraits/{efoID}# 获取性状信息 url = "https://www.ebi.ac.uk/gwas/rest/api/efoTraits/EFO_0001360" response = requests.get(url, headers={"Content-Type": "application/json"}) trait_info = response.json()
4. 查询示例和模式
示例1:查找疾病的所有关联
import requests
trait = "EFO_0001360" # 2型糖尿病
base_url = "https://www.ebi.ac.uk/gwas/rest/api"
# 查询此性状的关联
url = f"{base_url}/efoTraits/{trait}/associations"
response = requests.get(url, headers={"Content-Type": "application/json"})
associations = response.json()
# 处理结果
for assoc in associations.get('_embedded', {}).get('associations', []):
variant = assoc.get('rsId')
pvalue = assoc.get('pvalue')
risk_allele = assoc.get('strongestAllele')
print(f"{variant}: p={pvalue}, 风险等位基因={risk_allele}")
示例2:获取变异信息和所有性状关联
import requests
variant = "rs7903146"
base_url = "https://www.ebi.ac.uk/gwas/rest/api"
# 获取变异详情
url = f"{base_url}/singleNucleotidePolymorphisms/{variant}"
response = requests.get(url, headers={"Content-Type": "application/json"})
variant_data = response.json()
# 获取此变异的所有关联
url = f"{base_url}/singleNucleotidePolymorphisms/{variant}/associations"
params = {"projection": "associationBySnp"}
response = requests.get(url, params=params, headers={"Content-Type": "application/json"})
associations = response.json()
# 提取性状名称和p值
for assoc in associations.get('_embedded', {}).get('associations', []):
trait = assoc.get('efoTrait')
pvalue = assoc.get('pvalue')
print(f"性状: {trait}, p值: {pvalue}")
示例3:访问摘要统计
import requests
# 查询摘要统计API
base_url = "https://www.ebi.ac.uk/gwas/summary-statistics/api"
# 按性状和p值阈值查找关联
trait = "EFO_0001360" # 2型糖尿病
p_upper = "0.000000001" # p < 1e-9
url = f"{base_url}/traits/{trait}/associations"
params = {
"p_upper": p_upper,
"size": 100 # 结果数量
}
response = requests.get(url, params=params)
results = response.json()
# 处理全基因组显著命中
for hit in results.get('_embedded', {}).get('associations', []):
variant_id = hit.get('variant_id')
chromosome = hit.get('chromosome')
position = hit.get('base_pair_location')
pvalue = hit.get('p_value')
print(f"{chromosome}:{position} ({variant_id}): p={pvalue}")
示例4:按染色体区域查询
import requests
# 查找特定基因组区域内的变异
chromosome = "10"
start_pos = 114000000
end_pos = 115000000
base_url = "https://www.ebi.ac.uk/gwas/rest/api"
url = f"{base_url}/singleNucleotidePolymorphisms/search/findByChromBpLocationRange"
params = {
"chrom": chromosome,
"bpStart": start_pos,
"bpEnd": end_pos
}
response = requests.get(url, params=params, headers={"Content-Type": "application/json"})
variants_in_region = response.json()
5. 处理摘要统计
GWAS目录托管了许多研究的完整摘要统计,提供对所有测试变异(不仅仅是全基因组显著命中)的访问。
访问方法:
- FTP下载:http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/
- REST API:基于查询的摘要统计访问
- 网络界面:通过网站浏览和下载
摘要统计API功能:
- 按染色体、位置、p值过滤
- 跨研究查询特定变异
- 检索效应大小和等位基因频率
- 访问统一和标准化数据
示例:下载研究的摘要统计
import requests
import gzip
# 获取可用的摘要统计
base_url = "https://www.ebi.ac.uk/gwas/summary-statistics/api"
url = f"{base_url}/studies/GCST001234"
response = requests.get(url)
study_info = response.json()
# 响应中提供下载链接
# 或者使用FTP:
# ftp://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCSTXXXXXX/
6. 数据集成和交叉引用
GWAS目录提供指向外部资源的链接:
基因组数据库:
- Ensembl:基因注释和变异后果
- dbSNP:变异标识符和群体频率
- gnomAD:群体等位基因频率
功能资源:
- Open Targets:目标-疾病关联
- PGS目录:多基因风险评分
- UCSC基因组浏览器:基因组背景
表型资源:
- EFO(实验因子本体):标准化性状术语
- OMIM:疾病-基因关系
- 疾病本体:疾病层次结构
在API响应中跟随链接:
import requests
# API响应包括相关资源的_links
response = requests.get("https://www.ebi.ac.uk/gwas/rest/api/studies/GCST001234")
study = response.json()
# 跟随链接到关联
associations_url = study['_links']['associations']['href']
associations_response = requests.get(associations_url)
查询工作流程
工作流程1:探索疾病的遗传关联
-
使用EFO术语或自由文本识别性状:
- 在网络界面中搜索疾病名称
- 记录EFO ID(例如,EFO_0001360表示2型糖尿病)
-
通过API查询关联:
url = f"https://www.ebi.ac.uk/gwas/rest/api/efoTraits/{efo_id}/associations" -
按显著性和群体过滤:
- 检查p值(全基因组显著:p ≤ 5×10⁻⁸)
- 在研究元数据中查看祖先信息
- 按样本大小或发现/复制状态过滤
-
提取变异详情:
- 每个关联的rs ID
- 效应等位基因和方向
- 效应大小(比值比、beta系数)
- 群体等位基因频率
-
与其他数据库交叉引用:
- 在Ensembl中查找变异后果
- 在gnomAD中检查群体频率
- 探索基因功能和通路
工作流程2:研究特定遗传变异
-
查询变异:
url = f"https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/{rs_id}" -
检索所有性状关联:
url = f"https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/{rs_id}/associations" -
分析多效性:
- 识别与此变异相关的所有性状
- 跨性状检查效应方向
- 查找共享的生物通路
-
检查基因组背景:
- 确定附近的基因
- 识别变异是否在编码/调控区域
- 审查与其他变异的连锁不平衡
工作流程3:以基因为中心的关联分析
-
在网络界面中按基因符号搜索或:
url = f"https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/search/findByGene" params = {"geneName": gene_symbol} -
检索基因区域内的变异:
- 获取基因的染色体坐标
- 查询区域内的变异
- 包括启动子和调控区域(扩展边界)
-
分析关联模式:
- 识别与此基因内变异相关的性状
- 查找跨研究的一致性关联
- 审查效应大小和方向
-
功能解释:
- 确定变异后果(错义、调控等)
- 检查表达QTL(eQTL)数据
- 审查通路和网络背景
工作流程4:遗传证据的系统综述
-
定义研究问题:
- 感兴趣的特定性状或疾病
- 群体考虑
- 研究设计要求
-
全面提取变异:
- 查询性状的所有关联
- 设置显著性阈值
- 记录发现和复制研究
-
质量评估:
- 审查研究样本大小
- 检查群体多样性
- 评估跨研究的异质性
- 识别潜在偏倚
-
数据综合:
- 跨研究聚合关联
- 如适用,进行荟萃分析
- 创建汇总表
- 生成曼哈顿或森林图
-
导出和文档化:
- 下载完整关联数据
- 如有需要,导出摘要统计
- 记录搜索策略和日期
- 创建可重复的分析脚本
工作流程5:访问和分析摘要统计
-
识别具有摘要统计的研究:
- 浏览摘要统计门户
- 检查FTP目录列表
- 查询API获取可用研究
-
下载摘要统计:
# 通过FTP wget ftp://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCSTXXXXXX/harmonised/GCSTXXXXXX-harmonised.tsv.gz -
通过API查询特定变异:
url = f"https://www.ebi.ac.uk/gwas/summary-statistics/api/chromosomes/{chrom}/associations" params = {"start": start_pos, "end": end_pos} -
处理和分析:
- 按p值阈值过滤
- 提取效应大小和置信区间
- 执行下游分析(精细映射、共定位等)
响应格式和数据字段
关联记录中的关键字段:
rsId:变异标识符(rs编号)strongestAllele:关联的风险等位基因pvalue:关联p值pvalueText:作为文本的p值(可能包括不等式)orPerCopyNum:比值比或beta系数betaNum:效应大小(用于定量性状)betaUnit:beta的测量单位range:置信区间efoTrait:相关性状名称mappedLabel:EFO映射的性状术语
研究元数据字段:
accessionId:GCST研究标识符pubmedId:PubMed IDauthor:第一作者publicationDate:出版日期ancestryInitial:发现群体祖先ancestryReplication:复制群体祖先sampleSize:总样本大小
分页: 结果分页(默认每页20项)。使用以下参数导航:
size参数:每页结果数page参数:页码(从0开始)- 响应中的
_links:下一页/上一页的URL
最佳实践
查询策略
- 从网络界面开始,识别相关的EFO术语和研究访问号
- 使用API进行批量数据提取和自动化分析
- 实现分页处理以处理大型结果集
- 缓存API响应以减少冗余请求
数据解释
- 始终检查p值阈值(全基因组:5×10⁻⁸)
- 审查祖先信息以评估群体适用性
- 考虑样本大小以评估证据强度
- 检查跨独立研究的复制情况
- 注意效应大小估计中的赢家诅咒
速率限制和伦理
- 尊重API使用指南(无过度请求)
- 用于全基因组分析时使用摘要统计下载
- 在API调用之间实施适当延迟
- 进行迭代分析时本地缓存结果
- 在出版物中引用GWAS目录
数据质量考虑
- GWAS目录整理已发表的关联(可能包含不一致)
- 效应大小按发布报告(可能需要统一)
- 一些研究报告条件或联合关联
- 结合结果时检查研究重叠
- 注意诊断和选择偏倚
Python集成示例
查询和分析GWAS数据的完整工作流程:
import requests
import pandas as pd
from time import sleep
def query_gwas_catalog(trait_id, p_threshold=5e-8):
"""
查询GWAS目录获取性状关联
参数:
trait_id: EFO性状标识符(例如,'EFO_0001360')
p_threshold: 过滤的p值阈值
返回:
带有关联结果的pandas DataFrame
"""
base_url = "https://www.ebi.ac.uk/gwas/rest/api"
url = f"{base_url}/efoTraits/{trait_id}/associations"
headers = {"Content-Type": "application/json"}
results = []
page = 0
while True:
params = {"page": page, "size": 100}
response = requests.get(url, params=params, headers=headers)
if response.status_code != 200:
break
data = response.json()
associations = data.get('_embedded', {}).get('associations', [])
if not associations:
break
for assoc in associations:
pvalue = assoc.get('pvalue')
if pvalue and float(pvalue) <= p_threshold:
results.append({
'variant': assoc.get('rsId'),
'pvalue': pvalue,
'risk_allele': assoc.get('strongestAllele'),
'or_beta': assoc.get('orPerCopyNum') or assoc.get('betaNum'),
'trait': assoc.get('efoTrait'),
'pubmed_id': assoc.get('pubmedId')
})
page += 1
sleep(0.1) # 速率限制
return pd.DataFrame(results)
# 示例用法
df = query_gwas_catalog('EFO_0001360') # 2型糖尿病
print(df.head())
print(f"
总关联数: {len(df)}")
print(f"唯一变异数: {df['variant'].nunique()}")
资源
references/api_reference.md
全面的API文档包括:
- 两个API的详细端点规范
- 完整的查询参数和过滤器列表
- 响应格式规范和字段描述
- 高级查询示例和模式
- 错误处理和故障排除
- 与外部数据库集成
在以下情况下查阅此参考:
- 构建复杂的API查询
- 理解响应结构
- 实现分页或批量操作
- 排除API错误
- 探索高级过滤选项
培训材料
GWAS目录团队提供研讨会材料:
- GitHub仓库:https://github.com/EBISPOT/GWAS_Catalog-workshop
- 带有示例查询的Jupyter笔记本
- 用于云端执行的Google Colab集成
重要注意事项
数据更新
- GWAS目录定期更新新出版物
- 定期重新运行查询以获得全面覆盖
- 随着研究发布数据,摘要统计被添加
- EFO映射可能随时间更新
引用要求
使用GWAS目录数据时,请引用:
- Sollis E, 等. (2023) NHGRI-EBI GWAS目录:知识库和存储资源。 Nucleic Acids Research. PMID: 37953337
- 包括可用时的访问日期和版本
- 讨论特定发现时引用原始研究
限制
- 并非所有GWAS出版物都包含(适用整理标准)
- 完整摘要统计仅适用于研究子集
- 效应大小可能需要跨研究统一
- 群体多样性在增长,但历史上有限
- 一些关联表示条件或联合效应
数据访问
- 网络界面:免费,无需注册
- REST API:免费,无需API密钥
- FTP下载:开放访问
- API适用速率限制(请尊重)
附加资源
- GWAS目录网站:https://www.ebi.ac.uk/gwas/
- 文档:https://www.ebi.ac.uk/gwas/docs
- API文档:https://www.ebi.ac.uk/gwas/rest/docs/api
- 摘要统计API:https://www.ebi.ac.uk/gwas/summary-statistics/docs/
- FTP站点:http://ftp.ebi.ac.uk/pub/databases/gwas/
- 培训材料:https://github.com/EBISPOT/GWAS_Catalog-workshop
- PGS目录(多基因评分):https://www.pgscatalog.org/
- 帮助和支持:gwas-info@ebi.ac.uk