GWAS catalog数据库于2008年由National Human Genome Research Institute (NHGRI)建立,旨在应对快速增长的全基因组关联分析(GWAS)数据。该数据库为我们检索已发表GWAS与显著相关提供了方便。
该数据库中主要包含了已发表或未发表GWAS的Summary statistics ,截止到2024年3月28日,GWAS catalog已经收录了6,799篇文献,包括589,865 个关联和 72,655 个完整摘要的统计数据。目前该数据库采用的参考基因组与SNP数据库为Genome Assembly GRCh38.p14 与 dbSNP Build 156。
1. 官网下载相关数据
1.1 首页搜索
打开如上页面后,我们可以直接搜索表型,rsID,染色体编号,基因名等。以疾病"asthma"为例,检索结果包含了关联性状的描述,染色体位置和对应基因,关联分析的详细结果,LD等信息。
ꔷ Associations:3291个相关SNP信息
ꔷ Studies:共有199项研究(可以找样本多,时间近的),可通过选择"Study accession",进入单独的GWAS项目,下载完整的"Full Summary Statistics"(有的未提供,显示"Not available")
1.2 数据分类
首页点击" " >> " ",进入页面:https://www.ebi.ac.uk/gwas/downloads/summary-statistics,得到一个由三部分组成的界面
1)List of published studies with summary statistics:这里的GWAS研究都是已经发表的,质量有保证,你可以在检索框里输入关键词("First author", "Study accession", "Reported trait", "Trait(s)")进行筛选
2)List of prepublished/unpublished studies with summary statistics:自 2020 年以来,GWAS Catalog开始接受未发表(可能是来源于预印本)的 GWAS 数据的提交,质量无法保证。同样,可在检索框里输入关键词进行检索筛选。这里的表型可能会比较新,是对已发表数据的补充。
3)Additional sources of summary statistics:这里整理汇总了目前GWAS研究协作体(consortium)的相关信息。一般这些协作体会建有自己的网站来存储数据,我们可以到它们的官网上下载完整的GWAS summary 数据。
1.3 所有数据下载
首页点击"" >> ",进行下载界面:https://www.ebi.ac.uk/gwas/docs/file-downloads
2. GWAS summary数据解释
GWAS summary数据,即GWAS汇总关联统计数据,是由一个或多个来源的个体水平的GWAS数据经过meta分析而来,反映SNP对表型影响的相关信息。一个GWAS summary数据通常包括遗传变异标识、等位基因、效应大小及其标准差、P值、样本量等信息。
ꔷ CHR(chr):SNP位于的染色体编号
ꔷ SNP ID(rsID):单核苷酸多态性(Single Nucleotide Polymorphism)的唯一标识符号,通常由"rs"开头。
ꔷ Position(POS):SNP在染色体上的具体位置
ꔷ 效应等位基因(effective allele):指与特定性状或疾病的关联显著的等位基因,通常在分析中会报告该等位基因对特定性状的影响大小
ꔷ 非效应等位基因(non-effective allele):指与特定性状或疾病的关联不显著的等位基因
ꔷ 参考等位基因(Reference Allele):被选定的基准等位基因,通常是指在人群中的频率较高或者是常见的。在分析中,效应大小等通常相对于参考等位基因来计算和报告
ꔷ 非参考等位基因(Non-reference Allele):与参考等位基因相对的概念。在基因型数据中,如果某个个体在某一基因座上携带的等位基因与参考等位基因不同,那么这个等位基因就可以被称为非参考等位基因
ꔷ Frequency:通常指效应等位基因在研究样本中的频率。
ꔷ Effect size(β):通常指效应等位基因相对于非效应等位基因对于特定性状或疾病的影响程度。β值的正负号表示等位基因对于性状的增加或减少影响,而β值的绝对值大小则表示影响的强度。通常情况下,β值的绝对值越大,等位基因对于性状的影响越强。然后,β值通常也是标准化的,代表单位变化中特定性状的变化量
ꔷ Standard Error(SE):β的标准误差,反映了效应大小的估计的不确定性。
ꔷ P-value:统计学上衡量效应等位基因与特定性状关联程度的指标。P值越小,关联越显著(一般为5E-8)
ꔷ Odds Ratio(OR):只有当表型是二分类变量时才使用,对于疾病关联研究,OR代表患病风险的比率。对于OR,值大于1表示效应等位基因增加患病风险,值小于1表示效应等位基因降低患病风险
ꔷ 95% Confidence Interval:OR的置信区间,提供了OR估计的不确定性范围
3. 使用R包获取GWAS Catalog数据库的信息
# 安装并加载所需的R包
# install.packages("gwasrapidd")
library(gwasrapidd)
# 查询是否有关于哮喘的文章和SNP
my_studies <- get_studies(efo_trait = 'asthma')
my_associations <- get_associations(study_id = my_studies@studies$study_id)
# 统计相关文章和SNP的数量
n(my_studies)
## 159
n(my_associations)
## 2466
# 获取相关文章的ID
my_studies@studies$study_id
## [1] "GCST000061" "GCST000389" "GCST000525" "GCST000576" "GCST000768" "GCST000910" "GCST001226" "GCST001309"
## [9] "GCST001360" "GCST001306" "GCST001508" "GCST001495" "GCST001564" "GCST002330" "GCST000330" "GCST000548"
## [17] "GCST000804" "GCST000819" "GCST001183" "GCST001182" "GCST002445" "GCST001763" "GCST002322" "GCST002519"
## [25] "GCST002875" "GCST003831" "GCST003833" "GCST003832" "GCST004390" "GCST003176" "GCST003521" "GCST003682"
## [33] "GCST003589" "GCST003987" "GCST006911" "GCST007596" "GCST008916" "GCST008919" "GCST006862" "GCST007798"
## [41] "GCST005212" "GCST007599" "GCST007598" "GCST007597" "GCST007994" "GCST007564" "GCST007562" "GCST007563"
## [49] "GCST007519" "GCST007266" "GCST008920" "GCST008921" "GCST010769" "GCST009720" "GCST009716" "GCST009866"
## [57] "GCST009862" "GCST009857" "GCST009851" "GCST009843" "GCST009798" "GCST009435" "GCST009434" "GCST009845"
## [65] "GCST010043" "GCST010042" "GCST011457" "GCST90013679" "GCST90013721" "GCST90013756" "GCST011157" "GCST90014325"
## [73] "GCST90029018" "GCST90025849" "GCST012462" "GCST90038616" "GCST90086043" "GCST90086044" "GCST90086045" "GCST90086046"
## [81] "GCST90086047" "GCST90013888" "GCST90013938" "GCST90102599" "GCST90102598" "GCST90103427" "GCST90044071" "GCST90044072"
## [89] "GCST90044363" "GCST90018575" "GCST90018795" "GCST90084127" "GCST90084126" "GCST90084123" "GCST90084121" "GCST90084122"
## [97] "GCST90084125" "GCST90084124" "GCST90080135" "GCST90080139" "GCST90080138" "GCST90105078" "GCST90102597" "GCST90085432"
## [105] "GCST90085434" "GCST90085435" "GCST90085447" "GCST90085446" "GCST90085445" "GCST90082848" "GCST90083442" "GCST90246123"
## [113] "GCST90244761" "GCST90244762" "GCST90244763" "GCST90244764" "GCST90244765" "GCST90244766" "GCST90080140" "GCST90080136"
## [121] "GCST90080137" "GCST90255359" "GCST90255360" "GCST90103351" "GCST90103412" "GCST90081446" "GCST90080141" "GCST90104644"
## [129] "GCST90081460" "GCST90081461" "GCST90239642" "GCST90255667" "GCST90131434" "GCST90131435" "GCST90131436" "GCST90139387"
## [137] "GCST90139388" "GCST90297577" "GCST90297631" "GCST90297684" "GCST90297728" "GCST90319492" "GCST90077671" "GCST90081459"
## [145] "GCST90077672" "GCST90081449" "GCST90081657" "GCST90081658" "GCST90079456" "GCST90078862" "GCST90399683" "GCST90399684"
## [153] "GCST90399685" "GCST90399686" "GCST90399687" "GCST90399688" "GCST90399689" "GCST90399690" "GCST90081448"
slotNames(my_study)
## [1] "studies" "genotyping_techs" "platforms" "ancestries"
## [5] "ancestral_groups" "countries_of_origin" "countries_of_recruitment" "publications"
# 提取关联 ID 列(命名为 association_id),最后将提取出来的关联 IDs 存储在一个名为 association_ids 的变量中。
association_ids <- dplyr::filter(my_associations@associations, pvalue < 1e-8) %>% # 依据P值进行筛选
tidyr::drop_na(pvalue) %>% #drop_na 函数去掉所有含有缺失值的记录
dplyr::pull(association_id)
# 提取显著SNP
my_associations2 <- my_associations[association_ids]
"my_studies" 返回的结果是一个S4对象,可以使用slotNames()函数来获取每个(8个)slot的名字:
ꔷ "studies":研究的基本信息
ꔷ "genotyping_techs":采取的基因分型技术
ꔷ "platforms":使用的测序平台
ꔷ "ancestries"和"ancestral_groups":人群所属的种族以及不同人种的样本量
ꔷ "countries_of_origin"和"countries_of_recruitment":国别相关信息
ꔷ "publications":发表的文章信息
3.1 get_studies()函数
my_study1 <- get_studies(study_id ='GCST000061')
my_study1@studies
## # A tibble: 1 × 13
## study_id reported_trait initial_sample_size replication_sample_s…¹ gxe gxg snp_count qualifier imputed pooled
## <chr> <chr> <chr> <chr> <lgl> <lgl> <int> <chr> <lgl> <lgl>
## 1 GCST000061 Asthma 994 European ancestry cases, 1,243 E… 200 European ancestry… FALSE FALSE 307328 NA FALSE FALSE
## # ℹ abbreviated name: ¹replication_sample_size
## # ℹ 3 more variables: study_design_comment <chr>, full_pvalue_set <lgl>, user_requested <lgl>
my_study2 <- get_studies(study_id ='GCST000061', variant_id = 'rs3772010')
my_study2@studies
## # A tibble: 2 × 13
## study_id reported_trait initial_sample_size replication_sample_s…¹ gxe gxg snp_count qualifier imputed pooled
## <chr> <chr> <chr> <chr> <lgl> <lgl> <int> <chr> <lgl> <lgl>
## 1 GCST000061 Asthma 994 European ances… 200 European ancestry… FALSE FALSE 307328 NA FALSE FALSE
## 2 GCST007521 Asthma-chronic obstructive pul… 228 Korean ancestr… NA FALSE FALSE NA NA FALSE FALSE
## # ℹ abbreviated name: ¹replication_sample_size
## # ℹ 3 more variables: study_design_comment <chr>, full_pvalue_set <lgl>, user_requested <lgl>
get_studies()的主要参数如下:
ꔷ study_id:GWASCatalog里研究的accession号,前四个字母是“GCST”,可以是向量类型
ꔷ association_id:GWAS catalog里的关联信息ID,是一个数字,可以是向量类型
ꔷ variant_id:GWASCatalog里的遗传变异信息,一般均为rsid,可以是向量类型
ꔷ efo_id:GWAS Catalog里性状的ID号,以“EFO”开头,可以是向量类型
ꔷ pubmed_id:研究的PubMedID号
ꔷ full_pvalue_set:是一个逻辑参数,代表获取是否有完整summary结果的研究(full summary statistics),如果设置为TRUE则代表只 or studies without it (FALSE)
ꔷ 参数efo_trait:是字符串型向量,代表EFO表型描述信息,如“uric acid measurement”。
3.2 get_associations()函数
my_associations1 <- get_associations(study_id = my_study1@studies$study_id)
slotNames(my_associations1)
## #[1] "associations""loci" "risk_alleles" "genes" "ensembl_ids" "entrez_ids"
as.data.frame(my_associations1@associations)
## association_id pvalue pvalue_description pvalue_mantissa pvalue_exponent multiple_snp_haplotype snp_interaction snp_type risk_frequency
## 1 6049 9e-11 <NA> 9 -11 FALSE FALSE novel 0.52
## standard_error range or_per_copy_number beta_number beta_unit beta_direction beta_description last_mapping_date last_update_date
## 1 NA [1.17-1.81] 1.45 NA <NA> <NA> <NA> 2024-02-16 18:19:36 2024-02-16 18:19:36
get_associations()函数的参数和get_studies()的差不多,单数参数interactive在get_associations()中是比较特殊的,它是一个逻辑型参数,表示是否反应SNP之间的交互作用,默认值为TRUE。最后,该函数会返回6个slot,分别反映关联值大小,位点信息,风险等位基因信息,基因信息,基因的ENSEMBL编码和基因的ENTREZ编码信息。
3.3 get_variants()函数
my_variants1 <- get_variants(study_id = my_study1@studies$study_id)
slotNames(my_variants1)
## #[1] "variants" "genomic_contexts""ensembl_ids" "entrez_ids"
as.data.frame(my_variants1@variants)
## variant_id merged functional_class chromosome_name chromosome_position chromosome_region last_update_date
## 1 rs7216389 0 intron_variant 17 39913696 17q21.1 2024-02-20 02:10:55
as.data.frame(my_variants1@genomic_contexts)
## variant_id gene_name chromosome_name chromosome_position distance is_mapped_gene is_closest_gene is_intergenic is_upstream is_downstream source mapping_method
## 1 rs7216389 IKZF3 17 39913696 49384 FALSE FALSE TRUE TRUE FALSE Ensembl Ensembl_pipeline
## 2 rs7216389 GSDMA 17 39913696 39567 FALSE FALSE TRUE FALSE TRUE Ensembl Ensembl_pipeline
## 3 rs7216389 ZPBP2 17 39913696 35800 FALSE TRUE TRUE TRUE FALSE Ensembl Ensembl_pipeline
## 4 rs7216389 LOC124904000 17 39913696 73002 FALSE FALSE TRUE FALSE TRUE NCBI Ensembl_pipeline
## 5 rs7216389 PSMD3 17 39913696 67111 FALSE FALSE TRUE FALSE TRUE Ensembl Ensembl_pipeline
## 6 rs7216389 LRRC3C 17 39913696 14036 FALSE FALSE TRUE FALSE TRUE Ensembl Ensembl_pipeline
## 7 rs7216389 KRT8P34 17 39913696 77203 FALSE FALSE TRUE TRUE FALSE NCBI Ensembl_pipeline
## 8 rs7216389 LRRC3C 17 39913696 14036 FALSE FALSE TRUE FALSE TRUE NCBI Ensembl_pipeline
## 9 rs7216389 RPL39P4 17 39913696 74123 FALSE FALSE TRUE TRUE FALSE NCBI Ensembl_pipeline
## 10 rs7216389 GSDMB 17 39913696 0 TRUE FALSE FALSE FALSE FALSE Ensembl Ensembl_pipeline
## 11 rs7216389 LOC124903999 17 39913696 13024 FALSE FALSE TRUE FALSE TRUE NCBI Ensembl_pipeline
## 12 rs7216389 PSMD3 17 39913696 67111 FALSE FALSE TRUE FALSE TRUE NCBI Ensembl_pipeline
## 13 rs7216389 KRT8P34 17 39913696 77616 FALSE FALSE TRUE TRUE FALSE Ensembl Ensembl_pipeline
## 14 rs7216389 ORMDL3 17 39913696 7345 FALSE TRUE TRUE FALSE TRUE NCBI Ensembl_pipeline
## 15 rs7216389 IKZF3 17 39913696 49384 FALSE FALSE TRUE TRUE FALSE NCBI Ensembl_pipeline
## 16 rs7216389 GSDMA 17 39913696 49308 FALSE FALSE TRUE FALSE TRUE NCBI Ensembl_pipeline
## 17 rs7216389 GSDMB 17 39913696 0 FALSE FALSE FALSE FALSE FALSE NCBI Ensembl_pipeline
## 18 rs7216389 ZPBP2 17 39913696 35800 FALSE TRUE TRUE TRUE FALSE NCBI Ensembl_pipeline
## 19 rs7216389 ORMDL3 17 39913696 7345 FALSE TRUE TRUE FALSE TRUE Ensembl Ensembl_pipeline
get_variants()函数有一个需要注意的参数genomic_range,该参数表示的是指定遗传变异在基因组上的特定位置,它是一个列表型数据,由三组向量构成,分别是染色体号,起点和终点。该函数返回的结果包含4个slot,分别表示遗传变异的信息(不包含GWAS的汇总数据),遗传变异在基因组上的信息,基因的ENSEMBL编码和基因的ENTREZ编码信息
3.4 get_traits()函数
my_traits1 <- get_traits(study_id = my_study1@studies$study_id)
slotNames(my_traits1)
## [1] "traits"
as.data.frame(my_traits1@traits)
## efo_id trait uri
1 MONDO_0004979 asthma http://purl.obolibrary.org/obo/MONDO_0004979
get_traits()的参数set_operation值得我们关注,它表示对返回的trait的操作,有两个选项,分别是“union”和“intersection”,前者表示取所有的返回的trait,后者表示取交集,默认值是“union”