mcpField
G
gwas-database

gwas-database

github.com/davila7データ・データベース33.0k289 回インストール今日更新
リポジトリ

gwas-database について

NHGRI-EBI GWAS Catalogの遺伝的関連や研究データを検索・解釈するためのスキルです。バリアント、形質、遺伝子、領域、論文から検索でき、APIやダウンロードで研究のサマリー統計にもアクセスできます。

主な機能

  1. 01バリアント、形質、遺伝子、領域別の関連検索
  2. 02研究およびバリアントのメタデータ取得
  3. 03APIやダウンロードによるサマリー統計へのアクセス
  4. 04ゲノム位置や統計項目によるサマリー統計の絞り込み
  5. 05外部情報との照合とエビデンスの集約

活用シーン

  1. 01疾患や形質の報告済み関連の検索
  2. 02特定のrs IDに関連する形質の確認
  3. 03遺伝子周辺の遺伝的関連の調査
  4. 04システマティックレビュー用のエビデンス収集

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill gwas-database

インストール後、Claude Code で/gwas-databaseを入力して読み込まれたか確認します。

同梱ファイルreferences/api_reference.md

詳細

GWAS Catalog データベース

概要

GWAS Catalog は、National Human Genome Research Institute (NHGRI) と European Bioinformatics Institute (EBI) が管理する、発表済みのゲノムワイド関連解析(GWAS)を網羅したリポジトリです。数千件の GWAS 論文から厳選された SNP と形質の関連情報を収録しており、遺伝的変異、関連する形質および疾患、p 値、効果量、多数の研究について完全なサマリー統計量が含まれています。

このスキルを使用する場合

このスキルは、次のようなクエリに使用します。

  • 遺伝的変異の関連: 疾患や形質に関連する SNP を見つける
  • SNP の検索: 特定の遺伝的変異(rs ID)に関する情報を取得する
  • 形質・疾患の検索: 表現型に対する遺伝的関連を見つける
  • 遺伝子との関連: 特定の遺伝子内またはその近傍の変異を見つける
  • GWAS サマリー統計量: ゲノムワイド関連解析データ全体にアクセスする
  • 研究のメタデータ: 論文およびコホートの情報を取得する
  • 集団遺伝学: 祖先ごとに特有の関連を調べる
  • ポリジェニックリスクスコア: リスク予測モデルに用いる変異を特定する
  • 機能ゲノミクス: 変異の効果とゲノム上の文脈を理解する
  • システマティックレビュー: 遺伝的関連に関する文献の包括的な統合

コア機能

1. GWAS Catalog のデータ構造の理解

GWAS Catalog は、次の 4 つの中核的なエンティティを中心に構成されています。

  • Studies(研究): メタデータ(PMID、著者、コホートの詳細)を持つ GWAS 論文
  • Associations(関連): 統計的根拠(p ≤ 5×10⁻⁸)を持つ SNP と形質の関連
  • Variants(変異): ゲノム座標と対立遺伝子を持つ遺伝子マーカー(SNP)
  • Traits(形質): 表現型および疾患(EFO オントロジー用語に対応付け)

主な識別子:

  • 研究のアクセッション: GCST ID(例: GCST001234)
  • 変異の ID: rs 番号(例: rs7903146)または variant_id 形式
  • 形質の ID: EFO 用語(例: 2 型糖尿病は EFO_0001360)
  • 遺伝子記号: HGNC の承認名(例: TCF7L2)
2. Web インターフェースでの検索

https://www.ebi.ac.uk/gwas/ の Web インターフェースは、複数の検索モードに対応しています。

変異による検索(rs ID):

rs7903146

この SNP に関するすべての形質との関連を返します。

疾患・形質による検索:

type 2 diabetes
Parkinson disease
body mass index

関連するすべての遺伝的変異を返します。

遺伝子による検索:

APOE
TCF7L2

遺伝子領域内またはその近傍の変異を返します。

染色体領域による検索:

10:114000000-115000000

指定したゲノム区間内の変異を返します。

論文による検索:

PMID:20581827
Author: McCarthy MI
GCST001234

研究の詳細と報告されたすべての関連を返します。

3. REST API へのアクセス

GWAS Catalog は、プログラムからアクセスするための 2 つの REST API を提供しています。

ベース URL:

  • GWAS Catalog API: https://www.ebi.ac.uk/gwas/rest/api
  • サマリー統計量 API: https://www.ebi.ac.uk/gwas/summary-statistics/api

API ドキュメント:

