""" % (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()
+
}
}
+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]])]
--- /dev/null
+
+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)
+}
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 :
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@@@@@@@@@@@@@@@@')
# 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()
--- /dev/null
+και και sw
+του του sw
+το το sw
+της της sw
+η η sw
+την την sw
+ο ο sw
+από από sw
+με με sw
+να να sw
+που που sw
+των των sw
+στην στην sw
+για για sw
+τον τον sw
+σε σε sw
+στο στο sw
+τα τα sw
+οι οι sw
+τη τη sw
+τους τους sw
+στη στη sw
+τις τις sw
+α α sw
+ως ως sw
+στις στις sw
+ή ή sw
+ότι ότι sw
+στον στον sw
+στα στα sw
+μια μια sw
+π π sw
+β β sw
+σ σ sw
+ενώ ενώ sw
+χ χ sw
+οποία οποία sw
+αν αν sw
+δ δ sw
+γ γ sw
+στους στους sw
+ου ου sw
+ε ε sw
+μία μία sw
+κ κ sw
+μ μ sw
+ένας ένας sw
+πιο πιο sw
+ν ν sw
+σελ σελ sw
+ς ς sw
+πως πως sw
+ενός ενός sw
+μα μα sw
+ος ος sw
+αυτά αυτά sw
+κή κή sw
+κός κός sw
+μου μου sw
+σαν σαν sw
+δε δε sw
+υπό υπό sw
+επί επί sw
+κι κι sw
+εν εν sw
+ι ι sw
+μη μη sw
+μας μας sw
+έως έως sw
+αφού αφού sw
+μιας μιας sw
+τ τ sw
+προ προ sw
+κό κό sw
+αυτές αυτές sw
+τόσο τόσο sw
+ας ας sw
+όσο όσο sw
+κάτι κάτι sw
+ανά ανά sw
+τι τι sw
+μέσω μέσω sw
+λα λα sw
+εκ εκ sw
+αυτός αυτός sw
+είτε είτε sw
+μην μην sw
+παρά παρά sw
+περί περί sw
+εδώ εδώ sw
+αχα αχα sw
+κής κής sw
+ήδη ήδη sw
+ντε ντε sw
+σου σου sw
+απ απ sw
+ούτε ούτε sw
+φ φ sw
+αυτού αυτού sw
+αυτών αυτών sw
+εκδ εκδ sw
+όλη όλη sw
+χλμ χλμ sw
+άνω άνω sw
+πάλι πάλι sw
+ης ης sw
+κού κού sw
+εκατομ εκατομ sw
+όλοι όλοι sw
+σας σας sw
+καὶ καὶ sw
+λ λ sw
+όλο όλο sw
+θ θ sw
+οποίου οποίου sw
+γι γι sw
+εις εις sw
+αυτούς αυτούς sw
+κλπ κλπ sw
+εξ εξ sw
+κατ κατ sw
+αυτοί αυτοί sw
+στ στ sw
+τομ τομ sw
+φκ φκ sw
+αντί αντί sw
+ό ό sw
+αι αι sw
+ρ ρ sw
+ζ ζ sw
+ά ά sw
+κά κά sw
+απο απο sw
+υ υ sw
+εάν εάν sw
+κές κές sw
+πώς πώς sw
+ημ ημ sw
+ιι ιι sw
+κα κα sw
+αλ αλ sw
+δὲ δὲ sw
+αγ αγ sw
+βπ βπ sw
+ελ ελ sw
+δια δια sw
+βλ βλ sw
+κών κών sw
+και και sw
+του του sw
+της της sw
+το το sw
+να να sw
+την την sw
+η η sw
+με με sw
+που που sw
+των των sw
+για για sw
+ότι ότι sw
+τους τους sw
+τα τα sw
+δεν δεν sw
+είναι είναι sw
+ο ο sw
+από από sw
+τη τη sw
+οι οι sw
+σε σε sw
+τον τον sw
+τις τις sw
+στην στην sw
+στο στο sw
+απ απ sw
+μας μας sw
+κι κι sw
+στη στη sw
+θα θα sw
+μια μια sw
+αλλά αλλά sw
+στα στα sw
+αυτό αυτό sw
+ένα ένα sw
+όχι όχι sw
+ή ή sw
+μόνο μόνο sw
+αυτή αυτή sw
+σαν σαν sw
+ήταν ήταν sw
+στις στις sw
+στον στον sw
+όπως όπως sw
+αν αν sw
+όμως όμως sw
+σήμερα σήμερα sw
+ενώ ενώ sw
+γιατί γιατί sw
+έχει έχει sw
+ν ν sw
+λοιπόν λοιπόν sw
+σ σ sw
+καί καί sw
+αφού αφού sw
+ούτε ούτε sw
+όσο όσο sw
+χωρίς χωρίς sw
+μετά μετά sw
+τόσο τόσο sw
+είχε είχε sw
+μπορεί μπορεί sw
+χώρα χώρα sw
+στους στους sw
+έτσι έτσι sw
+είτε είτε sw
+δύο δύο sw
+ακόμη ακόμη sw
+πιο πιο sw
+έχουν έχουν sw
+αυτά αυτά sw
+όπου όπου sw
+όταν όταν sw
+πάνω πάνω sw
+άλλη άλλη sw
+πάρα πάρα sw
+χρόνια χρόνια sw
+όλα όλα sw
+αυτοί αυτοί sw
+επί επί sw
+αυτές αυτές sw
+ένας ένας sw
+οποία οποία sw
+μέχρι μέχρι sw
+βέβαια βέβαια sw
+κατά κατά sw
+σημερινή σημερινή sw
+μη μη sw
+αυτός αυτός sw
+εδώ εδώ sw
+τότε τότε sw
+δήθεν δήθεν sw
+αυτήν αυτήν sw
+πρέπει πρέπει sw
+πού πού sw
+μην μην sw
+ίδια ίδια sw
+υπάρχει υπάρχει sw
+σας σας sw
+δηλαδή δηλαδή sw
+κανένα κανένα sw
+γι γι sw
+πολύ πολύ sw
+μ μ sw
+αυτής αυτής sw
+όλες όλες sw
+παρά παρά sw
+όλοι όλοι sw
+τι τι sw
+κάθε κάθε sw
+εμείς εμείς sw
+πριν πριν sw
+καμιά καμιά sw
+όσα όσα sw
+κ κ sw
+δε δε sw
+τίς τίς sw
+προς προς sw
+ποτέ ποτέ sw
+παρ παρ sw
+κυρίως κυρίως sw
+αυτούς αυτούς sw
+έχουμε έχουμε sw
+μιας μιας sw
+κανένας κανένας sw
+κάνει κάνει sw
+πίσω πίσω sw
+πια πια sw
+είχαν είχαν sw
+αμέσως αμέσως sw
+έναν έναν sw
+έγινε έγινε sw
+γίνεται γίνεται sw
+άλλους άλλους sw
+άλλο άλλο 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
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">
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
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()
if __name__ == '__main__':
__name__ = 'Main'
- CmdLine()
+ CmdLine(AppliPath = AppliPath)
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
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
ID_VIEWDATA = wx.NewId()
ID_HTMLcontent = wx.NewId()
ID_SimiTxt = wx.NewId()
+ID_proto = wx.NewId()
##########################################################
#elements de configuration
##########################################################
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
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...")
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)
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'
#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
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)
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)
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 :
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 :
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