From 2ffa9388c45dce689bb45c1cf6c7ad81d2636409 Mon Sep 17 00:00:00 2001 From: Pierre <ratinaud@univ-tlse2.fr> Date: Thu, 21 Mar 2013 16:37:43 +0100 Subject: [PATCH] lot of things :) --- PrintRScript.py | 14 + Rscripts/Rgraph.R | 108 +++++++- Rscripts/prototypical.R | 65 +++++ analysematrix.py | 2 +- chemins.py | 17 ++ dialog.py | 116 +++++++++ dictionnaires/expression_gr.txt | 0 dictionnaires/lexique_gr.txt | 558 ++++++++++++++++++++++++++++++++++++++++ images/splash.png | Bin 43358 -> 43305 bytes images/splash.svg | 8 +- iracmd.py | 5 +- iramuteq.py | 15 +- openanalyse.py | 8 +- tabverges.py | 88 +++++-- textwordcloud.py | 10 +- 15 files changed, 970 insertions(+), 44 deletions(-) create mode 100644 Rscripts/prototypical.R create mode 100644 dictionnaires/expression_gr.txt create mode 100644 dictionnaires/lexique_gr.txt diff --git a/PrintRScript.py b/PrintRScript.py index 589aabf..636fe9e 100644 --- a/PrintRScript.py +++ b/PrintRScript.py @@ -1117,3 +1117,17 @@ class WordCloudRScript(PrintRScript) : """ % (ffr(self.analyse.pathout['actives_eff.csv']), ffr(self.analyse.pathout['selected.csv']), self.parametres['maxword'], ffr(self.parametres['graphout']), self.parametres['width'], self.parametres['height'], bg_col, self.parametres['maxcex'], self.parametres['mincex'], txt_col) self.add(txt) self.write() + +class ProtoScript(PrintRScript) : + def make_script(self) : + self.sources([self.analyse.parent.RscriptsPath['Rgraph'], self.analyse.parent.RscriptsPath['prototypical.R']]) + self.packages(['wordcloud']) + txt = """ + mat <- read.csv2("%s", header = FALSE, row.names=1, sep='\t', quote='"', dec='.') + open_file_graph("%s",height=600, width=600) + prototypical(mat, mfreq = %s, mrank = %s, cloud = FALSE, cexrange=c(1,2.4), cexalpha= c(0.4, 1)) + dev.off() + """ % (self.analyse.pathout['table.csv'], self.analyse.pathout['proto.png'], self.parametres['limfreq'], self.parametres['limrang']) + self.add(txt) + self.write() + diff --git a/Rscripts/Rgraph.R b/Rscripts/Rgraph.R index 4d94e35..e947a40 100644 --- a/Rscripts/Rgraph.R +++ b/Rscripts/Rgraph.R @@ -477,16 +477,120 @@ make_afc_graph <- function(toplot, classes, clnb, xlab, ylab, cex.txt = NULL, le } } +plot.dendro.prof <- function(tree, classes, chisqtable, nbbycl = 60, type.dendro = "phylogram", from.cmd = FALSE, bw = FALSE, lab = NULL) { + library(ape) + library(wordcloud) + classes<-classes[classes!=0] + classes<-as.factor(classes) + sum.cl<-as.matrix(summary(classes, maxsum=1000000)) + sum.cl<-(sum.cl/colSums(sum.cl)*100) + sum.cl<-round(sum.cl,2) + sum.cl<-cbind(sum.cl,as.matrix(100-sum.cl[,1])) + sum.cl <- sum.cl[,1] + tree.order<- as.numeric(tree$tip.label) + vec.mat<-NULL + row.keep <- select.chi.classe(chisqtable, nbbycl) + toplot <- chisqtable[row.keep,] + lclasses <- list() + for (classe in 1:length(sum.cl)) { + ntoplot <- toplot[,classe] + ntoplot <- ntoplot[order(ntoplot, decreasing = TRUE)] + ntoplot <- round(ntoplot, 0) + ntoplot <- ntoplot[1:nbbycl] + #ntoplot <- ntoplot[order(ntoplot)] + #ntoplot <- ifelse(length(ntoplot) > nbbycl, ntoplot[1:nbbycl], ntoplot) + lclasses[[classe]] <- ntoplot + } + vec.mat <- matrix(1, nrow = 2, ncol = length(sum.cl)) + vec.mat[2,] <- 2:(length(sum.cl)+1) + layout(matrix(vec.mat, nrow=2, ncol=length(sum.cl)),heights=c(1,4)) + if (! bw) { + col <- rainbow(length(sum.cl))[as.numeric(tree$tip.label)] + colcloud <- rainbow(length(sum.cl)) + } + par(mar=c(1,0,0,0)) + label.ori<-tree[[2]] + if (!is.null(lab)) { + tree$tip.label <- lab + } else { + tree[[2]]<-paste('classe ',tree[[2]]) + } + plot.phylo(tree,label.offset=0.1,tip.col=col, type=type.dendro, direction = 'downwards', srt=90, adj = 0) + for (i in tree.order) { + par(mar=c(0,0,1,0),cex=0.7) + #wordcloud(names(lclasses[[i]]), lclasses[[i]], scale = c(1.5, 0.2), random.order=FALSE, colors = colcloud[i]) + yval <- 1.1 + plot(0,0,pch='', axes = FALSE) + vcex <- norm.vec(lclasses[[i]], 0.8, 3) + for (j in 1:length(lclasses[[i]])) { + yval <- yval-(strheight( names(lclasses[[i]])[j],cex=vcex[j])+0.02) + text(-0.9, yval, names(lclasses[[i]])[j], cex = vcex[j], col = colcloud[i], adj=0) + } + } + +} + +plot.dendro.cloud <- function(tree, classes, chisqtable, nbbycl = 60, type.dendro = "phylogram", from.cmd = FALSE, bw = FALSE, lab = NULL) { + library(wordcloud) + library(ape) + classes<-classes[classes!=0] + classes<-as.factor(classes) + sum.cl<-as.matrix(summary(classes, maxsum=1000000)) + sum.cl<-(sum.cl/colSums(sum.cl)*100) + sum.cl<-round(sum.cl,2) + sum.cl<-cbind(sum.cl,as.matrix(100-sum.cl[,1])) + sum.cl <- sum.cl[,1] + tree.order<- as.numeric(tree$tip.label) + vec.mat<-NULL + row.keep <- select.chi.classe(chisqtable, nbbycl) + toplot <- chisqtable[row.keep,] + lclasses <- list() + for (classe in 1:length(sum.cl)) { + ntoplot <- toplot[,classe] + ntoplot <- ntoplot[order(ntoplot, decreasing = TRUE)] + ntoplot <- round(ntoplot, 0) + ntoplot <- ntoplot[1:nbbycl] + ntoplot <- ntoplot[order(ntoplot)] + #ntoplot <- ifelse(length(ntoplot) > nbbycl, ntoplot[1:nbbycl], ntoplot) + lclasses[[classe]] <- ntoplot + } + for (i in 1:length(sum.cl)) vec.mat<-append(vec.mat,1) + v<-2 + for (i in 1:length(sum.cl)) { + vec.mat<-append(vec.mat,v) + v<-v+1 + } + layout(matrix(vec.mat,length(sum.cl),2),widths=c(1,2)) + if (! bw) { + col <- rainbow(length(sum.cl))[as.numeric(tree$tip.label)] + colcloud <- rainbow(length(sum.cl)) + } + par(mar=c(0,0,0,0)) + label.ori<-tree[[2]] + if (!is.null(lab)) { + tree$tip.label <- lab + } else { + tree[[2]]<-paste('classe ',tree[[2]]) + } + plot.phylo(tree,label.offset=0.1,tip.col=col, type=type.dendro) + for (i in rev(tree.order)) { + par(mar=c(0,0,1,0),cex=0.9) + wordcloud(names(lclasses[[i]]), lclasses[[i]], scale = c(4, 0.8), random.order=FALSE, colors = colcloud[i]) + } +} + plot.dendropr <- function(tree, classes, type.dendro="phylogram", histo=FALSE, from.cmd=FALSE, bw=FALSE, lab = NULL, tclasse=TRUE) { classes<-classes[classes!=0] classes<-as.factor(classes) - sum.cl<-as.matrix(summary(classes)) + sum.cl<-as.matrix(summary(classes, maxsum=1000000)) sum.cl<-(sum.cl/colSums(sum.cl)*100) sum.cl<-round(sum.cl,2) sum.cl<-cbind(sum.cl,as.matrix(100-sum.cl[,1])) tree.order<- as.numeric(tree$tip.label) + + if (! bw) { - col = rainbow(nrow(sum.cl))[as.numeric(tree$tip.label)] + col <- rainbow(nrow(sum.cl))[as.numeric(tree$tip.label)] col.bars <- col col.pie <- rainbow(nrow(sum.cl)) #col.vec<-rainbow(nrow(sum.cl))[as.numeric(tree[[2]])] diff --git a/Rscripts/prototypical.R b/Rscripts/prototypical.R new file mode 100644 index 0000000..b5f58fd --- /dev/null +++ b/Rscripts/prototypical.R @@ -0,0 +1,65 @@ + +norm.vec <- function(v, min, max) { + + vr <- range(v) + if (vr[1]==vr[2]) { + fac <- 1 + } else { + fac <- (max-min)/(vr[2]-vr[1]) + } + (v-vr[1]) * fac + min +} + + +#x a table with freq and rank, rownames are words + +prototypical <- function(x, mfreq = NULL, mrank = NULL, cexrange=c(0.8, 3), cexalpha = c(0.5, 1), labfreq = TRUE, labrank = TRUE, cloud = TRUE) { + library(wordcloud) + if (is.null(mfreq)) { + mfreq <- sum(x[,1]) / nrow(x) + } + if (is.null(mrank)) { + mrank <- sum(x[,1] * x[,2]) / sum(x[,1]) + } + print(mfreq) + print(mrank) + + x <- x[order(x[,1], decreasing = TRUE),] + x[,2] <- round(x[,2],1) + ZN <- which(x[,1] >= mfreq & x[,2] <= mrank) + FP <- which(x[,1] >= mfreq & x[,2] > mrank) + SP <- which(x[,1] < mfreq & x[,2] > mrank) + CE <- which(x[,1] < mfreq & x[,2] <= mrank) + mfreq <- round(mfreq, 2) + mrank <- round(mrank, 2) + toplot <- list(ZN, FP, SP, CE) + labcex <- norm.vec(x[,1], cexrange[1], cexrange[2]) + labalpha <- norm.vec(x[,2], cexalpha[2], cexalpha[1]) + labalpha <- rgb(0.1,0.2,0.1, labalpha) + par(oma=c(1,3,3,1)) + layout(matrix(c(1,4,2,3), nrow=2)) + ti <- c("Zone du noyau", "Première périphérie", "Seconde périphérie", "Elements contrastés") + for (i in 1:length(toplot)) { + rtoplot <- toplot[[i]] + if (length(rtoplot)) { + par(mar=c(0,0,2,0)) + if (cloud) { + labels <- paste(rownames(x)[rtoplot], x[rtoplot,1], x[rtoplot,2], sep='-') + wordcloud(labels, x[rtoplot,1], scale = c(max(labcex[rtoplot]), min(labcex[rtoplot])), color = labalpha[rtoplot], random.order=FALSE, rot.per = 0) + box() + } else { + yval <- 1.1 + plot(0,0,pch='', axes = FALSE) + k<- 0 + for (val in rtoplot) { + yval <- yval-(strheight(rownames(x)[val],cex=labcex[val])+0.02) + text(-0.9, yval, paste(rownames(x)[val], x[val,1], x[val,2], sep = '-'), cex = labcex[val], col = labalpha[val], adj=0) + } + box() + } + title(ti[i]) + } + } + mtext(paste('<', mfreq, ' Fréquences ', '>=', mfreq, sep = ' '), side=2, line=1, cex=1, col="red", outer=TRUE) + mtext(paste('<', mrank, ' Rangs ', '>=', mrank, sep = ' '), side=3, line=1, cex=1, col="red", outer=TRUE) +} diff --git a/analysematrix.py b/analysematrix.py index 2a3c88d..7b861a6 100644 --- a/analysematrix.py +++ b/analysematrix.py @@ -59,7 +59,7 @@ class AnalyseMatrix : pass def doR(self, Rscript, wait = False, dlg = None, message = '') : - log.info('R code...') + #log.info('R code...') pid = exec_rcode(self.ira.RPath, Rscript, wait = wait) while pid.poll() is None : if dlg : diff --git a/chemins.py b/chemins.py index 847e5c7..6b124ef 100644 --- a/chemins.py +++ b/chemins.py @@ -62,6 +62,23 @@ def ffr(filename): def FFF(filename): return filename.replace('\\', '/') +RscriptsPath = { + 'Rfunct': 'Rfunct.R', + 'chdfunct': 'chdfunct.R', + 'Rgraph': 'Rgraph.R', + 'plotafcm': 'plotafcm.R', + 'afc_graph' : 'afc_graph.R', + #'CHD': 'CHDPOND.R', + 'CHD': 'CHD.R', + #'CHD' : 'NCHD.R', + 'chdtxt': 'chdtxt.R', + 'chdquest': 'chdquest.R', + 'pamtxt' : 'pamtxt.R', + 'anacor' : 'anacor.R', + #'anacor' : 'Nanacor.R', + 'simi' : 'simi.R', + } + def ConstructRscriptsPath(AppliPath): RScriptsPath = os.path.join(AppliPath, 'Rscripts') #print('@@@@@@@@@@@PONDERATION CHDPOND.R@@@@@@@@@@@@@@@@') diff --git a/dialog.py b/dialog.py index 314700d..4b79f88 100755 --- a/dialog.py +++ b/dialog.py @@ -2687,3 +2687,119 @@ class FreqDialog(wx.Dialog): # end wxGlade +class ProtoDial ( wx.Dialog ): + + def __init__( self, parent, headers ): + wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u'Préférences', pos = wx.DefaultPosition, size = wx.DefaultSize, style = wx.DEFAULT_DIALOG_STYLE ) + + self.SetSizeHintsSz( wx.Size( 200,300 ), wx.DefaultSize ) + + bSizer1 = wx.BoxSizer( wx.VERTICAL ) + + fgSizer1 = wx.FlexGridSizer( 0, 2, 0, 0 ) + fgSizer1.SetFlexibleDirection( wx.BOTH ) + fgSizer1.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED ) + + self.m_staticText1 = wx.StaticText( self, wx.ID_ANY, u"Variables", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText1.Wrap( -1 ) + fgSizer1.Add( self.m_staticText1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) + + self.m_staticText2 = wx.StaticText( self, wx.ID_ANY, u"Rangs", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText2.Wrap( -1 ) + fgSizer1.Add( self.m_staticText2, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) + + variablesChoices = headers + self.variables = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, variablesChoices, wx.LB_MULTIPLE ) + self.variables.SetMinSize( wx.Size( 150,-1 ) ) + + fgSizer1.Add( self.variables, 0, wx.ALL|wx.EXPAND, 5 ) + + rangsChoices = headers + self.rangs = wx.ListBox( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, rangsChoices, wx.LB_MULTIPLE ) + self.rangs.SetMinSize( wx.Size( 150,-1 ) ) + + fgSizer1.Add( self.rangs, 0, wx.ALL|wx.EXPAND, 5 ) + + + bSizer1.Add( fgSizer1, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5 ) + + fgSizer3 = wx.FlexGridSizer( 0, 2, 0, 0 ) + fgSizer3.SetFlexibleDirection( wx.BOTH ) + fgSizer3.SetNonFlexibleGrowMode( wx.FLEX_GROWMODE_SPECIFIED ) + + self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, u"Limite fréquence", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText3.Wrap( -1 ) + fgSizer3.Add( self.m_staticText3, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + bSizer2 = wx.BoxSizer( wx.HORIZONTAL ) + + choix_freqChoices = [ u"automatique (moyenne)", u"manuelle" ] + self.choix_freq = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, choix_freqChoices, 0 ) + self.choix_freq.SetSelection( 0 ) + bSizer2.Add( self.choix_freq, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + self.freqlim = wx.TextCtrl( self, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE ) + self.freqlim.Enable( False ) + self.freqlim.SetMinSize( wx.Size( 100,-1 ) ) + + bSizer2.Add( self.freqlim, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + + fgSizer3.Add( bSizer2, 1, wx.EXPAND, 5 ) + + self.m_staticText4 = wx.StaticText( self, wx.ID_ANY, u"Limite rang", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText4.Wrap( -1 ) + fgSizer3.Add( self.m_staticText4, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + bSizer21 = wx.BoxSizer( wx.HORIZONTAL ) + + choix_rangChoices = [ u"automatique (moyenne)", u"manuelle" ] + self.choix_rang = wx.Choice( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, choix_rangChoices, 0 ) + self.choix_rang.SetSelection( 0 ) + bSizer21.Add( self.choix_rang, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + self.ranglim = wx.TextCtrl( self, wx.ID_ANY, u"0", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE ) + self.ranglim.Enable( False ) + self.ranglim.SetMinSize( wx.Size( 100,-1 ) ) + + bSizer21.Add( self.ranglim, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + + fgSizer3.Add( bSizer21, 1, wx.EXPAND, 5 ) + + self.m_staticText5 = wx.StaticText( self, wx.ID_ANY, u"Fréquence minimum", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.m_staticText5.Wrap( -1 ) + fgSizer3.Add( self.m_staticText5, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 ) + + self.m_textCtrl4 = wx.TextCtrl( self, wx.ID_ANY, u"2", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTRE ) + fgSizer3.Add( self.m_textCtrl4, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 ) + + + bSizer1.Add( fgSizer3, 1, wx.EXPAND, 5 ) + + m_sdbSizer1 = wx.StdDialogButtonSizer() + self.m_sdbSizer1OK = wx.Button( self, wx.ID_OK ) + m_sdbSizer1.AddButton( self.m_sdbSizer1OK ) + self.m_sdbSizer1Cancel = wx.Button( self, wx.ID_CANCEL ) + m_sdbSizer1.AddButton( self.m_sdbSizer1Cancel ) + m_sdbSizer1.Realize(); + + bSizer1.Add( m_sdbSizer1, 0, wx.EXPAND, 5 ) + + self.SetSizer( bSizer1 ) + self.Layout() + bSizer1.Fit( self ) + + self.Centre( wx.BOTH ) + + # Connect Events + self.choix_freq.Bind( wx.EVT_CHOICE, self.UpdateText ) + self.choix_rang.Bind( wx.EVT_CHOICE, self.UpdateText ) + + def __del__( self ): + pass + + + # Virtual event handlers, overide them in your derived class + def UpdateText( self, event ): + event.Skip() diff --git a/dictionnaires/expression_gr.txt b/dictionnaires/expression_gr.txt new file mode 100644 index 0000000..e69de29 diff --git a/dictionnaires/lexique_gr.txt b/dictionnaires/lexique_gr.txt new file mode 100644 index 0000000..e59ea82 --- /dev/null +++ b/dictionnaires/lexique_gr.txt @@ -0,0 +1,558 @@ +και και sw +ÏÎ¿Ï ÏÎ¿Ï sw +Ïο Ïο sw +ÏÎ·Ï ÏÎ·Ï sw +η η sw +Ïην Ïην sw +ο ο sw +αÏÏ Î±ÏÏ sw +με με sw +να να sw +ÏÎ¿Ï ÏÎ¿Ï sw +ÏÏν ÏÏν sw +ÏÏην ÏÏην sw +για για sw +Ïον Ïον sw +Ïε Ïε sw +ÏÏο ÏÏο sw +Ïα Ïα sw +οι οι sw +Ïη Ïη sw +ÏÎ¿Ï Ï ÏÎ¿Ï Ï sw +ÏÏη ÏÏη sw +ÏÎ¹Ï ÏÎ¹Ï sw +α α sw +ÏÏ ÏÏ sw +ÏÏÎ¹Ï ÏÏÎ¹Ï sw +ή ή sw +ÏÏι ÏÏι sw +ÏÏον ÏÏον sw +ÏÏα ÏÏα sw +μια μια sw +Ï Ï sw +β β sw +Ï Ï sw +ÎµÎ½Ï ÎµÎ½Ï sw +Ï Ï sw +οÏοία οÏοία sw +αν αν sw +δ δ sw +γ γ sw +ÏÏÎ¿Ï Ï ÏÏÎ¿Ï Ï sw +Î¿Ï Î¿Ï sw +ε ε sw +μία μία sw +κ κ sw +μ μ sw +ÎÎ½Î±Ï ÎÎ½Î±Ï sw +Ïιο Ïιο sw +ν ν sw +Ïελ Ïελ sw +Ï Ï sw +ÏÏÏ ÏÏÏ sw +ενÏÏ ÎµÎ½ÏÏ sw +μα μα sw +Î¿Ï Î¿Ï sw +Î±Ï Ïά Î±Ï Ïά sw +κή κή sw +κÏÏ ÎºÏÏ sw +Î¼Î¿Ï Î¼Î¿Ï sw +Ïαν Ïαν sw +δε δε sw +Ï ÏÏ Ï ÏÏ sw +εÏί εÏί sw +κι κι sw +εν εν sw +ι ι sw +μη μη sw +Î¼Î±Ï Î¼Î±Ï sw +ÎÏÏ ÎÏÏ sw +αÏÎ¿Ï Î±ÏÎ¿Ï sw +Î¼Î¹Î±Ï Î¼Î¹Î±Ï sw +Ï Ï sw +ÏÏο ÏÏο sw +ÎºÏ ÎºÏ sw +Î±Ï ÏÎÏ Î±Ï ÏÎÏ sw +ÏÏÏο ÏÏÏο sw +Î±Ï Î±Ï sw +ÏÏο ÏÏο sw +κάÏι κάÏι sw +ανά ανά sw +Ïι Ïι sw +μÎÏÏ Î¼ÎÏÏ sw +λα λα sw +εκ εκ sw +Î±Ï ÏÏÏ Î±Ï ÏÏÏ sw +είÏε είÏε sw +μην μην sw +ÏαÏά ÏαÏά sw +ÏεÏί ÏεÏί sw +ÎµÎ´Ï ÎµÎ´Ï sw +αÏα αÏα sw +ÎºÎ®Ï ÎºÎ®Ï sw +ήδη ήδη sw +νÏε νÏε sw +ÏÎ¿Ï ÏÎ¿Ï sw +Î±Ï Î±Ï sw +οÏÏε οÏÏε sw +Ï Ï sw +Î±Ï ÏÎ¿Ï Î±Ï ÏÎ¿Ï sw +Î±Ï ÏÏν Î±Ï ÏÏν sw +εκδ εκδ sw +Ïλη Ïλη sw +Ïλμ Ïλμ sw +Î¬Î½Ï Î¬Î½Ï sw +Ïάλι Ïάλι sw +Î·Ï Î·Ï sw +ÎºÎ¿Ï ÎºÎ¿Ï sw +εκαÏομ εκαÏομ sw +Ïλοι Ïλοι sw +ÏÎ±Ï ÏÎ±Ï sw +καὶ καὶ sw +λ λ sw +Ïλο Ïλο sw +θ θ sw +οÏÎ¿Î¯Î¿Ï Î¿ÏÎ¿Î¯Î¿Ï sw +γι γι sw +ÎµÎ¹Ï ÎµÎ¹Ï sw +Î±Ï ÏοÏÏ Î±Ï ÏοÏÏ sw +ÎºÎ»Ï ÎºÎ»Ï sw +εξ εξ sw +ÎºÎ±Ï ÎºÎ±Ï sw +Î±Ï Ïοί Î±Ï Ïοί sw +ÏÏ ÏÏ sw +Ïομ Ïομ sw +Ïκ Ïκ sw +ανÏί ανÏί sw +Ï Ï sw +αι αι sw +Ï Ï sw +ζ ζ sw +ά ά sw +κά κά sw +αÏο αÏο sw +Ï Ï sw +εάν εάν sw +κÎÏ ÎºÎÏ sw +ÏÏÏ ÏÏÏ sw +ημ ημ sw +ιι ιι sw +κα κα sw +αλ αλ sw +δὲ δὲ sw +αγ αγ sw +Î²Ï Î²Ï sw +ελ ελ sw +δια δια sw +βλ βλ sw +κÏν κÏν sw +και και sw +ÏÎ¿Ï ÏÎ¿Ï sw +ÏÎ·Ï ÏÎ·Ï sw +Ïο Ïο sw +να να sw +Ïην Ïην sw +η η sw +με με sw +ÏÎ¿Ï ÏÎ¿Ï sw +ÏÏν ÏÏν sw +για για sw +ÏÏι ÏÏι sw +ÏÎ¿Ï Ï ÏÎ¿Ï Ï sw +Ïα Ïα sw +δεν δεν sw +είναι είναι sw +ο ο sw +αÏÏ Î±ÏÏ sw +Ïη Ïη sw +οι οι sw +Ïε Ïε sw +Ïον Ïον sw +ÏÎ¹Ï ÏÎ¹Ï sw +ÏÏην ÏÏην sw +ÏÏο ÏÏο sw +Î±Ï Î±Ï sw +Î¼Î±Ï Î¼Î±Ï sw +κι κι sw +ÏÏη ÏÏη sw +θα θα sw +μια μια sw +αλλά αλλά sw +ÏÏα ÏÏα sw +Î±Ï ÏÏ Î±Ï ÏÏ sw +Îνα Îνα sw +ÏÏι ÏÏι sw +ή ή sw +μÏνο μÏνο sw +Î±Ï Ïή Î±Ï Ïή sw +Ïαν Ïαν sw +ήÏαν ήÏαν sw +ÏÏÎ¹Ï ÏÏÎ¹Ï sw +ÏÏον ÏÏον sw +ÏÏÏÏ ÏÏÏÏ sw +αν αν sw +ÏμÏÏ ÏμÏÏ sw +ÏήμεÏα ÏήμεÏα sw +ÎµÎ½Ï ÎµÎ½Ï sw +γιαÏί γιαÏί sw +ÎÏει ÎÏει sw +ν ν sw +λοιÏÏν λοιÏÏν sw +Ï Ï sw +καί καί sw +αÏÎ¿Ï Î±ÏÎ¿Ï sw +οÏÏε οÏÏε sw +ÏÏο ÏÏο sw +ÏÏÏÎ¯Ï ÏÏÏÎ¯Ï sw +μεÏά μεÏά sw +ÏÏÏο ÏÏÏο sw +είÏε είÏε sw +μÏοÏεί μÏοÏεί sw +ÏÏÏα ÏÏÏα sw +ÏÏÎ¿Ï Ï ÏÏÎ¿Ï Ï sw +ÎÏÏι ÎÏÏι sw +είÏε είÏε sw +δÏο δÏο sw +ακÏμη ακÏμη sw +Ïιο Ïιο sw +ÎÏÎ¿Ï Î½ ÎÏÎ¿Ï Î½ sw +Î±Ï Ïά Î±Ï Ïά sw +ÏÏÎ¿Ï ÏÏÎ¿Ï sw +ÏÏαν ÏÏαν sw +ÏÎ¬Î½Ï ÏÎ¬Î½Ï sw +άλλη άλλη sw +ÏάÏα ÏάÏα sw +ÏÏÏνια ÏÏÏνια sw +Ïλα Ïλα sw +Î±Ï Ïοί Î±Ï Ïοί sw +εÏί εÏί sw +Î±Ï ÏÎÏ Î±Ï ÏÎÏ sw +ÎÎ½Î±Ï ÎÎ½Î±Ï sw +οÏοία οÏοία sw +μÎÏÏι μÎÏÏι sw +βÎβαια βÎβαια sw +καÏά καÏά sw +ÏημεÏινή ÏημεÏινή sw +μη μη sw +Î±Ï ÏÏÏ Î±Ï ÏÏÏ sw +ÎµÎ´Ï ÎµÎ´Ï sw +ÏÏÏε ÏÏÏε sw +δήθεν δήθεν sw +Î±Ï Ïήν Î±Ï Ïήν sw +ÏÏÎÏει ÏÏÎÏει sw +ÏÎ¿Ï ÏÎ¿Ï sw +μην μην sw +ίδια ίδια sw +Ï ÏάÏÏει Ï ÏάÏÏει sw +ÏÎ±Ï ÏÎ±Ï sw +δηλαδή δηλαδή sw +κανÎνα κανÎνα sw +γι γι sw +ÏÎ¿Î»Ï ÏÎ¿Î»Ï sw +μ μ sw +Î±Ï ÏÎ®Ï Î±Ï ÏÎ®Ï sw +ÏÎ»ÎµÏ ÏÎ»ÎµÏ sw +ÏαÏά ÏαÏά sw +Ïλοι Ïλοι sw +Ïι Ïι sw +κάθε κάθε sw +ÎµÎ¼ÎµÎ¯Ï ÎµÎ¼ÎµÎ¯Ï sw +ÏÏιν ÏÏιν sw +καμιά καμιά sw +ÏÏα ÏÏα sw +κ κ sw +δε δε sw +ÏÎ¯Ï ÏÎ¯Ï sw +ÏÏÎ¿Ï ÏÏÎ¿Ï sw +ÏοÏÎ ÏοÏÎ sw +ÏÎ±Ï ÏÎ±Ï sw +ÎºÏ ÏίÏÏ ÎºÏ ÏίÏÏ sw +Î±Ï ÏοÏÏ Î±Ï ÏοÏÏ sw +ÎÏÎ¿Ï Î¼Îµ ÎÏÎ¿Ï Î¼Îµ sw +Î¼Î¹Î±Ï Î¼Î¹Î±Ï sw +κανÎÎ½Î±Ï ÎºÎ±Î½ÎÎ½Î±Ï sw +κάνει κάνει sw +ÏίÏÏ ÏίÏÏ sw +Ïια Ïια sw +είÏαν είÏαν sw +αμÎÏÏÏ Î±Î¼ÎÏÏÏ sw +Îναν Îναν sw +Îγινε Îγινε sw +γίνεÏαι γίνεÏαι sw +Î¬Î»Î»Î¿Ï Ï Î¬Î»Î»Î¿Ï Ï sw +άλλο άλλο sw +ÏίÏοÏε ÏίÏοÏε sw +ÏÏÏκειÏαι ÏÏÏκειÏαι sw +ακÏιβÏÏ Î±ÎºÏιβÏÏ sw +ίδιο ίδιο sw +ÏÎ¹Î»Î¹Î¬Î´ÎµÏ ÏÎ¹Î»Î¹Î¬Î´ÎµÏ sw +ÏεÏίÏÎ¿Ï ÏεÏίÏÎ¿Ï sw +μÏÏοÏÏά μÏÏοÏÏά sw +εÏειδή εÏειδή sw +βÏίÏκεÏαι βÏίÏκεÏαι sw +Ï ÏάÏÏÎ¿Ï Î½ Ï ÏάÏÏÎ¿Ï Î½ sw +ÏÎ¿Ï Î»Î¬ÏιÏÏον ÏÎ¿Ï Î»Î¬ÏιÏÏον sw +ÏοÏναι ÏοÏναι sw +οÏοιαδήÏοÏε οÏοιαδήÏοÏε sw +Ïάλι Ïάλι sw +ενÏÏ ÎµÎ½ÏÏ sw +είÏαμε είÏαμε sw +ανάμεÏα ανάμεÏα sw +Î¬Î»Î»ÎµÏ Î¬Î»Î»ÎµÏ sw +ÏÏÏÏη ÏÏÏÏη sw +ÏÏÏÏÏαÏα ÏÏÏÏÏαÏα sw +ÎºÎ¬Î½Î¿Ï Î½ ÎºÎ¬Î½Î¿Ï Î½ sw +δεÏÏεÏο δεÏÏεÏο sw +Î´ÎµÎºÎ¬Î´ÎµÏ Î´ÎµÎºÎ¬Î´ÎµÏ sw +h h sw +ÏÏÏην ÏÏÏην sw +ÏάνÏα ÏάνÏα sw +μÏνη μÏνη sw +λÏÎ³Ï Î»ÏÎ³Ï sw +Î±Ï ÏÏν Î±Ï ÏÏν sw +άλλÏÏÏε άλλÏÏÏε sw +άλλÏν άλλÏν sw +Ï ÏήÏξε Ï ÏήÏξε sw +οÏιÏμÎÎ½ÎµÏ Î¿ÏιÏμÎÎ½ÎµÏ sw +οÏοίο οÏοίο sw +Î´Ï Î¿ Î´Ï Î¿ sw +Î±Ï Î±Ï sw +ÏÏοι ÏÏοι sw +ÏÏεδÏν ÏÏεδÏν sw +μÏοÏοÏν μÏοÏοÏν sw +μÎÏÎµÏ Î¼ÎÏÎµÏ sw +μάλιÏÏα μάλιÏÏα sw +δ δ sw +Îγιναν Îγιναν sw +Ïλη Ïλη sw +κάÏι κάÏι sw +εν εν sw +άλλοι άλλοι sw +ÏαίνεÏαι ÏαίνεÏαι sw +ÏÏÎµÎ¹Ï ÏÏÎµÎ¹Ï sw +ÏÏίÏÎ¿Ï ÏÏίÏÎ¿Ï sw +ÏÏÏ ÏÏÏ sw +λÎνε λÎνε sw +ÎºÎ»Ï ÎºÎ»Ï sw +κάÏÎ¿Î¹Î¿Ï ÎºÎ¬ÏÎ¿Î¹Î¿Ï sw +κάÏοια κάÏοια sw +εκÏÏÏ ÎµÎºÏÏÏ sw +διÏεκαÏομμÏÏια διÏεκαÏομμÏÏια sw +γίνει γίνει sw +αÏÎνανÏι αÏÎνανÏι sw +ÏημεÏÎ¹Î½Ï ÏημεÏÎ¹Î½Ï sw +ÏλÎον ÏλÎον sw +ÏÎÏα ÏÎÏα sw +ÎºÎ±Î½ÎµÎ¯Ï ÎºÎ±Î½ÎµÎ¯Ï sw +καν καν sw +Î±Ï ÏÎ¿Ï Î±Ï ÏÎ¿Ï sw +ÎÏÏÏ ÎÏÏÏ sw +ÏÎ»Î¿Ï Ï ÏÎ»Î¿Ï Ï sw +ÏοÏÎÏ ÏοÏÎÏ sw +ÏοÏά ÏοÏά sw +ÏÏÏÏÏαÏη ÏÏÏÏÏαÏη sw +ÏεÏί ÏεÏί sw +νάÏει νάÏει sw +νάναι νάναι sw +μεγάλο μεγάλο sw +μεγάλη μεγάλη sw +ÎµÎ¾Î®Ï ÎµÎ¾Î®Ï sw +Î±Ï ÏÏν Î±Ï ÏÏν sw +Îκανε Îκανε sw +ÏÎÏοιο ÏÎÏοιο sw +ÏημεÏινÎÏ ÏημεÏινÎÏ sw +Ï Ï sw +οÏιÏμÎνα οÏιÏμÎνα sw +οÏÎ¿Î¯ÎµÏ Î¿ÏÎ¿Î¯ÎµÏ sw +οÏÎ¿Î¯Î±Ï Î¿ÏÎ¿Î¯Î±Ï sw +καμία καμία sw +διάÏοÏα διάÏοÏα sw +ÏÏÏα ÏÏÏα sw +ÏÎÏοια ÏÎÏοια sw +ÏÎÏια ÏÎÏια sw +Ï Ï sw +ÏιÏÏεÏÎ¿Ï Î¼Îµ ÏιÏÏεÏÎ¿Ï Î¼Îµ sw +μία μία sw +θάÏε θάÏε sw +θ θ sw +βÏίÏκονÏαι βÏίÏκονÏαι sw +άλλα άλλα sw +ÏλÏν ÏλÏν sw +ÏÎμα ÏÎμα sw +ÏÏεÏικά ÏÏεÏικά sw +ÏοÏμε ÏοÏμε sw +ÏÎ¿Î¹Î¿Ï ÏÎ¿Î¹Î¿Ï sw +λÎγαμε λÎγαμε sw +κάÏοιο κάÏοιο sw +ιδιαίÏεÏα ιδιαίÏεÏα sw +εκαÏομμÏÏια εκαÏομμÏÏια sw +ε ε sw +διÏεκαÏÎ¿Î¼Î¼Ï ÏίÏν διÏεκαÏÎ¿Î¼Î¼Ï ÏίÏν sw +γ γ sw +Î±Î»Î»Î¿Ï Î±Î»Î»Î¿Ï sw +ίÏÏÏ Î¯ÏÏÏ sw +ÏÏÏε ÏÏÏε sw +ÏÏÎ¿Ï Ï ÏÏÎ¿Ï Ï sw +ÏÏον ÏÏον sw +ÏÏίÏο ÏÏίÏο sw +Ïοιον Ïοιον sw +μÏÎ»Î¹Ï Î¼ÏÎ»Î¹Ï sw +Î¼ÎµÎ³Î¬Î»ÎµÏ Î¼ÎµÎ³Î¬Î»ÎµÏ sw +δεÏÏεÏη δεÏÏεÏη sw +ÎÏονÏÎ±Ï ÎÏονÏÎ±Ï sw +Îκαναν Îκαναν sw +ÏÏÎ¿Ï ÏÏÎ¿Ï sw +ÏνÏÎ±Ï ÏνÏÎ±Ï sw +Ï Ï sw +ÏÏίÏη ÏÏίÏη sw +ÏÏ Î½ÎµÏÎµÎ¯Ï ÏÏ Î½ÎµÏÎµÎ¯Ï sw +ÏÏ Î½Î®Î¸ÏÏ ÏÏ Î½Î®Î¸ÏÏ sw +ÏÏ Î½ÎÏεια ÏÏ Î½ÎÏεια sw +ÏÏÏÏο ÏÏÏÏο sw +ÏÎνÏε ÏÎνÏε sw +οÏιÏμÎνοι οÏιÏμÎνοι sw +μÎÏÏÎ¹Ï Î¼ÎÏÏÎ¹Ï sw +καθÎÎ½Î±Ï ÎºÎ±Î¸ÎÎ½Î±Ï sw +καθÎνα καθÎνα sw +θÎλει θÎλει sw +θάÏαν θάÏαν sw +εÏίÏÎ·Ï ÎµÏίÏÎ·Ï sw +εκαÏÎ¿Î¼Î¼Ï ÏίÏν εκαÏÎ¿Î¼Î¼Ï ÏίÏν sw +ειÏαγγελÎα ειÏαγγελÎα sw +β β sw +ÎμμεÏη ÎμμεÏη sw +άμεÏÎ·Ï Î¬Î¼ÎµÏÎ·Ï sw +Î¬Î»Î»Î¿Ï Î¬Î»Î»Î¿Ï sw +eÎ½Ï eÎ½Ï sw +Ïλο Ïλο sw +ÏιλιάδÏν ÏιλιάδÏν sw +Ï Ï sw +Ïί Ïί sw +ÏÏ ÏÏ sw +ÏÏÏÏÎ¿Ï ÏÏÏÏÎ¿Ï sw +ÏÏÏÏα ÏÏÏÏα sw +ÏοÏÏÎ¿Ï Î½ ÏοÏÏÎ¿Ï Î½ sw +ÏοÏÏει ÏοÏÏει sw +Ïοιο Ïοιο sw +Ïοια Ïοια sw +οÏÎ¿Î¯Î¿Ï Ï Î¿ÏÎ¿Î¯Î¿Ï Ï sw +νάÏÎ¿Ï Î½ νάÏÎ¿Ï Î½ sw +μεγαλÏÏεÏα μεγαλÏÏεÏα sw +μεγάλÏν μεγάλÏν sw +μεγάλα μεγάλα sw +μήÏÏÏ Î¼Î®ÏÏÏ sw +μήνα μήνα sw +λ λ sw +κάÏÏÏ ÎºÎ¬ÏÏÏ sw +ελλ ελλ sw +εκ εκ sw +δεκαεÏÎ¯ÎµÏ Î´ÎµÎºÎ±ÎµÏÎ¯ÎµÏ sw +δεκαεÏία δεκαεÏία sw +αÏÏÎ»Ï Ïα αÏÏÎ»Ï Ïα sw +α α sw +Î¯Î´Î¹Î¿Ï Î¯Î´Î¹Î¿Ï sw +ÎÎ¾Ï ÎÎ¾Ï sw +άÏα άÏα sw +ÏÏία ÏÏία sw +ÏÎ·Ï ÏÎ·Ï sw +ÏάÏÎ·Ï ÏάÏÎ·Ï sw +ÏάνÏÎµÏ ÏάνÏÎµÏ sw +οÏÎ¿Î¯Î¿Ï Î¿ÏÎ¿Î¯Î¿Ï sw +ολÏκληÏη ολÏκληÏη sw +μÏοÏοÏÏαν μÏοÏοÏÏαν sw +μεÏÎ±Î¾Ï Î¼ÎµÏÎ±Î¾Ï sw +μεγαλÏÏεÏη μεγαλÏÏεÏη sw +λÎμε λÎμε sw +ÏÏειάζεÏαι ÏÏειάζεÏαι sw +Ï Ï sw +Ï ÏÏ Ï ÏÏ sw +ÏÏιÏν ÏÏιÏν sw +ÏοÏÏÎ¿Î¹Ï ÏοÏÏÎ¿Î¹Ï sw +ÏÏÏÏÏαÏÎµÏ ÏÏÏÏÏαÏÎµÏ sw +ÏοÏÏε ÏοÏÏε sw +λίγο λίγο sw +εξ εξ sw +εκαÏονÏάδÏν εκαÏονÏάδÏν sw +εκαÏονÏÎ¬Î´ÎµÏ ÎµÎºÎ±ÏονÏÎ¬Î´ÎµÏ sw +αÏλή αÏλή sw +ακÏμα ακÏμα sw +ÏÎ¹Ï ÏÎ¹Ï sw +ÏÎÏιο ÏÎÏιο sw +ÏÎÏÎ¹ÎµÏ ÏÎÏÎ¹ÎµÏ sw +ÏÏÏο ÏÏÏο sw +ÏανÏÎ¿Ï ÏανÏÎ¿Ï sw +οÏιÏμÎÎ½Î¿Ï Ï Î¿ÏιÏμÎÎ½Î¿Ï Ï sw +οÏοιοÏδήÏοÏε οÏοιοÏδήÏοÏε sw +λλοι λλοι sw +εÏιÏλÎον εÏιÏλÎον sw +Î´Î¹ÎºÏ Î´Î¹ÎºÏ sw +δικοÏÏ Î´Î¹ÎºÎ¿ÏÏ sw +δι δι sw +δεκάδÏν δεκάδÏν sw +ήδη ήδη sw +Î¬Î»Î»Î¿Ï Î¬Î»Î»Î¿Ï sw +tÏÏο tÏÏο sw +kι kι sw +aν aν sw +Ï Ï sw +ÏÎÏÎ¿Î¹ÎµÏ ÏÎÏÎ¿Î¹ÎµÏ sw +ÏÏάγμαÏι ÏÏάγμαÏι sw +Ïοιοι Ïοιοι sw +ÏιÏÏεÏει ÏιÏÏεÏει sw +ÏαÏαÏÎ¬Î½Ï ÏαÏαÏÎ¬Î½Ï sw +οÏοιαÏδήÏοÏε οÏοιαÏδήÏοÏε sw +μÏοÏÎÏει μÏοÏÎÏει sw +μικÏÏ Î¼Î¹ÎºÏÏ sw +μεÏικÎÏ Î¼ÎµÏικÎÏ sw +μεγαλÏÏεÏÎµÏ Î¼ÎµÎ³Î±Î»ÏÏεÏÎµÏ sw +Î»ÎµÏ Î»ÎµÏ sw +κάÏÎ¿Î¹Î¿Ï ÎºÎ¬ÏÎ¿Î¹Î¿Ï sw +κάνονÏÎ±Ï ÎºÎ¬Î½Î¿Î½ÏÎ±Ï sw +ιδίÏÏ Î¹Î´Î¯ÏÏ sw +θÎÎ»Î¿Ï Î½ θÎÎ»Î¿Ï Î½ sw +θάÏÏεÏε θάÏÏεÏε sw +εκεί εκεί sw +Î¯Î´Î¹Î¿Ï Ï Î¯Î´Î¹Î¿Ï Ï sw +ÎÏÏεÏε ÎÏÏεÏε sw +ÏÏοιον ÏÏοιον sw +ÏÏοιο ÏÏοιο sw +ÏÏιÏεκαÏομμÏÏιο ÏÏιÏεκαÏομμÏÏιο sw +ÏÏίÏÎ¿Ï ÏÏίÏÎ¿Ï sw +ÏÎ¿Ï Ï ÏÎ¿Ï Ï sw +ÏÏÎ¹Ï ÏÏÎ¹Ï sw +ÏÎ¿Ï ÏÎ¿Ï sw +Ïα Ïα sw +Ï Ï sw +ÏÏÏ ÏÏÏ sw +ÏολλÎÏ ÏολλÎÏ sw +ÏαÏÏÏι ÏαÏÏÏι sw +ÏÎÏÏι ÏÎÏÏι sw +οÏοίÏν οÏοίÏν sw +νάγινε νάγινε sw +μÏοÏείÏε μÏοÏείÏε sw +μιÏÎ¿Ï Î¼Î¹ÏÎ¿Ï sw +μιÏή μιÏή sw +Î¼ÎµÎ³Î¬Î»Î·Ï Î¼ÎµÎ³Î¬Î»Î·Ï sw +μακÏιά μακÏιά sw +Î»Î»Î¿Ï Î»Î»Î¿Ï sw +Î»Î¯Î³ÎµÏ Î»Î¯Î³ÎµÏ sw +λίγα λίγα sw +κανÎναν κανÎναν sw +θάναι θάναι sw +εξίÏÎ¿Ï ÎµÎ¾Î¯ÏÎ¿Ï sw +ενÏοÏÏÎ¿Î¹Ï ÎµÎ½ÏοÏÏÎ¿Î¹Ï sw +δια δια sw +δηλ δηλ sw +γÏÏÏ Î³ÏÏÏ sw +γίνονÏαν γίνονÏαν sw +αÏÏιο αÏÏιο sw +αÏγÏÏεÏα αÏγÏÏεÏα sw +ήξεÏε ήξεÏε sw +ÎÏεÏε ÎÏεÏε sw +tο tο sw +mε mε sw +eÏÏι eÏÏι sw +aÏ aÏ sw +5Î·Ï 5Î·Ï sw +50% 50% sw +μή μή sw diff --git a/images/splash.png b/images/splash.png index 5c56b0d27f97e9316897729a21a9d13d5e306c5e..cab4a7bcd85b9fd44c9c8088426b8d7a553e627b 100644 GIT binary patch delta 22160 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 D6>Enm delta 22223 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 KO64ysLjDJ(Z<gx- diff --git a/images/splash.svg b/images/splash.svg index 4804629..f7759e2 100644 --- a/images/splash.svg +++ b/images/splash.svg @@ -144,10 +144,10 @@ inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" - inkscape:window-width="1155" - inkscape:window-height="998" + inkscape:window-width="1018" + inkscape:window-height="1030" inkscape:window-x="0" - inkscape:window-y="27" + inkscape:window-y="18" inkscape:window-maximized="0" /> <metadata id="metadata7"> @@ -303,7 +303,7 @@ x="110.10663" y="146.45171" style="font-size:14px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;font-family:gargi;-inkscape-font-specification:gargi Medium" /></flowRegion><flowPara - id="flowPara3866">Version 0.6 alpha 2</flowPara></flowRoot> <flowRoot + id="flowPara3866">Version 0.6 alpha 4</flowPara></flowRoot> <flowRoot xml:space="preserve" id="flowRoot3868" style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Bitstream Vera Sans;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion diff --git a/iracmd.py b/iracmd.py index 81a3910..dd883f8 100644 --- a/iracmd.py +++ b/iracmd.py @@ -46,7 +46,8 @@ else: UserConfigPath = os.path.abspath(os.path.join(user_home, '.iramuteq')) class CmdLine : - def __init__(self, args = None) : + def __init__(self, args = None, AppliPath = None) : + AppliPath = AppliPath self.DictPath = ConstructDicoPath(AppliPath) self.ConfigPath = ConstructConfigPath(UserConfigPath) self.syscoding = sys.getdefaultencoding() @@ -175,5 +176,5 @@ class CmdLine : if __name__ == '__main__': __name__ = 'Main' - CmdLine() + CmdLine(AppliPath = AppliPath) diff --git a/iramuteq.py b/iramuteq.py index 1f7b17e..d1b6077 100644 --- a/iramuteq.py +++ b/iramuteq.py @@ -49,9 +49,8 @@ from tabafcm import DoAFCM from tabchdalc import AnalyseQuest from tabsimi import DoSimi from tabrsimple import InputText -from tabverges import Verges +from tabverges import Prototypical #from textafcuci import AfcUci -#from textchdalc import AnalyseAlceste from analysetxt import Alceste from textdist import AnalysePam from textstat import Stat @@ -64,7 +63,7 @@ from openanalyse import OpenAnalyse from corpus import BuildFromAlceste, Builder from sheet import MySheet from checkinstall import CreateIraDirectory, CheckRPath, FindRPAthWin32, FindRPathNix, CheckRPackages, IsNew, UpgradeConf, CopyConf, RLibsAreInstalled -from chemins import ConstructRscriptsPath, ConstructConfigPath, ConstructDicoPath, ConstructGlobalPath, PathOut +from chemins import RscriptsPath, ConstructConfigPath, ConstructDicoPath, ConstructGlobalPath, PathOut from parse_factiva_xml import ImportFactiva from tools import Extract @@ -96,6 +95,7 @@ ID_RESULT = wx.NewId() ID_VIEWDATA = wx.NewId() ID_HTMLcontent = wx.NewId() ID_SimiTxt = wx.NewId() +ID_proto = wx.NewId() ########################################################## #elements de configuration ########################################################## @@ -164,7 +164,9 @@ class IraFrame(wx.Frame): self.AppliPath = AppliPath self.images_path = os.path.join(AppliPath,'images') self.UserConfigPath = UserConfigPath - self.RscriptsPath = ConstructRscriptsPath(AppliPath) + #self.RscriptsPath = ConstructRscriptsPath(AppliPath) + self.RscriptsPath = PathOut(dirout=os.path.join(AppliPath, 'Rscripts')) + self.RscriptsPath.basefiles(RscriptsPath) #self.DictPath = ConstructDicoPath(AppliPath) self.DictPath = ConstructDicoPath(UserConfigPath) self.ConfigGlob = ConfigGlob @@ -244,6 +246,7 @@ class IraFrame(wx.Frame): analyse_menu.AppendMenu(-1, u"Classification", menu_classif) #analyse_menu.Append(ID_AFCM, u"AFCM") analyse_menu.Append(ID_SIMI, u"Analyse de similitudes") + analyse_menu.Append(ID_proto, _(u"Prototypical analysis")) ID_RCODE = wx.NewId() analyse_menu.Append(ID_RCODE, u"Code R...") @@ -369,6 +372,7 @@ class IraFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.OnCHDSIM, id=ID_CHDSIM) self.Bind(wx.EVT_MENU, self.OnCHDAlceste, id=ID_CHDAlceste) self.Bind(wx.EVT_MENU, self.OnAFCM, id=ID_AFCM) + self.Bind(wx.EVT_MENU, self.OnProto, id=ID_proto) self.Bind(wx.EVT_MENU, self.OnRCode, id=ID_RCODE) #self.Bind(wx.EVT_MENU, self.OnCheckcorpus, id = ID_CHECKCORPUS) self.Bind(wx.EVT_MENU, self.OnTextStat, id=ID_TEXTSTAT) @@ -874,6 +878,9 @@ Voulez-vous fermer quand même ?""" PlaySound(self) except: BugReport(self) + + def OnProto(self, evt) : + Prototypical(self, {'type' : 'proto'}) def OnSimiTxt(self, evt, corpus = None) : # print 'PLUS DE BUG SUR SIMITXT' diff --git a/openanalyse.py b/openanalyse.py index 5de5aa2..77d08a7 100644 --- a/openanalyse.py +++ b/openanalyse.py @@ -5,13 +5,13 @@ #Lisense: GNU/GPL from chemins import ChdTxtPathOut, StatTxtPathOut, PathOut -from layout import OpenCHDS, dolexlayout, StatLayout, WordCloudLayout, OpenCorpus, SimiLayout, SimiMatLayout +from layout import OpenCHDS, dolexlayout, StatLayout, WordCloudLayout, OpenCorpus, SimiLayout, SimiMatLayout, ProtoLayout from corpus import Corpus, copycorpus from tableau import Tableau import os -import shelve +#import shelve #from tabsimi import DoSimi -from functions import BugReport, DoConf, progressbar +from functions import DoConf from tableau import Tableau import logging @@ -140,4 +140,6 @@ class OpenAnalyse(): elif self.conf['type'] == 'simimatrix' : #self.parent.ShowMenu(_("Spreadsheet analysis")) SimiMatLayout(self.parent, corpus, self.conf) + elif self.conf['type'] == 'proto' : + ProtoLayout(self.parent, corpus, self.conf) diff --git a/tabverges.py b/tabverges.py index b9e4ee3..12f4a61 100644 --- a/tabverges.py +++ b/tabverges.py @@ -10,45 +10,85 @@ import wx import os import sys import tempfile -from chemins import ffr,FFF +from chemins import ffr,FFF, ConstructPathOut import wx.lib.sized_controls as sc from time import sleep -from functions import exec_rcode, check_Rresult -from dialog import ChiDialog +from functions import exec_rcode, check_Rresult, progressbar +from PrintRScript import ProtoScript +from analysematrix import AnalyseMatrix +from dialog import ProtoDial -class Verges : - def __init__(self,parent): +class Prototypical(AnalyseMatrix) : + def __init__(self, parent, parametres): self.parent = parent self.tableau = self.parent.tableau - chioption = { 'valobs' : True, - 'valtheo' : True, - 'resi' : False, - 'contrib' : True, - 'pourcent' : False, - 'pourcentl' : True, - 'pourcentc' : True, - 'graph' : True, - } - self.dlg = ChiDialog(parent, -1, u"Chi2", chioption, size=(400, 350), - style = wx.DEFAULT_DIALOG_STYLE - ) - self.dlg.CenterOnParent() - self.check_val() + self.parametres = parametres + self.parametres['filename'] = parent.tableau.parametre['filename'] + self.parametres['pathout'] = ConstructPathOut(parent.tableau.parametre['filename'], 'proto') + self.parametres['type'] = 'proto' + dlg = progressbar(self.parent, 2) + self.colnames = self.tableau.get_colnames() + AnalyseMatrix.__init__(self, parent, parent.tableau, self.parametres, dlg = dlg) + + def doanalyse(self) : + res = self.check_val() + return res def check_val(self) : - self.val = self.dlg.ShowModal() + self.dial = ProtoDial(self.ira, self.colnames) + self.dial.CenterOnParent() + + self.val = self.dial.ShowModal() if self.val==wx.ID_OK : - self.ColSel1 = self.dlg.list_box_1.GetSelections() - self.ColSel2 = self.dlg.list_box_2.GetSelections() + self.ColSel1 = self.dial.variables.GetSelections() + self.ColSel2 = self.dial.rangs.GetSelections() + if len(self.ColSel1) != len(self.ColSel2) : print 'pas meme taille' self.check_val() else : - self.dotable() + if self.dial.choix_freq.GetSelection() == 0 : + self.parametres['limfreq'] = 'NULL' + else : + self.parametres['limfreq'] = self.dial.freqlim.GetValue() + if self.dial.choix_rang.GetSelection() == 0 : + self.parametres['limrang'] = 'NULL' + else : + self.parametres['limrang'] = self.dial.ranglim.GetValue() + self.parametres['freqmin'] = int(self.dial.m_textCtrl4.GetValue()) + table_assoc, table_rank = self.dotable() + self.makedatas(table_assoc, table_rank) + self.DoR() + else : + return 'stop' def dotable(self) : table_assoc = self.tableau.select_col(self.ColSel1) table_rank = self.tableau.select_col(self.ColSel2) - + return table_assoc, table_rank + + def makedatas(self, table_assoc, table_rank) : + words = {} + for i in range(0, len(table_assoc)) : + for j, word in enumerate(table_assoc[i]) : + if word in words : + words[word][0] += 1 + if table_rank[i][j] != '' : + words[word][1].append(int(table_rank[i][j])) + else : + if table_rank[i][j] != '' : + words[word] = [1, [int(table_rank[i][j])]] + 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 : + f.write('\n'.join(['\t'.join(['"' + val[0] +'"', `val[1]`, `val[2]`]) for val in res])) + self.parent.tableau.parametres = self.parent.tableau.parametre + self.parent.tableau.save_tableau(self.pathout['analyse.db']) + + def DoR(self) : + script = ProtoScript(self) + script.make_script() + self.doR(script.scriptout) diff --git a/textwordcloud.py b/textwordcloud.py index 908ba89..bc875bc 100644 --- a/textwordcloud.py +++ b/textwordcloud.py @@ -43,8 +43,8 @@ class WordCloud(AnalyseText): else : return 'NOK' - def make_option(self) : - dial = PrefWordCloud(self.ira) + def make_option(self, fromcluster = False) : + dial = PrefWordCloud(self.ira, fromcluster) dial.CenterOnParent() res = dial.ShowModal() if res == wx.ID_OK : @@ -61,6 +61,8 @@ class WordCloud(AnalyseText): self.parametres['col_bg'] = dial.color_bg.GetColour() self.parametres['mode'] = dial.typeformeschoice.GetSelection() self.parametres['svg'] = svg + if fromcluster : + self.parametres['indice'] = dial.indice.GetSelection() outgraph = os.path.join(os.path.dirname(self.pathout['zipf.png']), 'nuage_') nb = 1 if svg : @@ -84,11 +86,11 @@ class ClusterCloud(WordCloud) : self.parametres['type'] = 'clustercloud' #FIXME limit = 2 - res = self.make_option() + res = self.make_option(True) if res == wx.ID_OK : prof = self.parametres['clusterprof'] del self.parametres['clusterprof'] - if self.parametres.get('unit', 0) == 0 : + if self.parametres['indice'] == 0 : tokeep = 1 else : tokeep = 2 -- 2.7.4