multisplit
[iramuteq] / analysematrix.py
1 # -*- coding: utf-8 -*-
2 #Author: Pierre Ratinaud
3 #Copyright (c) 2008-2020 Pierre Ratinaud
4 #modification pour python 3 : Laurent Mérat, 6x7 - mai 2020
5 #License: GNU/GPL
6
7 #------------------------------------
8 # import des modules python
9 #------------------------------------
10 import logging
11 import os
12 from uuid import uuid4
13 from time import time, sleep
14
15 #------------------------------------
16 # import des modules wx
17 #------------------------------------
18
19 #------------------------------------
20 # import des fichiers du projet
21 #------------------------------------
22 from chemins import PathOut
23 from functions import exec_rcode, check_Rresult, DoConf, progressbar
24 from openanalyse import OpenAnalyse
25
26
27 class AnalyseMatrix :
28     def __init__(self, ira, tableau, parametres = None, dlg = None) :
29         self.tableau = tableau
30         if self.tableau.csvtable is None :
31             self.tableau.open()
32         self.ira = ira
33         self.parent = ira
34         self.dlg = dlg
35         self.parametres = parametres
36         self.val = False
37         if not 'pathout' in self.parametres :
38             self.parametres['pathout'] = PathOut(tableau.parametres['originalpath'], analyse_type = self.parametres['type'], dirout = tableau.parametres['pathout']).mkdirout()
39             self.pathout = PathOut(analyse_type = self.parametres['type'], dirout = self.parametres['pathout'])
40         else :
41             self.pathout = PathOut(filename = tableau.parametres['originalpath'], dirout = self.parametres['pathout'], analyse_type = self.parametres['type'])
42
43         #self.parametres['pathout'] = self.pathout.dirout
44         self.parametres['uuid'] = str(uuid4())
45         self.parametres['name'] = os.path.split(self.parametres['pathout'])[1]
46         self.parametres['encoding'] = self.ira.syscoding
47         self.parametres['matrix'] = self.tableau.parametres['uuid']
48         self.tableau.pathout.dirout = self.parametres['pathout']
49         self.doparametres(dlg = dlg)
50         if self.dlg is not None :
51             self.dlg = progressbar(self.ira, self.dlg)
52         if self.parametres is not None :
53             self.t1 = time()
54             if not os.path.exists(self.parametres['pathout']) :
55                 self.pathout.createdir(self.parametres['pathout'])
56             result_analyse = self.doanalyse()
57         else :
58             result_analyse = False
59         if result_analyse is None :
60             if self.parametres.get('tohistory', True) :
61                 self.time = time() - self.t1
62                 minutes, seconds = divmod(self.time, 60)
63                 hours, minutes = divmod(minutes, 60)
64                 self.parametres['time'] = '%.0fh %.0fm %.0fs' % (hours, minutes, seconds)
65                 self.parametres['ira'] = self.pathout['Analyse.ira']
66                 DoConf().makeoptions([self.parametres['type']], [self.parametres], self.pathout['Analyse.ira'])
67                 self.ira.history.addMatrixAnalyse(self.parametres)
68             if self.dlg is not None :
69                 self.dlg.Destroy()
70                 if self.parametres.get('tohistory', True) :
71                     OpenAnalyse(self.parent, self.parametres['ira'])
72                     self.ira.tree.AddMatAnalyse(self.parametres)
73                 self.val = 5100
74         else :
75             self.val = False
76             if self.dlg is not None :
77                 try :
78                     self.dlg.Destroy()
79                 except :
80                     pass
81  
82     def doanalyse(self) :
83         pass
84
85     def doparametres(self, dlg = None):
86         pass
87
88     def doR(self, Rscript, wait = False, dlg = None, message = '') :
89         #log.info('R code...')
90         pid = exec_rcode(self.ira.RPath, Rscript, wait = wait)
91         while pid.poll() is None :
92             if dlg :
93                 self.dlg.Pulse(message)
94                 sleep(0.2)
95             else :
96                 sleep(0.2)
97         return check_Rresult(self.ira, pid)