Пример #1
0
def test():
    import Smiles, time
    h = BuildMol()
    file = open("../test/data/NCI_aug00_SMI")
    lines = file.readlines()
    tests = []
    for l in lines:
        tests.append(l.split()[0])
    tests = tests[:1]
    ##    for smi in ["C1C([NH4+])(=O).C1.[235U].N[C@@H](C)C(=O)O",
    ##                "c1cccc1"]:
    t1 = time.time()
    for smi in tests:
        Smiles.tokenize(smi, h)
        #print smi
        for bond in h.mol.bonds:
            print bond.symbol, bond.bondorder, bond.bondtype, bond.fixed
        print h.mol.cansmiles()  #.dump()
    t2 = time.time()

    delta = (t2 - t1) / len(tests)
    print "Time per molecule with no transform", delta
    print "molecules per second:",

    if delta:
        print 1 / delta
    else:
        print "very fast!"
Пример #2
0
def cleanup(s):
    save_h = SilentSaveTokens()
    Smiles.tokenize(s, save_h)
    save = []
    for name, pos, text in save_h:
        save.append( (name, text) )

    closures = {}

    in_quote = 0
    i = 0
    for name, text in save:
        if name == "open_bracket":
            in_quote = 1
            has_element = 0
            pos = i
        elif name == "close_bracket":
            in_quote = 0
        elif name == "element" and in_quote:
            has_element = 1
        i = i + 1
    if in_quote:
        if has_element:
            save.append( ("close_bracket", "]") )
        else:
            del save[pos:]
    
    i = 0
    for name, text in save:
        if name == "closure":
            val = cleanup_closure(text)
            if closures.has_key(val):
                del closures[val]
            else:
                closures[val] = i
        i = i + 1

    for val, i in closures.items():
        save[i] = ("fake", "[%d*]" % val)

    # trim trailing '(', '.' and bond symbols
    while save and (save[-1][0] == "close_branch" or
                    save[-1][0] == "dot" or
                    save[-1][0] == "bond"):
        save.pop()


    paren_count = 0
    for name, text in save:
        if name == "open_branch":
            paren_count = paren_count + 1
        elif name == "close_branch":
            paren_count = paren_count - 1
        assert paren_count >= 0, paren_count
    save.extend( [("close_branch", ")")] * paren_count )

    smi = ""
    for name, text in save:
        smi = smi + text
    return smi
Пример #3
0
def test():
    import Smiles, time
    h = BuildMol()
    file = open("../test/data/NCI_aug00_SMI")
    lines = file.readlines()
    tests = []
    for l in lines:
        tests.append(l.split()[0])
    tests = tests[:1]
##    for smi in ["C1C([NH4+])(=O).C1.[235U].N[C@@H](C)C(=O)O",
##                "c1cccc1"]:
    t1 = time.time()
    for smi in tests:
        Smiles.tokenize(smi, h)        
        #print smi
        for bond in h.mol.bonds:
            print bond.symbol, bond.bondorder, bond.bondtype, bond.fixed
        print h.mol.cansmiles()#.dump()
    t2 = time.time()

    delta = (t2-t1) / len(tests)
    print "Time per molecule with no transform", delta
    print "molecules per second:",
            
    if delta:
        print 1/delta
    else:
        print "very fast!"
Пример #4
0
def cleanup(s):
    save_h = SilentSaveTokens()
    Smiles.tokenize(s, save_h)
    save = []
    for name, pos, text in save_h:
        save.append((name, text))

    closures = {}

    in_quote = 0
    i = 0
    for name, text in save:
        if name == "open_bracket":
            in_quote = 1
            has_element = 0
            pos = i
        elif name == "close_bracket":
            in_quote = 0
        elif name == "element" and in_quote:
            has_element = 1
        i = i + 1
    if in_quote:
        if has_element:
            save.append(("close_bracket", "]"))
        else:
            del save[pos:]

    i = 0
    for name, text in save:
        if name == "closure":
            val = cleanup_closure(text)
            if closures.has_key(val):
                del closures[val]
            else:
                closures[val] = i
        i = i + 1

    for val, i in closures.items():
        save[i] = ("fake", "[%d*]" % val)

    # trim trailing '(', '.' and bond symbols
    while save and (save[-1][0] == "close_branch" or save[-1][0] == "dot"
                    or save[-1][0] == "bond"):
        save.pop()

    paren_count = 0
    for name, text in save:
        if name == "open_branch":
            paren_count = paren_count + 1
        elif name == "close_branch":
            paren_count = paren_count - 1
        assert paren_count >= 0, paren_count
    save.extend([("close_branch", ")")] * paren_count)

    smi = ""
    for name, text in save:
        smi = smi + text
    return smi
Пример #5
0
def test():
    h = Handler.TokenHandler()
    t1 = time.clock()
    #h = Handler.WriteHandler()  # uncomment to print
    for line in lines:
        #print "####", line
        Smiles.tokenize(line, h)
    t2 = time.clock()

    print len(lines), "patt. in", t2 - t1, "s =>",
    print (t2-t1)/len(lines), "s/patt. ==",
    print len(lines)/(t2-t1), "patt./s"
Пример #6
0
def test():
    h = Handler.TokenHandler()
    t1 = time.clock()
    #h = Handler.WriteHandler()  # uncomment to print
    for line in lines:
        #print "####", line
        Smiles.tokenize(line, h)
    t2 = time.clock()

    print len(lines), "patt. in", t2 - t1, "s =>",
    print(t2 - t1) / len(lines), "s/patt. ==",
    print len(lines) / (t2 - t1), "patt./s"
Пример #7
0
def test():
    lines = test_Smiles.lines
    h = BuildMol.BuildMol()
    t1 = time.clock()
    for line in lines:
        #print line
        Smiles.tokenize(line, h)
        #s = h.mol.dump()
        #print s
    t2 = time.clock()

    print len(lines), "patt. in", t2 - t1, "s =>",
    print(t2 - t1) / len(lines), "s/patt. ==",
    print len(lines) / (t2 - t1), "patt./s"
Пример #8
0
def test():
    lines = test_Smiles.lines
    h = BuildMol.BuildMol()
    t1 = time.clock()
    for line in lines:
        #print line
        Smiles.tokenize(line, h)
        #s = h.mol.dump()
        #print s
    t2 = time.clock()

    print len(lines), "patt. in", t2 - t1, "s =>",
    print (t2-t1)/len(lines), "s/patt. ==",
    print len(lines)/(t2-t1), "patt./s"
Пример #9
0
    def Btn_Input_Clicked(self):

        self.SmilesRunning(True, False)

        self.top.ChildWindow = Smiles.Smiles(self, self.SmilesString,
                                             self.SmilesName)