ena-database について
バイオインフォマティクスのワークフローでENAのデータにアクセスする研究者向けのスキルです。欧州ヌクレオチドアーカイブの配列データやメタデータを、REST APIや複数の形式、各種一括ダウンロード方法で扱います。
主な機能
- 01メタデータでアーカイブ記録を検索
- 02配列、リード、アセンブリの取得
- 03分類情報の照会
- 04XML、JSON、TSV形式でメタデータを取得
- 05FTP、Aspera、コマンドラインツールで一括ダウンロード
活用シーン
- 01アクセッション番号からリードをダウンロード
- 02研究プロジェクト内のサンプルを検索
- 03生物種からゲノムアセンブリを検索
- 04ENAデータをバイオインフォマティクスのワークフローに統合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill ena-databaseインストール後、Claude Code で/ena-databaseを入力して読み込まれたか確認します。
同梱ファイルreferences/api_reference.md
詳細
ENA データベース
概要
European Nucleotide Archive(ENA)は、ヌクレオチド配列データおよび関連するメタデータのための包括的な公開リポジトリです。REST API と FTP を通じて、DNA/RNA 配列、生のリード、ゲノムアセンブリ、機能アノテーションにアクセスし、クエリを実行できます。ゲノミクスおよびバイオインフォマティクスのパイプラインで利用できます。
このスキルを使用する場面
このスキルは、次のような場合に使用します。
- アクセッション番号により、ヌクレオチド配列または生のシーケンスリードを取得する場合
- メタデータの条件により、サンプル、スタディ、アセンブリを検索する場合
- 解析のために FASTQ ファイルやゲノムアセンブリをダウンロードする場合
- 生物の分類学的情報を照会する場合
- 配列アノテーションおよび機能データにアクセスする場合
- ENA データをバイオインフォマティクスのパイプラインに統合する場合
- 関連データベースへの相互参照検索を行う場合
- FTP または Aspera を介してデータセットを一括ダウンロードする場合
主な機能
1. データの種類と構造
ENA はデータを階層的なオブジェクトタイプに分けて管理します。
スタディ/プロジェクト - 関連するデータをまとめ、公開日を管理します。スタディは、アーカイブされたデータを引用する際の主要な単位です。
サンプル - シーケンスライブラリの作成元となった生体試料の単位を表します。ほとんどのデータタイプを提出する前に、サンプルを登録する必要があります。
生のリード - 次の要素で構成されます。
- 実験: シーケンシング法、ライブラリ調製、機器の詳細に関するメタデータ
- ラン: 1 回のシーケンシングランから得られた、生のシーケンスリードを含むデータファイルへの参照
アセンブリ - さまざまな完成度のゲノム、トランスクリプトーム、メタゲノム、メタトランスクリプトームのアセンブリです。
配列 - EMBL ヌクレオチド配列データベースに格納されたアセンブル済み・アノテーション付きの配列です。コード領域・非コード領域および機能アノテーションを含みます。
解析 - 配列データに対する計算解析の結果です。
分類学レコード - 系統および階級を含む分類学的情報です。
2. プログラムによるアクセス
ENA は、データアクセスのために複数の REST API を提供しています。詳細なエンドポイントのドキュメントは references/api_reference.md を参照してください。
主要な API:
ENA Portal API - ENA のすべてのデータタイプを対象とした高度な検索機能
- ドキュメント: https://www.ebi.ac.uk/ena/portal/api/doc
- 複雑なクエリやメタデータ検索に使用します
ENA Browser API - レコードとメタデータを直接取得
- ドキュメント: https://www.ebi.ac.uk/ena/browser/api/doc
- アクセッション番号を指定して特定のレコードをダウンロードする場合に使用します
- XML 形式でデータを返します
ENA Taxonomy REST API - 分類学的情報を照会
- 系統、階級、および関連する分類学データにアクセスできます
ENA Cross Reference Service - 外部データベースの関連レコードにアクセス
- エンドポイント: https://www.ebi.ac.uk/ena/xref/rest/
CRAM Reference Registry - 参照配列を取得
- エンドポイント: https://www.ebi.ac.uk/ena/cram/
- MD5 または SHA1 チェックサムで照会します
レート制限: すべての API には、毎秒 50 リクエストのレート制限があります。これを超えると HTTP 429(Too Many Requests)が返されます。
3. データの検索と取得
ブラウザベースの検索:
- すべてのフィールドを対象としたフリーテキスト検索
- 配列類似性検索(BLAST 連携)
- 関連レコードを探すための相互参照検索
- Rulespace クエリビルダーを用いた高度な検索
プログラムによるクエリ:
- 大規模な高度検索には Portal API を使用します
- データタイプ、日付範囲、分類群、メタデータフィールドで絞り込みます
- 結果は、表形式のメタデータ要約または XML レコードとしてダウンロードできます
API クエリの例のパターン:
import requests
# Search for samples from a specific study
base_url = "https://www.ebi.ac.uk/ena/portal/api/search"
params = {
"result": "sample",
"query": "study_accession=PRJEB1234",
"format": "json",
"limit": 100
}
response = requests.get(base_url, params=params)
samples = response.json()
4. データ取得の形式
メタデータの形式:
- XML(ENA のネイティブ形式)
- JSON(Portal API 経由)
- TSV/CSV(表形式の要約)
配列データ:
- FASTQ(生のリード)
- BAM/CRAM(アラインメント済みリード)
- FASTA(アセンブル済み配列)
- EMBL フラットファイル形式(アノテーション付き配列)
ダウンロード方法:
- API による直接ダウンロード(小さいファイル)
- 大量データの転送のための FTP
- 大規模データセットの高速転送のための Aspera
- 一括ダウンロード用のコマンドラインユーティリティ enaBrowserTools
5. 一般的なユースケース
アクセッション番号でraw シーケンスリードを取得:
# Download run files using Browser API
accession = "ERR123456"
url = f"https://www.ebi.ac.uk/ena/browser/api/xml/{accession}"
研究内のすべてのサンプルを検索:
# Use Portal API to list samples
study_id = "PRJNA123456"
url = f"https://www.ebi.ac.uk/ena/portal/api/search?result=sample&query=study_accession={study_id}&format=tsv"
特定の生物のアセンブリを検索:
# Search assemblies by taxonomy
organism = "Escherichia coli"
url = f"https://www.ebi.ac.uk/ena/portal/api/search?result=assembly&query=tax_tree({organism})&format=json"
分類学的系統を取得:
# Query taxonomy API
taxon_id = "562" # E. coli
url = f"https://www.ebi.ac.uk/ena/taxonomy/rest/tax-id/{taxon_id}"
6. 解析パイプラインとの統合
一括ダウンロードパターン:
- Portal API を使用して、条件に一致するアクセッション番号を検索する
- 検索結果からファイル URL を抽出する
- FTP または enaBrowserTools を使用してファイルをダウンロードする
- ダウンロードしたデータをパイプラインで処理する
BLAST 統合: EBI の NCBI BLAST サービス(REST/SOAP API)と統合し、ENA の配列に対する配列類似性検索を行います。
7. ベストプラクティス
レート制限:
- HTTP 429 レスポンスを受け取った場合は、指数バックオフを実装する
- 50 req/sec の制限内に収まるよう、可能な場合はリクエストをまとめる
- 多数のデータセットには、API 呼び出しを繰り返すのではなく一括ダウンロードツールを使用する
データの引用:
- 公開時には、常に Study/Project アクセッション番号を使用して引用する
- 使用した特定のサンプル、ラン、またはアセンブリのアクセッション番号を含める
API レスポンスの処理:
- レスポンスを処理する前に HTTP ステータスコードを確認する
- XML レスポンスは、正規表現ではなく適切な XML ライブラリを使用して解析する
- 大規模な結果セットにはページネーションを処理する
パフォーマンス:
- 大きなファイル(>100MB)のダウンロードには FTP/Aspera を使用する
- メタデータのみが必要な場合は、XML よりも TSV/JSON 形式を優先する
- 多数のレコードを処理する場合は、分類学的な検索結果をローカルにキャッシュする
リソース
このスキルには、ENA を扱うための詳細なリファレンスドキュメントが含まれています。
references/
api_reference.md - 以下を含む包括的な API エンドポイントのドキュメント:
- Portal API と Browser API の詳細なパラメーター
- レスポンス形式の仕様
- 高度なクエリ構文と演算子
- フィルタリングと検索に使用するフィールド名
- 一般的な API パターンと例
複雑な API クエリを構築する場合、API レスポンスをデバッグする場合、または特定のパラメーターの詳細が必要な場合には、このリファレンスを読み込んでください。