主要エンドポイント:

  1. Studies エンドポイント - /studies/{accessionID}

    import requests
    
    # Get a specific study
    url = "https://www.ebi.ac.uk/gwas/rest/api/studies/GCST001795"
    response = requests.get(url, headers={"Content-Type": "application/json"})
    study = response.json()
    
  2. Associations エンドポイント - /associations

    # Find associations for a variant
    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()
    
  3. Variants エンドポイント - /singleNucleotidePolymorphisms/{rsID}

    # Get variant details
    url = "https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/rs7903146"
    response = requests.get(url, headers={"Content-Type": "application/json"})
    variant_info = response.json()
    
  4. Traits エンドポイント - /efoTraits/{efoID}

    # Get trait information
    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"  # Type 2 diabetes
base_url = "https://www.ebi.ac.uk/gwas/rest/api"

# Query associations for this trait
url = f"{base_url}/efoTraits/{trait}/associations"
response = requests.get(url, headers={"Content-Type": "application/json"})
associations = response.json()

# Process results
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={risk_allele}")

例 2: 変異の情報とすべての形質との関連を取得する

import requests

variant = "rs7903146"
base_url = "https://www.ebi.ac.uk/gwas/rest/api"

# Get variant details
url = f"{base_url}/singleNucleotidePolymorphisms/{variant}"
response = requests.get(url, headers={"Content-Type": "application/json"})
variant_data = response.json()

# Get all associations for this variant
url = f"{base_url}/singleNucleotidePolymorphisms/{variant}/associations"
params = {"projection": "associationBySnp"}
response = requests.get(url, params=params, headers={"Content-Type": "application/json"})
associations = response.json()

# Extract trait names and p-values
for assoc in associations.get('_embedded', {}).get('associations', []):
    trait = assoc.get('efoTrait')
    pvalue = assoc.get('pvalue')
    print(f"Trait: {trait}, p-value: {pvalue}")

例 3: サマリー統計量にアクセスする

import requests

# Query summary statistics API
base_url = "https://www.ebi.ac.uk/gwas/summary-statistics/api"

# Find associations by trait with p-value threshold
trait = "EFO_0001360"  # Type 2 diabetes
p_upper = "0.000000001"  # p < 1e-9
url = f"{base_url}/traits/{trait}/associations"
params = {
    "p_upper": p_upper,
    "size": 100  # Number of results
}
response = requests.get(url, params=params)
results = response.json()

# Process genome-wide significant hits
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

# Find variants in a specific genomic region
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 Catalog は多数の研究について完全なサマリー統計を公開しており、ゲノムワイド有意なヒットだけでなく、検定されたすべてのバリアントにアクセスできます。

アクセス方法:

  1. FTP ダウンロード: http://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/
  2. REST API: クエリベースでサマリー統計にアクセス
  3. Web インターフェース: ウェブサイトから閲覧およびダウンロード

サマリー統計 API の機能:

  • 染色体、位置、p 値によるフィルタリング
  • 複数の研究にわたる特定のバリアントの照会
  • 効果量およびアレル頻度の取得
  • ハーモナイズおよび標準化されたデータへのアクセス

例: 研究のサマリー統計をダウンロードする

import requests
import gzip

# Get available summary statistics
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()

# Download link is provided in the response
# Alternatively, use FTP:
# ftp://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCSTXXXXXX/
6. データ統合と相互参照

GWAS Catalog は外部リソースへのリンクを提供します:

ゲノムデータベース:

  • Ensembl: 遺伝子アノテーションおよびバリアントの影響
  • dbSNP: バリアント識別子および集団頻度
  • gnomAD: 集団のアレル頻度

機能リソース:

  • Open Targets: 標的と疾患の関連
  • PGS Catalog: ポリジェニックリスクスコア
  • UCSC Genome Browser: ゲノム上の文脈

表現型リソース:

  • EFO (Experimental Factor Ontology): 標準化された形質用語
  • OMIM: 疾患と遺伝子の関係
  • Disease Ontology: 疾患の階層構造

API レスポンス内のリンクをたどる:

import requests

# API responses include _links for related resources
response = requests.get("https://www.ebi.ac.uk/gwas/rest/api/studies/GCST001234")
study = response.json()

# Follow link to associations
associations_url = study['_links']['associations']['href']
associations_response = requests.get(associations_url)

クエリワークフロー

ワークフロー 1: 疾患に関する遺伝的関連の調査
  1. 形質を特定する。EFO 用語またはフリーテキストを使用します:

    • 疾患名で Web インターフェースを検索する
    • EFO ID を控える (例: 2 型糖尿病の EFO_0001360)
  2. API で関連を照会する:

    url = f"https://www.ebi.ac.uk/gwas/rest/api/efoTraits/{efo_id}/associations"
    
  3. 有意性と集団で絞り込む:

    • p 値を確認する (ゲノムワイド有意: p ≤ 5×10⁻⁸)
    • 研究メタデータで祖先情報を確認する
    • サンプルサイズまたは発見/再現の状況で絞り込む
  4. バリアントの詳細を抽出する:

    • 各関連の rs ID
    • 効果アレルと方向
    • 効果量 (オッズ比、ベータ係数)
    • 集団のアレル頻度
  5. 他のデータベースと相互参照する:

    • Ensembl でバリアントの影響を調べる
    • gnomAD で集団頻度を確認する
    • 遺伝子の機能および経路を調べる
