from mac
[iramuteq] / layout.py
index b2eeb4e..3a670e5 100644 (file)
--- a/layout.py
+++ b/layout.py
@@ -45,7 +45,7 @@ class GraphPanelAfc(wx.Panel):
         self.coding = coding
         self.itempath = itempath
         self.parent = self.GetParent()#parent
-        self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "courier"))
+        self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Arial"))
         self.labels = []
         self.listimg = []
         self.buts = []
@@ -67,7 +67,11 @@ class GraphPanelAfc(wx.Panel):
                     self.listimg.append(hl.HyperLinkCtrl(self.panel_1, -1, os.path.join(self.dirout,list_graph[i][0]), URL=os.path.join(self.dirout,list_graph[i][0])))
                 else :
                     self.listimg.append(wx.StaticBitmap(self.panel_1, -1, wx.Bitmap(os.path.join(self.dirout,list_graph[i][0]), wx.BITMAP_TYPE_ANY)))
-                self.labels.append(wx.StaticText(self.panel_1, -1, list_graph[i][1]))
+                if os.path.exists(os.path.join(self.dirout,list_graph[i][0] + '_notplotted.csv')) :
+                   txt = u' - liste des points non représentés : %s' % os.path.join(self.dirout,list_graph[i][0] + '_notplotted.csv')
+                else :
+                    txt = ''
+                self.labels.append(wx.StaticText(self.panel_1, -1, list_graph[i][1] + txt))
                 self.buts.append(wx.Button(self.panel_1, wx.ID_DELETE, name = `i - b`))
             else :
                 todel.append(i)
@@ -251,7 +255,7 @@ class GraphPanel(wx.ScrolledWindow):
         self.Dict = dico
         self.txt = txt
         self.parent = parent
-        self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.FONTWEIGHT_BOLD, 0, "courier"))
+        self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Arial"))
         self.labels = []
         self.listimg = []
         self.dirout = os.path.dirname(self.Dict['ira'])
@@ -290,6 +294,12 @@ def open_antiprofil(panel, AntiProfile, encoding) :
 
 
 
+def getlemgram(corpus, lem) :
+    if not lem[6] in corpus.lems :
+        return lem[5]
+    else :
+        return corpus.lems[lem[6]].gram
+
 class OpenCHDS():
     def __init__(self, parent, corpus, parametres, Alceste=False):
        #sep = u'\n ' 
@@ -341,6 +351,7 @@ class OpenCHDS():
            panel.corpus = self.corpus
        else :
            panel.tableau = self.corpus
+           #self.parent.tableau = panel.tableau
        panel.dictpathout = self.DictPathOut
        panel.pathout = self.DictPathOut
        panel.parent = self.parent
@@ -392,7 +403,9 @@ class OpenCHDS():
             prof_seg = ReadProfileAsDico(DictPathOut['prof_seg'], False, self.encoding)
             self.prof_seg_nb = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
        for i in range(0, clnb):
-            self.cluster_size.append(DictProfile[str(i + 1)][0][0:3]) 
+            self.cluster_size.append(DictProfile[str(i + 1)][0][0:3])
+            if isinstance(self.corpus, Corpus) :
+                DictProfile[str(i + 1)][1:] = [val[0:5] + [getlemgram(self.corpus, val)] + val[6:] for val in DictProfile[str(i + 1)][1:]]
             dlg.Update(3+i, 'Classe %i' %(i+1))
             ind = '/'.join(DictProfile[str(i + 1)][0][0:2])
             indpour = ' - '.join([ind, DictProfile[str(i + 1)][0][2]])
@@ -456,77 +469,6 @@ class OpenCHDS():
         outfile = print_simi3d(self)
         error = exec_rcode(self.parent.RPath, outfile, wait = True)
 
