corrections
[iramuteq] / openanalyse.py
index 38ea023..873f4b3 100644 (file)
@@ -1,23 +1,30 @@
-#!/bin/env python
 # -*- coding: utf-8 -*-
 #Author: Pierre Ratinaud
 # -*- coding: utf-8 -*-
 #Author: Pierre Ratinaud
-#Copyright (c) 2008-2012, Pierre Ratinaud
-#Lisense: GNU/GPL
+#Copyright (c) 2008-2020 Pierre Ratinaud
+#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020
+#License: GNU/GPL
 
 
+#------------------------------------
+# import des modules python
+#------------------------------------
+import os
+import logging
+
+#------------------------------------
+# import des fichiers du projet
+#------------------------------------
 from chemins import ChdTxtPathOut, StatTxtPathOut, PathOut
 from chemins import ChdTxtPathOut, StatTxtPathOut, PathOut
-from layout import OpenCHDS, dolexlayout, StatLayout, WordCloudLayout, OpenCorpus, SimiLayout, SimiMatLayout
+from layout import OpenCHDS, dolexlayout, StatLayout, WordCloudLayout, OpenCorpus, SimiLayout, SimiMatLayout, ProtoLayout, MatLayout, FreqLayout, Chi2Layout, LabbeLayout, CateLayout
 from corpus import Corpus, copycorpus
 from tableau import Tableau
 from corpus import Corpus, copycorpus
 from tableau import Tableau
-import os
-import shelve
-#from tabsimi import DoSimi
-from functions import BugReport, DoConf, progressbar
-from tableau import Tableau
-import logging
+from functions import DoConf, ReadDicoAsDico
+
 
 log = logging.getLogger('iramuteq.openanalyse')
 
 
 log = logging.getLogger('iramuteq.openanalyse')
 
+
 class OpenAnalyse():
 class OpenAnalyse():
+
     def __init__(self, parent, parametres, Alceste=True, simifromprof = False):
         log.info('OpenAnalyse')
         self.parent = parent
     def __init__(self, parent, parametres, Alceste=True, simifromprof = False):
         log.info('OpenAnalyse')
         self.parent = parent
@@ -28,9 +35,10 @@ class OpenAnalyse():
             self.conf = DoConf(parametres).getoptions()
             self.path = parametres
             self.conf = self.redopath(self.conf, parametres)
             self.conf = DoConf(parametres).getoptions()
             self.path = parametres
             self.conf = self.redopath(self.conf, parametres)
-        
         if self.conf['type'] == 'corpus' :
             corpus = self.opencorpus()
         if self.conf['type'] == 'corpus' :
             corpus = self.opencorpus()
+        elif self.conf['type'] == 'matrix' :
+            matrix = self.openmatrix()
         elif self.conf.get('corpus', False) in self.parent.history.corpus :
             if self.conf['uuid'] in self.parent.history.analyses :
                 intree  = True
         elif self.conf.get('corpus', False) in self.parent.history.corpus :
             if self.conf['uuid'] in self.parent.history.analyses :
                 intree  = True
@@ -38,56 +46,84 @@ class OpenAnalyse():
                 intree = False
             corpus = self.openanalyse()
             if self.conf.get('lem',1) :
                 intree = False
             corpus = self.openanalyse()
             if self.conf.get('lem',1) :
-               corpus.make_lems(True)
+                dolem = True
             else :
             else :
-               corpus.make_lems(False)
+                dolem = False
+            if self.conf.get('dictionary', False) :
+                dico = ReadDicoAsDico(self.conf['dictionary'])
+                corpus.make_lems_from_dict(dico, dolem = dolem)
+            else :
+                corpus.make_lems(lem = dolem)
             if not intree :
                 self.parent.tree.AddAnalyse(self.conf, bold = True)
             else :
                 self.parent.tree.GiveFocus(uuid = self.conf['uuid'], bold = True)
             self.doopen(corpus)
             if not intree :
                 self.parent.tree.AddAnalyse(self.conf, bold = True)
             else :
                 self.parent.tree.GiveFocus(uuid = self.conf['uuid'], bold = True)
             self.doopen(corpus)
-        else :
+        elif self.conf.get('matrix', False) in self.parent.history.ordermatrix :
             corpus = None
             corpus = None
