gnomad-database について
遺伝学や臨床変異解釈向けの gnomAD データベース活用スキルです。集団頻度、変異注釈、遺伝子制約指標へのアクセス方法を説明し、変異評価や遺伝子の優先順位付けに利用できます。
主な機能
- 01遺伝子またはゲノム位置で変異を検索
- 02集団別のアレル頻度を比較
- 03遺伝子制約スコアを取得
- 04構造変異を検索
- 05ブラウザー、API、ダウンロードでデータにアクセス
活用シーン
- 01病原性候補変異の集団頻度を確認
- 02pLI や LOEUF による希少疾患候補遺伝子の優先順位付け
- 03祖先集団間の変異頻度を比較
- 04遺伝子に重なる構造変異を解析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ leonchaox/ qinyan-academic-skills --skill gnomad-databaseインストール後、Claude Code で/gnomad-databaseを入力して読み込まれたか確認します。
同梱ファイルreferences/graphql_queries.mdreferences/variant_interpretation.md
詳細
gnomAD データベース
概要
Genome Aggregation Database(gnomAD)は、大規模なシーケンシングプロジェクトから集約された、一般公開されている最大のヒト遺伝的変異データベースです。gnomAD v4 には、多様な祖先集団に属する730,947人のエクソーム配列と76,215人のゲノム配列が含まれています。集団内のアレル頻度、バリアントの影響に関する注釈、遺伝子レベルの制約指標を提供し、遺伝的バリアントの臨床的意義を解釈するうえで欠かせない情報源となっています。
主なリソース:
- gnomAD ブラウザー:https://gnomad.broadinstitute.org/
- GraphQL API:https://gnomad.broadinstitute.org/api
- データのダウンロード:https://gnomad.broadinstitute.org/downloads
- ドキュメント:https://gnomad.broadinstitute.org/help
このスキルを使用する場面
次のような場合に gnomAD を使用します。
- バリアント頻度の検索:バリアントが一般集団において稀か、一般的か、または存在しないかを確認する場合
- 病原性の評価:稀なバリアント(MAF < 1%)は疾患の原因となる候補です。gnomAD は、良性の一般的なバリアントを除外するのに役立ちます
- 機能喪失に対する非耐性:pLI および LOEUF スコアを用いて、遺伝子がタンパク質短縮バリアントに耐性を持つかどうかを評価する場合
- 集団別の頻度:祖先集団間でアレル頻度を比較する場合(アフリカ系/アフリカ系アメリカ人、混合アメリカ系、アシュケナージ系ユダヤ人、東アジア系、フィンランド系、中東系、非フィンランド系ヨーロッパ人、南アジア系)
- ClinVar/ACMG によるバリアント分類:gnomAD の頻度データは、バリアント分類における BA1/BS1 エビデンスコードに反映されます
- 制約解析:ミスセンスまたは機能喪失変異が少ない遺伝子を特定する場合(z スコア、pLI、LOEUF)
主な機能
1. gnomAD GraphQL API
gnomAD は https://gnomad.broadinstitute.org/api からアクセスできる GraphQL API を使用しています。多くのクエリでは、遺伝子または特定のゲノム位置からバリアントを取得します。
利用可能なデータセット:
gnomad_r4— gnomAD v4 エクソーム(推奨されるデフォルト、GRCh38)gnomad_r4_genomes— gnomAD v4 ゲノム(GRCh38)gnomad_r3— gnomAD v3 ゲノム(GRCh38)gnomad_r2_1— gnomAD v2 エクソーム(GRCh37)
参照ゲノム:
GRCh38— v3/v4 のデフォルトGRCh37— v2 用
2. 遺伝子ごとのバリアント検索
import requests
def query_gnomad_gene(gene_symbol, dataset="gnomad_r4", reference_genome="GRCh38"):
"""Fetch variants in a gene from gnomAD."""
url = "https://gnomad.broadinstitute.org/api"
query = """
query GeneVariants($gene_symbol: String!, $dataset: DatasetId!, $reference_genome: ReferenceGenomeId!) {
gene(gene_symbol: $gene_symbol, reference_genome: $reference_genome) {
gene_id
gene_symbol
variants(dataset: $dataset) {
variant_id
pos
ref
alt
consequence
genome {
af
ac
an
ac_hom
populations {
id
ac
an
af
}
}
exome {
af
ac
an
ac_hom
}
lof
lof_flags
lof_filter
}
}
}
"""
variables = {
"gene_symbol": gene_symbol,
"dataset": dataset,
"reference_genome": reference_genome
}
response = requests.post(url, json={"query": query, "variables": variables})
return response.json()
# Example
result = query_gnomad_gene("BRCA1")
gene_data = result["data"]["gene"]
variants = gene_data["variants"]
# Filter to rare PTVs
rare_ptvs = [
v for v in variants
if v.get("lof") == "LC" or v.get("consequence") in ["stop_gained", "frameshift_variant"]
and v.get("genome", {}).get("af", 1) < 0.001
]
print(f"Found {len(rare_ptvs)} rare PTVs in {gene_data['gene_symbol']}")
3. 特定のバリアントの検索
import requests
def query_gnomad_variant(variant_id, dataset="gnomad_r4"):
"""Fetch details for a specific variant (e.g., '1-55516888-G-GA')."""
url = "https://gnomad.broadinstitute.org/api"
query = """
query VariantDetails($variantId: String!, $dataset: DatasetId!) {
variant(variantId: $variantId, dataset: $dataset) {
variant_id
chrom
pos
ref
alt
genome {
af
ac
an
ac_hom
populations {
id
ac
an
af
}
}
exome {
af
ac
an
ac_hom
populations {
id
ac
an
af
}
}
consequence
lof
rsids
in_silico_predictors {
id
value
flags
}
clinvar_variation_id
}
}
"""
response = requests.post(
url,
json={"query": query, "variables": {"variantId": variant_id, "dataset": dataset}}
)
return response.json()
# Example: query a specific variant
result = query_gnomad_variant("17-43094692-G-A") # BRCA1 missense
variant = result["data"]["variant"]
if variant:
genome_af = variant.get("genome", {}).get("af", "N/A")
exome_af = variant.get("exome", {}).get("af", "N/A")
print(f"Variant: {variant['variant_id']}")
print(f" Consequence: {variant['consequence']}")
print(f" Genome AF: {genome_af}")
print(f" Exome AF: {exome_af}")
print(f" LoF: {variant.get('lof')}")
4. 遺伝子の制約スコア
gnomAD の制約スコアは、遺伝子が想定値と比較してどの程度変異に耐性を持つかを評価します。
import requests
def query_gnomad_constraint(gene_symbol, reference_genome="GRCh38"):
"""Fetch constraint scores for a gene."""
url = "https://gnomad.broadinstitute.org/api"
query = """
query GeneConstraint($gene_symbol: String!, $reference_genome: ReferenceGenomeId!) {
gene(gene_symbol: $gene_symbol, reference_genome: $reference_genome) {
gene_id
gene_symbol
gnomad_constraint {
exp_lof
exp_mis
exp_syn
obs_lof
obs_mis
obs_syn
oe_lof
oe_mis
oe_syn
oe_lof_lower
oe_lof_upper
lof_z
mis_z
syn_z
pLI
}
}
}
"""
response = requests.post(
url,
json={"query": query, "variables": {"gene_symbol": gene_symbol, "reference_genome": reference_genome}}
)
return response.json()
# Example
result = query_gnomad_constraint("KCNQ2")
gene = result["data"]["gene"]
constraint = gene["gnomad_constraint"]
print(f"Gene: {gene['gene_symbol']}")
print(f" pLI: {constraint['pLI']:.3f} (>0.9 = LoF intolerant)")
print(f" LOEUF: {constraint['oe_lof_upper']:.3f} (<0.35 = highly constrained)")
print(f" Obs/Exp LoF: {constraint['oe_lof']:.3f}")
print(f" Missense Z: {constraint['mis_z']:.3f}")
制約スコアの解釈:
| スコア | 範囲 | 意味 |
|---|---|---|
pLI | 0–1 | LoF に対する非耐性の確率。>0.9 は非常に非耐性 |
LOEUF | 0–∞ | LoF の観測値/期待値の上限。<0.35 は制約あり |
oe_lof | 0–∞ | LoF バリアントの観測値/期待値の比率 |
mis_z | −∞~∞ | ミスセンス制約の z スコア。>3.09 は制約あり |
syn_z | −∞~∞ | 同義置換の z スコア(対照値。0 に近い値が望ましい) |
5. 集団頻度の解析
import requests
import pandas as pd
def get_population_frequencies(variant_id, dataset="gnomad_r4"):
"""Extract per-population allele frequencies for a variant."""
url = "https://gnomad.broadinstitute.org/api"
query = """
query PopFreqs($variantId: String!, $dataset: DatasetId!) {
variant(variantId: $variantId, dataset: $dataset) {
variant_id
genome {
populations {
id
ac
an
af
ac_hom
}
}
}
}
"""
response = requests.post(
url,
json={"query": query, "variables": {"variantId": variant_id, "dataset": dataset}}
)
data = response.json()
populations = data["data"]["variant"]["genome"]["populations"]
df = pd.DataFrame(populations)
df = df[df["an"] > 0].copy()
df["af"] = df["ac"] / df["an"]
df = df.sort_values("af", ascending=False)
return df
# Population IDs in gnomAD v4:
# afr = African/African American
# ami = Amish
# amr = Admixed American
# asj = Ashkenazi Jewish
# eas = East Asian
# fin = Finnish
# mid = Middle Eastern
# nfe = Non-Finnish European
# sas = South Asian
# remaining = Other
6. 構造バリアント(gnomAD-SV)
gnomAD には構造バリアントのデータセットも含まれています。
import requests
def query_gnomad_sv(gene_symbol):
"""Query structural variants overlapping a gene."""
url = "https://gnomad.broadinstitute.org/api"
query = """
query SVsByGene($gene_symbol: String!) {
gene(gene_symbol: $gene_symbol, reference_genome: GRCh38) {
structural_variants {
variant_id
type
chrom
pos
end
af
ac
an
}
}
}
"""
response = requests.post(url, json={"query": query, "variables": {"gene_symbol": gene_symbol}})
return response.json()
クエリのワークフロー
ワークフロー 1:バリアントの病原性評価
-
集団内頻度を確認する — バリアントは病原性を示すほど稀ですか?
- 劣性疾患では gnomAD AF < 1%、優性疾患では < 0.1% を使用します
- 祖先集団ごとの頻度を確認します(全体では稀なバリアントが、ある集団では一般的な場合があります)
-
機能的影響を評価する — LoF バリアントは事前確率が最も高いバリアントです
lofフィールドを確認します。HC= 高信頼度 LoF、LC= 低信頼度- 「NAGNAG_SITE」や「PHYLOCSF_WEAK」などの問題がないか、
lof_flagsを確認します
-
ACMG 基準を適用する:
- BA1:AF > 5% → 良性の単独根拠
- BS1:AF > 疾患有病率のしきい値 → 良性を支持
- PM2:gnomAD に存在しない、または非常に稀 → 中程度の病原性根拠
ワークフロー 2:希少疾患における遺伝子の優先順位付け
- 候補遺伝子の制約スコアを検索します
- pLI > 0.9(ハプロ不全)または LOEUF < 0.35 の遺伝子に絞り込みます
- 遺伝子内で観察された LoF バリアントと照合します
- ClinVar および疾患データベースの情報を統合します
ワークフロー 3:集団遺伝学研究
- GWAS または臨床データから対象のバリアントを特定します
- 集団ごとの頻度を照会します
- 祖先集団間の頻度の違いを比較します
- 特定の創始者集団における濃縮を検証します
ベストプラクティス
- 最新のデータには gnomAD v4 (gnomad_r4) を使用してください。 v2 (gnomad_r2_1) は GRCh37 との互換性が必要な場合のみ使用してください
- null の応答を適切に扱ってください。 gnomAD で観察されないバリアントが、必ずしも病原性を持つとは限りません。不在も有益な情報です
- エクソームデータとゲノムデータを区別してください。 ゲノムデータはカバレッジがより均一です。エクソームデータは規模が大きい一方、カバレッジに欠損がある場合があります
- GraphQL クエリのレート制限を守ってください。 リクエストの間隔を空け、可能な場合はクエリをまとめてください
- ホモ接合体の数(
ac_hom)は、劣性疾患の解析に関係します - 遺伝子の制約度には pLI より LOEUF が適しています(サンプルサイズの影響を受けにくいため)
データへのアクセス
- ブラウザー:https://gnomad.broadinstitute.org/ — バリアントや遺伝子をインタラクティブに閲覧できます
- GraphQL API:https://gnomad.broadinstitute.org/api — プログラムからアクセスできます
- ダウンロード:https://gnomad.broadinstitute.org/downloads — VCF、Hail テーブル、制約テーブル
- Google Cloud:gs://gcp-public-data--gnomad/
追加リソース
- gnomAD ウェブサイト:https://gnomad.broadinstitute.org/
- gnomAD ブログ:https://gnomad.broadinstitute.org/news
- ダウンロード:https://gnomad.broadinstitute.org/downloads
- API エクスプローラー:https://gnomad.broadinstitute.org/api (インタラクティブな GraphiQL)
- 制約度のドキュメント:https://gnomad.broadinstitute.org/help/constraint
- 引用文献:Karczewski KJ et al. (2020) Nature. PMID: 32461654; Chen S et al. (2024) Nature. PMID: 38conservation
- GitHub:https://github.com/broadinstitute/gnomad-browser