X-Git-Url: http://www.iramuteq.org/git?a=blobdiff_plain;f=tabchdalc.py;h=e4c8fc5e6096cc34ca732b383b0288ee78ec7c6c;hb=refs%2Fheads%2F3.0;hp=2b101dc5e12cdf4d29443a11c5a71ee8e7289701;hpb=6919f2ef8d85c176c7be824b606c4b71142e10fd;p=iramuteq diff --git a/tabchdalc.py b/tabchdalc.py index 2b101dc..e4c8fc5 100644 --- a/tabchdalc.py +++ b/tabchdalc.py @@ -1,23 +1,35 @@ -#!/bin/env python # -*- coding: utf-8 -*- #Author: Pierre Ratinaud -#Copyright (c) 2008-2009 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 +import sys +import tempfile +import time + +#------------------------------------ +# import des modules wx +#------------------------------------ +import wx + +#------------------------------------ +# import des fichiers du projet +#------------------------------------ from chemins import ConstructPathOut, ChdTxtPathOut, ConstructAfcUciPath, ffr, PathOut from functions import sortedby, CreateIraFile, print_liste, exec_rcode, check_Rresult from PrintRScript import RchdQuest from layout import OpenCHDS, PrintRapport from dialog import PrefQuestAlc from analysematrix import AnalyseMatrix -import os -import sys -import wx -import tempfile -import time class AnalyseQuest(AnalyseMatrix): + def doparametres(self, dlg = None): if dlg is not None : dial = PrefQuestAlc(self.parent, self.tableau) @@ -35,7 +47,7 @@ class AnalyseQuest(AnalyseMatrix): else : self.parametres = None dial.Destroy() - # DoQuestAlceste(parent, parametres) + # DoQuestAlceste(parent, parametres) #class DoQuestAlceste(AnalyseMatrix): def doanalyse(self): @@ -61,29 +73,23 @@ class AnalyseQuest(AnalyseMatrix): # parent=self.parent, # style=wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME # ) - #AnalyseMatrix.__init__(self, parent, parent.tableau, self.parametres, dlg = dlg) - - - -#----------------------------------------------------------- -# def doanalyse(self) : -#------------------------------------------------------------------- + #----------------------------------------------------------- + # def doanalyse(self) : + #------------------------------------------------------------ #self.dictpathout = self.pathout self.pathout.basefiles(ChdTxtPathOut) self.tableau.pathout.basefiles(ChdTxtPathOut) -# self.parent.tableau.dictpathout = self.dictpathout - + #self.parent.tableau.dictpathout = self.dictpathout self.dlg.Center() count = 1 keepGoing = self.dlg.Update(count) -#------------------------------------------------------------------- + #------------------------------------------------------------------- count += 1 - self.dlg.Update(count, u"passage en O/1") + self.dlg.Update(count, "passage en O/1") if 'formatted' in self.parametres: self.tableau.make_01_alc_format(self.pathout['mat01.csv']) else: - print self.parametres['listsup'] self.tableau.make_01_from_selection(self.parametres['listact'], self.parametres['listsup']) file = open(self.pathout['listeuce1'], 'w') file.write('num uce;num uc\n') @@ -91,20 +97,22 @@ class AnalyseQuest(AnalyseMatrix): file.write('%i;%i\n' % (i, i)) file.close() self.nbind = len(self.tableau.linecontent) -#------------------------------------------------------------ + #------------------------------------------------------------ RchdQuest(self.pathout, self.parent.RscriptsPath, self.parametres['nbcl_p1'], self.parametres['mincl']) -#------------------------------------------------------------ + #------------------------------------------------------------ count += 1 - self.dlg.Update(count, u"Analyse (patientez...)") - + self.dlg.Update(count, "Analyse (patientez...)") pid = exec_rcode(self.parent.RPath, self.pathout['Rchdquest'], wait = False) while pid.poll() == None : - self.dlg.Pulse(u"Analyse (patientez...)") + self.dlg.Pulse("Analyse (patientez...)") time.sleep(0.2) - check_Rresult(self.parent, pid) -#------------------------------------------------------------ + if not check_Rresult(self.parent, pid) : + if self.dlg : + self.dlg.Destroy() + return 'NOK' + #------------------------------------------------------------ count += 1 - self.dlg.Update(count, u"Ecriture des résultats") + self.dlg.Update(count, "Ecriture des résultats") self.tableau.buildprofil() self.clnb = self.tableau.clnb self.parametres['clnb'] = self.clnb @@ -112,38 +120,37 @@ class AnalyseQuest(AnalyseMatrix): self.BuildProfile() temps = time.time() - self.t1 PrintRapport(self, self, {}, istxt = False) - self.tableau.save_tableau(self.pathout['db']) + self.tableau.save_tableau(self.pathout['analyse.db']) #CreateIraFile(self.dictpathout, self.clnb, corpname = os.path.basename(self.parent.filename), section = 'questionnaire') - afc_graph_list = [[os.path.basename(self.pathout['AFC2DL_OUT']), u'Variables actives - coordonnées - facteurs 1 / 2'], - [os.path.basename(self.pathout['AFC2DSL_OUT']), u'variables illustratives - coordonnées - facteurs 1 / 2'], - [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']] - chd_graph_list.append([os.path.basename(self.pathout['arbre1']), u'chd1']) + afc_graph_list = [[os.path.basename(self.pathout['AFC2DL_OUT']), 'Variables actives - coordonnées - facteurs 1 / 2'], + [os.path.basename(self.pathout['AFC2DSL_OUT']), 'variables illustratives - coordonnées - facteurs 1 / 2'], + [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']] + chd_graph_list.append([os.path.basename(self.pathout['arbre1']), 'chd1']) print_liste(self.pathout['liste_graph_afc'], afc_graph_list) print_liste(self.pathout['liste_graph_chd'], chd_graph_list) - #self.tableau = self.parent.tableau #OpenCHDS(self.parent, self, self.dictpathout['ira'], False) -#------------------------------------------------------------ - print 'fini', time.time() - self.t1 + #------------------------------------------------------------ + print('fini', time.time() - self.t1) count += 1 self.dlg.Update(count, "Fini") - + def BuildProfile(self): - print 'build profile' + print('build profile') txt = '' txt += """ source("%s") - """ % self.parent.RscriptsPath['chdfunct'] + """ % ffr(self.parent.RscriptsPath['chdfunct']) txt += """ load("%s") - """ % self.pathout['RData'] + """ % ffr(self.pathout['RData']) txt += """ dataact<-read.csv2("%s", header = FALSE, sep = ';',quote = '\"', row.names = 1, na.strings = 'NA') - """ % self.pathout['Contout'] + """ % ffr(self.pathout['Contout']) txt += """ dataet<-read.csv2("%s", header = FALSE, sep = ';',quote = '\"', row.names = 1, na.strings = 'NA') - """ % self.pathout['ContEtOut'] + """ % ffr(self.pathout['ContEtOut']) txt += """ clnb<-%i """ % self.clnb @@ -151,7 +158,7 @@ class AnalyseQuest(AnalyseMatrix): tablesqrpact<-BuildProf(as.matrix(dataact),n1,clnb) tablesqrpet<-BuildProf(as.matrix(dataet),n1,clnb) PrintProfile(n1,tablesqrpact[4],tablesqrpet[4],tablesqrpact[5],tablesqrpet[5],%i,"%s","%s") - """ % (self.clnb, self.pathout['PROFILE_OUT'], self.pathout['ANTIPRO_OUT']) + """ % (self.clnb, ffr(self.pathout['PROFILE_OUT']), ffr(self.pathout['ANTIPRO_OUT'])) txt += """ colnames(tablesqrpact[[2]])<-paste('classe',1:clnb,sep=' ') colnames(tablesqrpact[[1]])<-paste('classe',1:clnb,sep=' ') @@ -161,13 +168,13 @@ class AnalyseQuest(AnalyseMatrix): ptabletot<-rbind(as.data.frame(tablesqrpact[1]),as.data.frame(tablesqrpet[1])) gbcluster<-n1 write.csv2(chistabletot,file="%s") - """ % self.pathout['chisqtable'] + """ % ffr(self.pathout['chisqtable']) txt += """ write.csv2(ptabletot,file="%s") - """ % self.pathout['ptable'] + """ % ffr(self.pathout['ptable']) txt += """ write.csv2(gbcluster,file="%s") - """ % self.pathout['SbyClasseOut'] + """ % ffr(self.pathout['SbyClasseOut']) if self.clnb > 2 : txt += """ library(ca) @@ -180,38 +187,35 @@ class AnalyseQuest(AnalyseMatrix): fin<-rowtot afc<-AddCorrelationOk(afc) source("%s") - """ % self.parent.RscriptsPath['Rgraph'] - + """ % ffr(self.parent.RscriptsPath['Rgraph']) txt += """ afc <- summary.ca.dm(afc) afc_table <- create_afc_table(afc) write.csv2(afc_table$facteur, file = "%s") write.csv2(afc_table$colonne, file = "%s") write.csv2(afc_table$ligne, file = "%s") - """ % (self.pathout['afc_facteur'], self.pathout['afc_col'], self.pathout['afc_row']) - + """ % (ffr(self.pathout['afc_facteur']), ffr(self.pathout['afc_col']), ffr(self.pathout['afc_row'])) txt += """ xlab <- paste('facteur 1 - ', round(afc$facteur[1,2],2), sep = '') ylab <- paste('facteur 2 - ', round(afc$facteur[2,2],2), sep = '') xlab <- paste(xlab, ' %', sep = '') ylab <- paste(ylab, ' %', sep = '') """ - txt += """ PARCEX<-%s """ % "0.9" txt += """ xyminmax <- PlotAfc2dCoul(afc, as.data.frame(chistabletot), "%s", what='coord', deb=1, fin=(debet-1), xlab = xlab, ylab = ylab) - """ % (self.pathout['AFC2DL_OUT']) + """ % (ffr(self.pathout['AFC2DL_OUT'])) txt += """ PlotAfc2dCoul(afc, as.data.frame(chistabletot), "%s", what='coord', deb=debet, fin=fin, xlab = xlab, ylab = ylab, xmin = xyminmax$xminmax[1], xmax = xyminmax$xminmax[2], ymin = xyminmax$yminmax[1], ymax = xyminmax$yminmax[2]) - """ % (self.pathout['AFC2DSL_OUT']) + """ % (ffr(self.pathout['AFC2DSL_OUT'])) txt += """ PlotAfc2dCoul(afc, as.data.frame(chistabletot), "%s", col = TRUE, what='coord', xlab = xlab, ylab = ylab, xmin = xyminmax$xminmax[1], xmax = xyminmax$xminmax[2], ymin = xyminmax$yminmax[1], ymax = xyminmax$yminmax[2]) - """ % (self.pathout['AFC2DCL_OUT']) + """ % (ffr(self.pathout['AFC2DCL_OUT'])) txt += """ save.image(file="%s") - """ % self.pathout['RData'] + """ % ffr(self.pathout['RData']) tmpfile = tempfile.mktemp(dir=self.parent.TEMPDIR) tmpscript = open(tmpfile, 'w') tmpscript.write(txt)