X-Git-Url: http://iramuteq.org/git?p=iramuteq;a=blobdiff_plain;f=corpus.py;h=69539d3b8c53e7dfbcf4a434b50913b9b2c6174f;hp=e34233adcdcf493d21cd65f83471e0ac7aa367e9;hb=4efa1d6083096de61aed08a9b64bae41f48e13aa;hpb=a6c0faa62f33e5e64ad7eab5b9d804be99c6759a diff --git a/corpus.py b/corpus.py index e34233a..69539d3 100644 --- a/corpus.py +++ b/corpus.py @@ -17,6 +17,7 @@ from operator import itemgetter from uuid import uuid4 from chemins import PathOut from dialog import CorpusPref, SubTextFromMetaDial +from copy import copy from colors import colors import datetime @@ -33,6 +34,16 @@ def copycorpus(corpus) : copy_corpus.conn_all() return copy_corpus +def CopyUce(uce) : + return Uce(uce.ident, uce.para, uce.uci) + + +def CopyUci(uci): + nuci = Uci(uci.ident, '') + nuci.etoiles = copy(uci.etoiles) + nuci.uces = [CopyUce(uce) for uce in uci.uces] + return nuci + class Corpus : @@ -94,9 +105,7 @@ class Corpus : else : self.idformesuces[self.formes[word.forme].ident] = {stident: 1} else : - self.formes[word.forme] = word - self.formes[word.forme].ident = len(self.formes) - self.formes[word.forme].freq = 1 + self.formes[word.forme] = Word(word.forme, word.gram, len(self.formes), word.lem) self.idformesuces[self.formes[word.forme].ident] = {stident : 1} def conn_all(self): @@ -1300,6 +1309,7 @@ class BuildCorpus : class BuildSubCorpus(BuildCorpus): def __init__(self, corpus, parametres, dlg = None) : + print parametres log.info('begin subcorpus...') self.dlg = dlg self.ori = corpus @@ -1315,7 +1325,7 @@ class BuildSubCorpus(BuildCorpus): self.corpus.parametres['uuid'] = str(uuid4()) if parametres.get('frommeta', False) : print 'make subtexts' - self.corpus.ucis = [uci for uci in self.ori.ucis if set(parametres['meta']).intersection(uci.etoiles) != set()] + self.corpus.ucis = [CopyUci(uci) for uci in self.ori.ucis if set(parametres['meta']).intersection(uci.etoiles) != set()] elif parametres.get('fromtheme', False) : print 'make subtexts from theme' idpara = 0 @@ -1325,13 +1335,14 @@ class BuildSubCorpus(BuildCorpus): newpara = [] for et in uci.paras : if et in parametres['meta'] : - newuce += [uce for uce in uci.uces if uce.para == idpara] + newuce += [CopyUce(uce) for uce in uci.uces if uce.para == idpara] newpara.append(et) idpara += 1 if newuce != [] : - uci.uces = newuce - uci.paras = newpara - self.corpus.ucis.append(uci) + nuci = CopyUci(uci) + nuci.uces = newuce + nuci.paras = newpara + self.corpus.ucis.append(nuci) else : idpara += 1 elif parametres.get('fromcluster', False) : @@ -1342,24 +1353,26 @@ class BuildSubCorpus(BuildCorpus): idpara = 0 for uci in self.ori.ucis : if uci.paras == [] : - keepuces = [uce for uce in uci.uces if uce.ident in dictucekeep] + keepuces = [CopyUce(uce) for uce in uci.uces if uce.ident in dictucekeep] if keepuces != [] : - uci.uces = keepuces - self.corpus.ucis.append(uci) + nuci = CopyUci(uci) + nuci.uces = keepuces + self.corpus.ucis.append(nuci) idpara += 1 else : newuces = [] newpara = [] for et in uci.paras : - keepuces = [uce for uce in uci.uces if uce.para == idpara] + keepuces = [CopyUce(uce) for uce in uci.uces if uce.ident in dictucekeep] idpara += 1 if keepuces != [] : newuces += keepuces newpara.append(et) if newuces != [] : - uci.uces = newuces - uci.paras = newpara - self.corpus.ucis.append(uci) + nuci = CopyUci(uci) + nuci.uces = newuces + nuci.paras = newpara + self.corpus.ucis.append(nuci) #create database self.connect() @@ -1545,6 +1558,9 @@ class SubBuilder : self.ori = corpus self.dlg = dlg corpus_name = 'Sub' + corpus.parametres['corpus_name'] + if dlg is not None : + busy = wx.BusyInfo(_("Please wait...").decode('utf8'), self) + wx.SafeYield() parametres['corpus_name'] = corpus_name if parametres.get('frommeta', False) : parametres['meta'] = corpus.make_etoiles() @@ -1553,6 +1569,8 @@ class SubBuilder : else : parametres['meta'] = [] parametres['meta'].sort() + if dlg is not None : + del busy dial = SubTextFromMetaDial(parent, parametres) self.res = dial.ShowModal() if self.res == 5100 :