matrice graph classe
[iramuteq] / layout.py
index 8efccbf..310b3ff 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.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 = []
         self.labels = []
         self.listimg = []
         self.buts = []
@@ -251,7 +251,7 @@ class GraphPanel(wx.ScrolledWindow):
         self.Dict = dico
         self.txt = txt
         self.parent = parent
         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'])
         self.labels = []
         self.listimg = []
         self.dirout = os.path.dirname(self.Dict['ira'])
@@ -341,6 +341,7 @@ class OpenCHDS():
            panel.corpus = self.corpus
        else :
            panel.tableau = self.corpus
            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
        panel.dictpathout = self.DictPathOut
        panel.pathout = self.DictPathOut
        panel.parent = self.parent
@@ -535,7 +536,6 @@ class OpenCHDS():
         if res == wx.ID_OK :
             fileout = dial.fbb.GetValue()
             dial.Destroy()
         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)
             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 +655,21 @@ class StatLayout:
         self.read_result()
         self.TabStat = aui.AuiNotebook(ira.nb, -1, wx.DefaultPosition)
         self.TabStat.parametres = parametres
         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'])
 #        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.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")
 
         ira.nb.SetSelection(ira.nb.GetPageCount() - 1)
         ira.ShowAPane("Tab_content")
 
@@ -908,7 +909,7 @@ class WordCloudLayout(DefaultTextLayout):
         self.Tab.AddPage(self.TabStatTot, 'Nuage')
         self.Tab.corpus = self.corpus
         self.Tab.parametres = self.parametres
         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")
 
         self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
         self.ira.ShowAPane("Tab_content")
 
@@ -943,7 +944,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()]
             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)
         #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)
@@ -990,7 +997,7 @@ class SimiLayout(DefaultTextLayout) :
         V(graph)$x <- graph.simi$layout[,1]
         V(graph)$y <- graph.simi$layout[,2]
         V(graph)$weight <- graph.simi$label.cex
         V(graph)$x <- graph.simi$layout[,1]
         V(graph)$y <- graph.simi$layout[,2]
         V(graph)$weight <- graph.simi$label.cex
-        V(graph)$colors <- cols
+        V(graph)$colors <- vertex.label.color
         E(graph)$weigth <- graph.simi$we.width
         write.graph(graph, fileout, format = 'graphml')
         """ % (self.pathout['RData.RData'], fileout)
         E(graph)$weigth <- graph.simi$we.width
         write.graph(graph, fileout, format = 'graphml')
         """ % (self.pathout['RData.RData'], fileout)
@@ -1029,7 +1036,7 @@ class SimiMatLayout(DefaultMatLayout) :
         self.tabsimi.SetArtProvider(aui.ChromeTabArt())
         self.graphpan = GraphPanelSimi(self.tabsimi, self.pathout, list_graph)
         self.graphpan.Bind(wx.EVT_BUTTON, self.redosimi, self.graphpan.butafc)
         self.tabsimi.SetArtProvider(aui.ChromeTabArt())
         self.graphpan = GraphPanelSimi(self.tabsimi, self.pathout, list_graph)
         self.graphpan.Bind(wx.EVT_BUTTON, self.redosimi, self.graphpan.butafc)
-        #self.graphpan.Bind(wx.EVT_BUTTON, self.export, self.graphpan.butexport)
+        self.graphpan.Bind(wx.EVT_BUTTON, self.export, self.graphpan.butexport)
         self.tabsimi.AddPage(self.graphpan, 'Graph')
         self.tabsimi.parametres = self.parametres
         self.parent.nb.AddPage(self.tabsimi, 'Analyse de graph')
         self.tabsimi.AddPage(self.graphpan, 'Graph')
         self.tabsimi.parametres = self.parametres
         self.parent.nb.AddPage(self.tabsimi, 'Analyse de graph')
@@ -1044,7 +1051,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()]
         #    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)])
         #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)])
