gpt4 book ai didi

python - 氨基酸结合位点发现,蛋白质数据库

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:08 24 4
gpt4 key购买 nike

我试图找出属于两个不同链的两个原子是否会被视为“绑定(bind)”。这是基于这样一个事实,即如果距离(欧几里得,可以通过给定的 x、y、z 坐标找到)比两个原子的范德瓦尔斯加上 0.5A 短,那么它被认为是绑定(bind)的。问题是我不明白如何计算每个原子的范德华力。因为在 PDB 中,原子名称如 CB1、CA 等,而不是单个原子。例如,我知道 N 的 Waals 半径。我可以编写代码来计算原子之间的原子距离,但我没有完成范德瓦尔斯部分,这是必不可少的。这是我编写的代码,用于从两个链和 PDB 的链接中提取信息:

http://www.rcsb.org/pdb/explore.do?structureId=3KUD

a = open('3kud.pdb', 'r') # opening the PDB file
b = a.readlines() # reading the file line by line
c = [x.strip('\n') for x in b] # extracting '\n' from each line
d = []
# Creating a function that extract information from the given PDB list(only the ATOM parts)
def pdbread():
global c # calling c in order to define d based on c.
global d # empty list that contains all the atoms in the list
for i in range(len(c)):
if c[i].startswith('ATOM'):
d.append(c[i])
else:
continue
return d
print 'The atom part of the given PDB file', pdbread()

w = [] # I, then, splitted the given whole atom list part so that each column could be read on the file.
for i in range(len(d)):
line = d[i].split()
w.append(line)
Chain_A = []
Chain_B = []
for z in w:
if z[4] == 'A':
Chain_A.append(z)
if z[4] == 'B':
Chain_B.append(z)

print 'Splitted form of the atom part of the PDB file', w
print 'Chain A :', Chain_A
print 'Chain B:', Chain_B

我可以在这两条链之间创建 for 循环并比较距离,只要我知道如何计算可能相互作用的两个原子之间的范德瓦尔斯半径。

编辑:我决定继续前进,假设每个原子都是第一个字母,例如 CB、OG1 分别是碳和氧,并将采用它们的范德瓦尔斯值。尽管如此,我仍在努力编写代码以在两条链之间创建 for 循环并以以下形式计算距离if 'vanderWaalsOfatomOfChainA + vanderWaalsOfatomOfChainB + 0.5' > '他们的距离基于欧几里德公式':等等。

编辑:我设法将范德瓦尔斯半径添加到 Chain_A 和 Chain_B 中的每个列表,这里是代码:

for z in w:
if z[2][0] == 'N':
z.append(1.55)
if z[2][0] == 'O':
z.append(1.52)
if z[2][0] == 'C':
z.append(1.7)
if z[2][0] == 'S':
z.append(1.8)
if z[2][0] == 'H':
z.append(1.2)

但我所需要的只是找出如何为两条链创建一个 for 循环。我的意思是我必须比较 A 和 B 的所有原子。12. 每个列表中的槽给出范德瓦尔斯半径,我需要计算每个 A 列表的第 12 个加上每个 B 列表的第 12 个加上 0.5,并将其与欧几里德公式!

最终编辑:编写了这段代码,但它不起作用!基于这个想法,我必须将 Chain_A 和 Chain_B 的每个元素进行比较。

A_binding = []
B_binding = []
for x,y in zip(Chain_A, Chain_B):
if x[12] + y[12] + 0.5 > sqrt((float(x[6])-float(y[6]))**2 + (float(x[7])-float(y[7]))**2 + (float(x[8])-float(y[8]))**2):
A_binding.append(x)
B_binding.append(y)
print A_binding
print B_binding

最佳答案

也许这可以帮到你:

Atoms force field values

您感兴趣的部分是 epsilon_vdw_PDB()[0]。它为您提供所有原子范德华兹值。这个文件来 self 最近做的一个项目,是我的老师给的。

顺便问一下,你为什么不做 2 个 for 循环?一个用于链 A,另一个用于链 B。我没有尝试您的代码,但 A 的长度可能与 B 不同。当您使用 zip() 时,() 内的 2 个对象的长度必须相等我认为(未验证)。

关于python - 氨基酸结合位点发现,蛋白质数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41591519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com