Salome HOME
97c6e6134658f406725398c12be72978affd3ec7
[modules/smesh.git] / src / Tools / Verima / Stats / job.py
1 # Copyright (C) 2013-2020  EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 import os
21 import subprocess
22 import time
23
24 class Job:
25   def __init__(self,listeParamMaillage,salomePath,versionId,mesGroupesRef):    
26       self.id=listeParamMaillage[0]
27       self.script=str(listeParamMaillage[1])
28       self.fichierMedResult=str(listeParamMaillage[2])
29       self.fichierStatResult=str(listeParamMaillage[2]).replace('.med','.res')
30       self.fichierGroupe=self.fichierMedResult.replace('.med','_groupesRef.res')
31       self.salomePath=salomePath
32       self.versionId=versionId
33       self.mesGroupesRef=mesGroupesRef
34       self.CPU=3 # Quand on n appelle pas execute
35       self.fichiersADetruire=[self.fichierMedResult,self.fichierStatResult,self.fichierGroupe]
36
37       
38   def execute(self):
39       home=os.environ['HOME']
40       commande=os.path.abspath(os.path.join(home,self.salomePath,"salome"))
41       script= os.path.abspath(os.path.join(os.path.abspath(__file__),'../..',self.script)) 
42
43       debut=time.time()
44       #a=os.system(commande+" -t "+script+" > /tmp/Exec 2>&1")
45       a=os.system(commande+" -t "+script)
46       fin=time.time()
47       self.CPU=fin-debut
48       print("  Temps d execution : ",  self.CPU)
49
50       #stdout, stderr = p.communicate() 
51
52      
53   def getStatSurMailles(self):
54       try:
55          text=open(self.fichierStatResult).read()
56       except:
57          print("Impossible d'ouvrir le fichier: ", str(self.fichierStatResult))
58          exit(1)
59       liste=text.split()
60       i=0
61       listeColonnes=[]
62       listeValues=[]
63       while i < len(liste) :
64          listeColonnes.append(liste[i])
65          listeValues.append(liste[i+1])
66          i=i+2
67       return listeColonnes,listeValues
68
69
70   def getStatSurRatiosGroupes(self,groupe):
71       extension="_"+groupe+'_Ratio.res'
72       fichier=self.fichierMedResult.replace('.med',extension)
73       self.fichiersADetruire.append(fichier)
74       try:
75          text=open(fichier).read()
76       except:
77          print("Impossible d'ouvrir le fichier: ", str(fichier))
78          exit(1)
79       liste=text.split(",")
80       return liste
81
82   def getStatSurTaillesGroupes(self,groupe):
83       extension="_"+groupe+'_Taille.res'
84       fichier=self.fichierMedResult.replace('.med',extension)
85       self.fichiersADetruire.append(fichier)
86       try:
87          text=open(fichier).read()
88       except:
89          print("Impossible d'ouvrir le fichier: ", str(fichier))
90          exit(1)
91       liste=text.split(",")
92       return liste
93
94
95   def getStatSurGroupes(self,groupe):
96       extension="_"+groupe+'.res'
97       fichier=self.fichierMedResult.replace('.med',extension)
98       self.fichiersADetruire.append(fichier)
99       try:
100          text=open(fichier).read()
101       except:
102          print("Impossible d'ouvrir le fichier: ", str(fichier))
103          exit(1)
104       liste=text.split()
105       i=0
106       listeColonnes=[]
107       listeValues=[]
108       while i < len(liste) :
109          listeColonnes.append(liste[i])
110          listeValues.append(liste[i+1])
111          i=i+2
112       return listeColonnes,listeValues
113
114   def getStatSurTailles(self):
115       fichier=self.fichierMedResult.replace('.med','.taille')
116       self.fichiersADetruire.append(fichier)
117       try:
118          text=open(fichier).read()
119       except:
120          print("Impossible d'ouvrir le fichier: ", str(fichier))
121          exit(1)
122       liste=text.split(",")
123 #      print "taille",liste
124       return liste
125
126   def getStatSurRatios(self):
127       fichier=self.fichierMedResult.replace('.med','.ratio')
128       self.fichiersADetruire.append(fichier)
129       try:
130          text=open(fichier).read()
131       except:
132          print("Impossible d'ouvrir le fichier: ", str(fichier))
133          exit(1)
134       liste=text.split(",")
135       return liste
136
137   def getCPU(self):
138       return self.CPU
139
140
141   def menage(self):
142       for fichier in self.fichiersADetruire:
143         try :
144           os.remove(fichier)
145         except :
146           pass
147