2014-01-08 33 views
0

我有一個pdb文件,我想分析pdb。我正在使用Biopython。我想列出每個殘基的N-CA-C-CB列表的座標。我如何實現這一目標?將字符串轉換爲Python中的列表易於使用

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() 

我想以這種格式輸出:

[[(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)]] 

我怎麼能這樣做?

回答

1

這應該工作(未經測試,因爲我沒有一個pdb文件來測試)。我在這裏使用Generators

# 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)] 
相關問題