compatibility R 4.0
[iramuteq] / mergeclustergraph.py
1 import os
2 import sys
3 #path = '/home/pierre/workspace/iramuteq'
4 #sys.path.append(path)
5 #import iracmd
6 from functions import DoConf, read_chd, ReadProfileAsDico
7 #from export_html import DoHTML
8 from chemins import ConstructPathOut, ChdTxtPathOut, FFF, ffr, PathOut, StatTxtPathOut, simipath
9 from layout import SimiLayout
10 from textsimi import *
11 from analyse_merge import AnalyseMerge
12
13 #corpusin = '/home/pierre/fac/lerass/formation_iramuteq/giletsjaunes-2018-12-01/giletsjaunes-2018-12-01_corpus_1/Corpus.cira'
14 #corpusin = "/home/pierre/fac/lerass/giletsjaunes/corpus_vrdb_vi_ss_et_corpus_1/Corpus.cira"
15 #corpusin ="/home/pierre/fac/lerass/giletsjaunes/corpus_vrdb_vi_ss_et_pascal/Corpus.cira"
16 #corpusin = '/home/pierre/fac/lerass/granddebat/20190321-LE-GRAND-DEBAT_corpus_1/Corpus.cira'
17 #corpusin ='/home/pierre/fac/etudiant/grumet/M2/Corpus_focus_GRUMET_corpus_2/Corpus.cira'
18
19 #cmd = iracmd.CmdLine(args=['-r',corpusin], AppliPath = path)
20
21 #analysein = "/home/pierre/fac/lerass/formation_iramuteq/giletsjaunes-2018-12-01/giletsjaunes-2018-12-01_corpus_1/giletsjaunes-2018-12-01_alceste_2/Analyse.ira"
22 #analysein = "/home/pierre/fac/lerass/giletsjaunes/corpus_vrdb_vi_ss_et_corpus_1/corpus_vrdb_vi_ss_et_alceste_1/Analyse.ira"
23 #analysein ="/home/pierre/fac/lerass/giletsjaunes/corpus_vrdb_vi_ss_et_pascal/corpus_vrdb_vi_ss_et_alceste_1/Analyse.ira"
24 #analysein = "/home/pierre/fac/lerass/granddebat/20190321-LE-GRAND-DEBAT_corpus_1/20190321-LE-GRAND-DEBAT_alceste_1/Analyse.ira"
25 #analysein = "/home/pierre/fac/etudiant/grumet/M2/Corpus_focus_GRUMET_corpus_2/Corpus_focus_GRUMET[5682]_alceste_3/Analyse.ira"
26 #parametres = DoConf(analysein).getoptions()
27
28 #actives = cmd.corpus.make_actives_nb(10000, 1)[0]
29 #actives = dict(zip(actives,actives))
30 #print len(actives)
31 #print cmd.ConfigPath
32
33
34 class MergeClusterGraph :
35     def __init__(self, ira, corpus, parametres) :
36         self.ira = ira
37         self.corpus = corpus
38         self.parametres = parametres
39         self.pathout = PathOut(parametres['ira'])
40         self.pathout.basefiles(ChdTxtPathOut)
41         self.corpus.make_ucecl_from_R(self.pathout['uce'])
42         self.encoding = self.parametres['encoding']
43         self.clnb = parametres['clnb']
44         dictprofile = ReadProfileAsDico(self.pathout['PROFILE_OUT'], True, self.encoding)
45         self.dograph(dictprofile)
46
47     def dograph(self, dictprofile) :
48         tomerge = []
49         #OUTCH!!First cluster removed !!
50         #print 'ELMINATION CLUSTER 1'
51         for i in range(0, self.clnb):
52             self.pathout = PathOut(self.parametres['ira'])
53             simiparam = DoConf(self.ira.ConfigPath['simitxt']).getoptions()
54             simiparam['coeff'] = 3
55             simiparam['cexfromchi'] = True
56             profclasse = dictprofile[`i+1`]
57             line1 = profclasse.pop(0)
58             classen = [line for line in profclasse if line[0] != '*' and line[0] != '*****']
59             try :
60                 self.lenact = profclasse.index([u'*****', u'*', u'*', u'*', u'*', u'*', '', ''])
61                 profclasse.pop(self.lenact)
62             except ValueError:
63                 try :
64                     self.lenact = profclasse.index([u'*', u'*', u'*', u'*', u'*', u'*', '', ''])
65                     profclasse.pop(self.lenact)
66                 except ValueError:
67                     self.lenact = len(profclasse)
68             try :
69                 self.lensup = profclasse.index([u'*', u'*', u'*', u'*', u'*', u'*', '', ''])
70                 self.lensup = self.lensup - self.lenact
71                 profclasse.pop(self.lensup)
72             except ValueError:
73                 self.lensup = len(profclasse) - self.lenact
74             self.lenet = len(profclasse) - (self.lenact + self.lensup)
75 #            print self.lenact, self.lensup, self.lenet
76             for l,  line in enumerate(classen) :
77                 line[0] = l
78             dictdata = dict(zip([l for l in range(0,len(classen))], classen))
79
80             if self.lenact != 0 :
81                 self.la = [dictdata[l][6] for l in range(0, self.lenact)]
82                 self.lchi = [dictdata[l][4] for l in range(0, self.lenact)]
83                 self.lfreq = [dictdata[l][1] for l in range(0, self.lenact)]
84             else :
85                 self.la = []
86                 self.lchi = []
87                 self.lfreq = []
88             print 'cluster : ', i
89             simi = SimiFromCluster(self.ira, self.corpus, self.la, self.lfreq,
90                             self.lchi, i, parametres = simiparam, limit=100)
91             tomerge.append(simi.parametres['ira'])
92             print tomerge
93         newparam = {'type': 'merge', 'fileout' : '/tmp/test.txt'}
94         newparam['graphs'] = tomerge
95         AnalyseMerge(self.ira, newparam, dlg=None)
96
97
98 #MergeClusterGraph(cmd, cmd.corpus, parametres)