Biopython数组加法错误(对所有人开放)

时间:2017-05-23 07:59:37

标签: python numpy biopython scientific-computing protein-database

好。让我先解释一下这些事情。我在此代码中使用了名为Biopython的特定模块。如果您不熟悉该模块,我正在解释解决问题的必要细节。

代码是:

#!/usr/bin/python

from Bio.PDB.PDBParser import PDBParser

import numpy as np

parser=PDBParser(PERMISSIVE=1)

structure_id="mode_7"
filename="mode_7.pdb"
structure=parser.get_structure(structure_id, filename)
model1=structure[0]
s=(124,3)
newc=np.zeros(s,dtype=np.float32)
coord=[]
#for chain1 in model1.get_list():
#   for residue1 in chain1.get_list():
#       ca1=residue1["CA"]
#       coord1=ca1.get_coord()
#       newc.append(coord1)
for i in range(0,29):
    model=structure[i]
    for chain in model.get_list():
        for residue in chain.get_list():
            ca=residue["CA"]
            coord.append(ca.get_coord())
    newc=np.add(newc,coord)

print newc

print "END"

PDB文件是蛋白质数据库文件。我正在使用的文件可以从https://drive.google.com/open?id=0B8oUhqYoEX6YVFJBTGlNZGNBdlk

下载

如果您从第一个for循环中移除哈希值,您会发现get_coord()返回{d} (124,3)的{​​{1}}数组。同样,下一个for循环应该返回相同的内容。

它发出一个奇怪的错误:

float32

我绝对不知道如何设法制作Traceback (most recent call last): File "./average.py", line 27, in <module> newc=np.add(newc,coord) ValueError: operands could not be broadcast together with shapes (124,3) (248,3) 数组。我只想添加数组坐标。我尝试了对代码的另一个修改:

248,3

它给出了同样的错误。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

我不确定我完全理解你在做什么,但看起来你需要在每次迭代开始时重置coords列表:

for i in range(0,29):
    coords = []
    model=structure[i]
    for chain in model.get_list():
        for residue in chain.get_list():
            ca=residue["CA"]
            coord.append(ca.get_coord())
    newc=np.add(newc,coord)

如果在不清除列表的情况下继续追加,则在外循环的每次迭代中向coords添加124个项目。您看到的异常很可能在第二次迭代期间引发。