X-Git-Url: http://iramuteq.org/git?a=blobdiff_plain;f=tabchi2.py;h=8d6f208687e7c844d5135372842f8df9ebecdd83;hb=9ea4c8f11aae4e01a21f4b48231c56a915ead1cb;hp=5b47a28f40fb574393a48b77cd029b1a20cdfdd7;hpb=b5603a452507554481981b32147a60c17151cade;p=iramuteq
diff --git a/tabchi2.py b/tabchi2.py
index 5b47a28..8d6f208 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,7 +307,7 @@ class ChiSquare(AnalyseMatrix):
write.csv2(frameout,file="%s")
""" % (ffr(self.parametres['pathout']),ffr(self.OutFrame))
tmpfile=tempfile.mktemp(dir=self.TEMPDIR)
- print tmpfile
+ print(tmpfile)
tmpscript=open(tmpfile,'w')
tmpscript.write(txt)
tmpscript.close()
@@ -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')
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,14 +374,12 @@ 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