#! /usr/bin/nawk -f # # # Converts O-readable PDB to protin - readable PDB # # BEGIN { } /^ATOM/ { # extract interesting columns entry=$0 # change N-terminal groups back to ACEtyl ARG front = substr(entry, 0, 12) ATOM = substr(entry, 13, 4) C = substr(entry, 17, 1) RES = substr(entry, 18, 3) chain = substr(entry, 21, 2) RESnum = substr(entry, 23, 4) C = substr(entry, 27, 1) XYZ = substr(entry, 28, 27) occ = substr(entry, 55, 6) B = substr(entry, 61, 6) back = substr(entry, 67) # modify acetylated residue if(RESnum == " 0") { if(ATOM == " CA ") { RES = "ARG"; ATOM = " CT2"; RESnum = " 1"} if(ATOM == " C ") { RES = "ARG"; ATOM = " CT1"; RESnum = " 1"} if(ATOM == " O ") { RES = "ARG"; ATOM = " OT "; RESnum = " 1"} } # carboxy terminus if((ATOM == " N ")&&(RES == "GLY")&&(occ+0 > 100)) { # turn bogus residue back into C-terminus ATOM = " OT " RESnum = sprintf("%4d", RESnum-1) RES = lastRES occ -= 100 occ = sprintf("%6.2f", occ ) chain = lastchain } # fix selenomethionine if((RES == "MET")&&(ATOM == " SD ")&&(occ > 100)) { ATOM = "SED " occ -= 100 } # multiple conformers if(occ+0 < 1) { if(C == " ") C = "A" } else { if(C != " ") skip = 1 } # do something else? if(!skip) print front ATOM C RES chain RESnum " " XYZ occ B back skip = 0 lastRESnum = RESnum lastRES = RES lastchain = chain } { if(! /^ATOM/) print; } END { }