2013-05-12 95 views
1

我有一个PDB文件,如下所示。我想要计算残留物的数量。第4栏是残留物名称,第6栏是残留物位置。计算pdb文件中的残基数

file1.pdb

ATOM  1 N ASN A 2  18.359 26.869 52.955 1.00 39.17   N 
ATOM  2 CA ASN A 2  19.635 26.632 53.671 1.00 38.01   C 
ATOM  5 N LEU A 3  20.916 28.708 54.068 1.00 32.39   N 
ATOM  6 CA LEU A 3  21.304 29.943 54.753 1.00 28.83   C 
ATOM  7 C LEU A 3  20.084 30.834 54.955 1.00 25.23   C 
ATOM  13 N LYS A 4  19.824 31.394 56.099 1.00 23.92   N 
ATOM  14 CA LYS A 4  18.654 32.292 56.333 1.00 21.94   C 
ATOM  15 C LYS A 5  19.164 33.678 56.668 1.00 20.25   C 

file2.pdb

ATOM  1 N ASN A 2  18.359 26.869 52.955 1.00 39.17   N 
ATOM  2 CA ASN A 2  19.635 26.632 53.671 1.00 38.01   C 
ATOM  5 N LEU A 3  20.916 28.708 54.068 1.00 32.39   N 
ATOM  6 CA LEU A 3  21.304 29.943 54.753 1.00 28.83   C 
ATOM  7 C LEU A 3  20.084 30.834 54.955 1.00 25.23   C 
ATOM  13 N LYS A 4  19.824 31.394 56.099 1.00 23.92   N 
ATOM  14 CA LYS A 4  18.654 32.292 56.333 1.00 21.94   C 
ATOM  15 C LYS A 5  19.164 33.678 56.668 1.00 20.25   C 

所需的输出

Total no:of ASN - 2 
Total no:of LEU - 2 
Total no:of LYS - 4 

Total no:of residues - 8 

回答

2
$ awk '{ a[$4 $6 FILENAME]++ } 
    END { 
    for (i in a) { b[substr(i,1,3)]++ } 
    for (i in b) 
    { 
     total+=b[i] 
     printf "Total no:of %s - %d\n", i, b[i] 
    } 
    printf "\nTotal no:of residues - %d\n", total 
    }' file1.pdb file2.pdb 
Total no:of LEU - 2 
Total no:of ASN - 2 
Total no:of LYS - 4 

Total no:of residues - 8 
+0

非常感谢您的回答。代码运行良好,没有重复的文件。我还需要计算重复的文件。有没有任何选项来计算重复的文件? – user2374784 2013-05-13 01:01:12

+0

对不起,我不明白这个问题。你说的是处理相同的输入文件吗?你能编辑你的问题并举个例子吗? – 2013-05-13 10:18:24

+0

我编辑了我的问题。 – user2374784 2013-05-13 10:46:10