[ PROMPT_NODE_27538 ]
api_examples
[ SKILL_DOCUMENTATION ]
# UniProt API 示例
与 UniProt REST API 交互的多语言实用代码示例。
## Python 示例
### 示例 1:基础搜索
python
import requests
# 搜索人类胰岛素蛋白质
url = "https://rest.uniprot.org/uniprotkb/search"
params = {
"query": "insulin AND organism_id:9606 AND reviewed:true",
"format": "json",
"size": 10
}
response = requests.get(url, params=params)
data = response.json()
for result in data['results']:
print(f"{result['primaryAccession']}: {result['proteinDescription']['recommendedName']['fullName']['value']}")
### 示例 2:检索蛋白质序列
python
import requests
# 以 FASTA 格式获取人类胰岛素序列
accession = "P01308"
url = f"https://rest.uniprot.org/uniprotkb/{accession}.fasta"
response = requests.get(url)
print(response.text)
### 示例 3:自定义字段
python
import requests
# 仅获取特定字段
url = "https://rest.uniprot.org/uniprotkb/search"
params = {
"query": "gene:BRCA1 AND reviewed:true",
"format": "tsv",
"fields": "accession,gene_names,organism_name,length,cc_function"
}
response = requests.get(url, params=params)
print(response.text)
### 示例 4:ID 映射
python
import requests
import time
def map_uniprot_ids(ids, from_db, to_db):
# 提交任务
submit_url = "https://rest.uniprot.org/idmapping/run"
data = {
"from": from_db,
"to": to_db,
"ids": ",".join(ids)
}
response = requests.post(submit_url, data=data)
job_id = response.json()["jobId"]
# 轮询完成状态
status_url = f"https://rest.uniprot.org/idmapping/status/{job_id}"
while True:
response = requests.get(status_url)
status = response.json()
if "results" in status or "failedIds" in status:
break
time.sleep(3)
# 获取结果
results_url = f"https://rest.uniprot.org/idmapping/results/{job_id}"
response = requests.get(results_url)
return response.json()
# 将 UniProt ID 映射到 PDB
ids = ["P01308", "P04637"]
mapping = map_uniprot_ids(ids, "UniProtKB_AC-ID", "PDB")
print(mapping)
### 示例 5:流式传输大数据集
python
import requests
# 流式传输所有已审阅的人类蛋白质
url = "https://rest.uniprot.org/uniprotkb/stream"
params = {
"query": "organism_id:9606 AND reviewed:true",
"format": "fasta"
}
response = requests.get(url, params=params, stream=True)
# 分块处理
with open("human_proteins.fasta", "wb") as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)