File: renumber.pl

package info (click to toggle)
macromoleculebuilder 4.0.0%2Bdfsg-3.1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 122,532 kB
  • sloc: cpp: 23,631; python: 5,047; ansic: 2,101; awk: 145; perl: 144; makefile: 40; sh: 21
file content (34 lines) | stat: -rwxr-xr-x 1,369 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/perl

# This program renumbers an input pdb file with sequential integers, starting at a user-specified integer.  Gaps in numbering disappear, and inserted regions are renumbered as integers.
# Usage:  ./renumber.pl [input file name] [new first residue number] > [output file name]
print "REMARK Usage: ./renumber.pl  [input file name] [new first residue number] > [output file name]\n";
#open FILE, "input.pdb" or die $!;
open FILE, $ARGV[0]    or die $!;
$oldResNum     = "ZZZZ";
$currentResNum = "XXXX";
$renumberedResNum = $ARGV[1]-1;
#print "REMARK renumberedResNum =$renumberedResNum \n";
while (<FILE>) {
    if ((substr($_,0,4) eq "ATOM") || (substr($_,0,6) eq "HETATM")) {
        #print substr($_,0,4),"\n";
        #print $_;     
        $currentResNum = substr($_,22,5);
        #print "currentResNum =  >",$currentResNum,"<\n";
        #print "oldResNum =  >",$oldResNum,"<\n";
        if ($currentResNum ne $oldResNum) { 
            $renumberedResNum++;
        }
        #print "renumberedResNum =  >",$renumberedResNum,"<\n";
        $paddedRenumberedResNum= sprintf("%04d", $renumberedResNum);
        #print "paddedRenumberedResNum =  >",$paddedRenumberedResNum,"<\n";

        substr($_,22,4) = $paddedRenumberedResNum;
        substr($_,26,1) = " ";                    
        print $_;
        $oldResNum = $currentResNum;
    }


}