私は.pdbファイルを見て、タンパク質複合体の鎖AとBの異なる残基からのアルファ炭素原子の間の距離を計算し、次に距離を辞書に保存しますチェーン識別子および残基番号。pdbファイルの辞書のキー
たとえば、最初のアルファ炭素(「CA」)が鎖Aの残基100にあり、それが結合するものが鎖BIの残基123にある場合、辞書はd = {( 、100):[B、123、distance_between_atoms]}
from Bio.PDB.PDBParser import PDBParser
parser=PDBParser()
struct = parser.get_structure("1trk", "1trk.pdb")
def getAlphaCarbons(chain):
vec = []
for residue in chain:
for atom in residue:
if atom.get_name() == "CA":
vec = vec + [atom.get_vector()]
return vec
def dist(a,b):
return (a-b).norm()
chainA = struct[0]['A']
chainB = struct[0]['B']
vecA = getAlphaCarbons(chainA)
vecB = getAlphaCarbons(chainB)
t={}
model=struct[0]
for model in struct:
for chain in model:
for residue in chain:
for a in vecA:
for b in vecB:
if dist(a,b)<=8:
t={(chain,residue):[(a, b, dist(a, b))]}
break
print t
それは年齢のためのプログラムを実行されていますし、私は実行を中止しなければならなかった(私は??どこかで無限ループを行っている)
Iこれをやろうとしていた:
t = {i:[((a, b, dist(a,b)) for a in vecA) for b in vecB if dist(a, b) <= 8] for i in chainA}
print t
しかし、それは次の形式の残基に関する情報を印刷しています:
<Residue PHE het= resseq=591 icode= >: []
それは距離に関係する何かを印刷していません。
ありがとう、私はすべてが明確であることを願っています。
タグの説明を読み、使用することを決定してください。 * pdb *はあなたが考えるものとはまったく異なる意味を持ち、必要に応じて代わりにどのタグを使用するかを人々に正確に伝えます。ここのタグには特定の意味と用途がありますので、慎重に選択してください。ありがとう。 –
ありがとう、私は次回より注意を払うよ。 – Alexandra