生信数据库5: GWAS Catalog

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。

网址https://www.ebi.ac.uk/gwas/

GWAScatalog-1

1. 官网下载相关数据

1.1 首页搜索

打开如上页面后,我们可以直接搜索表型,rsID,染色体编号,基因名等。以疾病"asthma"为例,检索结果包含了关联性状的描述,染色体位置和对应基因,关联分析的详细结果,LD等信息。

GWAScatalog-2

ꔷ Associations:3291个相关SNP信息

ꔷ Studies:共有199项研究(可以找样本多,时间近的),可通过选择"Study accession",进入单独的GWAS项目,下载完整的"Full Summary Statistics"(有的未提供,显示"Not available")

1.2 数据分类

首页点击"\color{green}{Summary} \color{green}{statistics}" >> "\color{green}{Available} \color{green}{studies}",进入页面: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 所有数据下载

首页点击"\color{green}{Downloads}" >> "\color{green}{Files},进行下载界面:https://www.ebi.ac.uk/gwas/docs/file-downloads

GWAScatalog-3.png

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. 使用\color{green}{gwasrapidd}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”

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容