Changeset 3689:d0a8457848b7 in orange


Ignore:
Timestamp:
05/25/07 10:53:34 (7 years ago)
Author:
spetrovic <spetrovic@…>
Branch:
default
Convert:
2bc7b56752e645b76692454da004e133ccf98f2e
Message:

* empty log message *

Location:
orange/OrangeWidgets/Visualize
Files:
2 edited

Legend:

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

    r3603 r3689  
    5151        self.data = None 
    5252        self.CA = None 
     53        self.CAloaded = False 
    5354        self.colors = ColorPaletteHSV(2) 
    5455         
     
    120121        self.apply = False 
    121122        OWGUI.button(self.GeneralTab, self, 'Update Graph', self.buttonUpdate) 
    122              
     123         
     124        OWGUI.button(self.GeneralTab, self, 'Save graph', self.graph.saveToFile) 
     125        OWGUI.button(self.GeneralTab, self, 'Save CA', self.saveCA) 
     126        OWGUI.button(self.GeneralTab, self, 'Load CA', self.loadCA) 
    123127        # #################################### 
    124128        # SETTINGS TAB 
     
    157161        self.chosenFeature = [] 
    158162        self.features = self.graph.features 
    159         OWGUI.listBox(self.resultsTab, self, "chosenFeature", "features", box="Features", callback = None) 
    160          
    161  
     163        OWGUI.listBox(self.resultsTab, self, "chosenFeature", "features", box="Features", selectionMode = QListBox.Multi, callback = None) 
     164        OWGUI.button(self.resultsTab, self, "Save selected features", callback = self.saveFeatures) 
     165        OWGUI.button(self.resultsTab, self, "Reconstruct words from letter ngrams", callback = self.reconstruct) 
     166        self.chosenWord = [] 
     167        self.words = [] 
     168        OWGUI.listBox(self.resultsTab, self, "chosenWord", "words", box="Suggested words", callback = None) 
     169                 
    162170         
    163171 
    164172        self.activateLoadedSettings() 
    165         self.resize(700, 800)         
     173        self.resize(700, 800) 
     174         
     175         
     176    def loadCA(self): 
     177        import pickle 
     178        try: 
     179            f = open('pickleca.p') 
     180            self.CA = pickle.load(f) 
     181            f.close() 
     182            f = open('pickledata.p') 
     183            data = pickle.load(f) 
     184            f.close() 
     185            self.CAloaded = True 
     186            self.dataset(data) 
     187        except: 
     188            self.CA = None 
     189         
     190         
     191         
     192    def saveCA(self): 
     193        f = open('pickleca.p', 'w') 
     194        import pickle 
     195        pickle.dump(self.CA, f) 
     196        f.close() 
     197        f = open('pickledata.p','w') 
     198        pickle.dump(self.data, f) 
     199        f.close() 
     200 
     201    def saveFeatures(self): 
     202        """Saves the features in a file called features.txt""" 
     203        f = open("features.txt", 'a') 
     204        f.write('=========================\n') 
     205        for fn in self.chosenFeature: 
     206            f.write(self.features[fn]+'\n') 
     207        f.close() 
     208         
     209 
     210    def reconstruct(self): 
     211        if self.textData: 
     212            import tmt 
     213            tokens = set([]) 
     214            for ex in self.data: 
     215                tmp = tmt.tokenizeNonWords(ex['text'].value.decode('utf-8','ignore').encode('cp1250','ignore')) 
     216                for t in tmp: 
     217                    tokens.add(' ' + t + ' ') 
     218            del tmp 
     219            wordList = dict.fromkeys(tokens, 0) 
     220            ngrams = set(self.features) 
     221            n = len(self.features[0]) 
     222            for token in tokens: 
     223                i = 0 
     224                while i < len(token) - n: 
     225                    if token[i:i+n] in ngrams: 
     226                        wordList[token] += 1.0 
     227                    i += 1 
     228            tmp = [(k, v) for k, v in wordList.items() if v] 
     229            tmp.sort(lambda x,y: -cmp(x[1], y[1])) 
     230            self.words = [i[0] + '  ' + str(i[1]) for i in tmp] 
    166231         
    167232    def activateLoadedSettings(self): 
     
    233298                        cur[i] = 0 
    234299                caList.append(cur) 
    235             self.CA = orngCA.CA(caList) 
     300            if not self.CAloaded: 
     301                self.CA = orngCA.CA(caList) 
    236302            try: 
    237303                self.tipsR = [ex['name'].native() for ex in data] 
     304                self.rowCategories = [(ex['name'].native(), ex['category'].native()) for ex in data] 
     305                self.catColors = {} 
     306                col = 0 
     307                colors = [0, 2, 3, 5, 6, 12] 
     308                for ex in data: 
     309                    if ex['category'].native() not in self.catColors.keys(): 
     310                        self.catColors[ex['category'].native()] = colors[col] 
     311                        col += 1 
    238312            except: 
    239313                self.tipsR = [ex.name for ex in data] 
     
    242316            ca = orange.ContingencyAttrAttr(self.attrRow, self.attrCol, self.data) 
    243317            caList = [[col for col in row] for row in ca] 
    244             self.CA = orngCA.CA(caList) 
     318            if not self.CAloaded: 
     319                self.CA = orngCA.CA(caList) 
    245320            self.tipsR = [s for s, v in ca.outerDistribution.items()] 
    246321            self.tipsC = [s for s, v in ca.innerDistribution.items()] 
     
    287362    def buttonUpdate(self): 
    288363        self.apply = True 
     364        self.graph.state = ZOOMING 
     365        self.zoomSelectToolbar.buttonBrowse.setOn(0) 
     366        self.zoomSelectToolbar.buttonBrowseCircle.setOn(0) 
     367        self.zoomSelectToolbar.buttonZoom.setOn(1) 
    289368        self.updateGraph() 
    290369        self.apply = False 
     
    313392        cor = [cor[i] for i in indices] 
    314393        tipsR = [self.tipsR[i] + 'R' for i in indices] 
    315         if not self.graph.showRowLabels: tipsR = ['' for i in indices] 
    316         self.plotPoint(cor, 0, tipsR, "Row points", self.graph.showFilledSymbols) 
     394        #if not self.graph.showRowLabels: tipsR = ['' for i in indices] 
     395        labelDict = dict(zip(tipsR, cor)) 
     396        rowCategories = [self.rowCategories[i] for i in indices] 
     397        for cat, col in self.catColors.items(): 
     398            newtips = [c[0] + 'R' for c in rowCategories if c[1] == cat] 
     399            newcor = [labelDict[f] for f in newtips] 
     400            if not self.graph.showRowLabels: newtips = ['' for i in indices] 
     401            self.plotPoint(newcor, col, newtips, cat or "Row points", self.graph.showFilledSymbols) 
    317402             
    318403        cor = self.CA.getPrincipalColProfilesCoordinates((int(self.attrX)-1, int(self.attrY)-1)) 
     
    442527     
    443528    #owb = OWBagofWords.OWBagofWords() 
    444     t = orngText.loadFromXML(r'c:\test\rtl.xml') 
     529    t = orngText.loadFromXML(r'c:\test\orange\msnbc.xml') 
    445530    #owb.data = t 
    446531    #owb.show() 
    447     stop = orngText.loadWordSet(r'C:\tmtorange\common\en_stopwords.txt') 
     532    stop = orngText.loadWordSet(r'C:\tmtorange\common\fr_stopwords.txt') 
     533    p = orngText.Preprocess(language = 'hr') 
    448534    print 'Done with loading' 
    449535    #t1 = orngText.extractLetterNGram(t, 3) 
    450     t1 = orngText.extractWordNGram(t, stopwords = stop) 
     536    t1 = orngText.extractWordNGram(t, stopwords = stop, measure = 'MI', threshold = 7, n=2) 
     537    #t1 = orngText.extractWordNGram(t1, stopwords = stop, measure = 'MI', threshold = 10, n=3) 
     538    #t1 = orngText.extractNamedEntities(t, stopwords = stop) 
     539    #t1 = orngText.bagOfWords(t1, stopwords = stop) 
    451540    print len(t1.domain.getmetas()) 
    452541    print 'Done with extracting' 
    453     t2 = orngText.FSS(t1, 'TF', 'MIN', 0.95) 
     542    t2 = orngText.FSS(t1, 'TF', 'MIN', 0.98) 
     543    print len(t2.domain.getmetas()) 
    454544    print 'Done with feature selection' 
    455545    appl.setMainWidget(ow) 
  • orange/OrangeWidgets/Visualize/OWCorrAnalysisGraph.py

    r3603 r3689  
    196196 
    197197        cor.sort(self._sort) 
     198        labSize = self.labelSize * 1.4 
    198199         
    199200        top = y + r 
     
    224225#            i = i + 1                 
    225226        points = [(i, (x, y, text)) for (i, (x, y, text)) in points if text] 
    226         points = [(i, (x, y, t[:-1])) for (i, (x, y, t)) in points[:self.maxPoints]] 
     227        #points = [(i, (x, y, t[:-1])) for (i, (x, y, t)) in points[:self.maxPoints]] 
     228        points = points[:self.maxPoints] 
    227229         
    228230        for i, (x, y, text) in points: 
     
    234236                if self.place(left, len(text), 'left') == True: 
    235237                    newMark.append((left, self.invTransform(QwtPlot.yLeft, topL), text, Qt.AlignLeft, x, y)) 
    236                     topL = topL + self.labelSize 
     238                    topL = topL + labSize 
    237239                else: 
    238240                    newMark.append((right, self.invTransform(QwtPlot.yLeft, topR), text, Qt.AlignRight, x, y)) 
    239                     topR = topR + self.labelSize 
     241                    topR = topR + labSize 
    240242            else: 
    241243                #pokusaj desno 
     
    243245                if self.place(right, len(text), 'right') == True: 
    244246                    newMark.append((right, self.invTransform(QwtPlot.yLeft, topR), text, Qt.AlignRight, x, y)) 
    245                     topR = topR + self.labelSize 
     247                    topR = topR + labSize 
    246248                else:                     
    247249                    newMark.append((left, self.invTransform(QwtPlot.yLeft, topL), text, Qt.AlignLeft, x, y)) 
    248                     topL = topL + self.labelSize 
     250                    topL = topL + labSize 
    249251                 
    250252#            if not (i & 1): 
     
    303305                        swapCounter += 1 
    304306                    prevIndL = i 
    305                     topL += self.labelSize 
     307                    topL += labSize 
    306308                         
    307309                if newMark[i][3] == Qt.AlignRight: 
     
    331333                        swapCounter += 1 
    332334                    prevIndR = i 
    333                     topR += self.labelSize 
     335                    topR += labSize 
    334336                i = i + 1 
    335337 
     
    356358     
    357359 
    358              
    359360        for x, y, text, al, x1, y1 in newMark: 
    360             self.addMarker(text, x, y, alignment = al, color = QColor(255,0,0), size = self.labelSize) 
    361             #self.showTip(x, y, text) 
     361            #self.addMarker(text, x, y, alignment = al, color = QColor(255,0,0), size = self.labelSize) 
     362            mkey = self.addMarker(text, x, y, size=self.labelSize) 
     363            ma = self.marker(mkey) 
     364            font = ma.font() 
     365            font.setPixelSize(self.labelSize) 
     366            ma.setFont(font) 
     367            labelcolor = (QBrush(Qt.yellow), QBrush(Qt.gray))[text[-1]=='R'] 
     368            self.setMarkerLabel(mkey, ' ' + text[:-1] + ' ', ma.font(), ma.labelColor(), ma.labelPen(), labelcolor) 
     369            self.setMarkerLabelAlign(mkey, al) 
     370             
     371 
     372##            mkey = self.insertMarker(nonTransparentMarker(QColor(255,255,255), self)) 
     373##            self.marker(mkey).setLabel(text) 
     374####            self.marker(mkey).setXValue(x) 
     375####            self.marker(mkey).setYValue(y) 
     376##            if al == Qt.AlignRight: 
     377##                self.marker(mkey).setXValue(x) 
     378##                self.marker(mkey).setYValue(y) 
     379###                self.marker(mkey).setLabelAlignment(Qt.AlignRight) 
     380##            else: 
     381##                self.marker(mkey).setXValue(x - 0.4) 
     382##                self.marker(mkey).setYValue(y) 
     383###                self.marker(mkey).setLabelAlignment(Qt.AlignLeft) 
     384##            font = self.marker(mkey).font() 
     385##            font.setPixelSize(self.labelSize) 
     386##            self.marker(mkey).setFont(font) 
     387##            #self.showTip(x, y, text) 
    362388            self.markLines.append(self.addCurve("", QColor("black"), QColor("black"), 1, QwtCurve.Lines, xData = [x, x1], yData = [y, y1] )) 
     389             
    363390 
    364391##    def checkPerc(self, x, textLen): 
Note: See TracChangeset for help on using the changeset viewer.