Domanda

I have a pdb file and I want to parse pdb. I am using Biopython for the same. I want list of coordinates of N-CA-C-CB in list for every residue. How Can i achieve that?

pdb = "1dly.pdb"
name = pdb[:3]

from Bio import PDB
from ast import literal_eval

p = PDB.PDBParser()
s = p.get_structure(name, pdb)
#print dir(s)
#y = s.get_residues()
z = s.get_atoms()
for x in z:
    print x, x.get_coord()

I want output in this format :

[[(coordinates of N - residue1), (coordinates of CA - residue1), (coordinates of C - residue1), (coordinates of CB - residue1)], [(coordinates of N - residue2), (coordinates of CA - residue2), (coordinates of C - residue2), (coordinates of CB - residue2)]]

How can I do that ?

È stato utile?

Soluzione

This should work (untested since I do not have a pdb file to test). I'm using Generators here:

# first create a generator that parses your structure, one residue at time

def createDesiredList(structure, desired_atoms):
    residues = structure.get_residues()

    for residue in residues:
        return_list = []
        for atom_id in desired_atoms:
            return_list.append((residue[atom_id].get_coord(), residue))
        yield return_list


# then I copy and paste your code .... 

pdb = "1dly.pdb"
name = pdb[:3]

from Bio import PDB
from ast import literal_eval

p = PDB.PDBParser()
s = p.get_structure(name, pdb)

# then I decide which atoms I desire from every residue...

wish_list = ['N', 'CA', 'C', 'CB']

# and finally I run my generator, putting the results in a list.

your_coords_list = [x for x in createDesiredList(s, wish_list)]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top