ワークフロー 2: 特定の遺伝的バリアントの調査
  1. バリアントを照会する:

    url = f"https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/{rs_id}"
    
  2. すべての形質関連を取得する:

    url = f"https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/{rs_id}/associations"
    
  3. 多面発現を分析する:

    • このバリアントに関連するすべての形質を特定する
    • 形質間での効果の方向を確認する
    • 共通する生物学的経路を探す
  4. ゲノム上の文脈を確認する:

    • 近傍の遺伝子を特定する
    • バリアントがコード領域または制御領域にあるかを判定する
    • 他のバリアントとの連鎖不平衡を確認する
ワークフロー 3: 遺伝子中心の関連解析
  1. 遺伝子記号で検索する。Web インターフェースで行うか、次のように実行します:

    url = f"https://www.ebi.ac.uk/gwas/rest/api/singleNucleotidePolymorphisms/search/findByGene"
    params = {"geneName": gene_symbol}
    
  2. 遺伝子領域内のバリアントを取得する:

    • 遺伝子の染色体座標を取得する
    • 領域内のバリアントを照会する
    • プロモーターおよび制御領域を含める (境界を拡張する)
  3. 関連パターンを分析する:

    • この遺伝子のバリアントに関連する形質を特定する
    • 研究間で一貫した関連があるかを確認する
    • 効果量および方向を確認する
  4. 機能的解釈:

    • バリアントの影響を判定する (ミスセンス、制御など)
    • 発現量形質座位 (eQTL) データを確認する
    • 経路およびネットワーク上の文脈を確認する
ワークフロー 4: 遺伝学的エビデンスの体系的レビュー
  1. 研究課題の定義:

    • 対象となる特定の形質または疾患
    • 集団に関する考慮事項
    • 研究デザインの要件
  2. 包括的なバリアント抽出:

    • 形質に関するすべての関連をクエリ
    • 有意性の閾値を設定
    • 発見研究と再現研究を記録
  3. 品質評価:

    • 研究のサンプルサイズを確認
    • 集団の多様性を確認
    • 研究間の不均一性を評価
    • 潜在的なバイアスを特定
  4. データ統合:

    • 研究をまたいで関連を集約
    • 該当する場合はメタアナリシスを実施
    • 要約表を作成
    • マンハッタンプロットまたはフォレストプロットを生成
  5. エクスポートと文書化:

    • 関連データの全体をダウンロード
    • 必要に応じて要約統計量をエクスポート
    • 検索戦略と日付を文書化
    • 再現可能な分析スクリプトを作成
ワークフロー 5: 要約統計量へのアクセスと分析
  1. 要約統計量が利用可能な研究を特定:

    • 要約統計量ポータルを参照
    • FTP ディレクトリの一覧を確認
    • API で利用可能な研究を照会
  2. 要約統計量をダウンロード:

    # Via FTP
    wget ftp://ftp.ebi.ac.uk/pub/databases/gwas/summary_statistics/GCSTXXXXXX/harmonised/GCSTXXXXXX-harmonised.tsv.gz
    
  3. API で特定のバリアントを照会:

    url = f"https://www.ebi.ac.uk/gwas/summary-statistics/api/chromosomes/{chrom}/associations"
    params = {"start": start_pos, "end": end_pos}
    
  4. 処理と分析:

    • p 値の閾値でフィルタリング
    • 効果量と信頼区間を抽出
    • 下流の分析を実施(ファインマッピング、共局在解析など)

レスポンス形式とデータフィールド

関連レコードの主要フィールド:

  • rsId: バリアント識別子(rs 番号)
  • strongestAllele: 関連におけるリスクアレル
  • pvalue: 関連の p 値
  • pvalueText: テキスト形式の p 値(不等号を含む場合あり)
  • orPerCopyNum: オッズ比またはベータ係数
  • betaNum: 効果量(量的形質の場合)
  • betaUnit: ベータの測定単位
  • range: 信頼区間
  • efoTrait: 関連する形質名
  • mappedLabel: EFO にマッピングされた形質用語

研究メタデータのフィールド:

  • accessionId: GCST 研究識別子
  • pubmedId: PubMed ID
  • author: 筆頭著者
  • publicationDate: 出版日
  • ancestryInitial: 発見集団の祖先系統
  • ancestryReplication: 再現集団の祖先系統
  • sampleSize: 総サンプルサイズ

