Esempio n. 1
0
def save_all_files(info, pdb1, ch1, pdb2, ch2, sol_num=5, dock_pool='.'):
    from use_dock import UseZDOCK
    dock = UseZDOCK(pool_path=dock_pool)
    area_file = dock_area(dock, info, pdb1, ch1, pdb2, ch2, sol_num, skip=False)[0][0]
    rcf_file = zdock_rcf(info, pdb1, ch1, pdb2, ch2, sol_num, dock_pool)[0][0]
    f1 = feature_rcf(info, area_file, rcf_file)
    f2 = feature_area(info, area_file, sol_num)
    f3 = feature_residue(info, area_file)
    if f1 == [] or f2 == [] or f3 == []:
        dock.clean_temp_path()
        return []
    dock.prepare_data(pdb1, ch1, pdb2, ch2)
    if not os.path.exists('zdock_pool'):
        os.mkdir('zdock_pool')
    if not os.path.exists('zdock_pdbs'):
        os.mkdir('zdock_pdbs')
    if not os.path.exists('zdock_pool/'+dock.solution.split('/')[-1]): ## check one
        sfiles = dock.generate_complex(sol_num)
        from shutil import copy
        copy(dock.solution, 'zdock_pool/'+dock.solution.split('/')[-1])
        copy(area_file, 'zdock_pool/'+area_file.split('/')[-1])
        copy(rcf_file, 'zdock_pool/'+rcf_file.split('/')[-1])
        for i in xrange(sol_num):
            copy(sfiles[i], 'zdock_pdbs/%s-%s-%s-%s-ZDOCK-%d.pdb'%(pdb1,ch1,pdb2,ch2,i+1))
#            break ## save only one for now
    dock.clean_temp_path()
    return [a1+a2[1:]+a3[1:] for a1,a2,a3 in zip(f1,f2,f3)]
Esempio n. 2
0
def main(para):
    known = []
    known += get_dock_list('set1_all.txt')
    known += get_dock_list('set2_all.txt')
    known += get_dock_list('set3_top3.txt')
    gs_set = []
    with open('../data/GSset_docking.txt', 'r') as infile:
        for line in infile:
            p1, p2 = line.strip().split()
            show(p1)
            show(p2)
            for P1, P2, PDB1, CH1, PDB2, CH2, Mark in known:
                if p1 == P1 and p2 == P2:
                    gs_set.append((P1, P2, PDB1, CH1, PDB2, CH2))
                    show([PDB1, CH1, PDB2, CH2])
                    break
                elif p1 == P2 and p2 == P1:
                    gs_set.append((P2, P1, PDB2, CH2, PDB1, CH1))
                    show([PDB2, CH2, PDB1, CH1])
                    break
            show()
    show('We have\t%s\tknown docking pairs.\n' % len(gs_set))
    if not os.path.exists('GSset'):
        os.mkdir('GSset')
    from use_dock import UseZDOCK
    for p1, p2, pdb1, ch1, pdb2, ch2 in gs_set:
        dock1 = UseZDOCK(temp_path='GSset/%s_%s' % (p1, p2),
                         pool_path='../data/dock_pool')
        dock1.prepare_data(pdb1, ch1, pdb2, ch2)
        dock1.dock_them(10)
        dock1.generate_complex(10)
