X-Git-Url: http://iramuteq.org/git?a=blobdiff_plain;f=tabfrequence.py;h=9e444f47edd92dad9cd3930cc74b4f9f1864117a;hb=94690e4dfeb4c923fd4476cc5f4f93cdcc716327;hp=328e61071fd2ad26e57c03b6293fc839df9ab83a;hpb=238d461ff111b1bc3302494de4d9b630f9e9f623;p=iramuteq
diff --git a/tabfrequence.py b/tabfrequence.py
index 328e610..9e444f4 100644
--- a/tabfrequence.py
+++ b/tabfrequence.py
@@ -1,26 +1,39 @@
-#!/bin/env python
# -*- coding: utf-8 -*-
#Author: Pierre Ratinaud
-#Copyright (c) 2008 Pierre Ratinaud
+#Copyright (c) 2008-2020 Pierre Ratinaud
+#modification pour python 3 : Laurent Mérat, 6x7 - mai 2020
#License: GNU/GPL
-#from __future__ import division
+#------------------------------------
+# import des modules python
+#------------------------------------
import os
-import wx
-from chemins import ffr, FFF
import tempfile
from time import sleep
+from operator import itemgetter
+
+#------------------------------------
+# import des modules wx
+#------------------------------------
+import wx
+
+#------------------------------------
+# import des fichiers du projet
+#------------------------------------
+from chemins import ffr, FFF
from analysematrix import AnalyseMatrix
from functions import exec_rcode, check_Rresult
from dialog import FreqDialog
-from PrintRScript import PrintRScript
+from PrintRScript import PrintRScript, FreqMultiScript
+
class Frequences(AnalyseMatrix) :
+
def doparametres(self, dlg=None) :
if dlg is None :
return
else :
- dial = FreqDialog(self.parent, self.tableau.get_colnames(), u"Fréquences")
+ dial = FreqDialog(self.parent, self.tableau.get_colnames(), "Fréquences")
dial.CenterOnParent()
val = dial.ShowModal()
if val == wx.ID_OK :
@@ -30,7 +43,7 @@ class Frequences(AnalyseMatrix) :
else :
self.parametres = None
dial.Destroy()
-
+
def doanalyse(self):
self.pathout.createdir(self.parametres['pathout'])
header = self.tableau.get_colnames()
@@ -55,7 +68,6 @@ class Frequences(AnalyseMatrix) :
titles <- %s
compteur <- 1
""" % (sel, listfiles, titles)
-
if self.parametres['NA'] :
txt += """
countNA <- TRUE
@@ -64,7 +76,6 @@ class Frequences(AnalyseMatrix) :
txt += """
countNA <- FALSE
"""
-
txt += """
for (i in select) {
if (countNA) {
@@ -109,34 +120,34 @@ class Frequences(AnalyseMatrix) :
self.Rscript.write()
self.doR(self.Rscript.scriptout)
self.dolayout()
-
+
def dolayout(self):
listtab = []
tab = []
- with open(self.outframe) as f :
+ with open(self.outframe, 'r', encoding='utf8') as f :
content = f.read().splitlines()
content.pop(0)
content.pop(0)
content = ['\t'.join(line.split('\t')[1:]).replace('"','') for line in content]
content = '\n'.join(content)
- content = content.split(u'***\t****\t****')
+ content = content.split('***\t****\t****')
content = [[line.split('\t') for line in tab.splitlines() if line.split('\t') != ['']] for tab in content]
listtab = [tab for tab in content if tab != []]
texte = ''
#for ligne in content:
# ligne = ligne.replace('"', '')
# ligne = ligne.split('\t')
- # if ligne[1] == u'***' :
+ # if ligne[1] == '***' :
# if tab != []:
# listtab.append(tab)
# tab = []
# else :
# tab.append(ligne)
- pretexte = u'''
-
+ pretexte = '''
+
\nFréquences
- ''' % self.parent.SysEncoding
+ '''
for i in range(0, len(listtab)):
pretexte += '%s
' % (str(i), self.listtitre[i])
texte += '
\n'
@@ -156,7 +167,41 @@ class Frequences(AnalyseMatrix) :
""" % os.path.basename(self.fileforR[i])
texte += '\n'
fileout = os.path.join(self.pathout.dirout, 'resultats.html')
- with open(fileout, 'w') as f :
+ with open(fileout, 'w', encoding='utf8') as f :
f.write(pretexte + texte)
#return fileout
-
\ No newline at end of file
+
+
+class FreqMultiple(Frequences):
+
+ def doanalyse(self):
+ select = self.parametres['colsel']
+ freq = self.tableau.countmultiple(select)
+ tot = sum([freq[forme][0] for forme in freq])
+ freq = [[forme, freq[forme][0], repr(round((float(freq[forme][0])/tot)*100, 2)),repr(len(list(set(freq[forme][1])))), repr(round((float(len(list(set(freq[forme][1]))))/self.tableau.rownb)*100,2))] for forme in freq]
+ freq = sorted(freq, key=itemgetter(1), reverse=True)
+ freq = [[line[0], repr(line[1]), line[2], line[3], line[4]] for line in freq]
+ freq.insert(0, ['mod', 'freq', 'percent of total', 'row number', 'percent of rows'])
+ self.freq = freq
+ with open(self.pathout['frequences.csv'], 'w', encoding='utf8') as f :
+ f.write('\n'.join(['\t'.join(line) for line in freq]))
+ self.rscript = FreqMultiScript(self)
+ self.rscript.make_script()
+ self.doR(self.rscript.scriptout)
+ self.dolayout()
+
+ def dolayout(self):
+ pretexte = '''
+
+ \nFréquences
+
+ '''
+ txt = """
+ \n\n
+
+ """
+ txt += ' | '.join([' | '.join(line) for line in self.freq]) + ' |
|
'
+ txt += ' | |
' % (os.path.basename(self.pathout['barplotfreq.png']), os.path.basename(self.pathout['barplotrow.png']))
+ txt += "\n"
+ with open(self.pathout['resultats.html'], 'w', encoding='utf8') as f :
+ f.write(pretexte + txt)