X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=ProfList.py;h=7b593c63f7b92a60e9e4dd3d0eea947abc6ff91e;hp=1bc2c609b8a4ca4a69336ecd2b7e61bc617b9d2e;hb=4dc1de2e438378f357bcbb2fd8cf0075e0bdcd55;hpb=bd8d0a889d1d393e64a6d768dc14e9c639a0df8c diff --git a/ProfList.py b/ProfList.py index 1bc2c60..7b593c6 100644 --- a/ProfList.py +++ b/ProfList.py @@ -20,14 +20,14 @@ import wx.lib.mixins.listctrl as listmix #from tabsimi import DoSimi from listlex import ListForSpec from chemins import ConstructPathOut, ffr -from dialog import PrefExport, PrefUCECarac, SearchDial, message +from dialog import PrefExport, PrefUCECarac, SearchDial, message, MessageImage, BarFrame from tableau import Tableau from search_tools import SearchFrame import webbrowser #import cStringIO import tempfile import codecs -from functions import exec_rcode, MessageImage, progressbar, treat_var_mod, doconcorde +from functions import exec_rcode, progressbar, treat_var_mod, doconcorde from PrintRScript import barplot from textclassechd import ClasseCHD from shutil import copyfile @@ -444,18 +444,19 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col if word in fchistable : tableout.append(vchistable[fchistable.index(word)]) kwords.append(word) - tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) - txt = barplot(tableout, kwords, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) - tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) - file = open(tmpscript,'w') - file.write(txt) - file.close() - exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) - win = MessageImage(self,u"Graphique", size=(700, 500)) - win.addsaveimage(tmpgraph) - txt = "" % tmpgraph - win.HtmlPage.SetPage(txt) - win.Show(True) + BarFrame(self.Source.parent, tableout, title, kwords) +# tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) +# txt = barplot(tableout, kwords, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) +# tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) +# file = open(tmpscript,'w') +# file.write(txt) +# file.close() +# exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) +# win = MessageImage(self,u"Graphique", size=(700, 500)) +# win.addsaveimage(tmpgraph) +# txt = "" % tmpgraph +# win.HtmlPage.SetPage(txt) +# win.Show(True) else : dial = wx.MessageDialog(self, u"Ce n'est pas une forme du type variable_modalité", u"Problème", wx.OK | wx.ICON_WARNING) dial.CenterOnParent() @@ -511,7 +512,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col act = {} tableau.chi = {} tableau.lchi = self.lchi - tableau.parametre['fromprof'] = True + tableau.parametres['fromprof'] = True for i, val in enumerate(self.la) : act[val] = [self.lfreq[i]] tableau.chi[val] = [self.lchi[i]] @@ -600,10 +601,11 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col nuces = [val[1] for val in ntab2] dlg.Update(3, u'concordancier...') ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la, uci = uci) + items = dict([[i, '
'.join([ucis_txt[i], '
score : %.2f

