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