Merge branch 'master' of http://www.netdig.org/git/iramuteq
[iramuteq] / analysetxt.py
index 3edf0a9..2811a7e 100644 (file)
@@ -13,32 +13,33 @@ from PrintRScript import RchdTxt, AlcesteTxtProf
 from OptionAlceste import OptionAlc 
 from layout import PrintRapport
 from openanalyse import OpenAnalyse
+from dialog import StatDialog
 from time import time
 
 log = logging.getLogger('iramuteq.analyse')
 
 class AnalyseText :
-    def __init__(self, ira, corpus, parametres = None, dlg = False) :
+    def __init__(self, ira, corpus, parametres = None, dlg = False, lemdial = True) :
         self.corpus = corpus
         self.ira = ira
         self.parent = ira
         self.dlg = dlg
         self.dialok = True
         self.parametres = parametres
+        self.lemdial = lemdial
         self.val = False
         if not 'pathout' in self.parametres :
             self.pathout = PathOut(corpus.parametres['originalpath'], analyse_type = parametres['type'], dirout = corpus.parametres['pathout'])
         else :
-            self.pathout = PathOut(filename = corpus.parametres['originalpath'], dirout = self.parametres['pathout'], analyse_type = self.parametres['name'])
-        self.parametres = self.make_config(parametres)
+            self.pathout = PathOut(filename = corpus.parametres['originalpath'], dirout = self.parametres['pathout'], analyse_type = self.parametres['type'])
+        self.parametres = self.lemparam()
+        if self.parametres is not None :
+            self.parametres = self.make_config(parametres)
         log.info(self.pathout.dirout)
         if self.parametres is not None :
             self.keys = DoConf(self.ira.ConfigPath['key']).getoptions()
             gramact = [k for k in keys if keys[k] == 1]
             gramsup = [k for k in keys if keys[k] == 2]
-            #FIXME
-            if not 'lem' in self.parametres :
-                self.parametres['lem'] = 1
             self.parametres['pathout'] = self.pathout.mkdirout()
             self.pathout = PathOut(dirout = self.parametres['pathout'])
             self.pathout.createdir(self.parametres['pathout'])
@@ -76,18 +77,39 @@ class AnalyseText :
     def doanalyse(self) :
         pass
 
+    def lemparam(self) :
+        if self.dlg and self.lemdial:
+            dial = StatDialog(self, self.parent)
+            dial.CenterOnParent()
+            val = dial.ShowModal()
+            if val == 5100 :
+                if dial.radio_lem.GetSelection() == 0 :
+                    lem = 1
+                else :
+                    lem = 0            
+                self.parametres['lem'] = lem
+                dial.Destroy()
+                return self.parametres
+            else :
+                dial.Destroy()
+                return None        
+        else :
+            return self.parametres
+
     def make_config(self, config) :
         if config is not None :
             if not self.dlg : 
                 return config
             else :
                 return self.preferences()
+        else :
+            return None
 
     def readconfig(self, config) :
         return config
 
     def preferences(self) :
-        return {}
+        return self.parametres
 
     def printRscript(self) :
         pass
@@ -96,7 +118,7 @@ class AnalyseText :
         log.info('R code...')
         pid = exec_rcode(self.ira.RPath, Rscript, wait = wait)
         while pid.poll() is None :
-            if dlg is not None :
+            if dlg :
                 self.dlg.Pulse(message)
                 sleep(0.2)
             else :
@@ -122,6 +144,7 @@ class Alceste(AnalyseText) :
             self.corpus.make_and_write_sparse_matrix_from_uci(self.actives, self.pathout['TableUc1'], self.pathout['listeuce1'])
         Rscript = self.printRscript()
         self.doR(Rscript, dlg = self.dlg, message = 'CHD...')
+
         self.corpus.make_ucecl_from_R(self.pathout['uce'])
         self.corpus.make_and_write_profile(self.actives, self.corpus.lc, self.pathout['Contout'])
         self.sup, lim = self.corpus.make_actives_nb(self.parametres['max_actives'], 2)
@@ -145,11 +168,6 @@ class Alceste(AnalyseText) :
         self.dial.CenterOnParent()
         self.dialok = self.dial.ShowModal()
         if self.dialok == 5100 :
-            if self.dial.radio_1.GetSelection() == 0 :
-                lem = 1
-            else :
-                lem = 0
-            parametres['lem'] = lem
             parametres['classif_mode'] = self.dial.radio_box_2.GetSelection()
             parametres['tailleuc1'] = self.dial.spin_ctrl_1.GetValue()
             parametres['tailleuc2'] = self.dial.spin_ctrl_2.GetValue()
@@ -158,18 +176,19 @@ class Alceste(AnalyseText) :
             parametres['nbcl_p1'] = self.dial.spin_nbcl.GetValue()
             parametres['max_actives'] = self.dial.spin_max_actives.GetValue()
             parametres['corpus'] = ''
+            parametres['svdmethod'] = self.dial.svdmethod[self.dial.choicesvd.GetSelection()]
             parametres['pathout'] = self.pathout.dirout
-            for val in parametres :
-                print val, parametres[val]
+            parametres['mode.patate'] = self.dial.check_patate.GetValue()
             DoConf(self.parent.ConfigPath['alceste']).makeoptions(['ALCESTE'], [parametres])
             self.dial.Destroy()
+            print parametres
             return parametres
         else :
             self.dial.Destroy()
             return None
 
     def printRscript(self) :
-        RchdTxt(self.pathout, self.parent.RscriptsPath, self.parametres['mincl'], self.parametres['classif_mode'], nbt = self.parametres['nbcl_p1'] - 1, libsvdc = self.parent.pref.getboolean('iramuteq','libsvdc'), libsvdc_path = self.parent.pref.get('iramuteq','libsvdc_path'), R_max_mem = False)
+        RchdTxt(self.pathout, self.parent.RscriptsPath, self.parametres['mincl'], self.parametres['classif_mode'], nbt = self.parametres['nbcl_p1'] - 1, svdmethod = self.parametres['svdmethod'], libsvdc = self.parent.pref.getboolean('iramuteq','libsvdc'), libsvdc_path = self.parent.pref.get('iramuteq','libsvdc_path'), R_max_mem = False, mode_patate = self.parametres['mode.patate'])
         return self.pathout['Rchdtxt']
 
     def printRscript2(self) :