def searchReplacement (smile, PDB_query, PDB_ref, name_ligand, in_cycle = 0) : metal_find = searchMetal (smile) if metal_find != 0 : p_dir_dataset = pathManage.dataset(name_ligand + "/" + PDB_ref) l_PDB_query = pathManage.findPDBQueryDataset(p_dir_dataset) for p_query in l_PDB_query : if search (PDB_query, p_query): p_PDB_query = p_query break if "p_PDB_query" in locals() : l_atom_parsed = parsePDB.loadCoordSectionPDB(p_query) l_ions_PDB = parsePDB.retrieveListIon(l_atom_parsed) if metal_find in l_ions_PDB : l_atom_ion = parsePDB.retrieveLigand(l_atom_parsed, metal_find) filout = open (p_dir_dataset + str(metal_find) + "_" + p_query.split("/")[-1], "w") for atom_ion in l_atom_ion : writePDBfile.coordinateSection(filout, atom_ion, recorder = "HETATM", header = str(metal_find), connect_matrix = 0) filout.close () return "metal", metal_find if in_cycle == 0: if searchRing(smile) == 1 : return "cycle","" if searchP(smile) == 1 : return "P", "" elif searchB(smile) == 1 : return "B","" elif searchF (smile) == 1 : return "F", "" elif searchCl (smile) == 1 : return "Cl", "" elif searchBr (smile) == 1 : return "Br", "" elif searchBe (smile) == 1 : return "Be", "" elif searchNO2 (smile) == 1 : return "NO2", "" elif searchSulfonyl(smile) == 1: return "SO2","" elif searchS (smile) == 1 : return "S", "" elif searchCON (smile) == 1 : return "CON","" elif searchCarboxy (smile) == 1 : return "COO","" elif searchConly(smile) == 1 : return "onlyC", "" elif searchCandO (smile) == 1 : return "C+O", "" elif searchCandN (smile) == 1 : return "C+N", "" elif searchCandOandN (smile) == 1 : return "C+O+N", "" return "other" ,""
def datasetPreparation (ligand_ID, clean = 1): p_dir_dataset = pathManage.dataset(ligand_ID) l_folder = listdir(p_dir_dataset) indent = 0 for ref_folder in l_folder : # file include in dataset folder if len (ref_folder) != 4: continue l_pdbfile = listdir(p_dir_dataset + ref_folder + "/") indent = indent + 1 print ref_folder, indent # clean repertory -> only PDB ref and PDB l_pdbfile = listdir(p_dir_dataset + ref_folder + "/") if clean == 1 : for pdbfile in l_pdbfile : p_file_pdb = p_dir_dataset + ref_folder + "/" + pdbfile if not search (".pdb", pdbfile ) or search ("subref", pdbfile) or len (pdbfile.split("_")[0]) == 3: remove (p_file_pdb) l_pdbfile = listdir(p_dir_dataset + ref_folder + "/") for pdbfile in l_pdbfile : p_file_pdb = p_dir_dataset + ref_folder + "/" + pdbfile # extract ligand in PDB l_ligand = parsePDB.retrieveListLigand(p_file_pdb) # print l_ligand if l_ligand == []: continue else: l_atom_pdb_parsed = parsePDB.loadCoordSectionPDB(p_file_pdb) for name_ligand in l_ligand : l_lig_parsed = parsePDB.retrieveLigand(l_atom_pdb_parsed, name_ligand) if l_lig_parsed == [] : continue p_filout_ligand = p_dir_dataset + ref_folder + "/" + name_ligand + "_" + path.split(p_file_pdb)[1] writePDBfile.coordinateSection(p_filout_ligand , l_lig_parsed[0], "HETATM", header=0 , connect_matrix = 1) # ligand_ID write for shaep # print p_dir_dataset + ref_folder + "/" p_lig_ref = pathManage.findligandRef(p_dir_dataset + ref_folder + "/", ligand_ID) if p_lig_ref == 0: continue # print p_lig_ref lig_ref_parsed = parsePDB.loadCoordSectionPDB(p_lig_ref) d_l_atom_substruct = substructTools.retrieveSubstruct(lig_ref_parsed, ligand_ID) # case with AMP without phosphate if d_l_atom_substruct == {}: continue # write ligand_ID for subs in d_l_atom_substruct.keys (): p_filout_substruct = p_dir_dataset + ref_folder + "/subref_" + subs + "_" + ref_folder + ".pdb" writePDBfile.coordinateSection(p_filout_substruct , d_l_atom_substruct [subs], "HETATM", header=0 , connect_matrix = 1) return 1
def datasetPreparation(ligand_ID, clean=1): p_dir_dataset = pathManage.dataset(ligand_ID) l_folder = listdir(p_dir_dataset) indent = 0 for ref_folder in l_folder: # file include in dataset folder if len(ref_folder) != 4: continue l_pdbfile = listdir(p_dir_dataset + ref_folder + "/") indent = indent + 1 print ref_folder, indent # clean repertory -> only PDB ref and PDB l_pdbfile = listdir(p_dir_dataset + ref_folder + "/") if clean == 1: for pdbfile in l_pdbfile: p_file_pdb = p_dir_dataset + ref_folder + "/" + pdbfile if not search(".pdb", pdbfile) or search( "subref", pdbfile) or len(pdbfile.split("_")[0]) == 3: remove(p_file_pdb) l_pdbfile = listdir(p_dir_dataset + ref_folder + "/") for pdbfile in l_pdbfile: p_file_pdb = p_dir_dataset + ref_folder + "/" + pdbfile # extract ligand in PDB l_ligand = parsePDB.retrieveListLigand(p_file_pdb) # print l_ligand if l_ligand == []: continue else: l_atom_pdb_parsed = parsePDB.loadCoordSectionPDB(p_file_pdb) for name_ligand in l_ligand: l_lig_parsed = parsePDB.retrieveLigand( l_atom_pdb_parsed, name_ligand) if l_lig_parsed == []: continue p_filout_ligand = p_dir_dataset + ref_folder + "/" + name_ligand + "_" + path.split( p_file_pdb)[1] writePDBfile.coordinateSection(p_filout_ligand, l_lig_parsed[0], "HETATM", header=0, connect_matrix=1) # ligand_ID write for shaep # print p_dir_dataset + ref_folder + "/" p_lig_ref = pathManage.findligandRef(p_dir_dataset + ref_folder + "/", ligand_ID) if p_lig_ref == 0: continue # print p_lig_ref lig_ref_parsed = parsePDB.loadCoordSectionPDB(p_lig_ref) d_l_atom_substruct = substructTools.retrieveSubstruct( lig_ref_parsed, ligand_ID) # case with AMP without phosphate if d_l_atom_substruct == {}: continue # write ligand_ID for subs in d_l_atom_substruct.keys(): p_filout_substruct = p_dir_dataset + ref_folder + "/subref_" + subs + "_" + ref_folder + ".pdb" writePDBfile.coordinateSection(p_filout_substruct, d_l_atom_substruct[subs], "HETATM", header=0, connect_matrix=1) return 1