2013-05-11 272 views
1

我想計算PDB文件中原子之間的距離。我怎樣才能做這個PDB文件的計算?計算座標之間的距離

ATOM  1 N GLY A 23  -10.507 5.621 25.325 1.00 60.45   N 
ATOM  2 CA GLY A 23  -9.475 4.636 25.745 1.00 56.55   C 
ATOM  3 C GLY A 23  -8.714 4.045 24.571 1.00 58.66   C 
ATOM  4 O GLY A 23  -8.526 2.829 24.498 1.00 60.74   O 
ATOM  5 N GLN A 24  -8.275 4.899 23.651 1.00 52.00   N 
ATOM  6 CA GLN A 24  -7.532 4.446 22.482 1.00 45.40   C 
ATOM  7 C GLN A 24  -6.089 4.139 22.865 1.00 39.62   C 
ATOM  8 O GLN A 24  -5.617 4.536 23.928 1.00 35.50   O 
ATOM  14 N ARG A 25  -5.391 3.428 21.991 1.00 37.97   N 
ATOM  15 CA ARG A 25  -4.003 3.065 22.237 1.00 37.23   C 
ATOM  16 C ARG A 25  -3.133 4.276 22.555 1.00 36.13   C 
ATOM  17 O ARG A 25  -2.441 4.293 23.571 1.00 31.46   O 
  • 列2 - 原子數
  • 欄3 - 原子名稱
  • column4 - 殘餘名稱
  • column5 - 鏈ID
  • column6 - 殘基編號
  • column7 - X座標
  • column8 - Y座標
  • column9 - Z座標

distance = sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)

+2

你可以改變你的問題沒有生物信息學背景的人嗎?你試圖達到什麼並不是一目瞭然(「我需要根據這些列進行這些計算,因此輸出應該是X」而不是「我需要計算原子之間的距離,並且在單鏈的情況下[ ...]「)。我們不會奇蹟般地知道如何解釋您的輸入文件。 – 2013-05-11 10:54:24

+1

在本論壇中搜索「原子間距離」,然後選擇您喜歡的答案。 – 2013-05-11 14:41:51

+0

這個線程可能會幫上你:http://stackoverflow.com/questions/13645439/calculating-the-distance-between-atomic-coordinates – 2013-05-11 16:13:24

回答

3

你應該從解析PDB文件不要自己。 PDB文件有很多不規範之處,像awk這樣的工具並不適合。相反,您應該使用已經實現的解析器將結構解析爲有意義的對象。

我喜歡Biopython。您應該查看tutorial以瞭解更多關於如何與結構交互的信息,但這是獲得兩個原子之間距離的非常基本的方法。請注意,-運算符被覆蓋以返回原子距離(不需要處理座標或距離公式!)。

from Bio import PDB 

parser = PDB.PDBParser() 

# Parse the PDB file into a meaningful structure object 
pdb_path = "/path/to/files/1abc.pdb" 
pdb_id = "1abc" 
struct = parser.get_struct(pdb_id, pdb_path) 

# Get two atoms to compare by navigating the SMRCA structure 
chain_a = struct[0]["A"] 
res1 = chain_a[26] 
res2 = chain_a[23] 
atom1 = res1["C"] 
atom2 = res2["C"] 

print "Distance: %d" % (atom1 - atom2) 

這是稍有我不清楚你想對距離其中原子,但你可以看看在PDB.Residue對象的resname領域(如res1)如果您想根據殘留比較名稱。

你也可能想看看Bio.PDB.NeighborSearch尋找附近的原子(這是一個K-d樹的實現)。

+1

我很高興,這是很容易理解。我不會爲你編寫代碼,但我可以推薦在每個殘差爲4埃的殘留物上執行一個「NeighborSearch」,然後獲得距離。它應該相當簡單。如果你閱讀教程,你應該擁有完成你的任務的所有必要工具。 – 2013-05-12 05:48:46

+0

哇,NeighborSearch已經內置?俏皮。 http://biopython.org/DIST/docs/api/Bio.PDB.NeighborSearch'.NeighborSearch-class.html – flies 2013-05-16 21:21:28