0
好的。讓我先解釋一下事情。我在這段代碼中使用了一個名爲Biopython
的特定模塊。如果您不習慣使用模塊,我正在解釋解決問題的必要細節。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()
返回(124,3)
陣列D型float32
。同樣,下一個for循環應該返回相同的值。
它給出了一個奇怪的錯誤:
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
陣列。我只是想將數組coord添加到它自己。我試着用另一種修改代碼:
#!/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=[]
newc2=[]
#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())
newc2=np.add(newc,coord)
print newc
print "END"
它給出了同樣的錯誤。你能幫我嗎???
我應該每次都初始化數組嗎? –
我把相關的一行放在我的答案中。 'for'循環開始處的coords = []'。 – themiurge
謝謝...問題解決了... –