Changeset 3565:20d4e50d8bc2 in orange


Ignore:
Timestamp:
04/20/07 10:06:27 (7 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
887ee734a90b7bdbb84e450f96a35eae214c2280
Message:

fixed threading problem (i.d. there is no more threading)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Classify/OWSVM.py

    r3482 r3565  
    77""" 
    88 
    9 import orange, orngSVM, OWGUI, thread 
     9import orange, orngSVM, OWGUI, thread, sys 
    1010from OWWidget import * 
    1111from threading import Thread 
     
    5050 
    5151        self.optionsBox=b=OWGUI.widgetBox(self.controlArea, "Options", addSpace = True) 
    52         OWGUI.doubleSpin(b,self, "C", 0.0, 100.0, 0.5, label="Model complexity (C)", labelWidth = 120, orientation="horizontal") 
     52        OWGUI.doubleSpin(b,self, "C", 0.0, 512.0, 0.5, label="Model complexity (C)", labelWidth = 120, orientation="horizontal") 
    5353        OWGUI.doubleSpin(b,self, "p", 0.0, 10.0, 0.1, label="Tolerance (p)", labelWidth = 120, orientation="horizontal") 
    5454        OWGUI.doubleSpin(b,self, "eps", 0.0, 0.5, 0.001, label="Numeric precision (eps)", labelWidth = 120, orientation="horizontal") 
     
    7272        self.loadSettings() 
    7373        self.changeKernel() 
    74         self.thread=MyThread(self) 
    75         self.lock=thread.allocate_lock() 
    76         self.terminateThread=False 
     74        self.searching=False 
    7775        self.applySettings() 
    7876 
     
    142140 
    143141    def parameterSearch(self): 
    144         if self.thread.isAlive(): 
    145             self.lock.acquire() 
    146             self.terminateThread=True 
    147             self.lock.release() 
    148             #self.thread.join() 
    149             self.kernelBox.setDisabled(0) 
    150             self.optionsBox.setDisabled(0) 
    151             self.paramButton.setText("Automatic parameter search") 
     142        if self.searching: 
     143            self.searching=False 
    152144        else: 
    153145            self.kernelBox.setDisabled(1) 
    154146            self.optionsBox.setDisabled(1) 
    155147            self.progressBarInit() 
    156             self.thread=MyThread(self) 
    157             self.thread.start() 
    158148            self.paramButton.setText("Stop") 
    159  
     149            self.searching=True 
     150            self.search_() 
     151             
    160152    def progres(self, f, best): 
     153        qApp.processEvents() 
    161154        self.best=best 
    162155        self.progressBarSet(int(f*100)) 
    163         if self.terminateThread: 
    164             self.lock.acquire() 
    165             self.terminateThread=False 
    166             self.lock.release() 
    167             import sys 
    168             sys.exit() 
    169             raise "thread exit" 
     156        if not self.searching: 
     157            raise UnhandledException() 
    170158 
    171159    def finishSearch(self): 
     
    177165        self.optionsBox.setDisabled(0) 
    178166        self.paramButton.setText("Automatic parameter search") 
     167        self.searching=False 
    179168 
    180  
    181 class MyThread(Thread): 
    182     def __init__(self, widget): 
    183         apply(Thread.__init__,(self,)) 
    184         self.widget=widget 
    185  
    186     def run(self): 
     169    def search_(self): 
    187170        params={} 
    188         if self.widget.useNu: 
     171        if self.useNu: 
    189172            params["nu"]=[0.25, 0.5, 0.75] 
    190173        else: 
    191174            params["C"]=map(lambda g:2**g, range(-5,10,2)) 
    192         if self.widget.kernel_type in [1,2]: 
    193             params["gamma"]=map(lambda g:2**g, range(-3,10,2)) 
    194         if self.widget.kernel_type==1: 
     175        if self.kernel_type in [1,2]: 
     176            params["gamma"]=map(lambda g:2**g, range(-3,10,2))+[0] 
     177        if self.kernel_type==1: 
    195178            params["degree"]=[1,2,3] 
    196179        best={} 
    197180        try: 
    198             best=orngSVM.parameter_selection(orngSVM.SVMLearner(),self.widget.data, 4, params, best, callback=self.widget.progres) 
    199         except SystemExit: 
     181            best=orngSVM.parameter_selection(orngSVM.SVMLearner(),self.data, 4, params, best, callback=self.progres) 
     182        except : 
    200183            pass 
    201         self.widget.finishSearch() 
     184        self.finishSearch() 
     185 
     186from exceptions import Exception         
     187class UnhandledException(Exception): 
     188    pass 
     189 
    202190import sys 
    203191if __name__=="__main__": 
     
    206194    app.setMainWidget(w) 
    207195    w.show() 
    208     d=orange.ExampleTable("../../doc/datasets/tic_tac_toe.tab") 
     196    d=orange.ExampleTable("../../doc/datasets/iris.tab") 
    209197    w.setData(d) 
    210198    app.exec_loop() 
Note: See TracChangeset for help on using the changeset viewer.