2016-05-06 20 views
1

典型的なpdbファイルを使用して、構造内の2つの原子間の距離を、Biopythonのドキュメントにある方法と同様の方法で計算することができます。ここに示す:Biopython PDB:原子と点の距離を計算する

from Bio import PDB 
parser = PDB.PDBParser() 

pdb1 ='./4twu.pdb' 
structure = parser.get_structure("4twu", pdb1) 
model = structure[0] 
chain = model['A'] 
residue1 = chain[1] 
residue2 = chain[2] 
atom1 = residue1['CA'] 
atom2 = residue2['CA'] 

distance = atom1-atom2 

print(distance) 

がxyz座標で固定点に原子からの距離を計算するBiopython内の方法はありますか? Biopythonでない場合、この問題を解決する最も良い方法は何でしょうか?ありがとう。

答えて

0

あなたのatom1オブジェクトは座標をcoord属性(NumPy配列)に格納します。

>>> print(atom1.coord) 
[ 26.26600075 25.41300011 2.84200001] 

空間内の別のポイントまでの距離を計算する場合は、同様の形式で定義する必要があります。

import numpy 
x = 1 
y = 1 
y = 1 
v = numpy.array((x, y, z), dtype=float) 

となり、NumPyでdistanceを計算することができます。

distance = numpy.linalg.norm(atom1.coord - v) 
+0

完全に動作します。ありがとうAshafix。 – MunKee

+1

はい。これは基本的にあなたの質問の減算によってAtomオブジェクトがあなたのためにやっていることです。 '' __sub__''は原子クラスで座標ベクトルの差のノルムを取ると定義されています。 – peterjc