我有一个肽序列列表,我想将其映射到来自任何开放数据库(如Uniprot)的正确蛋白质名称,即属于蛋白质的肽。谁能指导一下如何找到蛋白质名称并绘制它们,提前感谢。
我想说你最好的选择是使用请求模块并钩入Uniprot网站上的API。肽序列搜索的API在这里,它的文档链接来自同一页面。有了这个,您应该能够形成一个包含搜索参数的字典,并向API发送一个请求,该请求将返回您正在寻找的结果。请求模块允许你以json格式检索结果,你可以很容易地解析回列表/字典等,以任何你想要的方式使用。
编辑:我有代码!只是为了好玩,我尝试了第一部分:使用肽查找蛋白质。这个工作!您可以看到请求模块使这类事情变得多么容易:)
有了"accessessions"列表后,还有另一个API用于检索数据库条目。从这第一步开始。所有的API端点和文档都可以在这里访问。我想你想要这个。
import requests
from time import sleep
url = 'https://research.bioinformatics.udel.edu/peptidematchws/asyncrest'
#peps can be a comma separated list for multiple peptide sequences
data={'peps':'MKTLLLTLVVVTIVCLDLGYT','lEQi':'off','spOnly':'off'}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url,params=data,headers=headers)
if response.status_code == 202:
print(f"Search accepted. Results at {response.headers['Location']}")
search_job = requests.get(response.headers['Location'])
while search_job.status_code == 303:
sleep(30)
search_job = requests.get(response.headers['Location'])
if search_job.status_code == 200:
results = search_job.text.split(',')
print('Results found:')
print(results)
else:
print('No matches found')
else:
print('Error Search not accepted')
print(response.status_code, response.reason)