mcpField
A
alterlab-uniprot

alterlab-uniprot

github.com/alterlab-ieuデータ・データベース7867 回インストール5 週間前に更新
リポジトリ

alterlab-uniprot について

alterlab-uniprot は UniProt REST API でタンパク質情報を取得する、生物情報学研究者向けのスキルです。配列取得、データベース間の ID マッピング、大規模結果のストリーミングに対応します。

主な機能

  1. 01名称・遺伝子・アクセッションによる検索
  2. 02FASTA などの形式でエントリーを取得
  3. 03一括取得とデータベース間 ID マッピング
  4. 04大規模な検索結果のストリーミング
  5. 05返却フィールドと形式の指定

活用シーン

  1. 01指定した生物種のタンパク質を検索
  2. 02配列と機能アノテーションを取得
  3. 03UniProt と他データベース間で識別子を対応付け
  4. 04大規模なタンパク質検索結果をダウンロード

インストール

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

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-uniprot

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
api_examples.md
api_fields.md
id_mapping_databases.md
query_syntax.md
scripts/
uniprot_client.py

詳細

UniProt データベース

概要

UniProt は、世界をリードする包括的なタンパク質配列および機能情報のリソースです。名前、遺伝子、またはアクセッション番号でタンパク質を検索し、FASTA 形式で配列を取得し、データベース間で ID マッピングを実行できます。また、タンパク質解析のために REST API 経由で Swiss-Prot/TrEMBL の注釈にアクセスできます。

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

次のような場合にこのスキルを使用してください。

  • 名前、遺伝子記号、アクセッション番号、または生物種でタンパク質エントリを検索する
  • FASTA 形式またはその他の形式でタンパク質配列を取得する
  • UniProt と外部データベース(Ensembl、RefSeq、PDB など)の間で識別子をマッピングする
  • GO 用語、ドメイン、機能の説明など、タンパク質の注釈にアクセスする
  • 複数のタンパク質エントリを効率よく一括取得する
  • レビュー済み(Swiss-Prot)と未レビュー(TrEMBL)のタンパク質データを照会する
  • 大規模なタンパク質データセットをストリーミングする
  • フィールド固有の検索構文でカスタムクエリを作成する
対象外
シナリオ代わりに使用
実験で得られた 3D 構造と座標alterlab-pdb
AI 予測構造と pLDDT 信頼度alterlab-alphafold-db
タンパク質間相互作用ネットワークalterlab-string-db
ドメイン構成とファミリー分類alterlab-interpro
配列相同性検索(BLAST)alterlab-blast

主な機能

1. タンパク質の検索

自然言語クエリまたは構造化された検索構文を使用して UniProt を検索します。

一般的な検索パターン:

# Search by protein name
query = "insulin AND organism_name:\"Homo sapiens\""

# Search by gene name
query = "gene:BRCA1 AND reviewed:true"

# Search by accession
query = "accession:P12345"

# Search by sequence length
query = "length:[100 TO 500]"

# Search by taxonomy
query = "taxonomy_id:9606"  # Human proteins

# Search by GO term
query = "go:0005515"  # Protein binding

API 検索エンドポイントを使用します:https://rest.uniprot.org/uniprotkb/search?query={query}&format={format}

対応形式: JSON、TSV、Excel、XML、FASTA、RDF、TXT

2. 個別のタンパク質エントリの取得

アクセッション番号で特定のタンパク質エントリを取得します。

アクセッション番号の形式:

  • 標準:P12345、Q1AAA9、O15530(6 文字:英字 1 文字+英数字 5 文字)
  • 拡張:A0A022YWF9(新しいエントリでは 10 文字)

取得エンドポイント: https://rest.uniprot.org/uniprotkb/{accession}.{format}

例:https://rest.uniprot.org/uniprotkb/P12345.fasta

3. 一括取得と ID マッピング

異なるデータベースシステム間でタンパク質識別子をマッピングし、複数のエントリを効率よく取得します。

ID マッピングのワークフロー:

  1. マッピングジョブを送信(POST):https://rest.uniprot.org/idmapping/run に from、to、ids を指定
  2. ジョブの状態を確認:https://rest.uniprot.org/idmapping/status/{jobId}
  3. 結果を取得:https://rest.uniprot.org/idmapping/results/{jobId}

注意が必要な点が 2 つあります(どちらも scripts/uniprot_client.py で処理されています):

  • ステータスエンドポイントは {"jobStatus":"RUNNING"} を返した後、{"jobStatus":"FINISHED"} を返します(完了したジョブは結果 URL に 303 リダイレクトもします)。results/failedIds キーは返さないため、results の有無ではなく、jobStatus == "FINISHED" を条件にポーリングしてください。
  • 結果はページ分割されます(デフォルトの size=25、最大 500)。最初のページには大規模なマッピング結果の一部しか含まれません。next Link のレスポンスヘッダー(requests では response.links["next"])をたどり、なくなるまで取得してください。同じ next Link によるページネーションは /uniprotkb/search エンドポイントにも適用されます。JSON 本文には results のみが含まれ、next キーはありません。

