从Uniprot ID获取PDB ID+链ID



我有一个Uniprot ID列表,需要知道PDB ID和Chain ID。使用Uniprot网站上给出的代码,我可以获得PDB ID,但不能获得链信息。

import urllib.parse
import urllib.request
url = 'https://www.uniprot.org/uploadlists/'
params = {
'from': 'ACC+ID',
'to': 'PDB_ID',
'format': 'tab',
'query': UniProtIDs
}
data = urllib.parse.urlencode(params)
data = data.encode('utf-8')
req = urllib.request.Request(url, data)
with open('UniProt_PDB_IDs.txt', 'a') as f:
with urllib.request.urlopen(req) as q:
response = q.read()
f.write(response.decode('utf-8'))

所以这个代码让我得到了这个:

From    To
A0A075B6N1  5HHM
A0A075B6N1  5HHO
A0A075B6N1  5NQK
A0A075B6T6  1AO7
A0A075B6T6  4ZDH

对于PDB ID为5HHM的蛋白质A0A075B6N1,链是E和J,所以我需要一种方法来检索链以获得类似的东西:

A0A075B6N1  5HHM_E 
A0A075B6N1  5HHM_J
A0A075B6N1  5HHo_E
A0A075B6N1  5NQK_B

它不必是这种格式,稍后我将其转换为一个字典,其中UniProt ID作为键,PDB ID作为值。

提前感谢您的帮助!

最近刚刚发布了一个名为localpdb的工具,它可能正是您想要的:https://labstructbioinf.github.io/localpdb/.

另一种方法是将结构分段,这可以通过MDanalysis宇宙对象轻松完成(https://www.mdanalysis.org)。假设您有一个PDB ID列表:

#fetch structures
universe_objects = []
for pdb_id in pdb_ids:
mmtf_object = mda.fetch_mmtf(pdb_id)
universe_objects.append(mmtf_object)
#get rid of water and ligands and split structures into chains
universe_chains = []
for universe_object in universe_objects:
universe_chain = universe_object.select_atoms('protein').split('segment')
universe_chains.append(universe_chain)

#flatten nested list
universe_chain_list = [item for sublist in universe_chains for item in sublist]

当然,你还可以使用其他工具。例如,通过ProDy Hierview功能!

希望能有所帮助。

相关内容

最新更新