def changeGly(fn, gapinch): """ Change Gly to be ACE or NHE """ inpdb = fn + "_protein_proc5.pdb" outpdb = fn + "_protein_proc6.pdb" nhe = [gapinch[2 * i] + 'A' for i in range(len(gapinch) / 2)] ace = [gapinch[2 * i + 1] + 'A' for i in range(len(gapinch) / 2)] f = open(outpdb, "w") for lines in fileinput.input(inpdb): if pdbinfo.isAtom(lines) == 1 and lines[22:27] in nhe: if pdbinfo.atmn(lines) == ' N ': lines = lines[:17] + 'NHE' + lines[20:] else: continue elif pdbinfo.isAtom(lines) == 1 and lines[22:27] in ace: if pdbinfo.atmn(lines) == ' C ' or pdbinfo.atmn(lines) == ' O ': lines = lines[:17] + 'ACE' + lines[20:] elif pdbinfo.atmn(lines) == ' CA ': lines = lines[:17] + 'ACE' + lines[20:] lines = lines[:12] + ' CH3' + lines[16:] else: continue f.write(lines) fileinput.close() f.close() Hg2toFlag(outpdb) outpdb2 = fn + "_protein_proc7.pdb" cmd = "pdb4amber -i " + outpdb + " -o " + outpdb2 + " --nohyd 2> pdb4amber3.log" os.system(cmd) FlagtoHg2(outpdb) FlagtoHg2(outpdb2) gapinch = checkGap2(fn) return gapinch
def checkGap2(fn): gap = [] inpdb = fn + "_protein_proc7.pdb" for lines in fileinput.input("pdb4amber3.log"): if lines[0:3] == "gap": line = lines.split() #id1 = line[-3].split("_")[1] #id2 = line[-1].split("_")[1] ### change when using in prepare pair-test ### id1 = line[6] id2 = line[-1] id1 = "%4d" % (int(id1)) id2 = "%4d" % (int(id2)) gap.append(id1) gap.append(id2) gapb = copy.copy(gap) gapinch = [] fileinput.close() if len(gap) > 0: gapchid = [i for i in range(len(gap))] for lines in fileinput.input(inpdb): if pdbinfo.isAtom(lines) == 1 and pdbinfo.resi(lines) in gap: tmpid = gap.index(pdbinfo.resi(lines)) gapchid[tmpid] = pdbinfo.chid(lines) gap[tmpid] = 0 fileinput.close() for i in range(len(gapb) / 2): if gapchid[2 * i] == gapchid[ 2 * i + 1] and int(gapb[2 * i + 1]) - int(gapb[2 * i]) > 1: gapinch.append(gapb[2 * i]) gapinch.append(gapb[2 * i + 1]) return gapinch
def PCA(fn, residue_PCA): """ get the name of files which have PCA """ inputfile = open(fn + "_protein.pdb") for line in inputfile: if pdbinfo.isAtom(line) == 1 and pdbinfo.resn( line).split()[0] == "PCA": residue_PCA.append(fn)
def addTER(fn, gapinch): inpdb = fn + "_protein_proc_se.pdb" outpdb = fn + "_protein_proc4.pdb" halfgap = [gapinch[2 * i + 1] for i in range(len(gapinch) / 2)] f = open(outpdb, "w") for lines in fileinput.input(inpdb): if pdbinfo.isAtom(lines) == 1 and pdbinfo.resi(lines) in halfgap: f.write("TER \n") halfgap.remove(pdbinfo.resi(lines)) f.write(lines) fileinput.close() f.close()
def Hg2toFlag(filename): """ change Hg2+ ion atom name to be FLAG """ f = open("tmp", "w") for lines in fileinput.input(filename): if pdbinfo.isAtom(lines) == 1 and \ pdbinfo.resn(lines).split()[0] == 'HG': lines = lines[0:12] + "FLAG" + lines[16::] f.write(lines) fileinput.close() f.close() os.system("mv tmp " + filename)
def assignPDB1(fn, res): chid = res.keys() inpdb = fn + "_protein_proc8_noCYX.pdb" outpdb = fn + "_protein_proc8_assign1.pdb" f = open(outpdb, "w") for lines in fileinput.input(inpdb): if pdbinfo.isAtom(lines) == 1: resid = pdbinfo.resi(lines).split()[0] if resid in chid: lines = lines[:17] + res[resid] + lines[20:] f.write(lines) fileinput.close() f.close()
def fixFe2(fn): """ Change residue FE2 atom name to be FE2 """ pdbin = fn + "_protein_proc2.pdb" pdbout = fn + "_protein_proc2_fixFe2.pdb" f = open(pdbout, "w") for lines in fileinput.input(pdbin): if pdbinfo.isAtom(lines) == 1 and pdbinfo.resn(lines) == 'FE2': lines = lines[0:12] + ' FE2' + lines[16:] f.write(lines) f.close() fileinput.close() os.system("mv " + pdbout + " " + pdbin)
def rmChain(fn): """ remove chains outside 12 A """ pktpdb = fn + "_protein_pocket_12.pdb" protpdb = fn + "_protein_proc1.pdb" outpdb = fn + "_protein_proc2.pdb" chidlist = [] for lines in fileinput.input(pktpdb): if pdbinfo.isAtom(lines) == 1: if pdbinfo.chid(lines) in chidlist: continue else: chidlist.append(pdbinfo.chid(lines)) fileinput.close() f = open(outpdb, "w") for lines in fileinput.input(protpdb): if pdbinfo.isAtom(lines) == 1 and pdbinfo.chid(lines) not in chidlist: continue else: f.write(lines) fileinput.close() f.close()
def rmPCA(fn): """ remove PCA from these files """ inputfile = open(fn + "_protein.pdb") outputfile = open(fn + "_protein_tmp.pdb", "w") for line in inputfile: if pdbinfo.isAtom(line) == 1 and pdbinfo.resn( line).split()[0] == "PCA": continue else: outputfile.write(line) outputfile.close() os.system("mv " + fn + "_protein_tmp.pdb " + fn + "_protein.pdb") os.system("rm " + fn + "_tmp.pdb")
def changeRes(fn, res1, res2): inpdb = fn + "_protein_proc8.pdb" outpdb = fn + "_protein_prep.pdb" chid1 = res1.keys() chid2 = res2.keys() f = open(outpdb, "w") for lines in fileinput.input(inpdb): if pdbinfo.isAtom(lines) == 1: resid = pdbinfo.resi(lines).split()[0] if resid in chid1: lines = lines[:17] + res1[resid] + lines[20:] elif resid in chid2: lines = lines[:17] + res2[resid] + lines[20:] f.write(lines) fileinput.close() f.close()
def getProton(fn): inpdb = fn + "_protein_proc8_assign1.pqr" proton = {} for lines in fileinput.input(inpdb): if pdbinfo.isAtom(lines) == 1: resn = pdbinfo.resn(lines) if resn == 'HIS': resi = pdbinfo.resi(lines).split()[0] atmn = pdbinfo.atmn(lines) if resi in proton.keys() and atmn in [' HD1', ' HE2']: proton[resi][1].append(atmn) elif resi not in proton.keys(): proton[resi] = [resn, []] if atmn in [' HD1', 'HE2']: proton[resi][1].append(atmn) res = checkProtonState(proton) return res
def checkGap(fn): """ Check the gap information from the pdb4amber22.log file """ gap = [] for lines in fileinput.input("pdb4amber22.log"): if lines[0:3] == "gap": line = lines.split() #id1 = line[-3].split("_")[1] #id2 = line[-1].split("_")[1] ### change when using in prepare pair-test ### id1 = line[6] id2 = line[-1] id1 = "%4d" % (int(id1)) id2 = "%4d" % (int(id2)) gap.append(id1) gap.append(id2) gapb = copy.copy(gap) gapinch = [] # for gap within one chain fileinput.close() inpdb = fn + "_protein_proc_se.pdb" if len(gap) > 0: gapchid = [i for i in range(len(gap))] for lines in fileinput.input(inpdb): if pdbinfo.isAtom(lines) == 1 and pdbinfo.resi(lines) in gap: tmpid = gap.index(pdbinfo.resi(lines)) gapchid[tmpid] = pdbinfo.chid(lines) gap[tmpid] = 0 fileinput.close() for i in range(len(gapb) / 2): if gapchid[2 * i] == gapchid[2 * i + 1] and int( gapb[2 * i + 1] ) - int( gapb[2 * i] ) == 1: # the residues form the gap are close residues in same chain gapinch.append(gapb[2 * i]) gapinch.append(gapb[2 * i + 1]) return gapinch