mcpField
U
uniprot-database

uniprot-database

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

uniprot-database について

uniprot-database は、UniProt REST API でタンパク質配列や機能注釈を検索するバイオインフォマティクス向けスキルです。個別・一括取得、データベース間の ID 対応付け、大規模結果のストリーミングに対応します。

主な機能

  1. 01名称・遺伝子・アクセッションで検索
  2. 02配列と機能注釈の取得
  3. 03タンパク質エントリーの一括取得
  4. 04データベース間の ID 対応付け
  5. 05大規模結果のストリーミング

活用シーン

  1. 01生物種や遺伝子からタンパク質を検索
  2. 02FASTA 配列の取得
  3. 03UniProt ID と外部 DB ID の対応付け
  4. 04大規模なタンパク質検索結果の取得

インストール

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

$npx skills add https://github.com/leonchaox/qinyan-academic-skills --skill uniprot-database

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

同梱ファイル

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

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)のタンパク質データを照会する場合
  • 大規模なタンパク質データセットをストリーミングする場合
  • フィールド指定の検索構文でカスタムクエリを構築する場合

主な機能

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. マッピングジョブを次の URL に送信します: https://rest.uniprot.org/idmapping/run
  2. ジョブの状態を確認します: https://rest.uniprot.org/idmapping/status/{jobId}
  3. 結果を取得します: https://rest.uniprot.org/idmapping/results/{jobId}

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

  • 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"
annotation:(type:signal)

範囲クエリ:

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)によるコード例

追加リソース

コメント