stellaparallax
Technical User
Hi,
I am creating a program that calculates the distance between the x, y, z coordinates of atoms listed in a pdb file.
So far i have this:
#!/usr/bin/perl -w
$num = 0;
$count = 0;
while (<>) {
# Find x, y, z coordinates and store in separate arrays
if ($_ =~ /^ATOM/) {
@line = $_ =~ m/^(.....).(.....).(....).(...)..(....)....(........)(........)(........)/;
$x = $line[5];
$arrayx[$num] = $x;
$y = $line[6];
$arrayy[$num] = $y;
$z = $line[7];
$arrayz[$num] = $z;
++$num;
}
# Count number of atoms
if ($_ =~ /^ATOM/) {
++$count;
}
}
# Calculate distance between all atom coordinates
foreach $i (0..$count) {
foreach $j ($i + 1..$count) {
$dist = sqrt(
($arrayx[$i] - $arrayx[$j])**2 +
($arrayy[$i] - $arrayy[$j])**2 +
($arrayz[$i] - $arrayz[$j])**2
);
print "$dist\n"
}
}
When I run the program i get this message popping up for some of the lines and I don't know what to do to fix it:
"Use of uninitialized value in subtraction (-) at ./gas.pl line 42, <> line 14368"
The line that it states is the last line of the pdb file, however i don't see why this line is involved in my calculations as this is not present in any of my arrays.
The pdb file I'm using is located here :
Any help would be much appreciated as I am VERY new to Perl.
Thanks
I am creating a program that calculates the distance between the x, y, z coordinates of atoms listed in a pdb file.
So far i have this:
#!/usr/bin/perl -w
$num = 0;
$count = 0;
while (<>) {
# Find x, y, z coordinates and store in separate arrays
if ($_ =~ /^ATOM/) {
@line = $_ =~ m/^(.....).(.....).(....).(...)..(....)....(........)(........)(........)/;
$x = $line[5];
$arrayx[$num] = $x;
$y = $line[6];
$arrayy[$num] = $y;
$z = $line[7];
$arrayz[$num] = $z;
++$num;
}
# Count number of atoms
if ($_ =~ /^ATOM/) {
++$count;
}
}
# Calculate distance between all atom coordinates
foreach $i (0..$count) {
foreach $j ($i + 1..$count) {
$dist = sqrt(
($arrayx[$i] - $arrayx[$j])**2 +
($arrayy[$i] - $arrayy[$j])**2 +
($arrayz[$i] - $arrayz[$j])**2
);
print "$dist\n"
}
}
When I run the program i get this message popping up for some of the lines and I don't know what to do to fix it:
"Use of uninitialized value in subtraction (-) at ./gas.pl line 42, <> line 14368"
The line that it states is the last line of the pdb file, however i don't see why this line is involved in my calculations as this is not present in any of my arrays.
The pdb file I'm using is located here :
Any help would be much appreciated as I am VERY new to Perl.
Thanks