self.coding = coding
self.itempath = itempath
self.parent = self.GetParent()#parent
- self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "courier"))
+ self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Arial"))
self.labels = []
self.listimg = []
self.buts = []
self.listimg.append(hl.HyperLinkCtrl(self.panel_1, -1, os.path.join(self.dirout,list_graph[i][0]), URL=os.path.join(self.dirout,list_graph[i][0])))
else :
self.listimg.append(wx.StaticBitmap(self.panel_1, -1, wx.Bitmap(os.path.join(self.dirout,list_graph[i][0]), wx.BITMAP_TYPE_ANY)))
- self.labels.append(wx.StaticText(self.panel_1, -1, list_graph[i][1]))
+ if os.path.exists(os.path.join(self.dirout,list_graph[i][0] + '_notplotted.csv')) :
+ txt = u' - liste des points non représentés : %s' % os.path.join(self.dirout,list_graph[i][0] + '_notplotted.csv')
+ else :
+ txt = ''
+ self.labels.append(wx.StaticText(self.panel_1, -1, list_graph[i][1] + txt))
self.buts.append(wx.Button(self.panel_1, wx.ID_DELETE, name = `i - b`))
else :
todel.append(i)
self.panel_1.EnableScrolling(True,True)
#self.panel_1.SetSize((1000,1000))
self.panel_1.SetScrollRate(20, 20)
+ self.panel_1.SetFocus()
def __do_layout(self):
self.sizer_1 = wx.BoxSizer(wx.VERTICAL)
self.Dict = dico
self.txt = txt
self.parent = parent
- self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.FONTWEIGHT_BOLD, 0, "courier"))
+ self.SetFont(wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Arial"))
self.labels = []
self.listimg = []
self.dirout = os.path.dirname(self.Dict['ira'])
self.deb = wx.StaticText(self, -1, txt)
for i in range(0,len(list_graph)):
if os.path.exists(os.path.join(self.dirout,list_graph[i][0])) :
- self.listimg.append(wx.StaticBitmap(self, -1, wx.Bitmap(os.path.join(self.dirout,list_graph[i][0]), wx.BITMAP_TYPE_ANY)))
+ filename, ext = os.path.splitext(list_graph[i][0])
+ if ext == '.svg' :
+ self.listimg.append(hl.HyperLinkCtrl(self, -1, os.path.join(self.dirout,list_graph[i][0]), URL=os.path.join(self.dirout,list_graph[i][0])))
+ else :
+ self.listimg.append(wx.StaticBitmap(self, -1, wx.Bitmap(os.path.join(self.dirout,list_graph[i][0]), wx.BITMAP_TYPE_ANY)))
self.labels.append(wx.StaticText(self, -1, list_graph[i][1]))
-
+ self.Bind(wx.EVT_MOTION, self.onMouseMove)
self.__set_properties()
self.__do_layout()
def __set_properties(self):
+ self.EnableScrolling(True,True)
self.SetScrollRate(20, 20)
+ self.SetFocus()
+
def __do_layout(self):
self.sizer_1 = wx.BoxSizer(wx.VERTICAL)
self.sizer_2.Add(self.sizer_1, 1, wx.EXPAND, 0)
self.SetSizer(self.sizer_1)
self.sizer_1.Fit(self)
+
+ def onMouseMove(self, event):
+ self.SetFocus()
def open_antiprofil(panel, AntiProfile, encoding) :
+def getlemgram(corpus, lem) :
+ if not lem[6] in corpus.lems :
+ return lem[5]
+ else :
+ return corpus.lems[lem[6]].gram
+
class OpenCHDS():
def __init__(self, parent, corpus, parametres, Alceste=False):
#sep = u'\n '
panel.corpus = self.corpus
else :
panel.tableau = self.corpus
+ #self.parent.tableau = panel.tableau
panel.dictpathout = self.DictPathOut
panel.pathout = self.DictPathOut
panel.parent = self.parent
prof_seg = ReadProfileAsDico(DictPathOut['prof_seg'], False, self.encoding)
self.prof_seg_nb = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
for i in range(0, clnb):
- self.cluster_size.append(DictProfile[str(i + 1)][0][0:3])
+ self.cluster_size.append(DictProfile[str(i + 1)][0][0:3])
+ if isinstance(self.corpus, Corpus) :
+ DictProfile[str(i + 1)][1:] = [val[0:5] + [getlemgram(self.corpus, val)] + val[6:] for val in DictProfile[str(i + 1)][1:]]
dlg.Update(3+i, 'Classe %i' %(i+1))
ind = '/'.join(DictProfile[str(i + 1)][0][0:2])
indpour = ' - '.join([ind, DictProfile[str(i + 1)][0][2]])
outfile = print_simi3d(self)
error = exec_rcode(self.parent.RPath, outfile, wait = True)
-# def ongetrapport(self, event) :
-# dial = PrefSimpleFile(self, self.parent, **{'mask' : '*.txt', 'title': 'Rapport'})
-# dial.fbb.SetValue(self.DictPathOut['rapport'])
-# dial.CenterOnParent()
-# res = dial.ShowModal()
-# if res == wx.ID_OK :
-# fileout = dial.fbb.GetValue()
-# dial.Destroy()
-# with open(fileout, 'w') as f :
-# f.write(self.debtext + '\n' + GetTxtProfile(self.DictProfile, self.cluster_size))
-# msg = u"Fini !"
-# dlg = wx.MessageDialog(self.parent, msg, u"Rapport", wx.OK | wx.NO_DEFAULT | wx.ICON_INFORMATION)
-# dlg.CenterOnParent()
-# dlg.ShowModal()
-# dlg.Destroy()
-# else :
-# dial.Destroy()
-
-# def on_export_classes(self, event) :
-# corpus = self.parent.nb.GetPage(self.parent.nb.GetSelection()).corpus
-# dial = PrefExport(self, self.parent)
-# dial.fbb.SetValue(os.path.join(os.path.dirname(corpus.dictpathout['ira']), 'export_corpus.txt'))
-# dial.CenterOnParent()
-# res = dial.ShowModal()
-# if res == wx.ID_OK :
-# if dial.radio_type.GetSelection() == 0 : alc = True
-# else : alc = False
-# if dial.radio_lem.GetSelection() == 0 : lem = True
-# else : lem = False
-# self.corpus.export_corpus_classes(dial.fbb.GetValue(), alc = alc, lem = lem)
-# msg = u"Fini !"
-# dial.Destroy()
-# dlg = wx.MessageDialog(self.parent, msg, u"Export", wx.OK | wx.NO_DEFAULT | wx.ICON_INFORMATION)
-# dlg.CenterOnParent()
-# dlg.ShowModal()
-# dlg.Destroy()
-
-# def onprofseg(self, event):
-# #try :
-# print 'plus de bug profseg'
-# print self.parametres
-# corpus = self.parent.nb.GetPage(self.parent.nb.GetSelection()).corpus
-# ProfileSegment(self.parent, self.dictpathout, self.parametres, corpus)
-# #except :
-# # BugReport(self.parent)
-#
-# def onproftype(self, event):
-# try :
-# corpus = self.parent.nb.GetPage(self.parent.nb.GetSelection()).corpus
-# ProfilType(self.parent, corpus)
-# except :
-# BugReport(self.parent)
-#
-# def oncolored(self,evt) :
-# dial = PrefSimpleFile(self, self.parent, **{'mask' : '*.html', 'title': 'Corpus en couleur'})
-# dial.fbb.SetValue(os.path.join(os.path.dirname(self.corpus.dictpathout['ira']), 'corpus_couleur.html'))
-# dial.CenterOnParent()
-# res = dial.ShowModal()
-# if res == wx.ID_OK :
-# fileout = dial.fbb.GetValue()
-# dial.Destroy()
-# txt = self.corpus.make_colored_corpus()
-# with open(fileout, 'w') as f :
-# f.write(txt)
-# msg = u"Fini !\nVoulez-vous ouvrir le corpus dans votre navigateur ?"
-# dlg = wx.MessageDialog(self.parent, msg, u"Corpus en couleur", wx.NO | wx.YES | wx.NO_DEFAULT | wx.ICON_QUESTION)
-# dlg.CenterOnParent()
-# if dlg.ShowModal() == wx.ID_YES :
-# webbrowser.open(fileout)
-# dlg.Destroy()
-
def onclusterstat(self, evt) :
dial = PrefSimpleFile(self, self.parent, **{'mask' : '*.csv', 'title': 'Stat par classe'})
dial.fbb.SetValue( os.path.join(os.path.dirname(self.corpus.dictpathout['ira']), 'stat_par_classe.csv'))
if res == wx.ID_OK :
fileout = dial.fbb.GetValue()
dial.Destroy()
- print fileout
self.corpus.get_stat_by_cluster(fileout)
msg = u"Fini !"
dlg = wx.MessageDialog(self.parent, msg, u"Stat par classe", wx.OK | wx.NO_DEFAULT | wx.ICON_INFORMATION)
txt += u'nombre de formes actives: %i%s' % (corpus.getactivesnb(1), sep)
txt += u'nombre de formes supplémentaires: %i%s' % (corpus.getactivesnb(2), sep)
txt += u'nombre de formes actives de fréquence >= %i: %i%s' % (parametres['eff_min_forme'], parametres['nbactives'], sep)
- txt += u'moyenne d\'occurrences par uce :%f%s' % (float(totocc) / float(corpus.getucenb()), sep)
+ txt += u'moyenne d\'occurrences par segments :%f%s' % (float(totocc) / float(corpus.getucenb()), sep)
if 'tailleuc1' in parametres :
if parametres['classif_mode'] == 0 :
txt += u'taille rst1 / rst2: %i / %i - %i / %i%s' % (parametres['tailleuc1'], parametres['tailleuc2'], parametres['lenuc1'], parametres['lenuc2'], sep)
elif self.parametres['classif_mode'] == 2 :
txt += u'%i textes classés sur %i (%.2f%%)%s' % (sum([len(cl) for cl in corpus.lc]), corpus.getucinb(), (float(sum([len(cl) for cl in corpus.lc]))) / float(corpus.getucinb()) * 100, sep)
else :
- txt += u'%i uce classées sur %i (%.2f%%)%s' % (self.ucecla, self.Ucenb, (float(self.ucecla) / float(self.Ucenb)) * 100, sep)
+ txt += u'%i segments classées sur %i (%.2f%%)%s' % (self.ucecla, self.Ucenb, (float(self.ucecla) / float(self.Ucenb)) * 100, sep)
txt += """
###########################
self.read_result()
self.TabStat = aui.AuiNotebook(ira.nb, -1, wx.DefaultPosition)
self.TabStat.parametres = parametres
+ self.TabStat.corpus = corpus
+ self.TabStat.pathout = self.pathout
# CHD = GraphPanel(panel.TabChdSim, DictPathOut, list_graph, txt = self.debtext)
# panel.TabChdSim.AddPage(CHD,'CHD')
#self.TabStatTot = wx.TextCtrl(self.TabStat, -1, style=wx.NO_BORDER | wx.TE_MULTILINE | wx.TE_RICH2)
list_graph = [['zipf.png', 'zipf']]
self.TabStatTot = GraphPanel(ira.nb, self.pathout, list_graph, self.result['glob'])
- #self.TabStatTot.write(self.result['glob'])
self.TabStat.AddPage(self.TabStatTot, 'global')
for item in self.result:
if item != 'glob':
datam = [['forme', 'nb']]
self.ListPan = ListPanel(ira, self, self.result[item])
- self.TabStat.AddPage(self.ListPan, item)
- ira.nb.AddPage(self.TabStat, 'Stat')
+ self.TabStat.AddPage(self.ListPan, ' '.join(item.split('_')))
+ ira.nb.AddPage(self.TabStat, '%s' % parametres['name'])
ira.nb.SetSelection(ira.nb.GetPageCount() - 1)
ira.ShowAPane("Tab_content")
self.panel_1.EnableScrolling(True,True)
#self.panel_1.SetSize((1000,1000))
self.panel_1.SetScrollRate(20, 20)
+ self.panel_1.SetFocus()
self.Bind(wx.EVT_BUTTON, self.ondendro, self.butdendro)
self.param = {'width' : 700,
'height': 500,
class WordCloudLayout(DefaultTextLayout):
def dolayout(self):
- #self.dictpathout = parent.corpus.dictpathout
- #self.pathout = os.path.dirname(filename)
- #self.corpus = parent.corpus
- # self.read_result()
self.pathout.basefiles(simipath)
self.Tab = aui.AuiNotebook(self.ira.nb, -1, wx.DefaultPosition)
-# if os.path.exists(self.pathout['liste_graph']) :
-# list_graph = read_list_file(self.pathout['liste_graph'])
-# else :
-# list_graph = [['','']]
- list_graph = [['nuage_1.png', 'Nuage']]
+ if self.parametres['svg'] :
+ list_graph = [['nuage_1.svg', 'Nuage']]
+ else :
+ list_graph = [['nuage_1.png', 'Nuage']]
self.TabStatTot = GraphPanel(self.ira.nb, self.pathout, list_graph)
- #self.TabStatTot.write(self.result['glob'])
self.Tab.AddPage(self.TabStatTot, 'Nuage')
self.Tab.corpus = self.corpus
self.Tab.parametres = self.parametres
- self.ira.nb.AddPage(self.Tab, 'WordCloud %s' % self.parametres.get('corpus_name','corpus_name'))
+ self.ira.nb.AddPage(self.Tab, '%s' % self.parametres['name'])
self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
self.ira.ShowAPane("Tab_content")
with codecs.open(self.pathout['actives.csv'], 'r', self.parametres['encoding']) as f :
self.actives = f.read()
self.actives = self.actives.splitlines()#[act for act in self.actives.splitlines()]
- dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
+ if os.path.exists(self.pathout['actives_nb.csv']) :
+ with open(self.pathout['actives_nb.csv'], 'r') as f :
+ act_nb = f.read()
+ act_nb = act_nb.splitlines()
+ dictcol = dict([[i, [self.actives[i], int(act_nb[i])]] for i, val in enumerate(self.actives)])
+ else :
+ dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
#res = SelectColumn(self.ira, dictcol, self.actives, self.pathout['selected.csv'], selected = selected, dlg = True)
#if res.ok :
prep = PrepSimi(self.ira, self, self.parametres,self.pathout['selected.csv'], self.actives, indices_simi, wordlist = dictcol, selected = selected)
V(graph)$x <- graph.simi$layout[,1]
V(graph)$y <- graph.simi$layout[,2]
V(graph)$weight <- graph.simi$label.cex
- V(graph)$colors <- cols
+ V(graph)$colors <- vertex.label.color
E(graph)$weigth <- graph.simi$we.width
write.graph(graph, fileout, format = 'graphml')
""" % (self.pathout['RData.RData'], fileout)
self.tabsimi.SetArtProvider(aui.ChromeTabArt())
self.graphpan = GraphPanelSimi(self.tabsimi, self.pathout, list_graph)
self.graphpan.Bind(wx.EVT_BUTTON, self.redosimi, self.graphpan.butafc)
- #self.graphpan.Bind(wx.EVT_BUTTON, self.export, self.graphpan.butexport)
+ self.graphpan.Bind(wx.EVT_BUTTON, self.export, self.graphpan.butexport)
self.tabsimi.AddPage(self.graphpan, 'Graph')
self.tabsimi.parametres = self.parametres
self.parent.nb.AddPage(self.tabsimi, 'Analyse de graph')
# with codecs.open(self.pathout['actives.csv'], 'r', self.parametres['encoding']) as f :
# self.actives = f.read()
# self.actives = self.actives.splitlines()#[act for act in self.actives.splitlines()]
- actives = [[val, self.tableau.actives[val][0]] for val in self.tableau.actives]
+ try :
+ actives = [[val, self.tableau.actives[val][0]] for val in self.tableau.actives]
+ except :
+ actives = [[val, self.tableau.actives[val]] for val in self.tableau.actives]
+
#self.tableau.make_listactives()
actives = dict([[i, val] for i, val in enumerate(actives)])
#dictcol = dict([[i, [act, self.corpus.getlemeff(act)]] for i, act in enumerate(self.actives)])
sleep(0.2)
check_Rresult(self.parent, pid)
- #return paramsimi
-
-# if self.openfromprof :
-# if 'cexfromchi' not in self.paramsimi:
-# self.paramsimi['cexfromchi'] = False
-# self.paramsimi['sfromchi'] = False
-# self.dial = PrefSimi(self.parent, -1, self.paramsimi, self.types)
-# self.dial.CenterOnParent()
-# val = self.dial.ShowModal()
-# if val == wx.ID_OK :
-# self.paramsimi = self.make_param()
-# self.dial.Destroy()
-# if self.paramsimi.get('bystar',False) :
-# variables = treat_var_mod(self.paramsimi['stars'])
-# dial = OptLexi(self.parent)
-# dial.listet = self.paramsimi['stars']
-# var = [v for v in variables]
-# dial.variables = var
-# for et in var :
-# dial.list_box_1.Append(et)
-# dial.CenterOnParent()
-# val = dial.ShowModal()
-# if val == wx.ID_OK :
-# if dial.choice.GetSelection() == 1 :
-# listet = [dial.listet[i] for i in dial.list_box_1.GetSelections()]
-# else :
-# listet = variables[var[dial.list_box_1.GetSelections()[0]]]
-# self.tableau.etline = self.Source.corpus.make_etline(listet)
-#
-# dlg = wx.ProgressDialog("Traitements",
-# "Veuillez patienter...",
-# maximum=2,
-# parent=self.parent,
-# style=wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_ELAPSED_TIME | wx.PD_CAN_ABORT)
-# dlg.Center()
-# self.PrintScript()
-# self.DoR(dlg)
-# dlg.Destroy()
-# self.make_ira()
-# if self.paramsimi['type'] == 1:
-# self.graphpan.sizer_3.Add(wx.StaticBitmap(self.graphpan.panel_1, -1, wx.Bitmap(self.filename, wx.BITMAP_TYPE_ANY)), 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
-# self.graphpan.sizer_3.Add(wx.StaticText(self.graphpan.panel_1,-1,self.txtgraph), 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
-# self.graphpan.sizer_3.Fit(self.graphpan.panel_1)
-# self.graphpan.Layout()
-# self.graphpan.panel_1.Scroll(0,self.graphpan.panel_1.GetScrollRange(wx.VERTICAL))
-# else :
-# self.dial.Destroy()
+ def export(self, evt) :
+ nb = 1
+ while os.path.exists(os.path.join(self.pathout.dirout,'graph_'+str(nb)+'.graphml')):
+ nb +=1
+ fileout = ffr(os.path.join(self.pathout.dirout,'graph_'+str(nb)+'.graphml'))
+ txt = """
+ library(igraph)
+ load("%s")
+ fileout <- "%s"
+ graph <- graph.simi$graph
+ V(graph)$x <- graph.simi$layout[,1]
+ V(graph)$y <- graph.simi$layout[,2]
+ V(graph)$weight <- graph.simi$label.cex
+ V(graph)$colors <- vertex.label.color
+ E(graph)$weigth <- graph.simi$we.width
+ write.graph(graph, fileout, format = 'graphml')
+ """ % (self.pathout['RData.RData'], fileout)
+ filetmp = tempfile.mktemp()
+ with open(filetmp, 'w') as f :
+ f.write(txt)
+ exec_rcode(self.ira.RPath, filetmp)
+ mss = wx.MessageDialog(self.ira, fileout, u'Fichier exporté', wx.OK)
+ mss.CenterOnParent()
+ mss.ShowModal()
+ mss.Destroy()
class GraphPanelSimi(wx.Panel):
else :
self.listimg.append(wx.StaticBitmap(self.panel_1, -1, wx.Bitmap(os.path.join(self.dirout,list_graph[i][0]), wx.BITMAP_TYPE_ANY)))
self.labels.append(wx.StaticText(self.panel_1, -1, list_graph[i][1]))
-
+ self.panel_1.Bind(wx.EVT_MOTION, self.onMouseMove)
self.__set_properties()
self.__do_layout()
self.panel_1.EnableScrolling(True,True)
#self.panel_1.SetSize((1000,1000))
self.panel_1.SetScrollRate(20, 20)
+ self.panel_1.SetFocus()
def __do_layout(self):
self.sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
self.sizer_1.Add(self.sizer_2, 0, wx.EXPAND, 0)
self.sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
self.SetSizer(self.sizer_1)
+
+ def onMouseMove(self, event):
+ self.panel_1.SetFocus()