OK. Laissez-moi vous expliquer les choses en premier. J'ai utilisé un module spécifique nommé Biopython
dans ce code. J'explique les détails nécessaires pour résoudre le problème si vous n'êtes pas habitué au module.Erreur d'ajout de tableau Biopython (ouverte à tous)
Le code est:
#!/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"
fichier PDB est le fichier de la banque de données de protéines. Le fichier que je travaille avec peut être téléchargé à partir https://drive.google.com/open?id=0B8oUhqYoEX6YVFJBTGlNZGNBdlk
Si vous supprimez les hash de la première boucle, vous verrez que get_coord()
retourne un tableau (124,3)
avec DTYPE float32
. De même, la prochaine boucle est censée retourner la même chose.
Il donne une étrange erreur:
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)
Je suis absolument aucune idée comment il parvient à faire un tableau 248,3
. Je veux juste ajouter le tableau coord sur lui-même. J'ai essayé avec une autre modification du code:
#!/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"
Il donne la même erreur. Pouvez-vous aider ???
dois-je initialiser le tableau à chaque fois alors? –
J'ai mis la ligne pertinente dans ma réponse. 'coords = []' au début de la boucle 'for'. – themiurge
Merci ... Le problème est résolu ... –