mcpField
E
ensembl-database

ensembl-database

github.com/ovachieverデータ・データベース5646 回インストール48 週間前に更新
リポジトリ

ensembl-database について

Ensembl Databaseスキルは、Ensemblの遺伝子、配列、変異、比較ゲノムデータを用いる研究を支援します。REST APIとPythonパッケージによる照会方法を扱い、アノテーション取得、変異解析、ゲノム座標変換に利用できます。

主な機能

  1. 01遺伝子の検索と配列の取得
  2. 02VEPによる変異影響の予測
  3. 03オーソログ、パラログ、遺伝子ツリーの検索
  4. 04ゲノム領域と調節領域の照会
  5. 05アセンブリ間の座標変換

活用シーン

  1. 01遺伝子アノテーションのワークフロー構築
  2. 02変異の影響と頻度の評価
  3. 03種をまたいだ遺伝子の比較
  4. 04ゲノムアセンブリ間の座標変換

インストール

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

$npx skills add https://github.com/ovachiever/droid-tings --skill ensembl-database

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

同梱ファイルreferences/api_endpoints.mdscripts/ensembl_query.py

詳細

Ensembl データベース

概要

EMBL-EBI が管理する脊椎動物ゲノムデータの包括的なリソース、Ensembl ゲノムデータベースにアクセスし、クエリを実行します。このデータベースは、250 種以上の生物について、遺伝子アノテーション、配列、バリアント、制御情報、比較ゲノミクスのデータを提供します。現在のリリースは 115(2025 年 9 月)です。

このスキルを使用するタイミング

このスキルは、次の場合に使用してください。

  • 遺伝子シンボルまたは Ensembl ID で遺伝子情報を検索する場合
  • DNA、トランスクリプト、またはタンパク質の配列を取得する場合
  • Variant Effect Predictor(VEP)を使用して遺伝的バリアントを分析する場合
  • 複数の生物種にわたるオーソログおよびパラログを探す場合
  • 制御機能およびゲノムアノテーションにアクセスする場合
  • ゲノムアセンブリ間で座標を変換する場合(例:GRCh37 から GRCh38)
  • 比較ゲノミクス解析を実行する場合
  • Ensembl のデータを ゲノミクス研究パイプラインに統合する場合

主要機能

1. 遺伝子情報の取得

遺伝子シンボル、Ensembl ID、または外部データベースの識別子で遺伝子データを検索します。

一般的な操作:

  • 遺伝子シンボル(例:「BRCA2」「TP53」)で遺伝子情報を検索する
  • トランスクリプトおよびタンパク質の情報を取得する
  • 遺伝子の座標と染色体上の位置を取得する
  • 外部データベース(UniProt、RefSeq など)への相互参照にアクセスする

ensembl_rest パッケージの使用:

from ensembl_rest import EnsemblClient

client = EnsemblClient()

# Look up gene by symbol
gene_data = client.symbol_lookup(
    species='human',
    symbol='BRCA2'
)

# Get detailed gene information
gene_info = client.lookup_id(
    id='ENSG00000139618',  # BRCA2 Ensembl ID
    expand=True
)

REST API の直接利用(パッケージ不要):

import requests

server = "https://rest.ensembl.org"

# Symbol lookup
response = requests.get(
    f"{server}/lookup/symbol/homo_sapiens/BRCA2",
    headers={"Content-Type": "application/json"}
)
gene_data = response.json()
2. 配列の取得

ゲノム、トランスクリプト、またはタンパク質の配列を、さまざまな形式(JSON、FASTA、プレーンテキスト)で取得します。

操作:

  • 遺伝子またはゲノム領域の DNA 配列を取得する
  • トランスクリプトの配列(cDNA)を取得する
  • タンパク質配列にアクセスする
  • 隣接領域や修飾を含めて配列を抽出する

例:

# Using ensembl_rest package
sequence = client.sequence_id(
    id='ENSG00000139618',  # Gene ID
    content_type='application/json'
)

# Get sequence for a genomic region
region_seq = client.sequence_region(
    species='human',
    region='7:140424943-140624564'  # chromosome:start-end
)
3. バリアント解析

遺伝的変異のデータを検索し、Variant Effect Predictor(VEP)を使用してバリアントの影響を予測します。

機能:

  • rsID またはゲノム座標でバリアントを検索する
  • バリアントの機能的影響を予測する
  • 集団頻度のデータにアクセスする
  • 表現型との関連を取得する

VEP の例:

# Predict variant consequences
vep_result = client.vep_hgvs(
    species='human',
    hgvs_notation='ENST00000380152.7:c.803C>T'
)

# Query variant by rsID
variant = client.variation_id(
    species='human',
    id='rs699'
)
4. 比較ゲノミクス

複数の生物種にわたる比較を行い、オーソログ、パラログ、および進化的関係を特定します。