ページネーション: 結果はページ単位で返されます(既定では 1 ページあたり 20 件)。次のパラメーターを使用して移動します:

  • size パラメーター: 1 ページあたりの結果数
  • page パラメーター: ページ番号(0 始まり)
  • レスポンス内の _links: 次ページ・前ページの URL

ベストプラクティス

クエリ戦略
  • Web インターフェースから開始し、関連する EFO 用語と研究アクセッション番号を特定する
  • 大量データの抽出と自動化された分析には API を使用する
  • 大規模な結果セットに対してページネーションの処理を実装する
  • API レスポンスをキャッシュして、冗長なリクエストを最小限に抑える
データの解釈
  • 常に p 値の閾値を確認する(ゲノムワイド: 5×10⁻⁸)
  • 集団への適用性を判断するため、祖先系統の情報を確認する
  • エビデンスの強さを評価する際はサンプルサイズを考慮する
  • 独立した研究間で再現性があるかを確認する
  • 効果量の推定値に含まれる勝者の呪い(winner's curse)に注意する
レート制限と倫理
  • API の利用ガイドラインを守る(過度なリクエストを避ける)
  • ゲノムワイドな分析には要約統計量のダウンロードを利用する
  • API 呼び出しの間には適切な待機時間を設ける
  • 反復的な分析を行う場合は結果をローカルにキャッシュする
  • 出版物では GWAS Catalog を引用する
データ品質に関する考慮事項
  • GWAS Catalog は公表された関連をキュレーションしたものであり、不整合を含む場合がある
  • 効果量は公表された値のまま報告されており、調和処理(harmonization)が必要な場合がある
  • 一部の研究では条件付きまたは同時の関連が報告されている
  • 結果を統合する際は、研究間の重複を確認する
  • 症例の抽出方法や選択によるバイアスに注意する

Python 連携の例

GWAS データのクエリと分析を行う完全なワークフロー:

import requests
import pandas as pd
from time import sleep

def query_gwas_catalog(trait_id, p_threshold=5e-8):
    """
    Query GWAS Catalog for trait associations

    Args:
        trait_id: EFO trait identifier (e.g., 'EFO_0001360')
        p_threshold: P-value threshold for filtering

    Returns:
        pandas DataFrame with association results
    """
    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)  # Rate limiting

    return pd.DataFrame(results)

# Example usage
df = query_gwas_catalog('EFO_0001360')  # Type 2 diabetes
print(df.head())
print(f"\nTotal associations: {len(df)}")
print(f"Unique variants: {df['variant'].nunique()}")

リソース

references/api_reference.md

次の内容を含む包括的な API ドキュメントです。

  • 両方の API の詳細なエンドポイント仕様
  • クエリパラメーターとフィルターの完全な一覧
  • レスポンス形式の仕様とフィールドの説明
  • 高度なクエリの例とパターン
  • エラー処理とトラブルシューティング
  • 外部データベースとの統合

次のような場合に、このリファレンスを参照してください。

  • 複雑な API クエリを作成するとき
  • レスポンス構造を理解するとき
  • ページネーションやバッチ処理を実装するとき
  • API エラーをトラブルシューティングするとき
  • 高度なフィルターオプションを調べるとき
トレーニング資料

GWAS Catalog チームはワークショップ資料を提供しています。

重要な注意事項

データの更新
  • GWAS Catalog は新しい論文によって定期的に更新されます
  • 網羅的なカバレッジを得るため、クエリを定期的に再実行してください
  • サマリー統計量は、研究がデータを公開するにつれて追加されます
  • EFO のマッピングは時間の経過とともに更新される場合があります
引用の要件

GWAS Catalog のデータを使用する場合は、次を引用してください。

  • Sollis E, et al. (2023) The NHGRI-EBI GWAS Catalog: knowledgebase and deposition resource. Nucleic Acids Research. PMID: 37953337
  • 利用可能な場合は、アクセス日とバージョンを記載してください
  • 特定の知見について論じる場合は、元の研究も引用してください
制限事項
  • すべての GWAS 論文が含まれているわけではありません(キュレーション基準が適用されます)
  • 完全なサマリー統計量が利用できるのは一部の研究のみです
  • 効果量は、研究間で調和化(harmonization)が必要な場合があります
  • 集団の多様性は拡大しつつありますが、これまでは限られていました
  • 一部の関連は、条件付きまたは同時の効果を表しています
データへのアクセス
  • Web インターフェース: 無料、登録不要
  • REST API: 無料、API キー不要
  • FTP ダウンロード: オープンアクセス
  • API にはレート制限が適用されます(過度なリクエストは控えてください)

追加リソース

コメント