我有一个Uniprot I列表,需要知道PDB I和链I。使用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 5HM的蛋白质A0A075B6N1,链是E和J,所以我需要一种方法来检索这些链,得到这样的信息:
A0A075B6N1 5HHM_E
A0A075B6N1 5HHM_J
A0A075B6N1 5HHo_E
A0A075B6N1 5NQK_B
它不必是这种格式,稍后我将其转换为一个字典,其中UniProt in作为键,PDB作为值。
谢谢你提前提供帮助!
发布于 2022-09-13 14:14:46
最近刚刚发布了一个名为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函数!
希望这能有所帮助。
https://stackoverflow.com/questions/71600329
复制相似问题