2017-03-17 2 views
2

현재 모든 잔여 물 번호를 얻기 위해 pymol의 반복을 사용하고 있습니다. 그런 다음 나머지를 사용하여 잔여 물 이름을 검색합니다. 나는 그것이 그것이하는 최선의 방법이라고 생각하지 않는다. biopython에서 아무 소용이없는 방법을 찾으려고 노력했습니다. 귀하의 의견과 제안에 감사드립니다.Biopython PDB 모듈에서 잔기 번호와 잔기 이름 얻기

가끔씩 chain [i] .resname까지도 KeyError : ('', 'number', '')를 특정 잔차와 함께 사용하면 try 및 except 블록을 사용할 수 있습니다. 어떤 대안? API를보고에서

from Bio import * 
from Bio.PDB.PDBParser import PDBParser 
from Bio.PDB.Polypeptide import PPBuilder 
structure = PDBParser().get_structure('5bmy', '5bmy.pdb')  
model = structure[0] 
chain = model['A'] 

import __main__ 
__main__.pymol_argv = ['pymol','-qc'] 
import pymol 
from pymol import cmd, stored 
pymol.finish_launching() 
cmd.load('5bmy.pdb') # use the name of your pdb file 
stored.residues = [] 
cmd.iterate('name ca', 'stored.residues.append(resi)') 
numbers = [ int(x) for x in stored.residues ] 
for i in numbers: 
    print (chain[i].resname) 
+0

그냥 제안, 당신은 biostars에 게시 할 수도 있습니다, 그들은 이런 종류의 일을 위해보다 적극적인 커뮤니티가 있습니다. – nbryans

답변

0

(및 명령 dir(chain)을 통해 체인을 사용할 수 있습니다 무엇에), 나는 방법 get_residues()이 있음을 알 수있다. 포함 된 잔여 물 중 하나를보고, 나는 get_resname() 기능이 있음을 알 수 있습니다. 이러한 사용하면 문제에 대한 하나의 해결책이 될 수 있습니다

from Bio import * 
from Bio.PDB.PDBParser import PDBParser 
from Bio.PDB.Polypeptide import PPBuilder 
structure = PDBParser().get_structure('5bmy', '5bmy.pdb')  


model = structure[0] 
chain = model['A'] 

for i in chain.get_residues(): 
    print(i.get_resnames()) 

이것은 pymol를 필요로하지 않는 솔루션을 제공합니다.