X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=iramuteq.py;h=acbff9e4174121b57bad01a3493c749b19a5f1b7;hp=706082058fd8d239dce8dcc2cb6e5a7d368732bb;hb=e518b5e7e6c850e97f60b0868500396b8e630d73;hpb=3f163578604e3bfd31697d516ea2a5082866b2d5 diff --git a/iramuteq.py b/iramuteq.py index 7060820..acbff9e 100644 --- a/iramuteq.py +++ b/iramuteq.py @@ -1,7 +1,7 @@ #!/bin/env python # -*- coding: utf-8 -*- #Author: Pierre Ratinaud -#Copyright (c) 2008-2012, Pierre Ratinaud +#Copyright (c) 2008-2016, Pierre Ratinaud #License: GNU GPL from optparse import OptionParser @@ -36,6 +36,7 @@ from tableau import Tableau from dialog import PrefDialog from tabfrequence import Frequences, FreqMultiple from tabchi2 import ChiSquare +from tabchi2mcnemar import McNemar #from tabstudent import MakeStudent from tabchddist import ChdCluster from tabafcm import DoAFCM @@ -56,7 +57,9 @@ from corpus import Builder, SubBuilder from checkinstall import CreateIraDirectory, CheckRPath, FindRPAthWin32, FindRPathNix, CheckRPackages, IsNew, UpgradeConf, CopyConf, RLibsAreInstalled from chemins import RscriptsPath, ConstructConfigPath, ConstructDicoPath, ConstructGlobalPath, PathOut from parse_factiva_xml import ImportFactiva +from parse_dmi import ImportDMI from tools import Extract +from analyse_merge import AnalyseMerge from tree import LeftTree ########################################################## @@ -66,6 +69,7 @@ ID_OpenText = wx.NewId() ID_OnOpenAnalyse = wx.NewId() ID_Freq = wx.NewId() ID_Chi2 = wx.NewId() +ID_Chi2mc = wx.NewId() ID_Student = wx.NewId() ID_CHDSIM = wx.NewId() ID_CHDReinert = wx.NewId() @@ -97,6 +101,8 @@ ID_Fact_xml = wx.NewId() ID_Fact_mail = wx.NewId() ID_Fact_copy = wx.NewId() ID_exportmeta = wx.NewId() +ID_importdmi = wx.NewId() +ID_merge = wx.NewId() ########################################################## #elements de configuration ########################################################## @@ -118,10 +124,10 @@ ConfigGlob.read(DictConfigPath['global']) DefaultConf = ConfigParser() DefaultConf.read(DictConfigPath['preferences']) #repertoire de l'utilisateur -if os.getenv('HOME') != None: - user_home = os.getenv('HOME') -else: - user_home = os.getenv('HOMEPATH') +user_home = os.getenv('HOME') +if user_home is None : + user_home = os.path.expanduser('~') + UserConfigPath = os.path.abspath(os.path.join(user_home, '.iramuteq')) #Si pas de fichiers de config utilisateur, on cree le repertoire CreateIraDirectory(UserConfigPath, AppliPath) @@ -181,6 +187,7 @@ images_analyses = { 'freq' : 'frequences.png', 'freqmulti' : 'frequences.png', 'chi2' : 'chi2.png', + 'chi2mcnemar' : 'chi2.png', 'reinertmatrix' : 'reinertmatrix.png', 'simimatrix' : 'simimatrix.png', 'simiclustermatrix' : 'simimatrix.png', @@ -195,6 +202,7 @@ images_analyses = { 'subcorpusthema' : 'subcorpusthema.png', 'preferences' : 'preferences.png', 'exportmetatable' : 'exportmetatable.png', + 'importdmi' : 'twitter.png' } ##################################################################### @@ -203,7 +211,8 @@ class IraFrame(wx.Frame): size=wx.DefaultSize, style=wx.DEFAULT_FRAME_STYLE | wx.SUNKEN_BORDER | wx.CLIP_CHILDREN): - log.info('Starting...') + log.info('Starting... ' ) + log.info('version : %s' % ConfigGlob.get('DEFAULT', 'version')) wx.Frame.__init__(self, parent, id, title, pos, size, style) #configuration self.AppliPath = AppliPath @@ -264,6 +273,13 @@ class IraFrame(wx.Frame): item.SetBitmap(self.images_analyses['europress']) file_menu.AppendItem(item) + item = wx.MenuItem(file_menu, ID_importdmi, _(u"Import from DMI-TCAT (exp.)").decode('utf8'), _(u"Import from DMI-TCAT (exp.)").decode('utf8')) + item.SetBitmap(self.images_analyses['importdmi']) + file_menu.AppendItem(item) + + item = wx.MenuItem(file_menu, ID_merge, _(u'Merge graphs').decode('utf8'), _(u'Merge graphs').decode('utf8')) + file_menu.AppendItem(item) + menuFactiva = wx.Menu() fact_from_xml = wx.MenuItem(menuFactiva, ID_Fact_xml, _(u"from xml").decode('utf8')) fact_from_xml.SetBitmap(self.images_analyses['factiva_xml']) @@ -315,6 +331,7 @@ class IraFrame(wx.Frame): matanalyses = [[ID_Freq, _(u"Frequencies").decode('utf8'), 'freq'], [ID_FreqMulti, _(u"Multiple Frequencies").decode('utf8'), 'freqmulti'], [ID_Chi2, _(u"Chi2").decode('utf8'), 'chi2'], + [ID_Chi2mc, _(u"Chi2 McNemar").decode('utf8'), 'chi2mcnemar'], {'name' : _(u"Clustering").decode('utf8'), 'content' : [[ID_CHDReinert, _(u"Reinert's Method").decode('utf8'), 'reinertmatrix']]}, [ID_SIMI, _(u"Similarities Analysis").decode('utf8'), 'simimatrix'], @@ -441,6 +458,8 @@ class IraFrame(wx.Frame): tb1.AddSeparator() tb1.AddLabelTool(ID_ImportEuro, "ImportEuro", self.images_analyses['europress'], shortHelp= _(u"Import from Europress").decode('utf8'), longHelp=_(u"Import from Europress").decode('utf8')) tb1.AddSeparator() + tb1.AddLabelTool(ID_importdmi, "ImportDMI", self.images_analyses['importdmi'], shortHelp= _(u"Import from DMI-TCAT (exp.)").decode('utf8'), longHelp=_(u"Import from DMI-TCAT (exp.)").decode('utf8')) + tb1.AddSeparator() tb1.AddLabelTool(ID_Fact_xml, "ImportFactxml", self.images_analyses['factiva_xml'], shortHelp= _(u"Factiva from xml").decode('utf8'), longHelp=_(u"Factiva from xml").decode('utf8')) tb1.AddLabelTool(ID_Fact_mail, "ImportFactmail", self.images_analyses['factiva_mail'], shortHelp= _(u"Factiva from mail").decode('utf8'), longHelp=_(u"Factiva from mail").decode('utf8')) tb1.AddLabelTool(ID_Fact_copy, "ImportFactcopy", self.images_analyses['factiva_copy'], shortHelp= _(u"Factiva from copy/paste").decode('utf8'), longHelp=_(u"Factiva from copy/paste").decode('utf8')) @@ -567,6 +586,7 @@ class IraFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.OnFreq, id=ID_Freq) self.Bind(wx.EVT_MENU, self.OnFreqMulti, id=ID_FreqMulti) self.Bind(wx.EVT_MENU, self.OnChi2, id=ID_Chi2) + self.Bind(wx.EVT_MENU, self.OnChi2McNemar, id=ID_Chi2mc) self.Bind(wx.EVT_MENU, self.OnStudent, id=ID_Student) self.Bind(wx.EVT_MENU, self.OnCHDSIM, id=ID_CHDSIM) self.Bind(wx.EVT_MENU, self.OnCHDReinert, id=ID_CHDReinert) @@ -593,7 +613,9 @@ class IraFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.OnPref, id=wx.ID_PREFERENCES) self.Bind(wx.EVT_MENU, self.OnImportTXM, id=ID_ImportTXM) self.Bind(wx.EVT_MENU, self.OnImportEuropress, id=ID_ImportEuro) + self.Bind(wx.EVT_MENU, self.OnImportDMI, id=ID_importdmi) self.Bind(wx.EVT_MENU, self.OnExportMeta, id=ID_exportmeta) + self.Bind(wx.EVT_MENU, self.OnMergeGraph, id = ID_merge) self.Bind(wx.EVT_CLOSE, self.OnClose) ################################################################## flags = self._mgr.GetAGWFlags() @@ -791,9 +813,7 @@ class IraFrame(wx.Frame): del busy def OpenText(self): - dlg = progressbar(self, 5) - - builder = Builder(self, dlg) + builder = Builder(self, 5) if builder.res == wx.ID_OK : try : corpus = builder.doanalyse() @@ -801,11 +821,11 @@ class IraFrame(wx.Frame): self.tree.OnItemAppend(corpus.parametres) OpenAnalyse(self, corpus.parametres) except : - dlg.Destroy() + builder.dlg.Destroy() BugReport(self) else : count = 1 - keepGoing = dlg.Update(count, u"Lecture du fichier") + keepGoing = builder.dlg.Update(count, u"Lecture du fichier") self.ShowMenu('view') self.ShowMenu('text') self.ShowMenu('matrix', False) @@ -813,8 +833,8 @@ class IraFrame(wx.Frame): self.DataTxt = False self.Text = '' count += 1 - keepGoing = dlg.Update(count, u"Chargement du dictionnaire") - dlg.Destroy() + keepGoing = builder.dlg.Update(count, u"Chargement du dictionnaire") + builder.dlg.Destroy() def OnExit(self, event): self.Close() @@ -954,6 +974,9 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis.""" def OnChi2(self, event, matrix = None): self.analyse_matrix(ChiSquare, matrix = matrix, analyse_type = 'chi2', dlgnb = 3) + def OnChi2McNemar(self, event, matrix = None): + self.analyse_matrix(McNemar, matrix = matrix, analyse_type = 'chi2mcnemar', dlgnb = 3) + def OnSimiTab(self, event, matrix = None): self.analyse_matrix(DoSimi, matrix = matrix, analyse_type = 'simimatrix', dlgnb = 5) @@ -992,6 +1015,9 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis.""" # PlaySound(self) # except: # BugReport(self) + def OnMergeGraph(self, evt): + #FIXME + AnalyseMerge(self, {'type': 'merge', 'fileout' : '/tmp/test.txt'}, dlg = 5) def OnProto(self, evt, matrix = None) : self.analyse_matrix(Prototypical, matrix = matrix, analyse_type = 'proto', dlgnb = 3) @@ -1097,6 +1123,9 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis.""" except : BugReport(self) + def OnImportDMI(self, evt): + ImportDMI(self, {}) + def OnExportMeta(self, evt, corpus = None): if corpus is None : corpus = self.tree.getcorpus() @@ -1181,7 +1210,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, États-Unis.""" else: truepath = False else: - pass + return if truepath : if os.path.splitext(self.filename)[1] in ['.csv', '.xls', '.ods']: self.tableau = Tableau(self, self.filename) @@ -1332,7 +1361,7 @@ class MySplashScreen(wx.SplashScreen): bmp = wx.Image(os.path.join(ImagePath, 'splash.png')).ConvertToBitmap() wx.SplashScreen.__init__(self, bmp, wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT, - 2000, None, -1) + 1000, None, -1) self.Bind(wx.EVT_CLOSE, self.OnClose) self.fc = wx.FutureCall(1, self.ShowMain)