' % ntab2[i][0], ucestxt[i]])] for i, uce in enumerate(nuces)]) dlg.Update(4, u'texte...') - win = message(self, u"Segments de texte caractéristiques - Classe %i" % self.cl, (750, 600)) - win.html = '\n' + '
'.join(['
'.join([ucis_txt[i], '
score : %.2f
' % ntab2[i][0], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' - win.HtmlPage.SetPage(win.html) + win = message(self, items, u"Segments de texte caractéristiques - Classe %i" % self.cl, (750, 600)) + #win.html = '\n' + '
'.join(['
'.join([ucis_txt[i], '
score : %.2f
' % ntab2[i][0], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' + #win.HtmlPage.SetPage(win.html) dlg.Destroy() win.Show(True) @@ -624,28 +626,29 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) nbcl = len(title) nbwords = len(words) - txt = barplot(tableout, words, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) - #print 'ATTENTION TEST R' - #txt = """ - #sink('/Users/pierre/Desktop/qdfqsdfqsdfqsdf.txt') - #Sys.getlocale() - #sink() - #""" - tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) - file = open(tmpscript,'w') - file.write(txt) - file.close() - exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) - w = 100 + (20 * nbwords) + (100 * nbcl) - h = 100 + (nbwords * 15) - if w > 1100 : w = 1100 - if h > 800 : h = 800 - if h < 450 : h = 450 - win = MessageImage(self, u"Graphique", size=(w, h)) - win.addsaveimage(tmpgraph) - txt = "" % tmpgraph - win.HtmlPage.SetPage(txt) - win.Show(True) + BarFrame(self.Source.parent, tableout, title, words) +# txt = barplot(tableout, words, title, self.Source.parent.RscriptsPath['Rgraph'], tmpgraph) +# #print 'ATTENTION TEST R' +# #txt = """ +# #sink('/Users/pierre/Desktop/qdfqsdfqsdfqsdf.txt') +# #Sys.getlocale() +# #sink() +# #""" +# tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) +# file = open(tmpscript,'w') +# file.write(txt) +# file.close() +# exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) +# w = 100 + (20 * nbwords) + (100 * nbcl) +# h = 100 + (nbwords * 15) +# if w > 1100 : w = 1100 +# if h > 800 : h = 800 +# if h < 450 : h = 450 +# win = MessageImage(self, u"Graphique", size=(w, h)) +# win.addsaveimage(tmpgraph) +# txt = "" % tmpgraph +# win.HtmlPage.SetPage(txt) +# win.Show(True) def onlexdendro(self, evt): if 'corpus' in dir(self.Source): @@ -661,35 +664,7 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col fchistable = [line[0] for line in chistable] words = self.getselectedwords() tableout = [vchistable[fchistable.index(word)] for word in words] - tmpgraph = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) - txttable = 'c(' + ','.join([','.join(line) for line in tableout]) + ')' - rownames = 'c("' + '","'.join(words) + '")' - colnames = 'c("' + '","'.join(title) + '")' - nbcl = len(title) - rownb = len(words) - txt = """ - load("%s") - di <- matrix(data=%s, nrow=%i, byrow = TRUE) - rownames(di)<- %s - colnames(di) <- %s - library(ape) - source("%s") - height <- (30*ncol(di)) + (15*nrow(di)) - height <- ifelse(height <= 400, 400, height) - width <- 500 - open_file_graph("%s", width=width, height=height) - plot.dendro.lex(tree.cut1$tree.cl, di) - """ % (self.Source.pathout['Rdendro'], txttable, rownb, rownames, colnames, self.Source.parent.RscriptsPath['Rgraph'], ffr(tmpgraph)) - tmpscript = tempfile.mktemp(dir=self.Source.parent.TEMPDIR) - file = open(tmpscript,'w') - file.write(txt) - file.close() - exec_rcode(self.Source.parent.RPath, tmpscript, wait = True) - win = MessageImage(self, u"Graphique", size=(700, 500)) - win.addsaveimage(tmpgraph) - txt = "" % tmpgraph - win.HtmlPage.SetPage(txt) - win.Show(True) + BarFrame(self.Source.parent, tableout, title, words, tree = self.Source.pathout['Rdendro']) def make_concord(self, uces, title, color = 'red') : corpus = self.Source.corpus @@ -708,16 +683,19 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col ucef += list(set(corpus.getlemucis(word)).intersection(uces)) uci = True ucis_txt, ucestxt = doconcorde(corpus, ucef, ListWord, uci = uci) - win = message(self, title, size=(750, 600)) - win.html = ('\n

%s

' % ' '.join(ListWord)) + '
'.join(['
'.join([ucis_txt[i], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' - win.HtmlPage.SetPage(win.html) + items = dict([[i, '

'.join([ucis_txt[i], ucestxt[i]])] for i in range(0,len(ucestxt))]) + win = message(self, items, title, (800, 500)) + #win = message(self, title, size=(750, 600)) + #win.html = ('\n

%s

' % ' '.join(ListWord)) + '
'.join(['
'.join([ucis_txt[i], ucestxt[i]]) for i in range(0,len(ucestxt))]) + '\n' + #win.HtmlPage.SetPage(win.html) return win def OnPopupTwo(self, event): - corpus = self.Source.corpus - uces = corpus.lc[self.cl-1] - win = self.make_concord(uces, "Concordancier - Classe %i" % self.cl) - win.Show(True) + if 'corpus' in dir(self.Source) : + corpus = self.Source.corpus + uces = corpus.lc[self.cl-1] + win = self.make_concord(uces, "Concordancier - Classe %i" % self.cl) + win.Show(True) def OnPopupThree(self, event): corpus = self.Source.corpus @@ -780,16 +758,18 @@ class ProfListctrlPanel(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.Col nb = len(ucef) rep.append([corpus.getforme(forme).forme, nb]) rep.sort(key = itemgetter(1), reverse = True) - win = message(self, u"Formes associées", wx.Size(300, 200)) - win.html = '\n' + '
'.join([' : '.join([str(val) for val in forme]) for forme in rep]) + '\n' - win.HtmlPage.SetPage(win.html) + #win = message(self, u"Formes associées", wx.Size(300, 200)) + items = dict([[i, '\t:\t'.join([str(val) for val in forme])] for i, forme in enumerate(rep)]) + win = message(self, items, u"Formes associées", (300, 200)) + #win.html = '\n' + '
'.join([' : '.join([str(val) for val in forme]) for forme in rep]) + '\n' + #win.HtmlPage.SetPage(win.html) win.Show(True) class wliste(wx.Frame): def __init__(self, parent, id, title, d, fline, size=(600, 500)): wx.Frame.__init__(self, parent, id) - self.liste = ListForSpec(self, parent, d, fline, menu = False) + self.liste = ListForSpec(self, parent, d, fline[1:], menu = False) self.button_1 = wx.Button(self, -1, "Fermer") self.Bind(wx.EVT_BUTTON, self.OnCloseMe, self.button_1) self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)