-#    def ongetrapport(self, event) :
-#        dial = PrefSimpleFile(self, self.parent, **{'mask' : '*.txt', 'title': 'Rapport'})
-#        dial.fbb.SetValue(self.DictPathOut['rapport'])
-#        dial.CenterOnParent()
-#        res = dial.ShowModal()
-#        if res == wx.ID_OK :
-#            fileout = dial.fbb.GetValue()
-#            dial.Destroy()
-#            with open(fileout, 'w') as f :
-#                f.write(self.debtext + '\n' + GetTxtProfile(self.DictProfile, self.cluster_size))
-#            msg = u"Fini !"
-#            dlg = wx.MessageDialog(self.parent, msg, u"Rapport", wx.OK | wx.NO_DEFAULT | wx.ICON_INFORMATION)
-#            dlg.CenterOnParent()
-#            dlg.ShowModal()
-#            dlg.Destroy()
-#        else :
-#            dial.Destroy()
-
-#    def on_export_classes(self, event) :
-#        corpus = self.parent.nb.GetPage(self.parent.nb.GetSelection()).corpus
-#        dial = PrefExport(self, self.parent)
-#        dial.fbb.SetValue(os.path.join(os.path.dirname(corpus.dictpathout['ira']), 'export_corpus.txt'))
-#        dial.CenterOnParent()
-#        res = dial.ShowModal()
-#        if res == wx.ID_OK :
-#            if dial.radio_type.GetSelection() == 0 : alc = True
-#            else : alc = False
-#            if dial.radio_lem.GetSelection() == 0 : lem = True
-#            else : lem = False
-#            self.corpus.export_corpus_classes(dial.fbb.GetValue(), alc = alc, lem = lem)
-#            msg = u"Fini !"
-#            dial.Destroy()
-#            dlg = wx.MessageDialog(self.parent, msg, u"Export", wx.OK | wx.NO_DEFAULT | wx.ICON_INFORMATION)
-#            dlg.CenterOnParent()
-#            dlg.ShowModal()
-#            dlg.Destroy()
-
-#    def onprofseg(self, event):
-#        #try :
-#            print 'plus de bug profseg'
-#            print self.parametres
-#            corpus = self.parent.nb.GetPage(self.parent.nb.GetSelection()).corpus
-#            ProfileSegment(self.parent, self.dictpathout, self.parametres, corpus)
-#        #except :
-#        #    BugReport(self.parent)
-#
-#    def onproftype(self, event):
-#        try :
-#            corpus = self.parent.nb.GetPage(self.parent.nb.GetSelection()).corpus
-#            ProfilType(self.parent, corpus)
-#        except :
-#            BugReport(self.parent)
-#
-#    def oncolored(self,evt) :
-#        dial = PrefSimpleFile(self, self.parent, **{'mask' : '*.html', 'title': 'Corpus en couleur'})
-#        dial.fbb.SetValue(os.path.join(os.path.dirname(self.corpus.dictpathout['ira']), 'corpus_couleur.html'))
-#        dial.CenterOnParent()
-#        res = dial.ShowModal()
-#        if res == wx.ID_OK :
-#            fileout = dial.fbb.GetValue()
-#            dial.Destroy()
-#            txt = self.corpus.make_colored_corpus()
-#            with open(fileout, 'w') as f :
-#                f.write(txt)
-#            msg = u"Fini !\nVoulez-vous ouvrir le corpus dans votre navigateur ?"
-#            dlg = wx.MessageDialog(self.parent, msg, u"Corpus en couleur", wx.NO | wx.YES | wx.NO_DEFAULT | wx.ICON_QUESTION)
-#            dlg.CenterOnParent()
-#            if dlg.ShowModal() == wx.ID_YES :
-#                webbrowser.open(fileout)
-#            dlg.Destroy()
-
     def onclusterstat(self, evt) :
         dial = PrefSimpleFile(self, self.parent, **{'mask' : '*.csv', 'title': 'Stat par classe'})
         dial.fbb.SetValue( os.path.join(os.path.dirname(self.corpus.dictpathout['ira']), 'stat_par_classe.csv'))
@@ -535,7 +477,6 @@ class OpenCHDS():
         if res == wx.ID_OK :
             fileout = dial.fbb.GetValue()
             dial.Destroy()
