Biopython: Weird error when adding coordinates of two sets
1
0
Entering edit mode
7.5 years ago
souparnoa91 ▴ 20

I have a pdb file having 30 frames. I want to calculate the average structure. Two add the coordinates, I wrote the following python 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]
newc=[]
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(1,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"

It gives out the following error:

Traceback (most recent call last):
  File "./average.py", line 26, in <module>
    newc=np.add(newc,coord)
ValueError: operands could not be broadcast together with shapes (124,3) (248,3)

I can not figure out how it takes 248 atoms. Because, each of the models has only 124 atoms.

Can you help???

biopython python structure model • 1.4k views
ADD COMMENT
1
Entering edit mode
7.4 years ago
Rodrigo ▴ 190

Guess you already realize the mistake in the code but just in case, the coord list is appended at each iteration of your range(1, 29). The first iteration newc and coord have shapes (124,3) and (124,3) respectively. However, when i = 2 (second iteration), coord is appended 124 atoms and takes the shape (248,3). You should put coord = [], 'nested' in range(1,29) so that it is emptied each time:

`

for i in range(1,29):
    coord = []
    model=structure[i]
    # Rest of code

`

ADD COMMENT

Login before adding your answer.

Traffic: 2579 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6