uniprot-database について
uniprot-database は、タンパク質解析向けの UniProt 検索スキルです。配列や機能注釈の取得、データベース間の ID 対応付けに加え、一括取得や大規模結果のストリーミングにも対応します。
主な機能
- 01名前、遺伝子、アクセッションで検索
- 02FASTA 配列と注釈の取得
- 03データベース間の ID 対応付け
- 04一括取得と結果のストリーミング
- 05検索フィールドと出力形式の指定
活用シーン
- 01遺伝子や生物種からタンパク質を検索
- 02解析用の配列をダウンロード
- 03Ensembl、RefSeq、PDB の ID を変換
- 04Swiss-Prot または TrEMBL データを一括取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jackspace/ claudeskillz --skill uniprot-databaseインストール後、Claude Code で/uniprot-databaseを入力して読み込まれたか確認します。
同梱ファイルSKILL.json
詳細
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 マッピングのワークフロー:
- マッピングジョブを次の URL に送信します:
https://rest.uniprot.org/idmapping/run - ジョブの状態を確認します:
https://rest.uniprot.org/idmapping/status/{jobId} - 結果を取得します:
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 を参照してください。
ベストプラクティス
- 可能な場合はレビュー済みのエントリを使用する: 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)によるコード例
追加リソース
- 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/(高度なグラフクエリ用)