-            if isinstance(parametres, dict) :
-                tableau = Tableau(parent, parametres['ira'])
-            else :
-                tableau = Tableau(parent, parametres)
-            tableau.parametres = self.conf 
-            tableau.dictpathout = PathOut(filename = tableau.parametres['filename'], dirout = self.conf['pathout'], analyse_type = self.conf['type'])
-            tableau.dictpathout.basefiles(ChdTxtPathOut)
-            tableau.read_tableau(tableau.dictpathout['db'])
-            if self.parent.tree.IsInTree(uuid = self.conf['uuid']) :
-                self.parent.tree.GiveFocus(uuid = self.conf['uuid'], bold = True)
-            else :
-                self.parent.tree.AddAnalyse(self.conf, bold = True)
-            self.doopen(tableau)
+            matrix = Tableau(self.parent, parametres = self.parent.history.matrix[self.parent.history.ordermatrix[self.conf['matrix']]])
+            matrix.open()
+
+            #if isinstance(parametres, dict) :
+            #    tableau = Tableau(parent, parametres['ira'])
+            #else :
+            #    tableau = Tableau(parent, parametres)
+            #tableau.parametres = self.conf 
+            #tableau.dictpathout = PathOut(filename = tableau.parametres['filename'], dirout = self.conf['pathout'], analyse_type = self.conf['type'])
+            #tableau.dictpathout.basefiles(ChdTxtPathOut)
+            #tableau.read_tableau(tableau.dictpathout['db'])
+            #if self.parent.tree.IsInTree(uuid = self.conf['uuid']) :
+
+            self.parent.tree.GiveFocus(uuid = self.conf['uuid'], bold = True)
+            self.doopen(matrix)
+        else :
+            self.parent.tree.AddAnalyse(self.conf, bold = True)
         self.parent.history.addtab(self.conf)
         self.parent.history.addtab(self.conf)
-    
+
     def redopath(self, conf, path) :
         conf['ira'] = os.path.realpath(path)
         conf['pathout'] = os.path.dirname(os.path.realpath(path))
         DoConf(conf['ira']).makeoptions([conf['type']], [conf])
         return conf
     def redopath(self, conf, path) :
         conf['ira'] = os.path.realpath(path)
         conf['pathout'] = os.path.dirname(os.path.realpath(path))
         DoConf(conf['ira']).makeoptions([conf['type']], [conf])
         return conf
-    
+
     def opencorpus(self) :
         log.info('open corpus')
         if self.conf['uuid'] not in self.parent.history.corpus :
     def opencorpus(self) :
         log.info('open corpus')
         if self.conf['uuid'] not in self.parent.history.corpus :
-            self.parent.history.add(self.conf) 
+            self.parent.history.add(self.conf)
             log.info('add corpus to history')
             self.parent.tree.OnItemAppend(self.conf)
         if self.conf['uuid'] in self.parent.history.openedcorpus :
             log.info('corpus is already opened')
             self.doopen(self.parent.history.openedcorpus[self.conf['uuid']])
         else :
             log.info('add corpus to history')
             self.parent.tree.OnItemAppend(self.conf)
         if self.conf['uuid'] in self.parent.history.openedcorpus :
             log.info('corpus is already opened')
             self.doopen(self.parent.history.openedcorpus[self.conf['uuid']])
         else :
-            dial = progressbar(self, 2)
-            dial.Update(1, 'Ouverture du corpus')
+            #dial = progressbar(2)
+            #dial.Update(1, 'Ouverture du corpus')
             corpus = Corpus(self, parametres = self.conf, read = self.parent.history.history[self.parent.history.ordercorpus[self.conf['uuid']]]['ira'])
             corpus = Corpus(self, parametres = self.conf, read = self.parent.history.history[self.parent.history.ordercorpus[self.conf['uuid']]]['ira'])
-            dial.Update(2, 'Fini')
-            dial.Destroy()
+            #dial.Update(2, 'Fini')
+            #dial.Destroy()
             self.parent.history.openedcorpus[self.conf['uuid']] = corpus
             self.opencorpus_analyses()
             self.doopen(corpus)
 
             self.parent.history.openedcorpus[self.conf['uuid']] = corpus
             self.opencorpus_analyses()
             self.doopen(corpus)
 
+    def openmatrix(self):
+        log.info('open matrix')
+        if self.conf['uuid'] not in self.parent.history.ordermatrix :
+            self.parent.history.addMatrix(self.conf)
+            log.info('add matrix to history')
+            self.parent.tree.OnItemAppend(self.conf)
+        if self.conf['uuid'] in self.parent.history.openedmatrix :
+            log.info('matrix is already opened')
+            self.doopen(self.parent.history.openedmatrix[self.conf['uuid']])
+        else :
+            #dial = progressbar(2)
+            #dial.Update(1, 'Ouverture du corpus')
+            matrix = Tableau(self, parametres = self.conf)
+            matrix.open()
+            self.parent.history.openedmatrix[self.conf['uuid']] = matrix
+            self.openmatrix_analyses()
+            self.doopen(matrix)
+            self.parent.history.addtab(self.conf)
+
     def opencorpus_analyses(self) :
         log.info('open analysis')
         basepath = self.conf['pathout']
     def opencorpus_analyses(self) :
         log.info('open analysis')
         basepath = self.conf['pathout']
