alterlab-uniprot について
alterlab-uniprot は UniProt REST API でタンパク質情報を取得する、生物情報学研究者向けのスキルです。配列取得、データベース間の ID マッピング、大規模結果のストリーミングに対応します。
主な機能
- 01名称・遺伝子・アクセッションによる検索
- 02FASTA などの形式でエントリーを取得
- 03一括取得とデータベース間 ID マッピング
- 04大規模な検索結果のストリーミング
- 05返却フィールドと形式の指定
活用シーン
- 01指定した生物種のタンパク質を検索
- 02配列と機能アノテーションを取得
- 03UniProt と他データベース間で識別子を対応付け
- 04大規模なタンパク質検索結果をダウンロード
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-uniprotインストール後、Claude Code で/alterlab-uniprotを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/api_examples.mdapi_fields.mdid_mapping_databases.mdquery_syntax.mdscripts/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 マッピングのワークフロー:
- マッピングジョブを送信(POST):
https://rest.uniprot.org/idmapping/runにfrom、to、idsを指定 - ジョブの状態を確認:
https://rest.uniprot.org/idmapping/status/{jobId} - 結果を取得:
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)。最初のページには大規模なマッピング結果の一部しか含まれません。nextLink のレスポンスヘッダー(requestsではresponse.links["next"])をたどり、なくなるまで取得してください。同じnextLink によるページネーションは/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 を参照してください。
ベストプラクティス
- 可能な場合はレビュー済みエントリーを使用する:Swiss-Prot(手動でキュレーションされた)エントリーを対象にするには、
reviewed:trueでフィルタリングします - 形式を明示的に指定する:最適な形式を選択します(配列には FASTA、表形式データには TSV、プログラムによる解析には JSON)
- フィールド選択を使用する:必要なフィールドだけをリクエストし、帯域幅と処理時間を削減します
- ページネーションを処理する:検索結果が大量にある場合は、適切なページネーションを実装するか、ストリームエンドポイントを使用します
- 結果をキャッシュする:API 呼び出しを最小限に抑えるため、頻繁にアクセスするデータをローカルに保存します
- レート制限に配慮する:API リソースを尊重し、大規模な一括操作では遅延を入れます
- データ品質を確認する: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)によるコード例
追加リソース
- 使用中のリリース:すべてのレスポンスには
X-UniProt-Release/X-UniProt-Release-Dateヘッダーが含まれます(レビュー時点では 2026_03、2026 年 9 月 2 日)。再現性を確保するため、これらを記録してください - API ドキュメント:https://www.uniprot.org/help/api
- 対話型 API エクスプローラー:https://www.uniprot.org/api-documentation
- REST チュートリアル:https://www.uniprot.org/help/uniprot_rest_tutorial
- クエリ構文ヘルプ:https://www.uniprot.org/help/query-fields
- SPARQL エンドポイント:https://sparql.uniprot.org/(高度なグラフクエリ向け)