2017-03-17 64 views
2

現在、すべての残基番号を取得するためにpymolの繰り返しを使用していますが、それらを使用して残基名を取得します。私はそれがそれを行う最善の方法だとは思わない。私はbiopythonで無駄な方法を探してみました。あなたのご意見とご提案をお待ちしております。Biopython PDBモジュールの残基番号と残基名の取得

時にはchain [i] .resnameでさえ、私にKeyError:( ''、 'number'、 '')を残して、tryとexceptブロックを使用させました。他の選択肢はありますか?

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

ちょっとした提案ですが、これは生物史上でも投稿したいと思うかもしれません。彼らはこのようなことに対してより積極的なコミュニティを持っています。 – nbryans

答えて

0

APIで(とコマンドdir(chain)経由チェーンに利用できるもので)見てから、私はこの方法get_residues()があることがわかります。含まれている残渣の1つを見ると、私には機能があることがわかります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を必要としないソリューションを提供します。

関連する問題