#
-def RchdTxt(DicoPath, RscriptPath, mincl, classif_mode, nbt = 9, svdmethod = 'svdR', libsvdc = False, libsvdc_path = None, R_max_mem = False, mode_patate = False, nbproc=1):
+def RchdTxt(DicoPath, RscriptPath, mincl, classif_mode, nbt = 9, svdmethod = 'svdR', libsvdc = False, libsvdc_path = None, R_max_mem = False, mode_patate = False, nbproc=10):
txt = """
source("%s")
source("%s")
row.names(data2) <- 1:nrow(data2)
""" % ffr(DicoPath['TableUc2'])
txt += """
- log1 <- "%s"
+ #log1 <- "%s"
#print('FIXME : source newCHD')
#source('/home/pierre/workspace/iramuteq/Rscripts/newCHD.R')
#nbproc <- %s
"""
txt += """
dm <-readMM(dm.path)
- cn <- read.table(cn.path, sep="\t", quote='"')
+ cn <- read.table(cn.path, sep="\t", quote='"', comment.char="")
colnames(dm) <- cn[,1]
if (file.exists(selected.col)) {
sel.col <- read.csv2(selected.col, header = FALSE)
}
mat <- read.csv2("%s", header = FALSE, row.names=1, sep='\t', quote='"', dec='.')
open_file_graph("%s",height=800, width=1000)
- prototypical(mat, mfreq = %s, mrank = %s, cloud = FALSE, cexrange=c(1,2.4), cexalpha= c(0.4, 1), type = '%s', mat.col.path='/tmp/matcol.csv')
+ prototypical(mat, mfreq = %s, mrank = %s, cloud = FALSE, cexrange=c(1,2.4), cexalpha= c(0.4, 1), type = '%s')#, mat.col.path='/tmp/matcol.csv')
dev.off()
""" % (ffr(self.analyse.pathout['table.csv']), ffr(self.analyse.pathout['proto.png']), self.parametres['limfreq'], self.parametres['limrang'], self.parametres['typegraph'])
self.add(txt)
ntab2 = ntab2[:limite]
nuces = [val[1] for val in ntab2]
dlg.Update(3, 'concordancier...')
- ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la, uci = uci)
+ ucis_txt, ucestxt = doconcorde(corpus, nuces, self.la, uci = uci, fontsize = self.ira.fontsize)
items = dict([[i, '<br>'.join([ucis_txt[i], '<table bgcolor = #1BF0F7 border=0><tr><td><b>score : %.2f</b></td></tr></table><br>' % ntab2[i][0], ucestxt[i]])] for i, uce in enumerate(nuces)])
dlg.Destroy()
win = message(self, items, ' - '.join([_("Typical text segments"), "Classe %i" % self.cl]), (750, 600), uceids = nuces)
labcol <- colors[ord.ori]
}
mat.col <- cbind(r.names, labcol)
- write.table(mat.col,file=mat.col.path)
+ #write.table(mat.col,file=mat.col.path)
ti <- c("Zone du noyau", "Première périphérie", "Seconde périphérie", "Elements contrastés")
if (type == 'classical') {
par(oma=c(1,3,3,1))
self.parametres = self.make_config(parametres)
if self.parametres is not None:
self.keys = DoConf(self.ira.ConfigPath['key']).getoptions()
+ print(self.keys)
gramact = [k for k in self.keys if self.keys[k] == 1]
gramsup = [k for k in self.keys if self.keys[k] == 2]
self.parametres['pathout'] = self.pathout.mkdirout()
#do not edit !
gpl-en = gpl-2.0.txt
name = iramuteq
-copyright = (c) 2008-2015 Pierre Ratinaud
+copyright = (c) 2008-2024 Pierre Ratinaud
author = Pierre Ratinaud
gpl-fr = gpl-2.0-fr.txt
dev = Pierre Ratinaud (Université de Toulouse - Laboratoire LERASS - ratinaud@univ-tlse2.fr);Sébastien Déjean (Université de Toulouse);David Skalinder (Mash Strategy - davids@mash.uk.com);
libsvdc = false
libsvdc_path = /usr/bin/svd
rmirror = http://cran.rstudio.com/
+fontsize = 16
def getucisize(self) :
ucesize = self.getucesize()
- return [sum(ucesize[uci.uces[0].ident:(uci.uces[-1].ident + 1)]) for uci in self.ucis]
+ return [sum(ucesize[uci.uces[0].ident:(uci.uces[-1].ident + 1)]) for uci in self.ucis if len(uci.uces) != 0]
def getucesize(self) :
res = self.getalluces()
return [len(uce[1].split()) for uce in res]
def getconcorde(self, uces) :
- return self.cuces.execute('select * from uces where id IN (%s) ORDER BY id;' % ', '.join([repr(i) for i in uces]))
+ return self.cuces.execute('select * from uces where id IN (%s) ORDER BY id;' % ', '.join([repr(i) for i in uces]))
def getuciconcorde(self, ucis) :
uces = [[val,[uce.ident for uce in self.ucis[val].uces]] for val in ucis]
def getucesfrometoile(self, etoile) :
return [uce.ident for uci in self.ucis for uce in uci.uces if etoile in uci.etoiles]
+ def getucisfrometoile(self, etoile):
+ uces = [uce.ident for uci in self.ucis for uce in uci.uces if etoile in uci.etoiles]
+ return list(set([self.getucefromid(val).uci for val in uces]))
+
+
def getetoileuces(self) :
log.info('get uces etoiles')
etoileuces = {}
etoileuces = self.getetoileuces()
else :
etoileuces = self.getetoileucis()
- etoileuces = dict([[et, etoileuces[et]] for et in etoileuces if len(etoileuces[et]) > 1])
+ etoileuces = dict([[et, etoileuces[et]] for et in etoileuces if len(etoileuces[et]) > 0])
with open(fileout, 'w', encoding='utf8') as f :
f.write('\n'.join([';'.join([et] + [repr(len(set(etoileuces[et]).intersection(classe))) for classe in ucecl]) for et in etoileuces])) #.encode(self.parametres['syscoding'])
#etoiles = self.make_etoiles()
newuces = []
newpara = []
for et in uci.paras :
- keepuces = [CopyUce(uce) for uce in uci.uces if uce.ident in dictucekeep]
+ keepuces = [CopyUce(uce) for uce in uci.uces if uce.ident in dictucekeepand and uce.para == idpara]
idpara += 1
if keepuces != [] :
newuces += keepuces
self.concord = concord
#self.script_status = dict()
wx.html.HtmlListBox.__init__(self, parent, -1, size = (900, 600))
+ #self.SetFont(wx.Font(30,wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
self.SetItemCount(len(concord))
#self.Bind(wx.EVT_LISTBOX, self.RefreshMe)
#self.Bind(wx.EVT_LISTBOX_DCLICK, self.Download)
#self.HtmlPage=wx.html.HtmlWindow(self, -1)
self.panel = wx.Panel(self, wx.ID_ANY)
self.HtmlPage = ConcordList(self.panel, items)
+ #self.HtmlPage.SetFonts("","",self.ira.fontsize)
#self.HtmlPage.SetMinSize( size )
#if "gtk2" in wx.PlatformInfo:
# self.HtmlPage.SetStandardFonts()
for analyse in corpus['analyses'] :
if analyse['type'] == 'alceste' :
if corpus['uuid'] not in self.intree :
- child = self.tree.Append(self.tree.root, corpus['corpus_name'])
+ child = self.tree.AppendItem(self.tree.root, corpus['corpus_name'])
self.tree.SetItemImage(child, self.ild['corpus'], wx.TreeItemIcon_Normal)
self.tree.SetItemImage(child, self.ild['corpus'], wx.TreeItemIcon_Expanded)
self.tree.SetPyData(child, corpus)
self.intree[corpus['uuid']] = corpus
- last = self.tree.Append(child, analyse['name'])
+ last = self.tree.AppendItem(child, analyse['name'])
self.tree.SetItemImage(last, self.ild['reinert'], wx.TreeItemIcon_Normal)
self.tree.SetItemImage(last, self.ild['reinert'], wx.TreeItemIcon_Expanded)
parametres = DoConf(analyse['ira']).getoptions()
clnb = int(parametres['clnb'])
for i in range(clnb) :
- cl = self.tree.Append(last, 'classe %i' % (i+1))
+ cl = self.tree.AppendItem(last, 'classe %i' % (i+1))
self.tree.SetItemImage(cl, self.ild['wordcloud'], wx.TreeItemIcon_Normal)
self.tree.SetItemImage(cl, self.ild['wordcloud'], wx.TreeItemIcon_Expanded)
self.tree.SetPyData(cl, {'type' : 'cluster', 'analyse': analyse['uuid'], 'number': i+1, 'corpus': analyse['corpus'], 'ira':analyse['ira']})
import os
import wx
import wx.xrc
-#from wx.lib.splitter import MultiSplitterWindow
+from wx.lib.splitter import MultiSplitterWindow
from listlex import *
import pickle
import json
#cate = CategoDict()
+#class ElCategorizator ( wx.Panel ):
+#
+# def __init__( self, parent, pathout, tableau, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
+# wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )
+# self.pathout = pathout
+# self.parent = parent
+# self.tableau = tableau
+#
+# self.cate = CategoDict(self.pathout)
+# gsizer = wx.BoxSizer( wx.VERTICAL )
+#
+# bSizer1 = wx.BoxSizer( wx.HORIZONTAL )
+#
+# self.m_listToCate = ListForWords(self, dlist = self.cate, first = ['eff'])
+# bSizer1.Add( self.m_listToCate, 2, wx.ALL|wx.EXPAND, 5 )
+#
+# self.m_listCate = ListForCate(self, dlist = self.cate, first = ['eff'])
+# bSizer1.Add( self.m_listCate, 1, wx.ALL|wx.EXPAND, 5 )
+#
+# self.m_listCateWords = ListForCateWords(self, dlist = self.cate, first = ['eff'])
+# bSizer1.Add( self.m_listCateWords, 1, wx.ALL|wx.EXPAND, 5 )
+#
+# bSizer2 = wx.BoxSizer( wx.HORIZONTAL )
+#
+# self.butsave = wx.Button( self, wx.ID_SAVE, u"Save", wx.DefaultPosition, wx.DefaultSize, 0 )
+# bSizer2.Add( self.butsave, 0, wx.ALL, 5 )
+#
+# self.butcsv = wx.Button( self, wx.ID_ANY, u"Export Columns", wx.DefaultPosition, wx.DefaultSize, 0 )
+# bSizer2.Add( self.butcsv, 0, wx.ALL, 5 )
+#
+# self.butdict = wx.Button( self, wx.ID_ANY, u"Export dictonary", wx.DefaultPosition, wx.DefaultSize, 0 )
+# bSizer2.Add( self.butdict, 0, wx.ALL, 5 )
+#
+# self.butload = wx.Button( self, wx.ID_ANY, u"Load a categorization", wx.DefaultPosition, wx.DefaultSize, 0 )
+# bSizer2.Add( self.butload, 0, wx.ALL, 5 )
+#
+# self.butaddcate = wx.Button( self, wx.ID_ANY, u"Add a category", wx.DefaultPosition, wx.DefaultSize, 0 )
+# bSizer2.Add( self.butaddcate, 0, wx.ALL, 5 )
+#
+#
+# bSizer3 = wx.BoxSizer( wx.HORIZONTAL )
+#
+# self.nbword = """Words : {:d} ({:d}) | """
+#
+# self.stat = """ Words to categorize : {:d} ({}%) - {:d} ({}%) -- Categories : {:d} - {:d} ({}%) - {:d} ({}%)"""
+## nbtocat, totocat, nbcate, totcate = self.cate.makestat()
+## lenwords = self.cate.lenwords
+## totwords = totocat + totcate
+## prtocat = repr(nbtocat/lenwords)
+## prtotocat = repr(totocat/totwords)
+## prcate = repr(totcate/totwords)
+# self.wordtxt = wx.StaticText(self, -1, "")
+# bSizer3.Add( self.wordtxt, 0, wx.ALL, 5 )
+# self.stattxt = wx.StaticText(self, -1, "")
+# bSizer3.Add( self.stattxt, 0, wx.ALL, 5 )
+#
+#
+# gsizer.Add( bSizer2, 0, wx.EXPAND, 5 )
+# gsizer.Add( bSizer1, 2, wx.EXPAND, 5 )
+# gsizer.Add( bSizer3, 0, wx.EXPAND, 5 )
+#
+# self.butsave.Bind(wx.EVT_BUTTON, self.OnSave)
+# self.butcsv.Bind(wx.EVT_BUTTON, self.OnCSV)
+# self.butdict.Bind(wx.EVT_BUTTON, self.OnDict)
+# self.butsave.SetBackgroundColour((14, 242, 14, 255))
+# self.butload.Bind(wx.EVT_BUTTON, self.OnLoad)
+# self.butaddcate.Bind(wx.EVT_BUTTON, self.OnAddCate)
+# self.OnStat()
+# self.SetSizer( gsizer )
+# self.Layout()
+#
+# def __del__( self ):
+# pass
+#
+#
+# def OnLoad(self, event) :
+# if len(self.cate.cate['CATE']) != 0 :
+# message = wx.MessageDialog(self, _("Categories must be empty to load a categorization."), _("Information"), wx.OK|wx.ICON_WARNING)
+# message.ShowModal()
+# message.Destroy()
+# return
+# wildcard = "json|*.json|" \
+# "All file|*.*"
+# dlg = wx.FileDialog(
+# self, message="Choose a file",
+# defaultDir=self.pathout.dirout,
+# defaultFile="",
+# wildcard=wildcard,
+# style=wx.FD_OPEN |
+# wx.FD_CHANGE_DIR | wx.FD_FILE_MUST_EXIST |
+# wx.FD_PREVIEW
+# )
+#
+# if dlg.ShowModal() == wx.ID_OK:
+# paths = dlg.GetPaths()
+# path = paths[0]
+# self.cate.loadcate(path)
+# self.m_listCate.RefreshData(self.cate.getcate())
+# self.m_listToCate.RefreshData(self.cate.getwordstocate())
+# dlg.Destroy()
+#
+# def OnSave(self, event) :
+# self.cate.save()
+# self.butsave.SetBackgroundColour((14, 242, 14, 255))
+#
+# def OnCSV(self, event) :
+# wordscate = self.cate.getwordscate()
+# newtab = [['category%i' % i for i in range(1, len(self.tableau.selected_col)+1)]]
+# for line in self.tableau.select_col(self.tableau.selected_col):
+# newline = []
+# for word in line :
+# newline.append(wordscate.get(word,word))
+# newtab.append(newline)
+# with open(self.pathout['tableout.csv'], 'w', encoding='utf8') as f :
+# f.write('\n'.join(['\t'.join(line) for line in newtab]))
+# message = wx.MessageDialog(self, _("Export successful\n%s" % self.pathout['tableout.csv']), _("Information"), wx.OK|wx.ICON_INFORMATION)
+# message.ShowModal()
+# message.Destroy()
+#
+# def OnDict(self, event):
+# with open(self.pathout['dictionnary.txt'], 'w', encoding='utf8') as f :
+# for categorie in self.cate.cate['CATE'] :
+# f.write(categorie + ': \t' + repr(self.cate.cate['CATE'][categorie][0]) + '\n')
+# for word in self.cate.cate['CATE'][categorie][1] :
+# f.write('\t' + word + ': \t' + repr(self.cate.cate['CATE'][categorie][1][word]) + '\n')
+# for word in self.cate.cate['TOCATE'] :
+# f.write(word + ':\t' + repr(self.cate.cate['TOCATE'][word]) + '\n')
+# message = wx.MessageDialog(self, _("Export successful\n%s" % self.pathout['dictionnary.txt']), _("Information"), wx.OK|wx.ICON_INFORMATION)
+# message.ShowModal()
+# message.Destroy()
+#
+# def OnStat(self) :
+# nbtocat, totocat, nbcate, totcate, lenwordincate = self.cate.makestat()
+# totwords = totocat + totcate
+# prtocat = repr(round((nbtocat/self.cate.lenwords) * 100 ,2))
+# prtotocat = repr(round((totocat/totwords) * 100, 2))
+# prcate = repr(round((totcate/totwords)*100, 2))
+# prwordincate = repr(round((lenwordincate/self.cate.lenwords)*100, 2))
+# self.stattxt.SetLabel(self.stat.format(nbtocat, prtocat, totocat, prtotocat, nbcate, lenwordincate, prwordincate, totcate, prcate))
+#
+# def OnAddToTable(self) :
+# wordscate = self.cate.getwordscate()
+# newtab = [['category%i' % i for i in range(1, len(self.tableau.selected_col)+1)]]
+# for line in self.tableau.select_col(self.tableau.selected_col):
+# newline = []
+# for word in line :
+# newline.append(wordscate.get(word,word))
+# newtab.append(newline)
+#
+# def OnAddCate(self, evt) :
+# print('add a category')
+# print(self.m_listCate.GetItemCount())
+# self.cate.addcatefromscratch()
+# self.m_listCate.dlist = self.cate.getcate()
+# self.m_listCate.RefreshData(self.m_listCate.dlist)
+# self.m_listCate.SetSelection(self.m_listCate.GetItemCount() - 1)
+
+
+
+class ListPanel(wx.Panel) :
+ def __init__(self, parent, gparent, List):
+ wx.Panel.__init__(self, parent, style=wx.BORDER_SUNKEN)
+ self.parent = parent
+ self.gparent = gparent
+ self.cate = gparent.cate
+ gsizer = wx.BoxSizer( wx.HORIZONTAL )
+ self.list = List(self, dlist = gparent.cate, first = ['eff'])
+ gsizer.Add(self.list, 5, wx.EXPAND, 5 )
+ self.SetSizer( gsizer )
+ self.Layout()
+
+
+ def OnStat(self) :
+ self.gparent.OnStat()
+
class ElCategorizator ( wx.Panel ):
def __init__( self, parent, pathout, tableau, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
gsizer = wx.BoxSizer( wx.VERTICAL )
bSizer1 = wx.BoxSizer( wx.HORIZONTAL )
+ splitter = MultiSplitterWindow(self, style=wx.SP_LIVE_UPDATE)
+ self.splitter = splitter
+ #sizer = wx.BoxSizer(wx.HORIZONTAL)
+ #sizer.Add(splitter, 1, wx.EXPAND)
+ #self.SetSizer(sizer)
+ W,H = wx.GetTopLevelParent(self).GetSize()
+ print(W)
+ W = W - 200
+ if W < 300 :
+ W = 300
+ splitsize = int(W/3)
+
+ panelwords = ListPanel(splitter, self, ListForWords)
+ splitter.AppendWindow(panelwords, splitsize)
+ panelcate = ListPanel(splitter, self, ListForCate)
+ splitter.AppendWindow(panelcate, splitsize)
+ panelwordscate = ListPanel(splitter, self, ListForCateWords)
+ splitter.AppendWindow(panelwordscate, splitsize)
+ self.m_listToCate = panelwords.list
+ self.m_listCate = panelcate.list
+ self.m_listCateWords = panelwordscate.list
- self.m_listToCate = ListForWords(self, dlist = self.cate, first = ['eff'])
- bSizer1.Add( self.m_listToCate, 2, wx.ALL|wx.EXPAND, 5 )
-
- self.m_listCate = ListForCate(self, dlist = self.cate, first = ['eff'])
- bSizer1.Add( self.m_listCate, 1, wx.ALL|wx.EXPAND, 5 )
-
- self.m_listCateWords = ListForCateWords(self, dlist = self.cate, first = ['eff'])
- bSizer1.Add( self.m_listCateWords, 1, wx.ALL|wx.EXPAND, 5 )
bSizer2 = wx.BoxSizer( wx.HORIZONTAL )
self.nbword = """Words : {:d} ({:d}) | """
self.stat = """ Words to categorize : {:d} ({}%) - {:d} ({}%) -- Categories : {:d} - {:d} ({}%) - {:d} ({}%)"""
+ for panel in [panelwords, panelcate, panelwordscate] :
+ panel.m_listToCate = self.m_listToCate
+ panel.m_listCate = self.m_listCate
+ panel.m_listCateWords = self.m_listCateWords
+ panel.butsave = self.butsave
+
# nbtocat, totocat, nbcate, totcate = self.cate.makestat()
# lenwords = self.cate.lenwords
# totwords = totocat + totcate
gsizer.Add( bSizer2, 0, wx.EXPAND, 5 )
- gsizer.Add( bSizer1, 2, wx.EXPAND, 5 )
+ gsizer.Add( splitter, 2, wx.EXPAND, 5 )
gsizer.Add( bSizer3, 0, wx.EXPAND, 5 )
self.butsave.Bind(wx.EVT_BUTTON, self.OnSave)
self.SetSizer( gsizer )
self.Layout()
+
+
def __del__( self ):
pass
-
def OnLoad(self, event) :
if len(self.cate.cate['CATE']) != 0 :
message = wx.MessageDialog(self, _("Categories must be empty to load a categorization."), _("Information"), wx.OK|wx.ICON_WARNING)
prwordincate = repr(round((lenwordincate/self.cate.lenwords)*100, 2))
self.stattxt.SetLabel(self.stat.format(nbtocat, prtocat, totocat, prtotocat, nbcate, lenwordincate, prwordincate, totcate, prcate))
+
def OnAddToTable(self) :
wordscate = self.cate.getwordscate()
newtab = [['category%i' % i for i in range(1, len(self.tableau.selected_col)+1)]]
self.m_listCate.SetSelection(self.m_listCate.GetItemCount() - 1)
-
-#class ListPanel(wx.Panel) :
-# def __init__(self, parent, gparent, List):
-# wx.Panel.__init__(self, parent, style=wx.BORDER_SUNKEN)
-# self.parent = parent
-# self.cate = gparent.cate
-# self.list = List(self, dlist = gparent.cate, first = ['eff'])
-
-
-#class ElCategorizator ( wx.Panel ):
-#
-# def __init__( self, parent, pathout, tableau, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.TAB_TRAVERSAL, name = wx.EmptyString ):
-# wx.Panel.__init__ ( self, parent, id = id, pos = pos, size = size, style = style, name = name )
-# self.pathout = pathout
-# self.parent = parent
-# self.tableau = tableau
-#
-# self.cate = CategoDict(self.pathout)
-#
-# splitter = MultiSplitterWindow(self, style=wx.SP_LIVE_UPDATE)
-# self.splitter = splitter
-# sizer = wx.BoxSizer(wx.HORIZONTAL)
-# sizer.Add(splitter, 1, wx.EXPAND)
-# self.SetSizer(sizer)
-#
-# panelwords = ListPanel(splitter, self, ListForWords)
-# splitter.AppendWindow(panelwords, 150)
-# panelcate = ListPanel(splitter, self, ListForCate)
-# splitter.AppendWindow(panelcate, 150)
-# panelwordscate = ListPanel(splitter, self, ListForCateWords)
-# splitter.AppendWindow(panelwordscate, 150)
-# self.m_listToCate = panelwords.list
-# self.m_listCate = panelcate.list
-# self.m_listCateWords = panelwordscate.list
-#
-# def __del__( self ):
-# pass
-#
-# def OnSave(self, event) :
-# self.cate.save()
-# self.butsave.SetBackgroundColour((14, 242, 14, 255))
-#
-# def OnCSV(self, event) :
-# wordscate = self.cate.getwordscate()
-# newtab = [['category%i' % i for i in range(1, len(self.tableau.selected_col)+1)]]
-# for line in self.tableau.select_col(self.tableau.selected_col):
-# newline = []
-# for word in line :
-# newline.append(wordscate.get(word,word))
-# newtab.append(newline)
-# with open(self.pathout['tableout.csv'], 'w') as f :
-# f.write('\n'.join(['\t'.join(line) for line in newtab]))
-# print("csv exported !")
-#
-# def OnDict(self, event):
-# with open(self.pathout['dictionnary.txt'], 'w') as f :
-# for categorie in self.cate.cate['CATE'] :
-# f.write(categorie + ': \t' + repr(self.cate.cate['CATE'][categorie][0]) + '\n')
-# for word in self.cate.cate['CATE'][categorie][1] :
-# f.write('\t' + word + ': \t' + repr(self.cate.cate['CATE'][categorie][1][word]) + '\n')
-# for word in self.cate.cate['TOCATE'] :
-# f.write(word + ':\t' + repr(self.cate.cate['TOCATE'][word]) + '\n')
-# print("dictionnary exported !")
-
-
class ListForCate(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin, listmix.ColumnSorterMixin):
def __init__(self, parent, dlist = {}, first = [], usefirst = False, menu = True):
else:
opener ="open" if sys.platform == "darwin" else "xdg-open"
#call([opener, folder])
- call(["%s %s &" % (opener, folder)], shell=True)
+ call(["%s '%s' &" % (opener, folder)], shell=True)
def normpath_win32(path) :
if not sys.platform == 'win32' :
# var_mod[var].append(variable)
return var_mod
-def doconcorde(corpus, uces, mots, uci = False) :
+def doconcorde(corpus, uces, mots, uci = False, fontsize=16) :
if not uci :
ucestxt1 = [row for row in corpus.getconcorde(uces)]
else :
listmot = [corpus.getforme(fid).forme for lem in listmot for fid in lem]
mothtml = ['<font color=red><b>%s</b></font>' % mot for mot in listmot]
dmots = dict(list(zip(listmot, mothtml)))
+ presfont = '<p><b><font size="%i">' % fontsize
+ font = '<font size="%i">' % fontsize
for uce in uces :
ucetxt = ucestxt1[uce].split()
ucetxt = ' '.join([dmots.get(mot, mot) for mot in ucetxt])
if not uci :
uciid = corpus.getucefromid(uce).uci
- ucis_txt.append('<p><b>' + ' '.join(corpus.ucis[corpus.getucefromid(uce).uci].etoiles) + '<a href="%i_%i"> *%i_%i</a></b></p>' % (uciid, uce, uciid, uce))
+ ucis_txt.append(presfont + ' '.join(corpus.ucis[corpus.getucefromid(uce).uci].etoiles) + '<a href="%i_%i"> *%i_%i</a></font></b></p>' % (uciid, uce, uciid, uce))
else :
- ucis_txt.append('<p><b>' + ' '.join(corpus.ucis[uce].etoiles) + '</b></p>')
- ucestxt.append(ucetxt)
+ ucis_txt.append(presfont + ' '.join(corpus.ucis[uce].etoiles) + '</font></b></p>')
+ ucestxt.append(font + ucetxt + '</font>')
return ucis_txt, ucestxt
log.info('version : %s' % ConfigGlob.get('DEFAULT', 'version'))
print(size)
wx.Frame.__init__(self, parent, id, title, pos, size, style)
- #Font
- self.SetFont(wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
+
# configuration
self.AppliPath = AppliPath
self.images_path = os.path.join(AppliPath,'images')
self._mgr = aui.AuiManager()
self._mgr.SetManagedWindow(self)
self.x = 0
+ #Font
+ try :
+ self.pref.read(self.ConfigPath['preferences'])
+ self.fontsize = self.pref.getint('iramuteq','fontsize')
+ except :
+ print('no pref : setting fontsize to 12')
+ self.fontsize = 12
+ self.SetFont(wx.Font(self.fontsize, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
+
#--------------------------------------------------------------------------------
# creation menu
#--------------------------------------------------------------------------------
Name("lefttree").
Caption(_("Historic")).
Left().
- MinSize(wx.Size(300,400)).
+ MinSize(wx.Size(200,400)).
+ BestSize(wx.Size(300,-1)).
Layer(1).
Position(1).
CloseButton(False).
# | aui.AUI_NB_TAB_EXTERNAL_MOVE | aui.AUI_NB_TAB_MOVE | aui.AUI_NB_TAB_FLOAT| wx.NO_BORDER
self.nb.SetAGWWindowStyleFlag(notebook_flags)
self.nb.SetArtProvider(aui.ChromeTabArt())
+ self.nb.SetFont(wx.Font(self.fontsize, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
#self.nb.SetArtProvider(aui.VC8TabArt())
#self.nb.parent = self
#self._notebook_style = aui.AUI_NB_DEFAULT_STYLE | aui.AUI_NB_TAB_EXTERNAL_MOVE | wx.NO_BORDER
aui.AuiPaneInfo().
Name("Tab_content").
CenterPane())
+
#self._mgr.AddPane(self.Sheet, wx.aui.AuiPaneInfo().Name("Data").CenterPane())
#self._mgr.AddPane(self.Sheet, aui.AuiPaneInfo().Name("Data").CenterPane())
self.nb.Bind(aui.EVT_AUINOTEBOOK_PAGE_CLOSE, self.OnCloseTab)
self.Text = ''
self.lexique = None
self.corpus = None
+
def finish_init(self) :
try :
from corpus import Corpus
from sheet import MySheet
from graph_to_json import GraphToJson
+#from listlex2 import LexPanel
import langue
# self.TabChdSim = wx.aui.AuiNotebook(self.parent.nb, -1, wx.DefaultPosition)
notebook_flags = aui.AUI_NB_DEFAULT_STYLE | aui.AUI_NB_TAB_EXTERNAL_MOVE | aui.AUI_NB_TAB_MOVE | aui.AUI_NB_TAB_FLOAT| wx.NO_BORDER
panel.TabChdSim = aui.AuiNotebook(panel, -1, wx.DefaultPosition)
- #panel.TabChdSim = LB.LabelBook(panel, -1, agwStyle = INB_TOP|INB_SHOW_ONLY_TEXT|INB_FIT_LABELTEXT)
+
+ #panel.TabChdSim = LB.LabelBook(panel, -1, agwStyle = INB_TOP|INB_SHOW_ONLY_TEXT|INB_FIT_LABELTEXT)
panel.TabChdSim.SetAGWWindowStyleFlag(notebook_flags)
panel.TabChdSim.SetArtProvider(aui.ChromeTabArt())
+ font = wx.Font(self.parent.fontsize, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)
+ panel.TabChdSim.SetFont(font)
sizer1.Add(panel.TabChdSim,10, wx.EXPAND, 5)
panel.SetSizer(sizer1)
sizer1.Fit(panel)
self.tab_prof_seg = ProfListctrlPanel(self.parent, self, prof_seg[str(i + 1)], False, i + 1)
self.prof_seg_nb.AddPage(self.tab_prof_seg, _("Cluster") + ' %i' % (i + 1))
panel.ProfNB.SetSelection(0)
+ panel.ProfNB.SetFont(font)
if clnb > 2 :
self.TabAFC = aui.AuiNotebook(panel.TabChdSim, -1, wx.DefaultPosition)
log.info('read AFC')
#sash = SashList(ira.nb)
self.TabStat = aui.AuiNotebook(ira.nb, -1, wx.DefaultPosition)
self.TabStat.parametres = parametres
+ #self.ListPan = LexPanel(self, ira, self.DictSpec, self.etoiles)
self.ListPan = ListForSpec(ira, self, self.DictSpec, self.etoiles)
+ self.ListPan.pathout = self.pathout
if os.path.exists(self.pathout['banalites.csv']) :
self.listban = ListForSpec(ira, self, self.dictban, ['eff'] + self.etoiles, usefirst = True)
#self.ListPan2 = ListForSpec(sash.rightwin1, self, self.DictSpec, first)
self.ListPant = ListForSpec(ira, self, self.DictType, self.etoiles)
+ self.ListPant.pathout = self.pathout
self.ListPanEff = ListForSpec(ira, self, self.DictEff, self.etoiles)
+ self.ListPanEff.pathout = self.pathout
self.ListPanEffType = ListForSpec(ira, self, self.DictEffType, self.etoiles)
+ self.ListPanEffType.pathout = self.pathout
self.ListPanEffRelForme = ListForSpec(ira, self, self.DictEffRelForme, self.etoiles)
+ self.ListPanEffRelForme.pathout = self.pathout
self.ListPanEffRelType = ListForSpec(ira, self, self.DictEffRelType, self.etoiles)
+ self.ListPanEffRelType.pathout = self.pathout
self.TabStat.AddPage(self.ListPan, _('Forms'))
if os.path.exists(self.pathout['banalites.csv']) :
self.TabStat.AddPage(self.listban, _('Banal forms'))
self.ira = ira
self.TabStat.corpus = self.corpus
self.TabStat.etoiles = self.etoiles
+ self.TabStat.pathout = self.pathout
if os.path.exists(os.path.join(self.parametres['pathout'], 'tgenspec.csv')) :
self.parametres['tgenspec'] = os.path.join(self.parametres['pathout'], 'tgenspec.csv')
TgenLayout(self.TabStat)
self.tab = wx.html.HtmlWindow(self.ira.nb, -1)
#self.tab = wx.html2.WebView.New(self)
res = normpath_win32(self.pathout['resultats.html']).replace('\\','/')
- self.tab.LoadPage(res)
+ #self.tab.LoadPage(res)
+ self.tab.LoadFile(res)
#self.tab.LoadURL(res)
self.tab.parametres = self.parametres
self.ira.nb.AddPage(self.tab, ' - '.join([_("Frequency"), self.parametres['name']]))
if "gtk2" in wx.PlatformInfo:
self.tab.SetStandardFonts()
res = normpath_win32(self.pathout['resultats-chi2.html']).replace('\\','/')
- self.tab.LoadPage(res)
+ self.tab.LoadFile(res)
self.tab.parametres = self.parametres
self.ira.nb.AddPage(self.tab, ' - '.join(["Chi2", self.parametres['name']]))
#self.ira.nb.SetSelection(self.ira.nb.GetPageCount() - 1)
def dolayout(self) :
self.tableau.read_tableau(self.pathout['analyse.db'])
TabCate = ElCategorizator(self.ira.nb, self.pathout, self.tableau)
+ TabCate.parametres = self.parametres
self.ira.nb.AddPage(TabCate, ' - '.join([_('ElCaTeGoRiZaToR'), self.parametres['name']]))
class SimiMatLayout(DefaultMatLayout) :
Chi2Layout(self.parent, corpus, self.conf)
elif self.conf['type'] == 'categorisation' :
CateLayout(self.parent, corpus, self.conf)
- print(self.conf)
+ #print(self.conf)
else :
words[word] = [1, []]
res = [[word, words[word][0], float(sum(words[word][1])) / len(words[word][1])] for word in words if len(words[word][1]) != 0 and words[word][0] >= self.parametres['freqmin']]
- with open(self.pathout['table.csv'], 'w') as f :
+ with open(self.pathout['table.csv'], 'w', encoding='utf8') as f :
f.write('\n'.join(['\t'.join(['"' + val[0] +'"', repr(val[1]), repr(val[2])]) for val in res]))
#self.parent.tableau.parametres = self.parent.tableau.parametre
#self.parent.tableau.save_tableau(self.pathout['analyse.db'])
style=wx.SUNKEN_BORDER|wx.WANTS_CHARS,
agwStyle=CT.TR_HIDE_ROOT|CT.TR_HAS_BUTTONS|CT.TR_HAS_VARIABLE_ROW_HEIGHT):
CT.CustomTreeCtrl.__init__(self, parent, id, pos, size, style, agwStyle)
- #FIXME : test for bigger font on HIDPI screen
- #font = wx.Font(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD,
- # False, "", wx.FONTENCODING_DEFAULT)
- font = wx.Font(pointSize=10, family=wx.FONTFAMILY_DEFAULT, style=wx.FONTSTYLE_NORMAL, weight=wx.FONTWEIGHT_NORMAL)
- self.SetFont(font)
+
##################
self.log = log
alldata = dir(CT)
events.append(data)
self.parent = parent
self.ira = parent
+ font = wx.Font(pointSize=self.ira.fontsize + 2, family=wx.FONTFAMILY_DEFAULT, style=wx.FONTSTYLE_NORMAL, weight=wx.FONTWEIGHT_NORMAL)
+ self.SetFont(font)
self.events = events
self.styles = treestyles
self.item = None
if 'uuid' in pydata :
if pydata['uuid'] in ['textroot', 'matroot'] :
self.ira.ShowMenu('text', False)
- self.ira.ShowMenu('matrix', False)
+ self.ira.ShowMenu('matrix', False)
self.pydata = pydata
if pydata['uuid'] in self.parent.history.opened :
- actual = self.parent.nb.GetSelection()
for i in range(self.parent.nb.GetPageCount()) :
self.page = self.parent.nb.GetPage(i)
if 'parametres' in dir(self.page) :