def test(): global lastSmiles # test NCI data file = open("data/NCI_aug00_SMI") import time t1 = time.time() index = 0 for line in file.xreadlines(): smiles, id = line.split() lastSmiles = smiles mol1 = smilin(smiles, transform1) mol2 = smilin(smiles, transform2) if mol1.cansmiles() != mol2.cansmiles(): "%s different smiles->%s %s"%(smiles, mol1.cansmiles(), mol2.cansmiles()) # check to see if the rings are the same if len(mol1.cycles) != len(mol2.cycles): print "%s number of rings are different"%smiles rings1 = {} keys = {} cycles1 = mol1.cycles for cycle in mol1.cycles: rings1[len(cycle)] = rings1.get(len(cycle), 0) +1 atoms, bonds = cycle.atoms, cycle.bonds atoms.sort() bonds.sort() keys[(tuple(atoms), tuple(bonds))] = 1 mol1 = RingDetection.sssr(mol1) rings2 = {} for cycle in mol1.cycles: rings2[len(cycle)] = rings1.get(len(cycle), 0) +1 atoms, bonds = cycle.atoms, cycle.bonds atoms.sort() bonds.sort() key = tuple(atoms), tuple(bonds) if not keys.has_key(key): print smiles, "->rings are different" break lengths1 = [len(cycle) for cycle in cycles1] lengths2 = [len(cycle) for cycle in mol1.cycles] lengths1.sort() lengths2.sort() if lengths1 != lengths2: print "%s forms rings of different sizes"%smiles print "\t",lengths1 print "\t",lengths2 index += 1 if max and index >= max: break t2 = time.time() print "tot time", t2-t1 print "compound time", (t2-t1)/index print "compounds/sec", index/(t2-t1)
from test_smiles import smilesStrings from frowns.Smiles import smilin import time #smilesStrings = ["Cc1[nH]ccc1"] #smilesStrings = ["c1ccc[nH]1"] ##smilesStrings = ["c1ccccc1", #smilesStrings = ["C=1=CC=CC=1"] #smilesStrings = ["c1ccccc1"] t1 = time.time() for smile in smilesStrings: print "="*44 print smile mol = smilin(smile) out = mol.arbsmiles() can = mol.cansmiles() for bond in mol.bonds: print bond.symbol, bond.bondorder, bond.bondtype, bond.fixed for atom in mol.atoms: print atom, atom.sumBondOrders() print smile, out, can t2 = time.time() print (t2-t1)/len(smilesStrings) print len(smilesStrings)/(t2-t1)