@@ -104,6 +140,9 @@ class OpenAnalyse():
         for analyse in analyses :
             self.parent.tree.AddAnalyse(analyse, bold = False)
 
         for analyse in analyses :
             self.parent.tree.AddAnalyse(analyse, bold = False)
 
+    def openmatrix_analyses(self):
+        pass
+
     def openanalyse(self) :
         if self.conf['corpus'] in self.parent.history.openedcorpus :
             log.info('corpus is already opened')
     def openanalyse(self) :
         if self.conf['corpus'] in self.parent.history.openedcorpus :
             log.info('corpus is already opened')
@@ -117,27 +156,31 @@ class OpenAnalyse():
 
     def doopen(self, corpus) :
         if self.conf['type'] == 'corpus' :
 
     def doopen(self, corpus) :
         if self.conf['type'] == 'corpus' :
-            self.parent.ShowMenu(_("Text analysis"))
-            OpenCorpus(self.parent, self.conf) 
+            OpenCorpus(self.parent, self.conf)
         elif self.conf['type'] == 'stat' :
         elif self.conf['type'] == 'stat' :
-            self.parent.ShowMenu(_("Text analysis"))
             StatLayout(self.parent, corpus, self.conf)
         elif self.conf['type'] == 'spec' :
             StatLayout(self.parent, corpus, self.conf)
         elif self.conf['type'] == 'spec' :
-            self.parent.ShowMenu(_("Text analysis"))
             dolexlayout(self.parent, corpus, self.conf)
             dolexlayout(self.parent, corpus, self.conf)
+        elif self.conf['type'] == 'labbe' :
+            LabbeLayout(self.parent, corpus, self.conf)
         elif self.conf['type'] == 'alceste' :
         elif self.conf['type'] == 'alceste' :
-            self.parent.ShowMenu(_("Text analysis"))
             OpenCHDS(self.parent,  corpus, self.conf, Alceste = True)
         elif self.conf['type'] == 'simitxt' or self.conf['type'] == 'clustersimitxt' :
             OpenCHDS(self.parent,  corpus, self.conf, Alceste = True)
         elif self.conf['type'] == 'simitxt' or self.conf['type'] == 'clustersimitxt' :
-            self.parent.ShowMenu(_("Text analysis"))
             SimiLayout(self.parent, corpus, self.conf)
             SimiLayout(self.parent, corpus, self.conf)
-        elif self.conf['type'] == 'wordcloud' :
-            self.parent.ShowMenu(_("Text analysis"))
+        elif self.conf['type'] == 'wordcloud' or self.conf['type'] == 'clustercloud':
             WordCloudLayout(self.parent, corpus, self.conf)
             WordCloudLayout(self.parent, corpus, self.conf)
-        elif self.conf['type'] == 'gnepamatrix' :
-            #self.parent.ShowMenu(_("Spreadsheet analysis"))
+        elif self.conf['type'] == 'reinertmatrix' :
             OpenCHDS(self.parent,  corpus, self.conf, Alceste = False)
             OpenCHDS(self.parent,  corpus, self.conf, Alceste = False)
-        elif self.conf['type'] == 'simimatrix' :
-            #self.parent.ShowMenu(_("Spreadsheet analysis"))
+        elif self.conf['type'] == 'simimatrix' or self.conf['type'] == 'simiclustermatrix':
             SimiMatLayout(self.parent, corpus, self.conf)
             SimiMatLayout(self.parent, corpus, self.conf)
-        
+        elif self.conf['type'] == 'proto' :
+            ProtoLayout(self.parent, corpus, self.conf)
+        elif self.conf['type'] == 'matrix' :
+            MatLayout(self.parent, corpus)
+        elif self.conf['type'] == 'freq' or self.conf['type'] == 'freqmulti':
+            FreqLayout(self.parent, corpus, self.conf)
+        elif self.conf['type'] == 'chi2' or self.conf['type'] == 'chi2mcnemar':
+            Chi2Layout(self.parent, corpus, self.conf)
+        elif self.conf['type'] == 'categorisation' :
+            CateLayout(self.parent, corpus, self.conf)
+            print(self.conf)