from cresset import flare
通过人类DDR1的UNIPROT获取号Q08345来查询其PDB code。
import requests
import time
import urllib.request
uniprot_ids = ['Q08345']
url = 'https://www.uniprot.org/uniprot/'
protein_to_pdb = {}
for protein in uniprot_ids:
params = {
'format': 'tab',
'query': 'ID:{}'.format(protein),
'columns': 'id,database(PDB)'
}
contact = "" # Please set your email address here.
headers = {'User-Agent': 'Python {}'.format(contact)}
r = requests.get(url, params=params, headers=headers)
protein_to_pdb[protein] = str(r.text).splitlines()[-1].split('\t')[-1].split(';')
protein_to_pdb[protein].pop(-1)
time.sleep(1) # be respectful and don't overwhelm the server with requests
print(protein_to_pdb['Q08345'])
['3ZOS', '4AG4', '4BKJ', '4CKR', '5BVK', '5BVN', '5BVO', '5BVW', '5FDP', '5FDX', '6BRJ', '6BSD', '6FEW', '6FEX', '6FIL', '6FIN', '6FIO', '6FIQ', '6GWR', '6HP9', '6Y23', '7BCM', '7BE6']
写一个PDB下载器,下载PDB数据,并推送到Flare的项目里。
def download_from_pdb(project, code):
url = 'http://files.rcsb.org/view/{0:s}.pdb'.format(code)
response = urllib.request.urlopen(url)
text = response.read().decode('utf-8')
project.proteins.extend(flare.read_string(text, 'pdb'))
return project.proteins[-1]
清空现有的项目,并创建新的Flare项目
p = flare.Project()
if (flare.main_window()):
flare.main_window().project = p
从PDB上下载DDR1晶体结构。
import urllib.request
for pdbid in protein_to_pdb['Q08345']:
download_from_pdb(p,pdbid)
在下载到的PDB结构中,有的有B、C、H链,将之删除。
for seq_list in [prot.sequences for prot in p.proteins]:
for i, seq in reversed(tuple(enumerate(seq_list))):
if seq.chain != 'A':
del seq_list[i]
开始蛋白结构准备,直到准备结束。
prep = flare.ProteinPrep()
prep.proteins = p.proteins
prep.start()
prep.wait()
氨基酸序列比对,然后在序列相似性矩阵找到与5FDP相似性低于90%的蛋白(PDB 6AG4,6BRJ,6BSD),并删除。
p.proteins.align()
在GUI Protein选项卡下,点击Superimpose,将所有蛋白叠合到5FDP。
接下来开始将配体提取出来到配体表单:也就是将序列类型为ligand的移到ligand table里。
for seq_list in [prot.sequences for prot in p.proteins]:
for i, seq in reversed(tuple(enumerate(seq_list))):
if (seq.type == flare.Sequence.Type.Ligand):
p.ligands.extend(seq)
del seq_list[i]
注意到3ZOS的Title为untitle,主要因为该蛋白Chain A有两个配体,其中一个在表面,需要删除,并重命名为3ZOS_LIGAND。检查配体的结构,必要时进行编辑修改,确保结构的正确性。将叠合后的配体导出,保存为xtal-ligand.sdf备用。