我正在尝试获取一组数据并用另一组数据减去该数据中的每个值。
例如:
Data set one (1, 2, 3)
Data set two (1, 2, 3, 4, 5)
(1 - (1 .. 5))
所以我应该得到类似的东西(2 - (1..5))
等等。
我目前有:
#!/usr/bin/perl
use strict;
use warnings;
my $inputfile = $ARGV[0];
open( INPUTFILE, "<", $inputfile ) or die $!;
my @array = <INPUTFILE>;
my $protein = 'PROT';
my $chain = 'P';
my $protein_coords;
for ( my $line = 0; $line <= $#array; ++$line ) {
if ( $array[$line] =~ m/\s+$protein\s+/ ) {
chomp $array[$line];
my @splitline = ( split /\s+/, $array[$line] );
my %coordinates = (
x => $splitline[5],
y => $splitline[6],
z => $splitline[7],
);
push @{ $protein_coords->[0] }, \%coordinates;
}
}
print "$protein_coords->[0]->[0]->{'z'} \n";
my $lipid1 = 'MEM1';
my $lipid2 = 'MEM2';
my $lipid_coords;
for ( my $line = 0; $line <= $#array; ++$line ) {
if ( $array[$line] =~ m/\s+$lipid1\s+/ || $array[$line] =~ m/\s+$lipid2\s+/ ) {
chomp $array[$line];
my @splitline = ( split /\s+/, $array[$line] );
my %coordinates = (
x => $splitline[5],
y => $splitline[6],
z => $splitline[7],
);
push @{ $lipid_coords->[1] }, \%coordinates;
}
}
print "$lipid_coords->[1]->[0]->{'z'} \n";
我试图将每个值$protein_coords->[0]->[$ticker]->{'z'}
减去$lipid_coords->[1]->[$ticker]->{'z'}
.
我的总体目标是(z2-z1)^2
在方程式中找到d = sqrt((x2-x1)^2+(y2-y1)^2-(z2-z1)^2)
。我认为如果我能做到这一点,那么我也可以为 X 和 Y 做到这一点。从技术上讲,我试图找到 PDB 文件中每个原子与同一 PDB 中每个脂质原子之间的距离,并打印距离小于 5A 的 ResID。