X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=ProfList.py;h=1bc2c609b8a4ca4a69336ecd2b7e61bc617b9d2e;hp=b64d633e6916079a3bfac3fc92aad90f91500b70;hb=bd8d0a889d1d393e64a6d768dc14e9c639a0df8c;hpb=ff602f724b8fc80f4fa067dbbc830343c0b4bed4 diff --git a/ProfList.py b/ProfList.py index b64d633..1bc2c60 100644 --- a/ProfList.py +++ b/ProfList.py @@ -134,7 +134,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col #events #self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected) - #self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) + self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnPopupTwo, self) #self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected) self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick) @@ -147,6 +147,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col #for searching search_id = wx.NewId() searchall_id = wx.NewId() + concord_id = wx.NewId() self.parent.Bind(wx.EVT_MENU, self.onsearch, id = search_id) self.parent.Bind(wx.EVT_MENU, self.onsearchall, id = searchall_id) self.accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('F'), search_id), @@ -273,6 +274,8 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.idlexdendro = wx.NewId() self.idcloud = wx.NewId() self.idexport = wx.NewId() + self.idexporttropes = wx.NewId() + self.idexportowledge = wx.NewId() # self.export_classes = wx.NewId() self.Bind(wx.EVT_MENU, self.OnPopupOne, id=self.popupID1) @@ -295,6 +298,8 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col self.Bind(wx.EVT_MENU, self.onlexdendro, id = self.idlexdendro) self.Bind(wx.EVT_MENU, self.oncloud, id = self.idcloud) self.Bind(wx.EVT_MENU, self.onexport, id = self.idexport) + self.Bind(wx.EVT_MENU, self.onexporttropes, id = self.idexporttropes) + self.Bind(wx.EVT_MENU, self.onexportowledge, id = self.idexportowledge) # self.Bind(wx.EVT_MENU, self.on_export_classes, id = self.export_classes) # self.Bind(wx.EVT_MENU, self.OnPopupThree, id=self.popupID3) @@ -328,6 +333,8 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col menu.Append(self.iducecarac, u"Segments de texte caractéristiques") menu.Append(self.idcloud, u"Nuage de la classe") menu.Append(self.idexport, u'Exporter...') + menu.Append(self.idexporttropes, 'Exporter pour Tropes') + menu.Append(self.idexportowledge, 'Exporter pour Owledge') #menu.Append(self.popupID2, u"Concordancier") # menu.Append(self.popupID3, "recharger") @@ -367,13 +374,39 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def onexport(self, evt) : if 'corpus' in dir(self.Source): corpus = self.Source.corpus - corpus.export_classe(self.Source.pathout['classe_%i_export.txt' % self.cl], self.cl) + if self.Source.parametres['classif_mode'] != 2 : + uci = False + else : + uci = True + corpus.export_classe(self.Source.pathout['classe_%i_export.txt' % self.cl], self.cl, uci = uci) dial = wx.MessageDialog(self, self.Source.pathout['classe_%i_export.txt' % self.cl], u"Export", wx.OK|wx.ICON_INFORMATION) dial.ShowModal() dial.Destroy() #if 'corpus' in dir(self.Source): # corpus = self.Source.corpus #ClasseCHD(self.parent, corpus, self.cl) + + def onexporttropes(self, evt) : + if 'corpus' in dir(self.Source): + corpus = self.Source.corpus + if self.Source.parametres['classif_mode'] != 2 : + uci = False + else : + uci = True + fileout = self.Source.pathout['export_tropes_classe_%i.txt' % self.cl] + corpus.export_tropes(fileout, self.cl, uci = uci) + + def onexportowledge(self, evt): + if 'corpus' in dir(self.Source): + corpus = self.Source.corpus + if self.Source.parametres['classif_mode'] != 2 : + uci = False + else : + uci = True + repout = self.Source.pathout['export_owledge_classe_%i' % self.cl] + if not os.path.exists(repout) : + os.mkdir(repout) + corpus.export_owledge(repout, self.cl, uci = uci) def getselectedwords(self) : words = [self.getColumnText(self.GetFirstSelected(), 6)] @@ -431,12 +464,12 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def quest_simi(self, evt) : tableau = self.Source.tableau + tab = tableau.make_table_from_classe(self.cl, self.la) + pathout = ConstructPathOut(self.Source.pathout.dirout, 'simi_classe_%i' %self.cl) if self.tmpchi is None : - self.tmpchi = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) + self.tmpchi = os.path.join(pathout,'chi.csv') with open(self.tmpchi, 'w') as f: f.write('\n'.join([str(val) for val in self.lchi])) - tab = tableau.make_table_from_classe(self.cl, self.la) - pathout = ConstructPathOut(self.Source.pathout.dirout, 'simi_classe_%i' %self.cl) self.filename = os.path.join(pathout,'mat01.csv') tableau.printtable(self.filename, tab) del tab @@ -487,7 +520,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def onwordgraph(self, evt): word = self.getColumnText(self.GetFirstSelected(), 6) if self.tmpchi is None : - self.tmpchi = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) + self.tmpchi = os.path.join(self.Source.parametres['pathout'],'chi_%i.csv' % self.cl) with open(self.tmpchi, 'w') as f: f.write('\n'.join([str(val) for val in self.lchi])) index = self.la.index(word) @@ -503,7 +536,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col def on_graph(self, evt): if self.tmpchi is None : - self.tmpchi = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) + self.tmpchi = os.path.join(self.Source.parametres['pathout'],'chi_%i.csv' % self.cl) with open(self.tmpchi, 'w') as f: f.write('\n'.join([str(val) for val in self.lchi])) parametres = {'type' : 'clustersimitxt', @@ -517,10 +550,14 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col dlg = progressbar(self, 2) corpus = self.Source.corpus uces = corpus.lc[self.cl-1] + if self.Source.parametres['classif_mode'] != 2 : + uci = False + else : + uci = True l = [] dlg.Update(1, u'Segments...') for i in range(2,10) : - li = corpus.find_segments_in_classe(uces, i, 1000) + li = corpus.find_segments_in_classe(uces, i, 1000, uci = uci) if li == [] : break else : @@ -545,7 +582,11 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col dlg = progressbar(self,maxi = 4) corpus = self.Source.corpus uces = corpus.lc[self.cl-1] - tab = corpus.make_table_with_classe(uces, self.la) + if self.Source.parametres['classif_mode'] != 2 : + uci = False + else : + uci = True + tab = corpus.make_table_with_classe(uces, self.la, uci = uci) tab.pop(0) dlg.Update(2, u'score...') if atype == 0 : @@ -558,7 +599,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col ntab2 = ntab2[:limite] nuces = [val[1] for val in ntab2] dlg.Update(3, u'concordancier...') - ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la) + ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la, uci = uci) dlg.Update(4, u'texte...') win = message(self, u"Segments de texte caractéristiques - Classe %i" % self.cl, (750, 600)) win.html = '\n' + '
'.join(['
'.join([ucis_txt[i], '
score : %.2f
' % ntab2[i][0], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' @@ -650,7 +691,6 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col win.HtmlPage.SetPage(txt) win.Show(True) - def make_concord(self, uces, title, color = 'red') : corpus = self.Source.corpus ListWord = [self.getColumnText(self.GetFirstSelected(), 6)] @@ -659,9 +699,15 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col last = self.GetNextSelected(last) ListWord.append(self.getColumnText(last, 6)) ucef = [] - for word in ListWord : - ucef += list(set(corpus.getlemuces(word)).intersection(uces)) - ucis_txt, ucestxt = doconcorde(corpus, ucef, ListWord) + if self.Source.parametres['classif_mode'] != 2 : + for word in ListWord : + uci = False + ucef += list(set(corpus.getlemuces(word)).intersection(uces)) + else : + for word in ListWord : + ucef += list(set(corpus.getlemucis(word)).intersection(uces)) + uci = True + ucis_txt, ucestxt = doconcorde(corpus, ucef, ListWord, uci = uci) win = message(self, title, size=(750, 600)) win.html = ('\n

%s

' % ' '.join(ListWord)) + '
'.join(['
'.join([ucis_txt[i], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' win.HtmlPage.SetPage(win.html) @@ -725,7 +771,10 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col rep = [] #FIXME : donner aussi eff reel a la place de nb uce for forme in lems[word].formes : - ucef = list(set(corpus.getworduces(forme)).intersection(uces)) + if self.Source.parametres['classif_mode'] != 2 : + ucef = list(set(corpus.getworduces(forme)).intersection(uces)) + else : + ucef = list(set(corpus.getworducis(forme)).intersection(uces)) #ucef = [uce for uce in corpus.formes[forme][1] if uce in uces] if ucef != [] : nb = len(ucef)