I am trying to write a program that will accept a pdb file, extract all the information (atom number, atom type, residue name, residue number, x, y, z, b factor), rearrange the residue number, and save the new pdb in a new archive. I can't find a way to use a loop with a string array
This is the code:
print "\nEnter the input file: ";
$inputFile = <STDIN>;
chomp $inputFile;
unless ( open( INPUTFILE, $inputFile ) ) {
print "Cannot read from '$inputFile'.\nProgram closing.\n";
<STDIN>;
exit;
}
chomp( @dataArray = <INPUTFILE> );
close(INPUTFILE);
for ( $line = 0 ; $line <= scalar @dataArray ; $line++ ) {
if ( $dataArray[$line] =~ m/ATOM\s+(\d+)\s+(\w+)\s+(\w{3})\s+(\w)+\s+(\d+)\s+(\S+\.\S+)\s+(\S+\.\S+)\s+(\S+\.\S+)\s+(.+\S)(.\d\d+\.\d\d.+)/ig ) {
$m1 = $1;
$m2 = $2;
$m3 = $3;
$m5 = $5;
$m6 = $6;
$m7 = $7;
$m8 = $8;
$m9 = $9;
$m10 = $10;
push( @m3, $m3 );
push( @m5, $m5 );
foreach $line ( @m3, @m5 ) {
if ( $m3[$line] eq $m3[ $line + 1 ] ) {
$m5[i] = $m5[ i + 1 ];
}
elsif ( $m3[$line] ne $m3[ $line + 1 ] ) {
$m5[ i + 1 ] = $m5[i] + 1;
}
}
$~ = "PDBFORMAT";
format PDBFORMAT =
ATOM @|||| @||| @|| @||| @|||||| @|||||| @|||||| @>>>>> @>>>>>
$m1, $m2, $m3,$m51, $m6, $m7, $m8, $m9, $m10
.
open( PDBFORMAT, ">>my2pdb.txt" ) or die "Can't open anything";
write PDBFORMAT;
}
}
close PDBFORMAT;
I need to make a script that will make the 6th column continuous according to the residue name (4th column)
This is an example of the input
ATOM 316 CB LEU A 608 -38.110 31.803 16.459 1.00 64.64
ATOM 317 CG LEU A 608 -39.261 32.481 15.719 1.00 71.07
ATOM 318 CD1 LEU A 608 -38.782 33.704 14.929 1.00 73.68
ATOM 319 CD2 LEU A 608 -39.981 31.498 14.829 1.00 69.63
ATOM 320 H LEU A 608 -36.638 31.041 18.563 1.00 99.99
ATOM 321 N ARG A 565 -38.634 34.587 18.911 1.00 22.27