ensembl-database について
Ensembl Databaseスキルは、Ensemblの遺伝子、配列、変異、比較ゲノムデータを用いる研究を支援します。REST APIとPythonパッケージによる照会方法を扱い、アノテーション取得、変異解析、ゲノム座標変換に利用できます。
主な機能
- 01遺伝子の検索と配列の取得
- 02VEPによる変異影響の予測
- 03オーソログ、パラログ、遺伝子ツリーの検索
- 04ゲノム領域と調節領域の照会
- 05アセンブリ間の座標変換
活用シーン
- 01遺伝子アノテーションのワークフロー構築
- 02変異の影響と頻度の評価
- 03種をまたいだ遺伝子の比較
- 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 秒あたり最大 15 リクエストです
- 429 レスポンスを処理する: レート制限にかかった場合は、
Retry-Afterヘッダーを確認し、その時間だけ待機してください - バッチエンドポイントを使用する: 複数の項目をクエリする場合は、利用可能であればバッチエンドポイントを使用してください
- 結果をキャッシュする: 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: 遺伝子アノテーションパイプライン
- シンボルで遺伝子を検索し、Ensembl ID を取得する
- トランスクリプト情報を取得する
- すべてのトランスクリプトのタンパク質配列を取得する
- 他の種でオーソログを検索する
- 結果をエクスポートする
ワークフロー 2: バリアント解析
- rsID または座標でバリアントを検索する
- VEP を使用して機能的影響を予測する
- 集団頻度を確認する
- 表現型との関連情報を取得する
- レポートを生成する
ワークフロー 3: 比較解析
- 参照種で対象の遺伝子から開始する
- 対象種でオーソログを検索する
- すべてのオーソログの配列を取得する
- 遺伝子構造と特徴を比較する
- 進化的保存性を解析する
種およびアセンブリ情報
利用可能な種とアセンブリを照会するには:
# 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
追加リソース
- 公式ドキュメント: https://rest.ensembl.org/documentation
- Python パッケージのドキュメント: https://ensemblrest.readthedocs.io
- EBI トレーニング: https://www.ebi.ac.uk/training/online/courses/ensembl-rest-api/
- Ensembl ブラウザ: https://useast.ensembl.org
- GitHub の例: https://github.com/Ensembl/ensembl-rest/wiki