如何解决如何获取神秘序列的PDB id?
我有一堆蛋白质,来自一种叫做 proteinnet 的东西。 现在那里的序列有某种 ID,但它显然不是 PDB id,所以我需要以其他方式找到它。对于每个蛋白质,我都有氨基酸序列。我正在使用 biopython,但我对此还不是很有经验,并且在指南中找不到。
所以我的问题是,如果我有蛋白质的氨基酸序列,我该如何找到蛋白质 PDB id? (这样我就可以下载蛋白质的 PDB 文件)
解决方法
嗨,我之前在玩 RCSB PDB 搜索 API,
最后得到了这段代码(在rcsb pdb网站上找不到例子了),
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Dec 27 16:20:43 2020
@author: Pietro
"""
import PDB_searchAPI_5
from PDB_searchAPI_5.rest import ApiException
import json
#"value":"STEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS"
# Defining the host is optional and defaults to https://search.rcsb.org/rcsbsearch/v1
# See configuration.py for a list of all supported configuration parameters.
configuration = PDB_searchAPI_5.Configuration(
host = "http://search.rcsb.org/rcsbsearch/v1"
)
data_entry_1 = '''{
"query": {
"type": "terminal","service": "sequence","parameters": {
"evalue_cutoff": 1,"identity_cutoff": 0.9,"target": "pdb_protein_sequence","value": "STEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS"
}
},"request_options": {
"scoring_strategy": "sequence"
},"return_type": "entry"
}'''
# Enter a context with an instance of the API client
with PDB_searchAPI_5.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = PDB_searchAPI_5.SearchServiceApi(api_client)
try:
# Get RCSB PDB data schema as JSON schema extended with RCSB metadata.
pippo = api_instance.run_json_queries_get(data_entry_1)
except ApiException as e:
print("Exception when calling SearchServiceApi->run_json_queries_get: %s\n" % e)
exit()
print(type(pippo))
print(dir(pippo))
pippox = pippo.__dict__
print('\n bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb \n',pippox)
print('\n\n ********************************* \n\n')
print(type(pippox))
pippoy = pippo.result_set
print(type(pippoy))
for i in pippoy:
print('\n',i,'\n',type(i))
print('\n LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL\n')
for i in pippoy:
for key in i:
print('\n',i['identifier'],' score : ',i['score'])
搜索模块 (import PDB_searchAPI_5
) 是用以下代码生成的:openapi-generator-cli-4.3.1.jar link here
开放 api 规范,其中 1.7.3 现在是 1.7.15,请参阅 https://search.rcsb.org/openapi.json
data_entry_1 位是从 rcsb pdb 网站复制的,但找不到了, 它说 mmseqs2 是进行搜索的软件,玩过:
"evalue_cutoff": 1,
参数但没有找到只选择 100% 身份的方法
here the PDB_searchAPI_5 在虚拟环境中安装它:
pip install PDB-searchAPI-5-1.0.0.tar.gz
由 openapi-generator-cli-4.3.1.jar 生成:
java -jar openapi-generator-cli-4.3.1.jar generate -g python -i pdb-search-api-openapi.json --additionalproperties=generateSourceCodeOnly=True,packageName=PDB_searchAPI_5
不要在--additionalproperties 部分放置空格(花了一个星期才弄明白)
README.md
文件是最重要的部分,因为它解释了如何使用 OPEN-API 客户端
这里需要你的 fasta 序列:
"value":"STEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYRKQVVIDGETCLLDILDTAGQEEYSAMRDQYMRTGEGFLCVFAINNTKSFEDIHQYREQIKRVKDSDDVPMVLVGNKCDLAARTVESRQAQDLARSYGIPYIETSAKTRQGVEDAFYTLVREIRQHKLRKLNPPDESGPGCMSCKCVLS"
分数 = 1 应该是完全匹配,
可能 biopythonblast 模块更简单,但它爆炸 NIH 数据库而不是 RCSB PDB,抱歉不能详细说明这一点,仍然需要弄清楚什么是 JSON 文件,并且找不到更好的免费工具自动生成更好的 OPEN-API python 客户端(我相信这不是那么容易的任务......但我们总是想要更多......)
要获取 API 文档,请尝试:
java -jar openapi-generator-cli-4.3.1.jar generate -g html -i https://search.rcsb.org/openapi.json --skip-validate-spec
您获得 html 文档或 pdf:https://mrin9.github.io/RapiPdf/
http://search.rcsb.org/openapi.json
与 https://search.rcsb.org/openapi.json
一样有效,因此您可以使用 wireshark 来查看客户端和服务器之间的交换
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。