@@ -1162,53 +1173,31 @@ class SimiMatLayout(DefaultMatLayout) :
                 sleep(0.2)
             check_Rresult(self.parent, pid)
     
                 sleep(0.2)
             check_Rresult(self.parent, pid)
     
-        #return paramsimi
-
-#        if self.openfromprof :
-#            if 'cexfromchi' not in self.paramsimi:
-#                self.paramsimi['cexfromchi'] = False
-#                self.paramsimi['sfromchi'] = False
-#        self.dial = PrefSimi(self.parent, -1, self.paramsimi, self.types)
-#        self.dial.CenterOnParent()
-#        val = self.dial.ShowModal()
-#        if val == wx.ID_OK :
-#            self.paramsimi = self.make_param()
-#            self.dial.Destroy()
-#            if self.paramsimi.get('bystar',False) :
-#                variables = treat_var_mod(self.paramsimi['stars'])
-#                dial = OptLexi(self.parent)
-#                dial.listet = self.paramsimi['stars']
-#                var = [v for v in variables]
-#                dial.variables = var
-#                for et in var :
-#                    dial.list_box_1.Append(et)
-#                dial.CenterOnParent()
-#                val = dial.ShowModal()
-#                if val == wx.ID_OK :
-#                    if dial.choice.GetSelection() == 1 :
-#                        listet = [dial.listet[i] for i in dial.list_box_1.GetSelections()]
-#                    else :
-#                        listet = variables[var[dial.list_box_1.GetSelections()[0]]]
-#                    self.tableau.etline = self.Source.corpus.make_etline(listet)
-#
-#            dlg = wx.ProgressDialog("Traitements",
-#                                    "Veuillez patienter...",
-#                                     maximum=2,
-#                                     parent=self.parent,
-#                                     style=wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_CAN_ABORT)
-#            dlg.Center()
-#            self.PrintScript()
-#            self.DoR(dlg)
-#            dlg.Destroy()
-#            self.make_ira()
-#            if self.paramsimi['type'] == 1:
-#                self.graphpan.sizer_3.Add(wx.StaticBitmap(self.graphpan.panel_1, -1, wx.Bitmap(self.filename, wx.BITMAP_TYPE_ANY)), 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
-#                self.graphpan.sizer_3.Add(wx.StaticText(self.graphpan.panel_1,-1,self.txtgraph), 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
-#                self.graphpan.sizer_3.Fit(self.graphpan.panel_1)
-#                self.graphpan.Layout()
-#                self.graphpan.panel_1.Scroll(0,self.graphpan.panel_1.GetScrollRange(wx.VERTICAL))
-#        else :
-#            self.dial.Destroy()
+    def export(self, evt) : 
+        nb = 1
+        while os.path.exists(os.path.join(self.pathout.dirout,'graph_'+str(nb)+'.graphml')):
+            nb +=1
+        fileout = ffr(os.path.join(self.pathout.dirout,'graph_'+str(nb)+'.graphml'))
+        txt = """
+        library(igraph)
+        load("%s")
+        fileout <- "%s"
+        graph <- graph.simi$graph
+        V(graph)$x <- graph.simi$layout[,1]
+        V(graph)$y <- graph.simi$layout[,2]
+        V(graph)$weight <- graph.simi$label.cex
+        V(graph)$colors <- vertex.label.color
+        E(graph)$weigth <- graph.simi$we.width
+        write.graph(graph, fileout, format = 'graphml')
+        """ % (self.pathout['RData.RData'], fileout)
+        filetmp = tempfile.mktemp()
+        with open(filetmp, 'w') as f :
+            f.write(txt)
+        exec_rcode(self.ira.RPath, filetmp)
+        mss = wx.MessageDialog(self.ira, fileout, u'Fichier exporté', wx.OK)
+        mss.CenterOnParent()
+        mss.ShowModal()
+        mss.Destroy()
 
         
 class GraphPanelSimi(wx.Panel):
 
         
 class GraphPanelSimi(wx.Panel):