X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=tabchi2.py;h=d82a0801c1a65fe046fa1bd65dddf87f53d7a8b7;hp=422b44735d1facb7f79f9156cf3068cfea561c47;hb=ead6ffe8d4024e2afb3dc0c8457cd78dd15768e5;hpb=6919f2ef8d85c176c7be824b606c4b71142e10fd diff --git a/tabchi2.py b/tabchi2.py index 422b447..d82a080 100755 --- a/tabchi2.py +++ b/tabchi2.py @@ -57,314 +57,6 @@ chioption = { 'valobs' : True, 'bw' : False, } - -class MakeChi2(): - def __init__(self, parent, select1, select2, chioption, tableau): - self.tableau = tableau - self.OutFrame=tempfile.mktemp(dir=parent.TEMPDIR) - print self.OutFrame - self.parent=parent - self.encode=self.parent.encode - self.TEMPDIR=parent.TEMPDIR - self.RPath=parent.PathPath.get('PATHS','rpath') - self.TextCroise=[] - for i in select1 : - for j in select2 : - self.TextCroise.append(self.tableau.colnames[i] + ' / ' + self.tableau.colnames[j]) - rchioption = {} - for val in chioption : - if chioption[val]: - rchioption[val] = 'TRUE' - else : - rchioption[val] = 'FALSE' - txt=""" - source("%s") - """%self.parent.RscriptsPath['Rfunct'] -# if parent.tableau.: rownames=1 -# else : rownames='NULL' -# if parent.g_header : header = 'TRUE' -# else : header = 'FALSE' - txt += """ - source("%s") - """ % ffr(self.parent.RscriptsPath['Rgraph']) - txt += """ - doobs <- %s - doexp <- %s - docontrib <- %s - doresi <- %s - dopr <- %s - doprl <- %s - doprc <- %s - dograph <- %s - bw <- %s - """ % (rchioption['valobs'], rchioption['valtheo'], rchioption['contrib'], rchioption['resi'], rchioption['pourcent'], rchioption['pourcentl'], rchioption['pourcentc'], rchioption['graph'], rchioption['bw']) - txt+=""" - datadm <- read.csv2("%s", encoding="%s", header = TRUE, row.names = 1, sep='\\t', quote = '"', na.string = '') - listres<-list() - listcol<-list() - cont<-1 - """%(ffr(self.tableau.parametres['csvfile']), self.tableau.parametres['syscoding']) - if len(select1)==1: - strsel1=str(select1).replace(',','') - else: - strsel1=str(select1) - if len(select2)==1: - strsel2=str(select2).replace(',','') - else: - strsel2=str(select2) - txt+=""" - for (i in c%s) {"""%strsel1 - txt+=""" - for (j in c%s) {"""%strsel2 - txt+=""" - tab<-table(datadm[,i+1],datadm[,j+1]) - if (min(dim(tab)) != 1) { - chi<-chisq.test(tab) - CS<-colSums(tab) - RS<-rowSums(tab) - GT<-sum(tab) - chi$contrib<-(tab-chi$expected)/sqrt(chi$expected * ((1 - RS/GT) %%*%% t(1 - CS/GT))) - listres[[cont]]<-chi - listcol[[cont]]<-ncol(tab) - cont<-cont+1 - } else { - chi <- list(observed = tab, residuals = tab, contrib = tab, statistic = 0, p.value = 1, expected = tab, message = 'pas de calcul') - listres[[cont]] <- chi - listcol[[cont]]<-ncol(tab) - cont <- cont + 1 - } - } - } - maxcol<-max(unlist(listcol))+1 - if (maxcol<7) {maxcol<-7} - frameout<-matrix('*',1,maxcol) - count<-0 - for (chi in listres) { - if (min(chi$expected)<5) { - att<-"warning" - } else { - att<-"" - } - if ('message' %%in%% attributes(chi)$names) { - att <- "Ce chi2 n\'a pas été calculé" - nom_colresi<-colnames(chi$observed) - chi$prl <- chi$expected - chi$prc <- chi$expected - st <- sum(chi$observed) - } else { - nom_colresi<-colnames(chi$observed) - st <- sum(chi$observed) - sc <- colSums(chi$observed) - sr <- rowSums(chi$observed) - chi$prl <- round((chi$observed/sr)*100,2) - chi$prc <- t(round((t(chi$observed)/sc)*100,2)) - } - fileout<-paste('histo_',count,sep='') - fileout<-paste(fileout,'.png',sep='') - count<-count+1 - fileout<-file.path("%s",fileout) - if (max(nchar(colnames(chi$observed)))>15) { - leg <- 1:length(colnames(chi$observed)) - } else { - leg <- colnames(chi$observed) - } - if (dograph) { - width<-ncol(chi$observed)*100 - if (width < 350) {width <- 350} - open_file_graph(fileout,width = width, height = 300) - par(mar=c(0,0,0,0)) - layout(matrix(c(1,2),1,2, byrow=TRUE),widths=c(3,1)) - par(mar=c(2,2,1,0)) - par(cex=0.8) - if (!bw) colors <- rainbow(length(rownames(chi$observed))) - else colors <- gray.colors(length(rownames(chi$observed))) - barplot(chi$prl,names.arg = leg, beside=TRUE,border=NA, col=colors) - par(mar=c(0,0,0,0)) - par(cex=0.8) - plot(0, axes = FALSE, pch = '') - legend(x = 'center' , rownames(chi$observed), fill = colors) - dev.off() - } - chi$prl <- cbind(chi$prl, total = rowSums(chi$prl)) - chi$prc <- rbind(chi$prc, total = colSums(chi$prc)) - chi$observed<-rbind(chi$observed,total=colSums(chi$observed)) - chi$observed<-cbind(chi$observed,total=rowSums(chi$observed)) - chi$pr <- round((chi$observed/st)*100,2) - chi$expected<-rbind(chi$expected,total=colSums(chi$expected)) - chi$expected<-cbind(chi$expected,total=rowSums(chi$expected)) - chi$expected<-round(chi$expected,digits=2) - chi$residuals<-round(chi$residuals,digits=2) - chi$contrib<-round(chi$contrib, digits=2) - nom_col<-colnames(chi$observed) - - if (ncol(chi$observed)\n - \n - \n -

