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)]
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)
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']]
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)
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 []