22 1 月 2013

如何用 Perl 抓出 MODEL 中的數據並輸出在畫面上

作者:Ben哥|發布日期:2009/03/27

MODEL 1
ATOM 26 OE2 GLU A 2 -2.046 3.921 2.794 1.00 0.00 O
ATOM 27 H GLU A 2 -5.157 -0.031 1.985 1.00 0.00 H
ATOM 28 HA GLU A 2 -6.235 2.200 0.396 1.00 0.00 H
ATOM 29 HB2 GLU A 2 -3.323 1.485 0.795 1.00 0.00 H
ATOM 30 HB3 GLU A 2 -3.911 2.688 -0.344 1.00 0.00 H
ATOM 31 HG2 GLU A 2 -4.834 3.988 1.515 1.00 0.00 H
ATOM 32 HG3 GLU A 2 -4.221 2.788 2.649 1.00 0.00 H
ATOM 33 N SER A 3 -4.467 -0.390 -0.746 1.00 0.00 N
ATOM 34 CA SER A 3 -4.330 -1.404 -1.823 1.00 0.00 C

用 Perl 抓出 ATOM 33 的前三個數據 -4.467 -0.390 -0.746,並輸出在畫面上

#!/usr/bin/perl

$atom = {};

while ( )
{
my @atom = split(/\s+/);
next if $atom[ 0 ] !~ /atom/i;
$atom->{ $atom[ 1 ] } = [ $atom[6], $atom[7], $atom[8] ];
}

foreach $num ( keys %$atom )
{
foreach ( 0 .. 2 )
{
print "$atom->{ $num }->[ $_ ] " if $num == $ARGV[0];
}
}

__DATA__

MODEL 1
ATOM 26 OE2 GLU A 2 -2.046 3.921 2.794 1.00 0.00 O
ATOM 27 H GLU A 2 -5.157 -0.031 1.985 1.00 0.00 H
ATOM 28 HA GLU A 2 -6.235 2.200 0.396 1.00 0.00 H
ATOM 29 HB2 GLU A 2 -3.323 1.485 0.795 1.00 0.00 H
ATOM 30 HB3 GLU A 2 -3.911 2.688 -0.344 1.00 0.00 H
ATOM 31 HG2 GLU A 2 -4.834 3.988 1.515 1.00 0.00 H
ATOM 32 HG3 GLU A 2 -4.221 2.788 2.649 1.00 0.00 H
ATOM 33 N SER A 3 -4.467 -0.390 -0.746 1.00 0.00 N
ATOM 34 CA SER A 3 -4.330 -1.404 -1.823 1.00 0.00 C

使用方式

#./atom.pl 33

程式後面要給所要取得的數字;如果要讀取檔案內容的話,請自行加入open的函數