#!/usr/local2/bin/python2.3 # Creates artificial first phosphate, where every substituent is marked by a unique metal (Mg is leaving group and is axial to the # O--group = former ihydroxide nucelophile) from openeye.oechem import * import os, string rxn = 11 ifs = oemolistream() ifs.open('b_react_ti_10_template_phosphate.sdf') phos = OEGraphMol() OEReadMolecule(ifs, phos) ofs_1 = oemolostream() ofs_1.open('b_react_ti_11_parts_connect_1_ln.sdf') ofs_2 = oemolostream() ofs_2.open('b_react_ti_11_parts_connect_1_lp.sdf') dictsf1 = open('b_react_ti_11_parts_split_2_dicts1.txt', 'r') dictsf2 = open('b_react_ti_11_parts_split_2_dicts2.txt', 'r') leavings = {} chiral_dict = {} for line in dictsf1.readlines(): leavings[string.split(line)[0]] = {} leavings[string.split(line)[0]][string.split(line)[1]] = [string.split(line)[2], string.split(line)[3]] for line in dictsf2.readlines(): chiral_dict[string.split(line)[0]] = {} chiral_dict[string.split(line)[0]][string.split(line)[1]] = int(string.split(line)[2]) libgen1 = OELibraryGen("[Mg:1][P:2]([OH1:3])([Li:4])([Zn:5])[O-:6].[Cu:11][*:12].[Cu:21][*:22].[Cu:31][*:32]>>[*:12][Mg:1][P:2]([OH1:3])([Li:4][*:22])([Zn:5][*:32])[O-:6]") libgen2 = OELibraryGen("[Mg:1][P:2]([OH1:3])([Li:4])([Zn:5])[O-:6].[Cu:11][*:12].[Cu:21][*:22].[Cu:31][*:32].[H:100]>>[H:100][*+:12][Mg:1][P:2]([OH1:3])([Li:4][*:22])([Zn:5][*:32])[O-:6]") lgs = OEGraphMol() lig1 = OEGraphMol() lig2 = OEGraphMol() hyd = OEGraphMol() title_list = [] rxn_n = 1 while rxn_n < rxn: try: old_title_file = open('b_react_ti_'+str(rxn_n)+'_ln.ism','r') for title in old_title_file.readlines(): title_list.append(string.split(title)[1]) old_title_file.close() except IOError: pass try: old_title_file = open('b_react_ti_'+str(rxn_n)+'_lp.ism','r') for title in old_title_file.readlines(): title_list.append(string.split(title)[1]) old_title_file.close() except IOError: pass rxn_n+=1 ti_count = 0 for title in leavings.keys(): for lg in leavings[title].keys(): OEParseSmiles(lgs, lg) OEParseSmiles(lig1, leavings[title][lg][0]) OEParseSmiles(lig2, leavings[title][lg][1]) libgen1.SetStartingMaterial(phos, 0) libgen1.SetStartingMaterial(lgs, 1) libgen1.SetStartingMaterial(lig1, 2) libgen1.SetStartingMaterial(lig2, 3) OEParseSmiles(hyd, '[H]') libgen2.SetStartingMaterial(phos, 0) libgen2.SetStartingMaterial(lgs, 1) libgen2.SetStartingMaterial(lig1, 2) libgen2.SetStartingMaterial(lig2, 3) libgen2.SetStartingMaterial(hyd, 4) lgs.Clear() lig1.Clear() lig2.Clear() hyd.Clear() for products in libgen1.GetProducts(): num = 1 label = title[:string.find(title, '_')]+'_'+str(num) while label in title_list: num+=1 label = title[:string.find(title, '_')]+'_'+str(num) title_list.append(label) products.SetTitle(label) OEWriteMolecule(ofs_1, products) for products in libgen2.GetProducts(): num = 1 label = title[:string.find(title, '_')]+'_'+str(num) while label in title_list: num+=1 label = title[:string.find(title, '_')]+'_'+str(num) title_list.append(label) products.SetTitle(label) OEWriteMolecule(ofs_2, products) # if P is chiral => create the enantiomer too for lg in leavings[title].keys(): if chiral_dict[title][lg] == 1: OEParseSmiles(lgs, lg) OEParseSmiles(lig1, leavings[title][lg][0]) OEParseSmiles(lig2, leavings[title][lg][1]) libgen1.SetStartingMaterial(phos, 0) libgen1.SetStartingMaterial(lgs, 1) libgen1.SetStartingMaterial(lig2, 2) libgen1.SetStartingMaterial(lig1, 3) OEParseSmiles(hyd, '[H]') libgen2.SetStartingMaterial(phos, 0) libgen2.SetStartingMaterial(lgs, 1) libgen2.SetStartingMaterial(lig1, 2) libgen2.SetStartingMaterial(lig2, 3) libgen2.SetStartingMaterial(hyd, 4) lgs.Clear() lig1.Clear() lig2.Clear() hyd.Clear() for products in libgen1.GetProducts(): num = 1 label = title[:string.find(title, '_')]+'_'+str(num) while label in title_list: num+=1 label = title[:string.find(title, '_')]+'_'+str(num) title_list.append(label) products.SetTitle(label) OEWriteMolecule(ofs_1, products) for products in libgen2.GetProducts(): num = 1 label = title[:string.find(title, '_')]+'_'+str(num) while label in title_list: num+=1 label = title[:string.find(title, '_')]+'_'+str(num) title_list.append(label) products.SetTitle(label) OEWriteMolecule(ofs_2, products) ofs_1.close() ofs_2.close() os.system('corina.nirvana -d errorfile=b_react_ti_11_parts_connect_1_ln_err.sdf,r2d,wh -t tracefile=b_react_ti_11_parts_connect_1_ln_corina_trace.trc -i t=sdf -o t=sdf b_react_ti_11_parts_connect_1_ln.sdf b_react_ti_11_parts_connect_1_ln_corina.sdf') os.system('corina.nirvana -d errorfile=b_react_ti_11_parts_connect_1_ln_err.sdf,r2d,wh -t tracefile=b_react_ti_11_parts_connect_1_ln_corina_trace.trc -i t=sdf -o t=sdf b_react_ti_11_parts_connect_1_lp.sdf b_react_ti_11_parts_connect_1_lp_corina.sdf') print '************** DONE WITH b_react_ti_11_parts_connect_1.py invoking invoking b_react_ti_11_parts_connect_2.py *******************' #os.system('b_react_ti_11_parts_connect_2.py')