いいえ。最初に物事を説明しましょう。このコードでは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ファイルタンパク質データバンクファイルです。私が働いているファイルには、ループの最初からハッシュを削除した場合、あなたはget_coord()
はDTYPE float32
で(124,3)
配列を返すことがわかりますhttps://drive.google.com/open?id=0B8oUhqYoEX6YVFJBTGlNZGNBdlk
からダウンロードすることができます。同様に、次の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
ありがとうございます...問題は解決されました... –