Changeset 3717:4cfbe5309e9e in orange


Ignore:
Timestamp:
06/01/07 10:44:05 (7 years ago)
Author:
spetrovic <spetrovic@…>
Branch:
default
Convert:
b02f02fbd086a30f8401abcfc2a62d9b83b93b74
Message:

* empty log message *

Location:
orange/OrangeWidgets/Visualize
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Visualize/OWCorrAnalysis.py

    r3689 r3717  
    3939    settingsList = ['graph.pointWidth', "graph.showXaxisTitle", "graph.showYLaxisTitle", "showGridlines", "graph.showAxisScale", 
    4040                    "graph.showLegend", 'autoSendSelection', "graph.showFilledSymbols", 'toolbarSelection', 
    41                     "colorSettings", "percRadius"] 
     41                    "colorSettings", "percRadius", "recentFiles"] 
    4242                     
    4343    contextHandlers = {"": DomainContextHandler("", ["attrRow", "attrCol"])} 
     
    4545    def __init__(self, parent=None, signalManager=None): 
    4646        OWWidget.__init__(self, parent, signalManager, 'CorrAnalysis') 
     47        self.callbackDeposit = [] 
    4748 
    4849        self.inputs = [("Data", ExampleTable, self.dataset)] 
    4950        self.outputs = [] 
     51        self.recentFiles=[] 
    5052         
    5153        self.data = None 
     
    125127        OWGUI.button(self.GeneralTab, self, 'Save CA', self.saveCA) 
    126128        OWGUI.button(self.GeneralTab, self, 'Load CA', self.loadCA) 
     129        self.chosenSelection = [] 
     130        self.selections = [] 
     131        OWGUI.listBox(self.GeneralTab, self, "chosenSelection", "selections", box="Feature selection used", selectionMode = QListBox.Multi, callback = None) 
    127132        # #################################### 
    128133        # SETTINGS TAB 
     
    175180         
    176181    def loadCA(self): 
    177         import pickle 
     182        import cPickle 
    178183        try: 
    179             f = open('pickleca.p') 
    180             self.CA = pickle.load(f) 
     184            if self.recentFiles: 
     185                lastPath = os.path.split(self.recentFiles[0])[0] 
     186            else: 
     187                lastPath = "." 
     188                 
     189            fn = str(QFileDialog.getOpenFileName(lastPath, "Text files (*.*)", None, "Load CA data")) 
     190            if not fn: 
     191                return 
     192                 
     193            fn = os.path.abspath(fn) 
     194             
     195            f = open(fn,'rb') 
     196            self.CA = cPickle.load(f) 
    181197            f.close() 
    182             f = open('pickledata.p') 
    183             data = pickle.load(f) 
     198 
     199            fn = str(QFileDialog.getOpenFileName(lastPath, "Text files (*.*)", None, "Save CA data")) 
     200            if not fn: 
     201                return 
     202                 
     203            fn = os.path.abspath(fn) 
     204            if fn in self.recentFiles: # if already in list, remove it 
     205                self.recentFiles.remove(fn) 
     206            self.recentFiles.insert(0, fn) 
     207                         
     208            f = open(fn,'rb') 
     209            data = cPickle.load(f) 
    184210            f.close() 
    185211            self.CAloaded = True 
    186212            self.dataset(data) 
    187         except: 
     213        except e: 
     214            print e 
    188215            self.CA = None 
    189216         
     
    191218         
    192219    def saveCA(self): 
    193         f = open('pickleca.p', 'w') 
    194         import pickle 
    195         pickle.dump(self.CA, f) 
     220        from time import time 
     221 
     222        if self.recentFiles: 
     223            lastPath = os.path.split(self.recentFiles[0])[0] 
     224        else: 
     225            lastPath = "." 
     226             
     227        fn = str(QFileDialog.getSaveFileName(lastPath, "Text files (*.*)", None, "Save CA data")) 
     228        if not fn: 
     229            return 
     230             
     231        fn = os.path.abspath(fn) 
     232        f = open(fn, 'wb') 
     233        import cPickle 
     234        cPickle.dump(self.CA, f, 1) 
    196235        f.close() 
    197         f = open('pickledata.p','w') 
    198         pickle.dump(self.data, f) 
     236        fn = str(QFileDialog.getSaveFileName(lastPath, "Text files (*.*)", None, "Save text data")) 
     237        if not fn: 
     238            return 
     239             
     240        fn = os.path.abspath(fn)         
     241         
     242        f = open(fn,'wb') 
     243        cPickle.dump(self.data, f, 1) 
    199244        f.close() 
     245         
    200246 
    201247    def saveFeatures(self): 
     
    245291        self.closeContext() 
    246292        if dataset: 
    247             self.data = dataset        
     293            self.data = dataset 
    248294            if textCorpusModul: 
    249295              self.textData = checkFromText(self.data) 
    250296            else: 
    251297              self.textData = False 
    252             self.initAttrValues()             
     298            try: 
     299                self.selections = self.data.selection 
     300            except AttributeError: 
     301                self.selections = [] 
     302            self.initAttrValues() 
    253303        else: 
    254304            self.data = None 
    255             self.initAttrValues()  
     305            self.initAttrValues() 
    256306             
    257307        self.openContext("", dataset) 
     
    264314        if self.data == None: return  
    265315         
    266         if self.textData:             
     316        if self.textData: 
    267317            self.attrRowCombo.insertItem('document') 
    268318            self.attrRowCombo.insertItem('category') 
     
    530580    #owb.data = t 
    531581    #owb.show() 
    532     stop = orngText.loadWordSet(r'C:\tmtorange\common\fr_stopwords.txt') 
     582    stop = orngText.loadWordSet(r'C:\tmtorange\common\en_stopwords.txt') 
    533583    p = orngText.Preprocess(language = 'hr') 
    534584    print 'Done with loading' 
    535     #t1 = orngText.extractLetterNGram(t, 3) 
    536     t1 = orngText.extractWordNGram(t, stopwords = stop, measure = 'MI', threshold = 7, n=2) 
     585    t1 = orngText.extractLetterNGram(t, 2) 
     586    #t1 = orngText.extractWordNGram(t, stopwords = stop, measure = 'MI', threshold = 7, n=2) 
    537587    #t1 = orngText.extractWordNGram(t1, stopwords = stop, measure = 'MI', threshold = 10, n=3) 
    538588    #t1 = orngText.extractNamedEntities(t, stopwords = stop) 
     
    540590    print len(t1.domain.getmetas()) 
    541591    print 'Done with extracting' 
    542     t2 = orngText.FSS(t1, 'TF', 'MIN', 0.98) 
    543     print len(t2.domain.getmetas()) 
     592    #t2 = orngText.FSS(t1, 'TF', 'MIN', 0.98) 
     593    #print len(t2.domain.getmetas()) 
    544594    print 'Done with feature selection' 
    545595    appl.setMainWidget(ow) 
    546     t3 = orngText.DSS(t2, 'WF', 'MIN', 1) 
     596    #t3 = orngText.DSS(t2, 'WF', 'MIN', 1) 
    547597    #print 'Done with document selection' 
    548     ow.dataset(t3) 
     598    ow.dataset(t1) 
    549599    print 'Done' 
    550600    ow.show() 
  • orange/OrangeWidgets/Visualize/OWCorrAnalysisGraph.py

    r3689 r3717  
    9292      
    9393    def onMouseMoved(self, e): 
     94        xrange = self.axisScale(QwtPlot.xBottom).hBound() - self.axisScale(QwtPlot.xBottom).lBound() 
     95        yrange = self.axisScale(QwtPlot.yLeft).hBound() - self.axisScale(QwtPlot.yLeft).lBound() 
     96        aspectRatio = yrange / xrange 
    9497        if self.state == BROWSE_RECTANGLE: 
    9598            xFloat = self.invTransform(QwtPlot.xBottom, e.x()) 
     
    105108##            print self.tips.positions 
    106109             
    107             cor = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if abs(xFloat - x)  <= self.radius and abs(yFloat - y) <= self.radius] 
     110            cor = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if abs(xFloat - x)  <= self.radius and abs(yFloat - y) <= self.radius * aspectRatio / 2] 
    108111            self.addMarkers(cor, xFloat, yFloat, self.radius) 
    109112##            for x, y, text in cor: 
     
    121124                self.removeCurve(line) 
    122125            self.markLines = []             
    123             cor = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if ((xFloat - x)*(xFloat - x) + (yFloat - y)*(yFloat - y) <= self.radius * self.radius)] 
     126            cor = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if ((xFloat - x)*(xFloat - x) + (yFloat - y) / (aspectRatio / 2) /  (aspectRatio / 2) *(yFloat - y) <= self.radius * self.radius)] 
    124127            self.addMarkers(cor, xFloat, yFloat, self.radius) 
    125128##            for x, y, text in cor: 
     
    130133            OWGraph.onMouseMoved(self, e) 
    131134             
    132     def onMousePressed(self, e):         
     135    def onMousePressed(self, e): 
     136        xrange = self.axisScale(QwtPlot.xBottom).hBound() - self.axisScale(QwtPlot.xBottom).lBound() 
     137        yrange = self.axisScale(QwtPlot.yLeft).hBound() - self.axisScale(QwtPlot.yLeft).lBound() 
     138        aspectRatio = yrange / xrange 
    133139        if self.state == BROWSE_RECTANGLE: 
    134140            xFloat = self.invTransform(QwtPlot.xBottom, e.x()) 
    135141            yFloat = self.invTransform(QwtPlot.yLeft, e.y()) 
    136             all = [(self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if abs(xFloat - x)  <= self.radius and abs(yFloat - y) <= self.radius] 
     142            all = [(self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if abs(xFloat - x)  <= self.radius and abs(yFloat - y) <= self.radius * aspectRatio / 2] 
    137143            self.docs = [tip[:-1] for tip in all if tip and tip[-1] == 'R'] 
    138144            self.features = [tip[:-1] for tip in all if tip and tip[-1] == 'C'] 
     
    141147            xFloat = self.invTransform(QwtPlot.xBottom, e.x()) 
    142148            yFloat = self.invTransform(QwtPlot.yLeft, e.y()) 
    143             all = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if ((xFloat - x)*(xFloat - x) + (yFloat - y)*(yFloat - y) <= self.radius * self.radius)] 
     149            all = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if ((xFloat - x)*(xFloat - x) + (yFloat - y)*(yFloat - y) / (aspectRatio / 2) /  (aspectRatio / 2) <= self.radius * self.radius)] 
    144150            self.docs = [tip[:-1] for tip in all if tip and tip[-1] == 'R'] 
    145151            self.features = [tip[:-1] for tip in all if tip and tip[-1] == 'C'] 
     
    156162             
    157163    def createCurve(self, x, y, circle = 0): 
     164        xrange = self.axisScale(QwtPlot.xBottom).hBound() - self.axisScale(QwtPlot.xBottom).lBound() 
     165        yrange = self.axisScale(QwtPlot.yLeft).hBound() - self.axisScale(QwtPlot.yLeft).lBound() 
     166        aspectRatio = yrange / xrange 
    158167        if not circle: 
    159             self.browseCurve.setData([x - self.radius, x + self.radius, x + self.radius, x - self.radius, x - self.radius], [y - self.radius, y - self.radius, y + self.radius, y + self.radius, y - self.radius]) 
     168            self.browseCurve.setData([x - self.radius, x + self.radius, x + self.radius, x - self.radius, x - self.radius], [y - self.radius * (aspectRatio / 2), y - self.radius * (aspectRatio / 2), y + self.radius * (aspectRatio / 2), y + self.radius * (aspectRatio / 2), y - self.radius * (aspectRatio / 2)]) 
    160169        else: 
    161170            xDataU = arange(x - self.radius + 0.0002, x + self.radius - 0.0002, 0.0001).tolist() 
    162171            xDataD = xDataU[:] 
    163172            xDataD.reverse() 
    164             yDataU = [(y  + sqrt(self.radius*self.radius - (t - x)*(t - x))) for t in xDataU] 
    165             yDataD = [(y  - sqrt(self.radius*self.radius - (t - x)*(t - x))) for t in xDataD] 
     173            yDataU = [(y  + sqrt(self.radius*self.radius - (t - x)*(t - x)) * (aspectRatio / 2)) for t in xDataU] 
     174            yDataD = [(y  - sqrt(self.radius*self.radius - (t - x)*(t - x)) * (aspectRatio / 2)) for t in xDataD] 
    166175            xDataU.extend(xDataD) 
    167176            yDataU.extend(yDataD) 
     
    401410        """Tries to determine where to place the label. Returns True or False.""" 
    402411        div = self.axisScale(QwtPlot.xBottom) 
    403         textLen = textLen / 16. 
     412        aspectRatio = 6. / (div.hBound() - div.lBound()) 
     413        #on a scale where x in [-2, 4], we have to divide by 14 
     414        textLen = textLen / (14. * aspectRatio) 
    404415        if prefered == 'left': 
    405416            if x - textLen < div.lBound(): 
Note: See TracChangeset for help on using the changeset viewer.