[Chimera-users] Assigning pre-calculated attribute to B-factor column of pdb

Mark Girvin mark.girvin at einstein.yu.edu
Tue Aug 26 09:39:56 PDT 2014


Hi Oliver,

If you don't get any better suggestions/offers, and if having the same value for all atoms in a given residue is acceptable, below is an ancient, dirty perl script that might do the trick for you.

 - Mark

=========== Script: ==========
#!/usr/bin/perl
#
# Number2TempFactInPDB.pl
# USAGE: Number2TempFactInPDB.pl pdbfile temperaturefile > out_file.pdb
# 
# Takes a standard PDB file and a tab (or space)-delimeted text file of the form:
# Res#  Value (value range = 0 to 100.0)
# and for each residue, inserts the value into the temperature (B)-factor
# column of the PDB file, sending the result to standard output
#
# the information can then be used to color code a molecular image in most
# molec. graphics programs
#
# 12/31/02  mg


$PDBfile = $ARGV[0];
$TempFile = $ARGV[1];


open(TEMPFILE, $TempFile) or die "can't open Temperature file";
while(<TEMPFILE>) {
        @line = split;
        $Temper{$line[0]} = $line[1];
}
close(TEMPFILE);

open(PDBFILE, $PDBfile) or die "can't open PDB file";
while(<PDBFILE>) {
        $line = $_;
        @modified_line = readAtomLine($line);
        if (($modified_line[0] ne "ATOM  ")) {
                print $line;
                next
        }
        $resnum = $modified_line[8];
        $modified_line[14] = $Temper{$resnum};
        printAtomLine(@modified_line);
}
close(PDBFILE);


# Functions below:

#call as: @output_string = readAtomLine(input_line_as_string);
sub readAtomLine {
        $OuT[0] = substr $_[0], 0, 6;   #atom 1-6
        $OuT[1] = int(substr $_[0], 6, 5);      #atom serial number 7-11
        $OuT[2] = substr $_[0], 7, 1;   #???
        $OuT[3] = substr $_[0], 12, 4;  #atom name 13-16
        $OuT[4] = substr $_[0], 16, 1;  #alt loc indicator 17
        $OuT[5] = substr $_[0], 17, 3;  #res name 18-20
        $OuT[6] = substr $_[0], 20, 1;  #??? 21
        $OuT[7] = substr $_[0], 21, 1;  #chain ID 22
        $OuT[8] = int(substr $_[0], 22, 4);     #res seq number 23-26
        $OuT[9] = substr $_[0], 26, 4;  #icode for insert of residues 27 +
        $OuT[10] = substr $_[0], 30, 8; #X 8.3 31-38
        $OuT[11] = substr $_[0], 38, 8; #Y 8.3 39-46
        $OuT[12] = substr $_[0], 46, 8; #Z 8.3 47-54
        $OuT[13] = substr $_[0], 54, 6; # Occupancy 6.2 55-60
        $OuT[14] = substr $_[0], 60, 6; # B-factor 6.2 61-66
        $OuT[15] = substr $_[0], 66, 10;# Element right-justif (2) 77-78
        $OuT[16] = substr $_[0], 76, 2; # Element right-justif (2) 77-78
        $OuT[17] = substr $_[0], 78, 2; # Charge (right-just string(2) 79-80
        return @OuT;
}

sub printAtomLine {
        printf("%-6s%5d%1s%4s%1s%3s%1s%1s%4d%4s%8.3f%8.3f%8.3f%6.2f%6.2f%10s%2s%2s\n", @_);
}

========== end of script ========

________________________________________
From: chimera-users-bounces at cgl.ucsf.edu [chimera-users-bounces at cgl.ucsf.edu] on behalf of Oliver Clarke [olibclarke at gmail.com]
Sent: Tuesday, August 26, 2014 11:52 AM
To: chimera-users at cgl.ucsf.edu
Subject: [Chimera-users] Assigning pre-calculated attribute to B-factor column of pdb

Hi all,

Is there an easy way to assign a pre-calculated attribute (for example, ramachandran probability) to the b-factor (or occupancy) column of a pdb file using chimera?

I’d like to do this so I can color a pdb by ramachandran probability (or other custom attributes, e.g map-model correlation) and use it as a guide while rebuilding in Coot (which has options for coloring by b-factor or occupancy, but no other capacity for custom coloring of molecules).

Best,
Oliver.



_______________________________________________
Chimera-users mailing list
Chimera-users at cgl.ucsf.edu
http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users



More information about the Chimera-users mailing list