Я получил этот скрипт ниже с этого сайта.
Расчет расстояния между атомами по атомам Координаты
use strict;
use warnings;
open(OUTPUT,">/home/guest/Desktop/test.txt") or die ("couldn't write the file");
my @line;
for (<>) {
push @line, $_;
next if (@line)<2;
print OUTPUT distance(@line), "\n";
}
sub distance {
my @a = split ' ',shift;
my @b = split ' ',;
my $x = ($a[6]-$b[6]);
my $y = ($a[7]-$b[7]);
my $z = ($a[8]-$b[8]);
my $dist = sprintf "%.1f",sqrt($x**2+$y**2+$z**2);
return "$a[1] to $b[1] |$a[11]-$b[11]| Distance-\t$dist";
}
Я использую этот сценарий, чтобы определить расстояние между атомами. Я могу достичь только с одним атомом.
INPUT
HETATM 1 N MSE A 1 16.272 16.789 53.256 1.00 31.95 N
HETATM 2 CA MSE A 1 15.408 15.939 52.384 1.00 30.64 C
HETATM 3 C MSE A 1 13.919 16.266 52.544 1.00 27.80 C
HETATM 4 O MSE A 1 13.393 16.321 53.659 1.00 26.16 O
OUTPUT
1 to 2 |N-C| Distance- 1.5
1 to 3 |N-C| Distance- 2.5
1 to 4 |N-O| Distance- 2.9
ВЫХОД
DESIRED1 до 2 | N-C | Расстояние - 1,5
От 1 до 3 | N-C | Расстояние - 2,5
От 1 до 4 | N-O | Расстояние - 2.9
От 2 до 1 | N-C | Расстояние - 1,5
От 2 до 3 | N-C | Расстояние - 2,5
От 2 до 4 | N-O | Расстояние - 2.9
3 до 1 | N-C | Расстояние - 1,5
3 до 2 | N-C | Расстояние - 2,5
От 3 до 4 | N-O | Расстояние - 2.9
4 до 1 | N-C | Расстояние - 1,5
От 4 до 2 | N-C | Дистанция - 2,5
От 4 до 3 | N-O | Distance- 2,9
Пожалуйста, помогите мне
Большое спасибо! – user3032425