X-Git-Url: http://www.iramuteq.org/git?a=blobdiff_plain;f=textreinert.py;h=30ec9593a3e7ab70c7ca465c554f5354c0aab323;hb=refs%2Fheads%2F3.0;hp=b15273feee228819100c143de24760370f4362f8;hpb=e950507e6d72b808f1f06131eaa561676eb27fad;p=iramuteq diff --git a/textreinert.py b/textreinert.py index b15273f..30ec959 100644 --- a/textreinert.py +++ b/textreinert.py @@ -1,19 +1,28 @@ # -*- coding: utf-8 -*- -# Author: Pierre Ratinaud -# lisence : GNU GPL -# copyright : 2014 (c) Pierre Ratinaud +#Author: Pierre Ratinaud +#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 from time import time + +#------------------------------------ +# import des fichiers du projet +#------------------------------------ from analysetxt import AnalyseText -from OptionAlceste import OptionAlc -from PrintRScript import RchdTxt, AlcesteTxtProf +from OptionAlceste import OptionAlc +from PrintRScript import RchdTxt, ReinertTxtProf, TgenProfScript, ReDoProfScript from layout import PrintRapport -from chemins import ChdTxtPathOut -from functions import DoConf, print_liste +from chemins import ChdTxtPathOut, PathOut +from functions import DoConf, print_liste, TGen class Reinert(AnalyseText) : + def doanalyse(self) : self.parametres['type'] = 'alceste' self.pathout.basefiles(ChdTxtPathOut) @@ -45,14 +54,17 @@ class Reinert(AnalyseText) : self.doR(Rscript, dlg=self.dlg, message='profils et A.F.C. ...') self.time = time() - self.t1 minutes, seconds = divmod(self.time, 60) - hours, minutes = divmod(minutes, 60) + hours, minutes = divmod(minutes, 60) self.parametres['time'] = '%.0fh %.0fm %.0fs' % (hours, minutes, seconds) self.print_graph_files() def preferences(self) : + print('parametres en entree config alceste', self.parametres) parametres = DoConf(self.parent.ConfigPath['reinert']).getoptions('ALCESTE') + print('parametres apres doconf', parametres) parametres['corpus'] = self.corpus parametres['pathout'] = self.pathout + parametres['lem'] = self.parametres['lem'] self.dial = OptionAlc(self.parent, parametres) self.dial.CenterOnParent() self.dialok = self.dial.ShowModal() @@ -70,8 +82,9 @@ class Reinert(AnalyseText) : parametres['mode.patate'] = self.dial.check_patate.GetValue() DoConf(self.parent.ConfigPath['reinert']).makeoptions(['ALCESTE'], [parametres]) self.dial.Destroy() - print parametres - return parametres + print(parametres) + self.parametres.update(parametres) + return self.parametres else : self.dial.Destroy() return None @@ -81,21 +94,65 @@ class Reinert(AnalyseText) : return self.pathout['Rchdtxt'] def printRscript2(self) : - AlcesteTxtProf(self.pathout, self.parent.RscriptsPath, self.clnb, 0.9) + ReinertTxtProf(self.pathout, self.parent.RscriptsPath, self.clnb, 0.9) return self.pathout['RTxtProfGraph'] def print_graph_files(self) : - mess_afc = u"La position des points n'est peut être pas exacte" - afc_graph_list = [[os.path.basename(self.pathout['AFC2DL_OUT']), u'Variables actives - coordonnées - 30 points par classes - facteurs 1 / 2 - %s' % mess_afc], - [os.path.basename(self.pathout['AFC2DSL_OUT']), u'variables supplémentaires - coordonnées - 30 points par classes - facteurs 1 / 2 - %s' % mess_afc], - [os.path.basename(self.pathout['AFC2DEL_OUT']), u'Variables illustratives - Coordonnées - 30 points par classes - facteur 1 / 2 - %s' % mess_afc], - [os.path.basename(self.pathout['AFC2DCL_OUT']), u'Classes - Coordonnées - facteur 1 / 2']] - chd_graph_list = [[os.path.basename(self.pathout['dendro1']), u'dendrogramme à partir de chd1']] + mess_afc = "La position des points n'est peut être pas exacte" + afc_graph_list = [[os.path.basename(self.pathout['AFC2DL_OUT']), 'Variables actives - coordonnées - 30 points par classes - facteurs 1 / 2 - %s' % mess_afc], + [os.path.basename(self.pathout['AFC2DSL_OUT']), 'variables supplémentaires - coordonnées - 30 points par classes - facteurs 1 / 2 - %s' % mess_afc], + [os.path.basename(self.pathout['AFC2DEL_OUT']), 'Variables illustratives - Coordonnées - 30 points par classes - facteur 1 / 2 - %s' % mess_afc], + [os.path.basename(self.pathout['AFC2DCL_OUT']), 'Classes - Coordonnées - facteur 1 / 2']] + chd_graph_list = [[os.path.basename(self.pathout['dendro1']), 'dendrogramme à partir de chd1']] if self.parametres['classif_mode'] == 0 : - chd_graph_list.append([os.path.basename(self.pathout['dendro2']), u'dendrogramme à partir de chd2']) - chd_graph_list.append([os.path.basename(self.pathout['arbre1']), u'chd1']) + chd_graph_list.append([os.path.basename(self.pathout['dendro2']), 'dendrogramme à partir de chd2']) + chd_graph_list.append([os.path.basename(self.pathout['arbre1']), 'chd1']) if self.parametres['classif_mode'] == 0 : - chd_graph_list.append([os.path.basename(self.pathout['arbre2']), u'chd2']) + chd_graph_list.append([os.path.basename(self.pathout['arbre2']), 'chd2']) print_liste(self.pathout['liste_graph_afc'], afc_graph_list) print_liste(self.pathout['liste_graph_chd'], chd_graph_list) - PrintRapport(self, self.corpus, self.parametres) \ No newline at end of file + PrintRapport(self, self.corpus, self.parametres) + +class TgenProf(AnalyseText): + def __init__(self, ira, corpus, parametres, cluster_size): + self.ira = ira + self.corpus = corpus + self.parametres = parametres + self.pathout = PathOut(dirout = self.parametres['pathout']) + self.cluster_size = [len(classe) for classe in corpus.lc] + self.doanalyse() + + def doanalyse(self): + self.tgen = TGen(path = self.parametres['tgenpath'], encoding = self.ira.syscoding) + self.tgen.read(self.tgen.path) + #self.parametres['etoiles'].sort() + self.parametres['tgeneff'] = os.path.join(self.parametres['pathout'], 'tgeneff.csv') + tgenst = self.corpus.make_tgen_profile(self.tgen.tgen, self.corpus.lc) + clnames = ['cluster_%03d' % i for i in range(1, len(self.cluster_size) + 1)] + et = dict(list(zip(clnames, self.cluster_size))) + tgenst = dict([[line[0], dict(list(zip(clnames, line[1:])))] for line in tgenst]) + self.tgen.writetable(self.parametres['tgeneff'], tgenst, et) + self.parametres['tgenspec'] = os.path.join(self.parametres['pathout'], 'tgenchi2.csv') + self.parametres['tgenlemeff'] = os.path.join(self.parametres['pathout'], 'tgenlemeff.csv') + self.parametres['tgenlemspec'] = os.path.join(self.parametres['pathout'], 'tgenlemchi2.csv') + tgenlemeff = dict([[lem, dict(list(zip(clnames, self.corpus.tgenlem[lem])))] for lem in self.corpus.tgenlem]) + self.tgen.writetable(self.parametres['tgenlemeff'], tgenlemeff, et) + self.Rscript = TgenProfScript(self) + self.Rscript.make_script() + self.Rscript.write() + self.doR(self.Rscript.scriptout, dlg = False, message = 'R...') + + +class ReDoProfile(AnalyseText): + + def __init__(self, ira, corpus, analyses, parametres): + self.ira = ira + self.corpus = corpus + self.parametres = parametres + self.analyse = analyse + self.pathout = PathOut(dirout = self.parametres['pathout']) + #self.cluster_size = [len(classe) for classe in corpus.lc] + self.doanalyse() + + def Rscript(self) : + script = ReDoProfScript(self)