X-Git-Url: http://www.iramuteq.org/git?a=blobdiff_plain;f=tabchi2.py;h=aa5ea7c34edf09995da0676214c9042ac7a33722;hb=refs%2Fheads%2F3.0;hp=5b47a28f40fb574393a48b77cd029b1a20cdfdd7;hpb=b5603a452507554481981b32147a60c17151cade;p=iramuteq diff --git a/tabchi2.py b/tabchi2.py index 5b47a28..aa5ea7c 100755 --- a/tabchi2.py +++ b/tabchi2.py @@ -1,23 +1,46 @@ -#!/bin/env python # -*- coding: utf-8 -*- #Author: Pierre Ratinaud -#Copyright (c) 2010 Pierre Ratinaud +#Copyright (c) 2008-2020 Pierre Ratinaud +#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020 #License: GNU/GPL -import HTML +#------------------------------------ +# import des modules python +#------------------------------------ import os import string -import wx -import os import sys import tempfile -from chemins import ffr,FFF -import wx.lib.sized_controls as sc from time import sleep + +#------------------------------------ +# import des modules wx +#------------------------------------ +import wx +import wx.lib.sized_controls as sc + +#------------------------------------ +# import des fichiers du projet +#------------------------------------ +import HTML +from chemins import ffr,FFF from functions import exec_rcode, check_Rresult from dialog import ChiDialog, PrefChi from analysematrix import AnalyseMatrix - + + +chioption = { 'valobs' : True, + 'valtheo' : True, + 'resi' : False, + 'contrib' : True, + 'pourcent' : False, + 'pourcentl' : True, + 'pourcentc' : True, + 'graph' : True, + 'bw' : False, + } + + def make_res(line) : if float(line[5]) <= 0.05 and line[6] != 'warning': line.append('green') @@ -34,7 +57,7 @@ def make_table(tabs, tab_title, res) : return ['
'.join(['%s' % (res[i][-1], tab_title), HTML.table(tab)]) for i,tab in enumerate(tabs)] def make_restab(res) : - return ['
'.join(['%s'% (line[-1], u'Résultats'),HTML.table([['chi', line[3]],['p', line[5]]])]) for i,line in enumerate(res)] + return ['
'.join(['%s'% (line[-1], 'Résultats'),HTML.table([['chi', line[3]],['p', line[5]]])]) for i,line in enumerate(res)] def make_htmlgraphs(graphs) : return ['' % os.path.basename(val) for val in graphs] @@ -46,22 +69,12 @@ def make_title(res, text) : return ['
%s
retour
' % (i, val[-1], text[i], i) for i, val in enumerate(res)] -chioption = { 'valobs' : True, - 'valtheo' : True, - 'resi' : False, - 'contrib' : True, - 'pourcent' : False, - 'pourcentl' : True, - 'pourcentc' : True, - 'graph' : True, - 'bw' : False, - } - class ChiSquare(AnalyseMatrix): + def doparametres(self, dlg = None): if dlg is None : return - dial = ChiDialog(self.parent, -1, u"Chi2", chioption, self.tableau, size=(400, 350), + dial = ChiDialog(self.parent, -1, "Chi2", chioption, self.tableau, size=(400, 350), style = wx.DEFAULT_DIALOG_STYLE ) dial.CenterOnParent() @@ -88,26 +101,11 @@ class ChiSquare(AnalyseMatrix): dial.dial.Destroy() dial.Destroy() self.parametres = None - - def doanalyse(self): - - #self.dlg=wx.ProgressDialog("Traitements", - # "Veuillez patienter...", - # maximum = 4, - # parent=parent, - # style = wx.PD_APP_MODAL|wx.PD_AUTO_HIDE|wx.PD_ELAPSED_TIME - # ) - - - - self.count += 1 - keepGoing = self.dlg.Update(self.count,u"Analyse dans R...") - #analyse=MakeChi2(self.parent, self.colsel1, self.colsel2, self.chioption, self.tableau) - #self.tableau = tableau + def doanalyse(self): + self.count = 1 + keepGoing = self.dlg.Update(self.count,"Analyse dans R...") self.OutFrame=tempfile.mktemp(dir=self.parent.TEMPDIR) - print self.OutFrame - #self.parent=parent self.encode=self.parent.encode self.TEMPDIR=self.parent.TEMPDIR self.RPath=self.parent.PathPath.get('PATHS','rpath') @@ -124,10 +122,6 @@ class ChiSquare(AnalyseMatrix): txt=""" source("%s") """%ffr(self.parent.RscriptsPath['Rfunct']) -# if parent.tableau.: rownames=1 -# else : rownames='NULL' -# if parent.g_header : header = 'TRUE' -# else : header = 'FALSE' txt += """ source("%s") """ % ffr(self.parent.RscriptsPath['Rgraph']) @@ -149,13 +143,13 @@ class ChiSquare(AnalyseMatrix): cont<-1 """%(ffr(self.tableau.parametres['csvfile']), self.tableau.parametres['syscoding']) if len(self.colsel1)==1: - strsel1=str(self.colsel1).replace(',','') + strsel1=str(tuple(self.colsel1)).replace(',','') else: - strsel1=str(self.colsel1) + strsel1=str(tuple(self.colsel1)) if len(self.colsel2)==1: - strsel2=str(self.colsel2).replace(',','') + strsel2=str(tuple(self.colsel2)).replace(',','') else: - strsel2=str(self.colsel2) + strsel2=str(tuple(self.colsel2)) txt+=""" for (i in c%s) {""" % strsel1 txt+=""" @@ -313,8 +307,8 @@ class ChiSquare(AnalyseMatrix): write.csv2(frameout,file="%s") """ % (ffr(self.parametres['pathout']),ffr(self.OutFrame)) tmpfile=tempfile.mktemp(dir=self.TEMPDIR) - print tmpfile - tmpscript=open(tmpfile,'w') + print(tmpfile) + tmpscript=open(tmpfile,'w', encoding='utf8') tmpscript.write(txt) tmpscript.close() pid = exec_rcode(self.RPath, tmpfile, wait = False) @@ -322,61 +316,56 @@ class ChiSquare(AnalyseMatrix): sleep(0.2) check_Rresult(self.parent, pid) self.count += 1 - keepGoing = self.dlg.Update(self.count,u"Ecriture des résultats") - + keepGoing = self.dlg.Update(self.count,"Ecriture des résultats") listfileout = self.dolayout(self.chioption) - #listfileout=dlg.ShowChi2(ColSel1,ColSel2) - #parent.FreqNum += 1 - #parent.DictTab[u"Chi2_%s*"%parent.FreqNum]=listfileout -# parent.newtab = wx.html.HtmlWindow(parent.nb, -1) -# if "gtk2" in wx.PlatformInfo: -# parent.newtab.SetStandardFonts() -# parent.newtab.LoadPage(listfileout[len(listfileout)-1]) -# parent.nb.AddPage(parent.newtab,u"Chi2_%s*"%parent.FreqNum) -# parent.nb.SetSelection(parent.nb.GetPageCount()-1) -# parent.ShowTab(wx.EVT_BUTTON) -# parent.DisEnSaveTabAs(True) -# self.count += 1 -# keepGoing = self.dlg.Update(self.count,u"Fini") + #listfileout=dlg.ShowChi2(ColSel1,ColSel2) + #parent.FreqNum += 1 + #parent.DictTab[u"Chi2_%s*"%parent.FreqNum]=listfileout + #parent.newtab = wx.html.HtmlWindow(parent.nb, -1) + #if "gtk2" in wx.PlatformInfo: + #parent.newtab.SetStandardFonts() + #parent.newtab.LoadPage(listfileout[len(listfileout)-1]) + #parent.nb.AddPage(parent.newtab,u"Chi2_%s*"%parent.FreqNum) + #parent.nb.SetSelection(parent.nb.GetPageCount()-1) + #parent.ShowTab(wx.EVT_BUTTON) + #parent.DisEnSaveTabAs(True) + #self.count += 1 + #keepGoing = self.dlg.Update(self.count,u"Fini") def dolayout(self, option): ListFile=[False] - file=open(self.OutFrame,'rU') + file=open(self.OutFrame,'r', encoding='utf8') content=file.readlines() file.close() lcont = [line.replace('"','').replace('\n','').split(';') for line in content] - lcont.pop(0) lcont.pop(0) - allcoord = [] names = [] - res = [chi for chi in lcont if chi[0]=='res'] res = [make_res(line) for line in res] coord_res = [i for i,chi in enumerate(lcont) if chi[0]=='res'] if option['valobs']: allcoord.append([i for i,chi in enumerate(lcont) if chi[1]=='*obs*']) - names.append(u'Valeurs observées') + names.append('Valeurs observées') if option['valtheo'] : allcoord.append([i for i,chi in enumerate(lcont) if chi[1]=='*exp*']) - names.append(u'Valeurs théoriques') + names.append('Valeurs théoriques') if option['resi'] : allcoord.append([i for i,chi in enumerate(lcont) if chi[1]=='*resi*']) - names.append(u'Residuals') + names.append('Residuals') if option['contrib'] : allcoord.append([i for i,chi in enumerate(lcont) if chi[1]=='*contrib*']) - names.append(u'Contributions a posteriori') + names.append('Contributions a posteriori') if option['pourcent'] : allcoord.append([i for i,chi in enumerate(lcont) if chi[1]=='*pr*']) - names.append(u'Pourcentages') + names.append('Pourcentages') if option['pourcentl'] : allcoord.append([i for i,chi in enumerate(lcont) if chi[1]=='*prl*']) - names.append(u'Pourcentages en ligne') + names.append('Pourcentages en ligne') if option['pourcentc'] : allcoord.append([i for i,chi in enumerate(lcont) if chi[1]=='*prc*']) - names.append(u'Pourcentages en colonne') - + names.append('Pourcentages en colonne') allcoord.append(coord_res) allhtml = [[clean_line(lcont[allcoord[i][j]+1:allcoord[i+1][j]]) for j, line in enumerate(allcoord[i])] for i, tab in enumerate(allcoord) if i!=len(allcoord)-1] allhtml = [make_table(val,names[i],res) for i,val in enumerate(allhtml)] @@ -385,16 +374,14 @@ class ChiSquare(AnalyseMatrix): allhtml.insert(0,html_res) titles = make_title(res, self.TextCroise) allhtml.insert(0,titles) - if option['graph'] : graphs = [line[7] for line in res] ListFile += graphs html_graphs = make_htmlgraphs(graphs) allhtml.append(html_graphs) - - header=u""" + header=""" \n - \n + \n \n

Test du Chi2

\n
@@ -404,14 +391,12 @@ class ChiSquare(AnalyseMatrix): p <= 0.05 mais il y a des valeurs théoriques < 5
p > 0.05

- """%self.parent.SysEncoding - + """ pretxt = '
\n'.join(links)+'


\n' txt = '


\n'.join(['

'.join([tab[i] for tab in allhtml]) for i,val in enumerate(res)]) txt = header + pretxt + txt + '\n' - fileout=os.path.join(self.parametres['pathout'],'resultats-chi2.html') - with open(fileout, 'w') as f : + with open(fileout, 'w',encoding='utf8') as f : f.write(txt) ListFile.append(fileout) - return ListFile \ No newline at end of file + return ListFile