Esempio n. 3
0
def zdock_rcf(info, pdb1, ch1, pdb2, ch2, sol_num=None, pool='.'):
    from use_dock import UseZDOCK
    dock = UseZDOCK(pool_path=pool)
    outfile = '/rcf_%s_%s%s%s%s.txt'%(dock.TOOL.lower(),pdb1,ch1,pdb2,ch2)
    outfile = dock.POOL_PATH + outfile.replace(' ', '-')
    if os.path.exists(outfile) and len([l for l in open(outfile,'r')]) > 1:
        return [[outfile, 'Precomputed']]
    pdb1, ch1, pdb2, ch2 = dock.prepare_data(pdb1, ch1, pdb2, ch2)
    rcf_path = os.path.abspath(dock.TOOL_PATH + '/../proteins_journal')
    old_path = os.path.abspath('.')
    try:
        os.chdir(dock.TOOL_PATH)
        os.system('./mark_sur %s %s_m.pdb'%(dock._receptor, dock._receptor[:-4]))
        os.system('./mark_sur %s %s_m.pdb'%(dock._ligand, dock._ligand[:-4]))
        os.chdir(dock.TEMP_PATH)
        chain1 = os.path.basename(dock._receptor[:-4]+'_m.pdb')
        chain2 = os.path.basename(dock._ligand[:-4]+'_m.pdb')
        os.system("cp %s zout"%dock.solution)
        os.system('%s/source/reformat zout %s/source/euler.15 3.0'%(rcf_path, rcf_path))
        os.system('%s/source/contact_frequency -i zout.hout -o CG'%rcf_path)
        os.system('perl %s/source/Cal_RCF.pl %s.CG'%(rcf_path, chain1))
        os.system('perl %s/source/Cal_RCF.pl %s.CG'%(rcf_path, chain2))
        os.system('cat %s.CG.RCF %s.CG.RCF > %s_old'%(chain1, chain2, outfile))
    except Exception as e:
        print 'Failed to run RCF due to', e
        return [[outfile, 'Failed']]
    finally:
        dock.clean_temp_path()
        os.chdir(old_path)
    ## reformat file
    file1 = open(outfile + '_old', 'r')
    file2 = open(outfile, 'w')
    for line in file1:
        if line[0] in '-0123456789':
            ele = line.split('\t')
            pos, res, cha, val = ele[:4]
            val = float(val)
            if cha in dock.chain1_id:
                file2.write('%s\t%s\n'%(pdb1+':'+ch1.strip()+':'+pos, val))
            elif cha in dock.chain2_id:
                file2.write('%s\t%s\n'%(pdb2+':'+ch2.strip()+':'+pos, val))
            else:
                pass ## skip
    file1.close()
    file2.close()
    return [[outfile, 'New']]
Esempio n. 4
0
def main(para):
    known = []
    known += get_dock_list("set1_all.txt")
    known += get_dock_list("set2_all.txt")
    known += get_dock_list("set3_top3.txt")
    gs_set = []
    with open("../data/GSset_docking.txt", "r") as infile:
        for line in infile:
            p1, p2 = line.strip().split()
            show(p1)
            show(p2)
            for P1, P2, PDB1, CH1, PDB2, CH2, Mark in known:
                if p1 == P1 and p2 == P2:
                    gs_set.append((P1, P2, PDB1, CH1, PDB2, CH2))
                    show([PDB1, CH1, PDB2, CH2])
                    break
                elif p1 == P2 and p2 == P1:
                    gs_set.append((P2, P1, PDB2, CH2, PDB1, CH1))
                    show([PDB2, CH2, PDB1, CH1])
                    break
            show()
    show("We have\t%s\tknown docking pairs.\n" % len(gs_set))
    if not os.path.exists("GSset"):
        os.mkdir("GSset")
    from use_dock import UseZDOCK

    for p1, p2, pdb1, ch1, pdb2, ch2 in gs_set:
        dock1 = UseZDOCK(temp_path="GSset/%s_%s" % (p1, p2), pool_path="../data/dock_pool")
        dock1.prepare_data(pdb1, ch1, pdb2, ch2)
        dock1.dock_them(10)
        dock1.generate_complex(10)
Esempio n. 5
0
def zdock_clean(info, pdb1, ch1, pdb2, ch2, sol_num=5, pool='.'):
    from use_dock import UseZDOCK
    dock = UseZDOCK(pool_path=pool)
    infilename, linenum = dock_area(dock, info, pdb1, ch1, pdb2, ch2, sol_num, skip=True)[0]
    if linenum < sol_num:
        os.remove(infilename)
        dock.prepare_data(pdb1, ch1, pdb2, ch2)
        if os.path.exists(dock.solution) and dock.solution_number() < sol_num:
            os.remove(dock.solution)
            print 'Delete', dock.solution
        dock.clean_temp_path()
        show('The clean function has deleted %s'%infilename)
        return [[infilename, 'Deleted', linenum]]
    else:
        return []