# -*- coding: utf-8 -*-
#Author: Pierre Ratinaud
-#Copyright (c) 2008-2013 Pierre Ratinaud
-#Lisense: GNU/GPL
+#Copyright (c) 2008-2020 Pierre Ratinaud
+#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020
+#License: GNU/GPL
-from chemins import ffr, simipath
-#from corpus import Corpus
+#------------------------------------
+# import des modules python
+#------------------------------------
import os
-from analysetxt import AnalyseText
-#from ConfigParser import RawConfigParser
-#from guifunct import getPage, getCorpus
-from dialog import StatDialog
-from guifunct import SelectColumn, PrepSimi
-from functions import indices_simi, progressbar, treat_var_mod, read_list_file, print_liste
-#from tableau import Tableau
-#from tabsimi import DoSimi
-from PrintRScript import PrintSimiScript
-import wx
from copy import copy
-
+from operator import itemgetter
+import codecs
import logging
+#------------------------------------
+# import des modules wx
+#------------------------------------
+import wx
+
+#------------------------------------
+# import des fichiers du projet
+#------------------------------------
+from chemins import ffr, simipath
+from analysetxt import AnalyseText
+from guifunct import PrepSimi
+from functions import indices_simi, progressbar, treat_var_mod, read_list_file, print_liste, DoConf, exec_rcode, check_Rresult
+from PrintRScript import PrintSimiScript
+
+
log = logging.getLogger('iramuteq.textsimi')
+
class SimiTxt(AnalyseText):
+
def doanalyse(self) :
self.parametres['type'] = 'simitxt'
self.pathout.basefiles(simipath)
self.indices = indices_simi
- self.makesimiparam()
+ if self.dlg : # quel est le lien ???
+ self.makesimiparam()
#FIXME
self.actives = self.corpus.make_actives_limit(3)
dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
continu = False
if self.dlg :
- #cont = SelectColumn(self.ira, dictcol, self.actives, self.pathout['selected.csv'], dlg = self.dlg)
- #if cont.ok :
self.listet = self.corpus.make_etoiles()
self.listet.sort()
self.stars = copy(self.listet)
if prep.val == wx.ID_OK :
continu = True
self.parametres = prep.parametres
+# self.dlg = progressbar(self.ira, 4)
+ else :
+ return False
+ else :
+ order_actives = [[i, act, self.corpus.getlemeff(act)] for i, act in enumerate(self.actives)]
+ order_actives = sorted(order_actives, key=itemgetter(2), reverse = True)
+ with open(self.pathout['selected.csv'], 'w') as f :
+ f.write('\n'.join([repr(order_actives[val][0]) for val in self.parametres['selected']]))
+ continu = True
if continu :
self.makefiles()
script = PrintSimiScript(self)
log.info('Problem')
return False
if self.parametres['type_graph'] == 1:
+ if self.parametres['svg'] :
+ filename, ext = os.path.splitext(script.filename)
+ fileout = filename + '.svg'
+ else :
+ fileout = script.filename
if os.path.exists(self.pathout['liste_graph']):
graph_simi = read_list_file(self.pathout['liste_graph'])
- graph_simi.append([os.path.basename(script.filename), script.txtgraph])
+ graph_simi.append([os.path.basename(fileout), script.txtgraph])
else :
- graph_simi = [[os.path.basename(script.filename), script.txtgraph]]
+ graph_simi = [[os.path.basename(fileout), script.txtgraph]]
print_liste(self.pathout['liste_graph'], graph_simi)
else :
return False
-# def preferences(self) :
-# 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
-
def makesimiparam(self) :
self.paramsimi = {'coeff' : 0,
'layout' : 2,
'height' : 1000,
'bystar' : False,
'first' : True,
- 'keep_coord' : True,
+ 'keep_coord' : False,
'alpha' : 20,
'film': False,
'svg' : 0,
self.parametres['fromprof'] = False
self.corpus.make_and_write_sparse_matrix_from_uces(self.actives, self.pathout['mat01.csv'], self.pathout['listeuce1.csv'])
with open(self.pathout['actives.csv'], 'w') as f :
- f.write('\n'.join(self.actives).encode(self.ira.syscoding))
+ f.write('\n'.join(self.actives))
+
class SimiFromCluster(SimiTxt) :
- def __init__(self, ira, corpus, actives, numcluster, parametres = None, dlg = False) :
+
+ def __init__(self, ira, corpus, actives, lfreq, lchi, numcluster, parametres = None, dlg = False) :
self.actives = actives
self.numcluster = numcluster
+ self.lfreq = lfreq
+ self.lchi = lchi
parametres['name'] = 'simi_classe_%i' % (numcluster + 1)
- SimiTxt.__init__(self, ira, corpus, parametres, dlg, lemdial = False)
-
+ dlg.Destroy()
+ SimiTxt.__init__(self, ira, corpus, parametres, dlg=True, lemdial = False)
+
def preferences(self) :
return self.parametres
self.parametres['type'] = 'clustersimitxt'
self.pathout.basefiles(simipath)
self.indices = indices_simi
- self.makesimiparam()
+ if self.dlg :
+ self.makesimiparam()
if 'bystar' in self.parametres :
del self.parametres['bystar']
dictcol = dict([[i, [act, self.corpus.getlemclustereff(act, self.numcluster)]] for i, act in enumerate(self.actives)])
continu = True
if self.dlg :
- #self.listet = self.corpus.make_etoiles()
- #self.listet.sort()
- self.stars = []#copy(self.listet)
- self.parametres['stars'] = False#copy(self.listet)
- self.parametres['sfromchi'] = True
+# self.dlg.Destroy()
+ self.stars = []
+ self.parametres['stars'] = 0
+ self.parametres['sfromchi'] = 1
prep = PrepSimi(self.ira, self, self.parametres, self.pathout['selected.csv'], self.actives, indices_simi, wordlist=dictcol)
if prep.val == wx.ID_OK :
continu = True
else :
continu = False
if continu :
+ self.dlg = progressbar(self.parent, 3)
self.makefiles()
+ self.parametres['type'] = 'clustersimitxt'
script = PrintSimiScript(self)
script.make_script()
if not self.doR(script.scriptout, dlg = self.dlg, message = 'R ...') :
filename, ext = os.path.splitext(script.filename)
fileout = filename + '.svg'
else :
- fileout = self.script.filename
+ fileout = script.filename
if os.path.exists(self.pathout['liste_graph']):
graph_simi = read_list_file(self.pathout['liste_graph'])
graph_simi.append([os.path.basename(fileout), script.txtgraph])
else :
graph_simi = [[os.path.basename(fileout), script.txtgraph]]
print_liste(self.pathout['liste_graph'], graph_simi)
+ self.dlg.Destroy()
else :
return False
self.parametres['fromprof'] = True
self.corpus.make_and_write_sparse_matrix_from_classe(self.actives, self.corpus.lc[self.numcluster], self.pathout['mat01.csv'])
with open(self.pathout['actives.csv'], 'w') as f :
- f.write('\n'.join(self.actives).encode(self.ira.syscoding))
+ f.write('\n'.join(self.actives))
+ with open(self.pathout['actives_nb.csv'], 'w') as f :
+ f.write('\n'.join([repr(val) for val in self.lfreq]))
+ with open(self.pathout['actives_chi.csv'], 'w') as f :
+ f.write('\n'.join([repr(val) for val in self.lchi]))