File: b-factor-per-residue.pl

package info (click to toggle)
macromoleculebuilder 4.0.0%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 122,552 kB
  • sloc: cpp: 23,631; python: 5,047; ansic: 2,101; awk: 145; perl: 144; makefile: 40; sh: 21
file content (47 lines) | stat: -rwxr-xr-x 1,756 bytes parent folder | download | duplicates (4)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/perl

# This program takes input pdb file and averages the b-factor for each residue, then outputs this value. 
# Usage:  ./renumber.pl [input file name]  > [output file name]

#open FILE, "input.pdb" or die $!;
open FILE, $ARGV[0]    or die $!;
$averageBFactor = 0.0;
$numAtomsThisResidue = 0;
$oldResNum     = "ZZZZ";
$currentResNum = "XXXX";
$renumberedResNum = $ARGV[1]-1;
while (<FILE>) {
    if (substr($_,0,4) == "ATOM") {
        $currentResNum = substr($_,22,5);
        #print "currentResNum =  >",$currentResNum,"<\n";
        #print "oldResNum =  >",$oldResNum,"<\n";
        if ($currentResNum ne $oldResNum) { 
            if ($numAtomsThisResidue>0) {
                #print "Sum of B-factors = $averageBFactor.  Number of atoms this residue = $numAtomsThisResidue.  Average B-factor this residue = ";
                print ($averageBFactor/$numAtomsThisResidue),"\n";
                print "\n";
                }
            $averageBFactor = 0.0;
            $numAtomsThisResidue = 0;
            $renumberedResNum++;
        }
        #print "current B-factor is : ",substr($_,60,6),"\n";
        $averageBFactor += substr($_,60,6);
        $numAtomsThisResidue ++;
        $paddedRenumberedResNum= sprintf("%04d", $renumberedResNum);
        #print "paddedRenumberedResNum =  >",$paddedRenumberedResNum,"<\n";

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


}
if ($numAtomsThisResidue>0) {
    #print "Sum of B-factors = $averageBFactor.  Number of atoms this residue = $numAtomsThisResidue.  Average B-factor this residue = ";
    print ($averageBFactor/$numAtomsThisResidue),"\n";
    print "\n";
    }