Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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()
Exemple #5
0
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)
Exemple #6
0
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()
Exemple #7
0
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)
Exemple #8
0
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()
Exemple #9
0
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")
Exemple #10
0
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()
Exemple #11
0
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
Exemple #12
0
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