操作:

  • オーソログを探す(異なる生物種における同じ遺伝子)
  • パラログを特定する(同じ生物種内の関連遺伝子)
  • 進化的関係を示す遺伝子系統樹にアクセスする
  • 遺伝子ファミリーの情報を取得する

例:

# Find orthologs for a human gene
orthologs = client.homology_ensemblgene(
    id='ENSG00000139618',  # Human BRCA2
    target_species='mouse'
)

# Get gene tree
gene_tree = client.genetree_member_symbol(
    species='human',
    symbol='BRCA2'
)
5. ゲノム領域の解析

特定の領域に含まれるすべてのゲノム上の特徴(遺伝子、トランスクリプト、制御エレメント)を検索します。

ユースケース:

  • 染色体領域内のすべての遺伝子を特定する
  • 制御機能(プロモーター、エンハンサー)を探す
  • 領域内のバリアントを特定する
  • 構造上の特徴を取得する

例:

# Find all features in a region
features = client.overlap_region(
    species='human',
    region='7:140424943-140624564',
    feature='gene'
)
6. アセンブリのマッピング

異なるゲノムアセンブリ間で座標を変換します(例:GRCh37 から GRCh38)。

重要: GRCh37/hg19 のクエリには https://grch37.rest.ensembl.org を、現在のアセンブリには https://rest.ensembl.org を使用してください。

例:

from ensembl_rest import AssemblyMapper

# Map coordinates from GRCh37 to GRCh38
mapper = AssemblyMapper(
    species='human',
    asm_from='GRCh37',
    asm_to='GRCh38'
)

mapped = mapper.map(chrom='7', start=140453136, end=140453136)

API のベストプラクティス

レート制限

Ensembl REST API にはレート制限があります。次のプラクティスに従ってください。

  1. レート制限を守る: 匿名ユーザーの場合、1 秒あたり最大 15 リクエストです
  2. 429 レスポンスを処理する: レート制限にかかった場合は、Retry-After ヘッダーを確認し、その時間だけ待機してください
  3. バッチエンドポイントを使用する: 複数の項目をクエリする場合は、利用可能であればバッチエンドポイントを使用してください
  4. 結果をキャッシュする: API 呼び出しを減らすため、頻繁にアクセスするデータを保存してください
エラー処理

必ず適切なエラー処理を実装してください。

import requests
import time

def query_ensembl(endpoint, params=None, max_retries=3):
    server = "https://rest.ensembl.org"
    headers = {"Content-Type": "application/json"}

    for attempt in range(max_retries):
        response = requests.get(
            f"{server}{endpoint}",
            headers=headers,
            params=params
        )

        if response.status_code == 200:
            return response.json()
        elif response.status_code == 429:
            # Rate limited - wait and retry
            retry_after = int(response.headers.get('Retry-After', 1))
            time.sleep(retry_after)
        else:
            response.raise_for_status()

    raise Exception(f"Failed after {max_retries} attempts")

インストール

Python パッケージ(推奨)
uv pip install ensembl_rest

ensembl_rest パッケージは、すべての Ensembl REST API エンドポイントへの Python らしいインターフェースを提供します。

REST API の直接利用

インストールは不要です。requests などの標準的な HTTP ライブラリを使用してください。

uv pip install requests

リソース

references/
  • api_endpoints.md: 全 17 の API エンドポイントカテゴリについて、例とパラメータを含む包括的なドキュメント
scripts/
  • ensembl_query.py: 組み込みのレート制限とエラー処理を備えた、一般的な Ensembl クエリ用の再利用可能な Python スクリプト

一般的なワークフロー

ワークフロー 1: 遺伝子アノテーションパイプライン
  1. シンボルで遺伝子を検索し、Ensembl ID を取得する
  2. トランスクリプト情報を取得する
  3. すべてのトランスクリプトのタンパク質配列を取得する
  4. 他の種でオーソログを検索する
  5. 結果をエクスポートする
ワークフロー 2: バリアント解析
  1. rsID または座標でバリアントを検索する
  2. VEP を使用して機能的影響を予測する
  3. 集団頻度を確認する
  4. 表現型との関連情報を取得する
  5. レポートを生成する
ワークフロー 3: 比較解析
  1. 参照種で対象の遺伝子から開始する
  2. 対象種でオーソログを検索する
  3. すべてのオーソログの配列を取得する
  4. 遺伝子構造と特徴を比較する
  5. 進化的保存性を解析する

種およびアセンブリ情報

利用可能な種とアセンブリを照会するには:

# List all available species
species_list = client.info_species()

# Get assembly information for a species
assembly_info = client.info_assembly(species='human')

一般的な種の識別子:

  • ヒト: homo_sapiens または human
  • マウス: mus_musculus または mouse
  • ゼブラフィッシュ: danio_rerio または zebrafish
  • ショウジョウバエ: drosophila_melanogaster

追加リソース

コメント