uniprot
UniProtのデータベースにアクセスし、タンパク質の配列や機能に関する情報を検索したり、関連するタンパク質や構造の情報を見つけたりするなど、タンパク質に関する様々な情報を効率的に取得するSkill。
📜 元の英語説明(参考)
Access UniProt for protein sequence and annotation retrieval. Use this skill when: (1) Looking up protein sequences by accession, (2) Finding functional annotations, (3) Getting domain boundaries, (4) Finding homologs and variants, (5) Cross-referencing to PDB structures. For structure retrieval, use pdb. For sequence design, use proteinmpnn.
🇯🇵 日本人クリエイター向け解説
UniProtのデータベースにアクセスし、タンパク質の配列や機能に関する情報を検索したり、関連するタンパク質や構造の情報を見つけたりするなど、タンパク質に関する様々な情報を効率的に取得するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o uniprot.zip https://jpskill.com/download/9557.zip && unzip -o uniprot.zip && rm uniprot.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9557.zip -OutFile "$d\uniprot.zip"; Expand-Archive "$d\uniprot.zip" -DestinationPath $d -Force; ri "$d\uniprot.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
uniprot.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
uniprotフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
UniProtデータベースへのアクセス
注記: このスキルは、UniProt REST APIを直接使用します。Modalのデプロイは不要で、すべての操作はHTTPリクエストを通じてローカルで実行されます。
シーケンスの取得
アクセッションによる取得
# FASTA形式
curl "https://rest.uniprot.org/uniprotkb/P00533.fasta"
# アノテーション付きJSON形式
curl "https://rest.uniprot.org/uniprotkb/P00533.json"
Pythonの使用
import requests
def get_uniprot_sequence(accession):
"""UniProtからシーケンスを取得します。"""
url = f"https://rest.uniprot.org/uniprotkb/{accession}.fasta"
response = requests.get(url)
if response.ok:
lines = response.text.strip().split('\n')
header = lines[0]
sequence = ''.join(lines[1:])
return header, sequence
return None, None
アノテーションの取得
エントリー全体
def get_uniprot_entry(accession):
"""UniProtのエントリー全体をJSONとして取得します。"""
url = f"https://rest.uniprot.org/uniprotkb/{accession}.json"
response = requests.get(url)
return response.json() if response.ok else None
entry = get_uniprot_entry("P00533")
print(f"Protein: {entry['proteinDescription']['recommendedName']['fullName']['value']}")
ドメイン境界
def get_domains(accession):
"""ドメインのアノテーションを抽出します。"""
entry = get_uniprot_entry(accession)
domains = []
for feature in entry.get('features', []):
if feature['type'] == 'Domain':
domains.append({
'name': feature.get('description', ''),
'start': feature['location']['start']['value'],
'end': feature['location']['end']['value']
})
return domains
# 例: EGFRドメイン
domains = get_domains("P00533")
# [{'name': 'Kinase', 'start': 712, 'end': 979}, ...]
UniProtの検索
遺伝子名による検索
def search_uniprot(query, organism=None, limit=10):
"""クエリでUniProtを検索します。"""
url = "https://rest.uniprot.org/uniprotkb/search"
params = {
"query": query,
"format": "json",
"size": limit
}
if organism:
params["query"] += f" AND organism_id:{organism}"
response = requests.get(url, params=params)
return response.json()['results']
# ヒトEGFRの検索
results = search_uniprot("EGFR", organism=9606)
配列類似性による検索 (BLAST)
# UniProt BLASTを使用
# https://www.uniprot.org/blast
相互参照
PDB構造の取得
def get_pdb_references(accession):
"""UniProtエントリーのPDB構造を取得します。"""
entry = get_uniprot_entry(accession)
pdbs = []
for xref in entry.get('uniProtKBCrossReferences', []):
if xref['database'] == 'PDB':
pdbs.append({
'pdb_id': xref['id'],
'method': xref.get('properties', [{}])[0].get('value', ''),
'chains': xref.get('properties', [{}])[1].get('value', '')
})
return pdbs
# 例: EGFRのPDB構造
pdbs = get_pdb_references("P00533")
一般的なユースケース
ターゲットの選択
# 1. 名前でタンパク質を検索
results = search_uniprot("insulin receptor", organism=9606)
# 2. アクセッションを取得
accession = results[0]['primaryAccession'] # 例: P06213
# 3. ドメインを取得
domains = get_domains(accession)
# 4. PDB構造を検索
pdbs = get_pdb_references(accession)
# 5. 設計に最適な構造をダウンロード
配列アラインメント情報
def get_sequence_variants(accession):
"""UniProtから天然変異体を取得します。"""
entry = get_uniprot_entry(accession)
variants = []
for feature in entry.get('features', []):
if feature['type'] == 'Natural variant':
variants.append({
'position': feature['location']['start']['value'],
'original': feature.get('alternativeSequence', {}).get('originalSequence', ''),
'variant': feature.get('alternativeSequence', {}).get('alternativeSequences', [''])[0],
'description': feature.get('description', '')
})
return variants
APIリファレンス
| Endpoint | 説明 |
|---|---|
/uniprotkb/{id}.fasta |
FASTAシーケンス |
/uniprotkb/{id}.json |
エントリー全体のJSON |
/uniprotkb/search |
エントリーの検索 |
/uniprotkb/stream |
バッチダウンロード |
トラブルシューティング
エントリーが見つからない: アクセッション形式を確認してください (例: P00533) レート制限: リクエスト間に遅延を追加してください 大規模なダウンロード: ページネーション付きのstreamエンドポイントを使用してください
次: エンベディングにはesm、構造にはcolabfoldでシーケンスを使用します。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
UniProt Database Access
Note: This skill uses the UniProt REST API directly. No Modal deployment needed - all operations run locally via HTTP requests.
Fetching Sequences
By Accession
# FASTA format
curl "https://rest.uniprot.org/uniprotkb/P00533.fasta"
# JSON format with annotations
curl "https://rest.uniprot.org/uniprotkb/P00533.json"
Using Python
import requests
def get_uniprot_sequence(accession):
"""Fetch sequence from UniProt."""
url = f"https://rest.uniprot.org/uniprotkb/{accession}.fasta"
response = requests.get(url)
if response.ok:
lines = response.text.strip().split('\n')
header = lines[0]
sequence = ''.join(lines[1:])
return header, sequence
return None, None
Getting Annotations
Full Entry
def get_uniprot_entry(accession):
"""Fetch full UniProt entry as JSON."""
url = f"https://rest.uniprot.org/uniprotkb/{accession}.json"
response = requests.get(url)
return response.json() if response.ok else None
entry = get_uniprot_entry("P00533")
print(f"Protein: {entry['proteinDescription']['recommendedName']['fullName']['value']}")
Domain Boundaries
def get_domains(accession):
"""Extract domain annotations."""
entry = get_uniprot_entry(accession)
domains = []
for feature in entry.get('features', []):
if feature['type'] == 'Domain':
domains.append({
'name': feature.get('description', ''),
'start': feature['location']['start']['value'],
'end': feature['location']['end']['value']
})
return domains
# Example: EGFR domains
domains = get_domains("P00533")
# [{'name': 'Kinase', 'start': 712, 'end': 979}, ...]
Searching UniProt
By Gene Name
def search_uniprot(query, organism=None, limit=10):
"""Search UniProt by query."""
url = "https://rest.uniprot.org/uniprotkb/search"
params = {
"query": query,
"format": "json",
"size": limit
}
if organism:
params["query"] += f" AND organism_id:{organism}"
response = requests.get(url, params=params)
return response.json()['results']
# Search for human EGFR
results = search_uniprot("EGFR", organism=9606)
By Sequence Similarity (BLAST)
# Use UniProt BLAST
# https://www.uniprot.org/blast
Cross-References
Get PDB Structures
def get_pdb_references(accession):
"""Get PDB structures for UniProt entry."""
entry = get_uniprot_entry(accession)
pdbs = []
for xref in entry.get('uniProtKBCrossReferences', []):
if xref['database'] == 'PDB':
pdbs.append({
'pdb_id': xref['id'],
'method': xref.get('properties', [{}])[0].get('value', ''),
'chains': xref.get('properties', [{}])[1].get('value', '')
})
return pdbs
# Example: PDB structures for EGFR
pdbs = get_pdb_references("P00533")
Common Use Cases
Target Selection
# 1. Find protein by name
results = search_uniprot("insulin receptor", organism=9606)
# 2. Get accession
accession = results[0]['primaryAccession'] # e.g., P06213
# 3. Get domains
domains = get_domains(accession)
# 4. Find PDB structure
pdbs = get_pdb_references(accession)
# 5. Download best structure for design
Sequence Alignment Info
def get_sequence_variants(accession):
"""Get natural variants from UniProt."""
entry = get_uniprot_entry(accession)
variants = []
for feature in entry.get('features', []):
if feature['type'] == 'Natural variant':
variants.append({
'position': feature['location']['start']['value'],
'original': feature.get('alternativeSequence', {}).get('originalSequence', ''),
'variant': feature.get('alternativeSequence', {}).get('alternativeSequences', [''])[0],
'description': feature.get('description', '')
})
return variants
API Reference
| Endpoint | Description |
|---|---|
/uniprotkb/{id}.fasta |
FASTA sequence |
/uniprotkb/{id}.json |
Full entry JSON |
/uniprotkb/search |
Search entries |
/uniprotkb/stream |
Batch download |
Troubleshooting
Entry not found: Check accession format (e.g., P00533) Rate limits: Add delay between requests Large downloads: Use stream endpoint with pagination
Next: Use sequence with esm for embeddings or colabfold for structure.