2013-03-18 64 views
0

我想計算pdb文件中每個殘基的原子數。一個PDB文件如下所示。第三列表示原子,第四列表示殘基。計算PDB文件中的原子數

ATOM  1 N ASN A 380  -0.011 22.902 -13.714 1.00 65.81   N 
ATOM  2 CA ASN A 380  0.401 23.938 -12.714 1.00 65.53   C 
ATOM  3 C ASN A 380  1.926 24.019 -12.595 1.00 64.48   C 
ATOM  9 N THR A 381  2.553 24.693 -13.562 1.00 61.65   N 
ATOM  10 CA THR A 381  4.006 24.848 -13.609 1.00 58.60   C 
ATOM  16 N ILE A 382  5.156 22.716 -13.481 1.00 53.48   N 
ATOM  17 CA ILE A 382  5.808 21.571 -12.830 1.00 49.47   C 
ATOM  18 C ILE A 382  6.645 21.933 -11.584 1.00 45.24   C 
ATOM  28 CB GLN A 383  8.735 24.763 -10.759 1.00 30.19   C 
ATOM  29 CG GLN A 383  10.140 24.257 -11.037 1.00 29.17   C 
ATOM  30 CD ASN A 384  10.397 23.975 -12.514 1.00 29.51   C 
ATOM  31 OE1 ASN A 384  10.892 24.838 -13.237 1.00 30.67   O 

我想獲得如下輸出

Total no:of ASN atoms - 5 
Total no:of THR atoms - 2 
Total no:of ILE atoms - 3 
Total no:of GLN atoms - 2 
+0

PDB格式是面向列的,而不是面向字段的。殘留字段是18-20列。請參閱http://www.wwpdb.org/documentation/format33/sect9.html#ATOM中的規範。您需要使用substr($ 0,18,3),而不是4美元的殘餘名稱。否則,你會得到一些結構的錯誤答案。 – 2014-01-18 11:57:35

回答

0

這應該做的工作:

awk '{print $4}' <file> | sort | uniq -c | \ 
    awk '{print "Total no:of", $2, "atoms -", $1}' 

或純awk

awk '{atom[$4]++;} 
    END{for (i in atom) {print "Total no:of", i, "atoms -", atom[i]} }' <file> 

輸出兩個方法:

Total no:of GLN atoms - 2 
Total no:of THR atoms - 2 
Total no:of ASN atoms - 5 
Total no:of ILE atoms - 3 
+0

非常感謝。 – user2160995 2013-03-18 04:53:55