Test du Chi2

\n -
-
- Légende :
- p <= 0.05
- p <= 0.05 mais il y a des valeurs théoriques < 5
- p > 0.05 -


- """%self.parent.SysEncoding - - - pretxt = '
\n'.join(links)+'


\n' - txt = '


\n'.join(['

'.join([tab[i] for tab in allhtml]) for i,val in enumerate(res)]) - txt = header + pretxt + txt + '\n' - - fileout=os.path.join(self.parametres['pathout'],'resultats-chi2.html') - with open(fileout, 'w') as f : - f.write(txt) - ListFile.append(fileout) - return ListFile - class ChiSquare(AnalyseMatrix): def doparametres(self, dlg = None): if dlg is None : @@ -374,11 +66,7 @@ class ChiSquare(AnalyseMatrix): ) dial.CenterOnParent() val = dial.ShowModal() - if val==wx.ID_OK : - dlg.Center() - self.count = 1 - keepGoing = dlg.Update(self.count) - + if val==wx.ID_OK : self.colsel1 = dial.list_box_1.GetSelections() self.colsel2 = dial.list_box_2.GetSelections() if dial.chiopt : @@ -402,24 +90,9 @@ class ChiSquare(AnalyseMatrix): self.parametres = None def doanalyse(self): - - - #self.dlg=wx.ProgressDialog("Traitements", - # "Veuillez patienter...", - # maximum = 4, - # parent=parent, - # style = wx.PD_APP_MODAL|wx.PD_AUTO_HIDE|wx.PD_ELAPSED_TIME - # ) - - - - self.count += 1 + self.count = 1 keepGoing = self.dlg.Update(self.count,u"Analyse dans R...") - #analyse=MakeChi2(self.parent, self.colsel1, self.colsel2, self.chioption, self.tableau) - #self.tableau = tableau self.OutFrame=tempfile.mktemp(dir=self.parent.TEMPDIR) - print self.OutFrame - #self.parent=parent self.encode=self.parent.encode self.TEMPDIR=self.parent.TEMPDIR self.RPath=self.parent.PathPath.get('PATHS','rpath') @@ -435,11 +108,7 @@ class ChiSquare(AnalyseMatrix): rchioption[val] = 'FALSE' txt=""" source("%s") - """%self.parent.RscriptsPath['Rfunct'] -# if parent.tableau.: rownames=1 -# else : rownames='NULL' -# if parent.g_header : header = 'TRUE' -# else : header = 'FALSE' + """%ffr(self.parent.RscriptsPath['Rfunct']) txt += """ source("%s") """ % ffr(self.parent.RscriptsPath['Rgraph']) @@ -648,8 +317,8 @@ class ChiSquare(AnalyseMatrix): # parent.nb.SetSelection(parent.nb.GetPageCount()-1) # parent.ShowTab(wx.EVT_BUTTON) # parent.DisEnSaveTabAs(True) - self.count += 1 - keepGoing = self.dlg.Update(self.count,u"Fini") +# self.count += 1 +# keepGoing = self.dlg.Update(self.count,u"Fini") def dolayout(self, option): ListFile=[False] @@ -691,19 +360,10 @@ class ChiSquare(AnalyseMatrix): allcoord.append(coord_res) allhtml = [[clean_line(lcont[allcoord[i][j]+1:allcoord[i+1][j]]) for j, line in enumerate(allcoord[i])] for i, tab in enumerate(allcoord) if i!=len(allcoord)-1] - allhtml = [make_table(val,names[i],res) for i,val in enumerate(allhtml)] - links = make_link_list(res, self.TextCroise) - #colors = [line[-1] for line in res] - - # good = [i for i,chi in enumerate(res) if chi[-1] == 'green' or chi[-1] == 'blue'] - #select_good = [[val[i] for i in good] for val in tout] - - html_res = make_restab(res) allhtml.insert(0,html_res) - titles = make_title(res, self.TextCroise) allhtml.insert(0,titles) @@ -727,7 +387,6 @@ class ChiSquare(AnalyseMatrix):

"""%self.parent.SysEncoding - pretxt = '
\n'.join(links)+'


\n' txt = '


\n'.join(['

'.join([tab[i] for tab in allhtml]) for i,val in enumerate(res)]) txt = header + pretxt + txt + '\n'