マッピングに対応するデータベース:

  • UniProtKB AC/ID
  • 遺伝子名
  • Ensembl、RefSeq、EMBL
  • PDB、AlphaFoldDB
  • KEGG、GO 用語
  • その他多数(/references/id_mapping_databases.md を参照)

制限事項:

  • 1 ジョブあたり最大 100,000 個の ID
  • 結果の保存期間は 7 日間
4. 大規模な結果セットのストリーミング

ページネーションの上限を超える大規模なクエリには、ストリームエンドポイントを使用します。

https://rest.uniprot.org/uniprotkb/stream?query={query}&format={format}

ストリームエンドポイントは、ページネーションなしですべての結果を返すため、データセット全体のダウンロードに適しています。

5. 取得するフィールドのカスタマイズ

効率的なデータ転送のため、取得するフィールドを正確に指定します。

一般的なフィールド:

  • accession - UniProt アクセッション番号
  • id - エントリー名
  • gene_names - 遺伝子名
  • organism_name - 生物種
  • protein_name - タンパク質名
  • sequence - アミノ酸配列
  • length - 配列長
  • go_* - Gene Ontology アノテーション
  • cc_* - コメントフィールド(機能、相互作用など)
  • ft_* - 特徴アノテーション(ドメイン、部位など)

例: https://rest.uniprot.org/uniprotkb/search?query=insulin&fields=accession,gene_names,organism_name,length,sequence&format=tsv

フィールドの完全な一覧は /references/api_fields.md を参照してください。

Python 実装

プログラムからアクセスする場合は、以下を実装したヘルパースクリプト scripts/uniprot_client.py を使用してください。

  • search_proteins(query, format) - 任意のクエリで UniProt を検索します
  • get_protein(accession, format) - 単一のタンパク質エントリーを取得します
  • map_ids(ids, from_db, to_db) - 識別子の種類を相互にマッピングします
  • batch_retrieve(accessions, format) - 複数のエントリーを取得します
  • stream_results(query, format) - 大量の検索結果をストリーミングします

Python パッケージの代替案:

  • Unipressed:UniProt REST API 用の最新の型付き Python クライアント
  • bioservices:包括的なバイオインフォマティクス Web サービスクライアント

クエリ構文の例

ブール演算子:

kinase AND organism_name:human
(diabetes OR insulin) AND reviewed:true
cancer NOT lung

フィールドを指定した検索:

gene:BRCA1
accession:P12345
organism_id:9606
taxonomy_name:"Homo sapiens"
ft_signal:*

2022 年以前の annotation:(type:...)、database:(type:...)、created:/modified:、および existence:"Evidence at protein level" 形式は、現在の API では HTTP 400 を返します。代わりに ft_<feature>:*、database:<db>、date_created:/date_modified:、および existence:1 を使用してください。

範囲検索:

length:[100 TO 500]
mass:[50000 TO 100000]

ワイルドカード:

gene:BRCA*
protein_name:kinase*

構文の詳細は /references/query_syntax.md を参照してください。

ベストプラクティス

  1. 可能な場合はレビュー済みエントリーを使用する:Swiss-Prot(手動でキュレーションされた)エントリーを対象にするには、reviewed:true でフィルタリングします
  2. 形式を明示的に指定する:最適な形式を選択します(配列には FASTA、表形式データには TSV、プログラムによる解析には JSON)
  3. フィールド選択を使用する:必要なフィールドだけをリクエストし、帯域幅と処理時間を削減します
  4. ページネーションを処理する:検索結果が大量にある場合は、適切なページネーションを実装するか、ストリームエンドポイントを使用します
  5. 結果をキャッシュする:API 呼び出しを最小限に抑えるため、頻繁にアクセスするデータをローカルに保存します
  6. レート制限に配慮する:API リソースを尊重し、大規模な一括操作では遅延を入れます
  7. データ品質を確認する:TrEMBL エントリーは計算による予測です。Swiss-Prot エントリーは手動でレビューされています

リソース

scripts/

uniprot_client.py - 検索、取得、ID マッピング、ストリーミングなど、一般的な UniProt 操作のヘルパー関数を備えた Python クライアントです。

references/
  • api_fields.md - クエリをカスタマイズするために利用できるフィールドの完全な一覧
  • id_mapping_databases.md - ID マッピング操作でサポートされているデータベース
  • query_syntax.md - 高度な例を含む、包括的なクエリ構文
  • api_examples.md - 複数の言語(Python、curl、R)によるコード例

追加リソース

コメント