X-Git-Url: http://www.iramuteq.org/git?a=blobdiff_plain;f=tabfrequence.py;h=9e444f47edd92dad9cd3930cc74b4f9f1864117a;hb=refs%2Fheads%2F3.0;hp=376c8bf557946b59534f6aaa1be59f3d50333765;hpb=c440e446cdf3ff08f6bcd37c5061da3c5f29dc37;p=iramuteq diff --git a/tabfrequence.py b/tabfrequence.py index 376c8bf..9e444f4 100644 --- a/tabfrequence.py +++ b/tabfrequence.py @@ -1,27 +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, FreqMultiScript -from operator import itemgetter + 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 : @@ -31,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() @@ -56,7 +68,6 @@ class Frequences(AnalyseMatrix) : titles <- %s compteur <- 1 """ % (sel, listfiles, titles) - if self.parametres['NA'] : txt += """ countNA <- TRUE @@ -65,7 +76,6 @@ class Frequences(AnalyseMatrix) : txt += """ countNA <- FALSE """ - txt += """ for (i in select) { if (countNA) { @@ -110,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 = ''' + \n

Fréquences


- ''' % self.parent.SysEncoding + ''' for i in range(0, len(listtab)): pretexte += '

%s

' % (str(i), self.listtitre[i]) texte += '
\n' @@ -157,33 +167,35 @@ 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 + 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], `round((float(freq[forme][0])/tot)*100, 2)`,`len(list(set(freq[forme][1])))`, `round((float(len(list(set(freq[forme][1]))))/self.tableau.rownb)*100,2)`] 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], `line[1]`, line[2], line[3], line[4]] for line in freq] - freq.insert(0, [u'mod', 'freq', 'percent of total', 'row number', 'percent of rows']) + 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') as f : + 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 = u''' - + pretexte = ''' + \n

Fréquences


- ''' % self.parent.SysEncoding + ''' txt = """ \n' txt += '
\n
@@ -191,13 +203,5 @@ class FreqMultiple(Frequences): txt += '
'.join([''.join(line) for line in self.freq]) + '
graphgraph
' % (os.path.basename(self.pathout['barplotfreq.png']), os.path.basename(self.pathout['barplotrow.png'])) txt += "\n" - with open(self.pathout['resultats.html'], 'w') as f : + with open(self.pathout['resultats.html'], 'w', encoding='utf8') as f : f.write(pretexte + txt) - - - - - - - - \ No newline at end of file