-            print fileout
             self.corpus.get_stat_by_cluster(fileout)
             msg = u"Fini !"
             dlg = wx.MessageDialog(self.parent, msg, u"Stat par classe", wx.OK | wx.NO_DEFAULT | wx.ICON_INFORMATION)
@@ -655,20 +596,21 @@ class StatLayout:
         self.read_result()
         self.TabStat = aui.AuiNotebook(ira.nb, -1, wx.DefaultPosition)
         self.TabStat.parametres = parametres
+        self.TabStat.corpus = corpus
+        self.TabStat.pathout = self.pathout
 #        CHD = GraphPanel(panel.TabChdSim, DictPathOut, list_graph, txt = self.debtext)
          #      panel.TabChdSim.AddPage(CHD,'CHD')
 
         #self.TabStatTot = wx.TextCtrl(self.TabStat, -1, style=wx.NO_BORDER | wx.TE_MULTILINE | wx.TE_RICH2)
         list_graph = [['zipf.png', 'zipf']]
         self.TabStatTot = GraphPanel(ira.nb, self.pathout, list_graph, self.result['glob'])
-        #self.TabStatTot.write(self.result['glob'])
         self.TabStat.AddPage(self.TabStatTot, 'global')
         for item in self.result:
             if item != 'glob':
                 datam = [['forme', 'nb']]
                 self.ListPan = ListPanel(ira, self, self.result[item])
-                self.TabStat.AddPage(self.ListPan, item
-        ira.nb.AddPage(self.TabStat, 'Stat')
+                self.TabStat.AddPage(self.ListPan, ' '.join(item.split('_'))
+        ira.nb.AddPage(self.TabStat, '%s' % parametres['name'])
         ira.nb.SetSelection(ira.nb.GetPageCount() - 1)
         ira.ShowAPane("Tab_content")
 
@@ -908,7 +850,7 @@ class WordCloudLayout(DefaultTextLayout):
         self.Tab.AddPage(self.TabStatTot, 'Nuage')
         self.Tab.corpus = self.corpus
         self.Tab.parametres = self.parametres
-        self.ira.nb.AddPage(self.Tab, 'WordCloud %s' % self.parametres.get('corpus_name','corpus_name'))
+        self.ira.nb.AddPage(self.Tab, '%s' % self.parametres['name'])
         self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
         self.ira.ShowAPane("Tab_content")
 
@@ -943,7 +885,13 @@ class SimiLayout(DefaultTextLayout) :
             with codecs.open(self.pathout['actives.csv'], 'r', self.parametres['encoding']) as f :
                 self.actives = f.read()
             self.actives = self.actives.splitlines()#[act for act in self.actives.splitlines()]
-        dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
+        if os.path.exists(self.pathout['actives_nb.csv']) :
+            with open(self.pathout['actives_nb.csv'], 'r') as f :
+                act_nb = f.read()
+                act_nb = act_nb.splitlines()
+            dictcol = dict([[i, [self.actives[i], int(act_nb[i])]] for i, val in enumerate(self.actives)])
+        else :
+            dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
         #res = SelectColumn(self.ira, dictcol, self.actives, self.pathout['selected.csv'], selected = selected, dlg = True) 
         #if res.ok :
         prep = PrepSimi(self.ira, self, self.parametres,self.pathout['selected.csv'], self.actives, indices_simi, wordlist = dictcol, selected = selected)
@@ -1044,7 +992,11 @@ class SimiMatLayout(DefaultMatLayout) :
         #    with codecs.open(self.pathout['actives.csv'], 'r', self.parametres['encoding']) as f :
         #        self.actives = f.read()
         #    self.actives = self.actives.splitlines()#[act for act in self.actives.splitlines()]
-        actives = [[val, self.tableau.actives[val][0]] for val in self.tableau.actives]
+        try :
+            actives = [[val, self.tableau.actives[val][0]] for val in self.tableau.actives]
+        except :
+            actives = [[val, self.tableau.actives[val]] for val in self.tableau.actives]
+
         #self.tableau.make_listactives()
         actives = dict([[i, val] for i, val in enumerate(actives)])
         #dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])