##// END OF EJS Templates
GUI: Bug fixed when *Read from header* is selected...
Miguel Valdez -
r655:9d147099e1e8
parent child
Show More
@@ -1,5865 +1,5866
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """
2 """
3 Module implementing MainWindow.
3 Module implementing MainWindow.
4 #+++++++++++++GUI V1++++++++++++++#
4 #+++++++++++++GUI V1++++++++++++++#
5 @author: AlexanderValdezPortocarrero ñ_ñ
5 @author: AlexanderValdezPortocarrero ñ_ñ
6 """
6 """
7 import os, sys, time
7 import os, sys, time
8 import datetime
8 import datetime
9 import numpy
9 import numpy
10 import Queue
10 import Queue
11
11
12 from collections import OrderedDict
12 from collections import OrderedDict
13 from os.path import expanduser
13 from os.path import expanduser
14 from time import sleep
14 from time import sleep
15 # from gevent import sleep
15 # from gevent import sleep
16
16
17 import ast
17 import ast
18
18
19 from PyQt4.QtGui import QMainWindow
19 from PyQt4.QtGui import QMainWindow
20 from PyQt4.QtCore import pyqtSignature
20 from PyQt4.QtCore import pyqtSignature
21 from PyQt4.QtCore import pyqtSignal
21 from PyQt4.QtCore import pyqtSignal
22 from PyQt4 import QtCore
22 from PyQt4 import QtCore
23 from PyQt4 import QtGui
23 from PyQt4 import QtGui
24 # from PyQt4.QtCore import QThread
24 # from PyQt4.QtCore import QThread
25 # from PyQt4.QtCore import QObject, SIGNAL
25 # from PyQt4.QtCore import QObject, SIGNAL
26
26
27 from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess
27 from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess
28 from schainpy.gui.viewer.ui_ftp import Ui_Ftp
28 from schainpy.gui.viewer.ui_ftp import Ui_Ftp
29 from schainpy.gui.viewer.ui_mainwindow import Ui_BasicWindow
29 from schainpy.gui.viewer.ui_mainwindow import Ui_BasicWindow
30 from schainpy.controller_api import ControllerThread
30 from schainpy.controller_api import ControllerThread
31 from schainpy.controller import Project
31 from schainpy.controller import Project
32
32
33 from propertiesViewModel import TreeModel, PropertyBuffer
33 from propertiesViewModel import TreeModel, PropertyBuffer
34 from parametersModel import ProjectParms
34 from parametersModel import ProjectParms
35
35
36 from schainpy.gui.figures import tools
36 from schainpy.gui.figures import tools
37
37
38 FIGURES_PATH = tools.get_path()
38 FIGURES_PATH = tools.get_path()
39 TEMPORAL_FILE = ".temp.xml"
39 TEMPORAL_FILE = ".temp.xml"
40
40
41 def isRadarFile(file):
41 def isRadarFile(file):
42 try:
42 try:
43 year = int(file[1:5])
43 year = int(file[1:5])
44 doy = int(file[5:8])
44 doy = int(file[5:8])
45 set = int(file[8:11])
45 set = int(file[8:11])
46 except:
46 except:
47 return 0
47 return 0
48
48
49 return 1
49 return 1
50
50
51 def isRadarPath(path):
51 def isRadarPath(path):
52 try:
52 try:
53 year = int(path[1:5])
53 year = int(path[1:5])
54 doy = int(path[5:8])
54 doy = int(path[5:8])
55 except:
55 except:
56 return 0
56 return 0
57
57
58 return 1
58 return 1
59
59
60 def isInt(value):
60 def isInt(value):
61
61
62 try:
62 try:
63 int(value)
63 int(value)
64 except:
64 except:
65 return 0
65 return 0
66
66
67 return 1
67 return 1
68
68
69 def isFloat(value):
69 def isFloat(value):
70
70
71 try:
71 try:
72 float(value)
72 float(value)
73 except:
73 except:
74 return 0
74 return 0
75
75
76 return 1
76 return 1
77
77
78 def isList(value):
78 def isList(value):
79
79
80 x = ast.literal_eval(value)
80 x = ast.literal_eval(value)
81
81
82 if type(x) in (tuple, list):
82 if type(x) in (tuple, list):
83 return 1
83 return 1
84
84
85 return 0
85 return 0
86
86
87 class BasicWindow(QMainWindow, Ui_BasicWindow):
87 class BasicWindow(QMainWindow, Ui_BasicWindow):
88 """
88 """
89 """
89 """
90 def __init__(self, parent=None):
90 def __init__(self, parent=None):
91 """
91 """
92
92
93 """
93 """
94 QMainWindow.__init__(self, parent)
94 QMainWindow.__init__(self, parent)
95 self.setupUi(self)
95 self.setupUi(self)
96 self.__puObjDict = {}
96 self.__puObjDict = {}
97 self.__itemTreeDict = {}
97 self.__itemTreeDict = {}
98 self.readUnitConfObjList = []
98 self.readUnitConfObjList = []
99 self.operObjList = []
99 self.operObjList = []
100 self.projecObjView = None
100 self.projecObjView = None
101 self.idProject = 0
101 self.idProject = 0
102 # self.idImag = 0
102 # self.idImag = 0
103
103
104 self.idImagscope = 0
104 self.idImagscope = 0
105 self.idImagspectra = 0
105 self.idImagspectra = 0
106 self.idImagcross = 0
106 self.idImagcross = 0
107 self.idImagrti = 0
107 self.idImagrti = 0
108 self.idImagcoherence = 0
108 self.idImagcoherence = 0
109 self.idImagpower = 0
109 self.idImagpower = 0
110 self.idImagrtinoise = 0
110 self.idImagrtinoise = 0
111 self.idImagspectraHeis = 0
111 self.idImagspectraHeis = 0
112 self.idImagrtiHeis = 0
112 self.idImagrtiHeis = 0
113
113
114 self.dataPath = None
114 self.dataPath = None
115 self.online = 0
115 self.online = 0
116 self.walk = 0
116 self.walk = 0
117 self.create = False
117 self.create = False
118 self.selectedItemTree = None
118 self.selectedItemTree = None
119 self.controllerThread = None
119 self.controllerThread = None
120 # self.commCtrlPThread = None
120 # self.commCtrlPThread = None
121 # self.create_figure()
121 # self.create_figure()
122 self.temporalFTP = ftpBuffer()
122 self.temporalFTP = ftpBuffer()
123 self.projectProperCaracteristica = []
123 self.projectProperCaracteristica = []
124 self.projectProperPrincipal = []
124 self.projectProperPrincipal = []
125 self.projectProperDescripcion = []
125 self.projectProperDescripcion = []
126 self.volProperCaracteristica = []
126 self.volProperCaracteristica = []
127 self.volProperPrincipal = []
127 self.volProperPrincipal = []
128 self.volProperDescripcion = []
128 self.volProperDescripcion = []
129 self.specProperCaracteristica = []
129 self.specProperCaracteristica = []
130 self.specProperPrincipal = []
130 self.specProperPrincipal = []
131 self.specProperDescripcion = []
131 self.specProperDescripcion = []
132
132
133 self.specHeisProperCaracteristica = []
133 self.specHeisProperCaracteristica = []
134 self.specHeisProperPrincipal = []
134 self.specHeisProperPrincipal = []
135 self.specHeisProperDescripcion = []
135 self.specHeisProperDescripcion = []
136
136
137 # self.pathWorkSpace = './'
137 # self.pathWorkSpace = './'
138
138
139 self.__projectObjDict = {}
139 self.__projectObjDict = {}
140 self.__operationObjDict = {}
140 self.__operationObjDict = {}
141
141
142 self.__puLocalFolder2FTP = {}
142 self.__puLocalFolder2FTP = {}
143 self.__enable = False
143 self.__enable = False
144
144
145 # self.create_comm()
145 # self.create_comm()
146 self.create_updating_timer()
146 self.create_updating_timer()
147 self.setGUIStatus()
147 self.setGUIStatus()
148
148
149 @pyqtSignature("")
149 @pyqtSignature("")
150 def on_actionOpen_triggered(self):
150 def on_actionOpen_triggered(self):
151 """
151 """
152 Slot documentation goes here.
152 Slot documentation goes here.
153 """
153 """
154 self.openProject()
154 self.openProject()
155
155
156 @pyqtSignature("")
156 @pyqtSignature("")
157 def on_actionCreate_triggered(self):
157 def on_actionCreate_triggered(self):
158 """
158 """
159 Slot documentation goes here.
159 Slot documentation goes here.
160 """
160 """
161 self.setInputsProject_View()
161 self.setInputsProject_View()
162 self.create = True
162 self.create = True
163
163
164 @pyqtSignature("")
164 @pyqtSignature("")
165 def on_actionSave_triggered(self):
165 def on_actionSave_triggered(self):
166 """
166 """
167 Slot documentation goes here.
167 Slot documentation goes here.
168 """
168 """
169 self.saveProject()
169 self.saveProject()
170
170
171 @pyqtSignature("")
171 @pyqtSignature("")
172 def on_actionClose_triggered(self):
172 def on_actionClose_triggered(self):
173 """
173 """
174 Slot documentation goes here.
174 Slot documentation goes here.
175 """
175 """
176 self.close()
176 self.close()
177
177
178 @pyqtSignature("")
178 @pyqtSignature("")
179 def on_actionStart_triggered(self):
179 def on_actionStart_triggered(self):
180 """
180 """
181 """
181 """
182 self.playProject()
182 self.playProject()
183
183
184 @pyqtSignature("")
184 @pyqtSignature("")
185 def on_actionPause_triggered(self):
185 def on_actionPause_triggered(self):
186 """
186 """
187 """
187 """
188 self.pauseProject()
188 self.pauseProject()
189
189
190 @pyqtSignature("")
190 @pyqtSignature("")
191 def on_actionStop_triggered(self):
191 def on_actionStop_triggered(self):
192 """
192 """
193 """
193 """
194 self.stopProject()
194 self.stopProject()
195
195
196 @pyqtSignature("")
196 @pyqtSignature("")
197 def on_actionAbout_triggered(self):
197 def on_actionAbout_triggered(self):
198 """
198 """
199 """
199 """
200 self.aboutEvent()
200 self.aboutEvent()
201
201
202 @pyqtSignature("")
202 @pyqtSignature("")
203 def on_actionFTP_triggered(self):
203 def on_actionFTP_triggered(self):
204 """
204 """
205 """
205 """
206 self.configFTPWindowObj = Ftp(self)
206 self.configFTPWindowObj = Ftp(self)
207
207
208 if not self.temporalFTP.create:
208 if not self.temporalFTP.create:
209 self.temporalFTP.setwithoutconfiguration()
209 self.temporalFTP.setwithoutconfiguration()
210
210
211 self.configFTPWindowObj.setParmsfromTemporal(self.temporalFTP.server,
211 self.configFTPWindowObj.setParmsfromTemporal(self.temporalFTP.server,
212 self.temporalFTP.remotefolder,
212 self.temporalFTP.remotefolder,
213 self.temporalFTP.username,
213 self.temporalFTP.username,
214 self.temporalFTP.password,
214 self.temporalFTP.password,
215 self.temporalFTP.ftp_wei,
215 self.temporalFTP.ftp_wei,
216 self.temporalFTP.exp_code,
216 self.temporalFTP.exp_code,
217 self.temporalFTP.sub_exp_code,
217 self.temporalFTP.sub_exp_code,
218 self.temporalFTP.plot_pos)
218 self.temporalFTP.plot_pos)
219
219
220 self.configFTPWindowObj.show()
220 self.configFTPWindowObj.show()
221 self.configFTPWindowObj.closed.connect(self.createFTPConfig)
221 self.configFTPWindowObj.closed.connect(self.createFTPConfig)
222
222
223 def createFTPConfig(self):
223 def createFTPConfig(self):
224
224
225 if not self.configFTPWindowObj.create:
225 if not self.configFTPWindowObj.create:
226 self.console.clear()
226 self.console.clear()
227 self.console.append("There is no FTP configuration")
227 self.console.append("There is no FTP configuration")
228 return
228 return
229
229
230 self.console.append("Push Ok in Spectra view to Add FTP Configuration")
230 self.console.append("Push Ok in Spectra view to Add FTP Configuration")
231
231
232 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.configFTPWindowObj.getParmsFromFtpWindow()
232 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.configFTPWindowObj.getParmsFromFtpWindow()
233 self.temporalFTP.save(server=server,
233 self.temporalFTP.save(server=server,
234 remotefolder=remotefolder,
234 remotefolder=remotefolder,
235 username=username,
235 username=username,
236 password=password,
236 password=password,
237 ftp_wei=ftp_wei,
237 ftp_wei=ftp_wei,
238 exp_code=exp_code,
238 exp_code=exp_code,
239 sub_exp_code=sub_exp_code,
239 sub_exp_code=sub_exp_code,
240 plot_pos=plot_pos)
240 plot_pos=plot_pos)
241
241
242 @pyqtSignature("")
242 @pyqtSignature("")
243 def on_actionOpenToolbar_triggered(self):
243 def on_actionOpenToolbar_triggered(self):
244 """
244 """
245 Slot documentation goes here.
245 Slot documentation goes here.
246 """
246 """
247 self.openProject()
247 self.openProject()
248
248
249 @pyqtSignature("")
249 @pyqtSignature("")
250 def on_actionCreateToolbar_triggered(self):
250 def on_actionCreateToolbar_triggered(self):
251 """
251 """
252 Slot documentation goes here.
252 Slot documentation goes here.
253 """
253 """
254 self.setInputsProject_View()
254 self.setInputsProject_View()
255 self.create = True
255 self.create = True
256
256
257 @pyqtSignature("")
257 @pyqtSignature("")
258 def on_actionAddPU_triggered(self):
258 def on_actionAddPU_triggered(self):
259 if len(self.__projectObjDict) == 0:
259 if len(self.__projectObjDict) == 0:
260 outputstr = "First Create a Project then add Processing Unit"
260 outputstr = "First Create a Project then add Processing Unit"
261 self.console.clear()
261 self.console.clear()
262 self.console.append(outputstr)
262 self.console.append(outputstr)
263 return 0
263 return 0
264 else:
264 else:
265 self.addPUWindow()
265 self.addPUWindow()
266 self.console.clear()
266 self.console.clear()
267 self.console.append("Please, Choose the type of Processing Unit")
267 self.console.append("Please, Choose the type of Processing Unit")
268 self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
268 self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
269 self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
269 self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
270 self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
270 self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
271
271
272
272
273 @pyqtSignature("")
273 @pyqtSignature("")
274 def on_actionSaveToolbar_triggered(self):
274 def on_actionSaveToolbar_triggered(self):
275 """
275 """
276 Slot documentation goes here.
276 Slot documentation goes here.
277 """
277 """
278 self.saveProject()
278 self.saveProject()
279
279
280 @pyqtSignature("")
280 @pyqtSignature("")
281 def on_actionStarToolbar_triggered(self):
281 def on_actionStarToolbar_triggered(self):
282 """
282 """
283 Slot documentation goes here.
283 Slot documentation goes here.
284 """
284 """
285 self.playProject()
285 self.playProject()
286
286
287 @pyqtSignature("")
287 @pyqtSignature("")
288 def on_actionPauseToolbar_triggered(self):
288 def on_actionPauseToolbar_triggered(self):
289
289
290 self.pauseProject()
290 self.pauseProject()
291
291
292 @pyqtSignature("")
292 @pyqtSignature("")
293 def on_actionStopToolbar_triggered(self):
293 def on_actionStopToolbar_triggered(self):
294 """
294 """
295 Slot documentation goes here.
295 Slot documentation goes here.
296 """
296 """
297 self.stopProject()
297 self.stopProject()
298
298
299 @pyqtSignature("int")
299 @pyqtSignature("int")
300 def on_proComReadMode_activated(self, index):
300 def on_proComReadMode_activated(self, index):
301 """
301 """
302 SELECCION DEL MODO DE LECTURA ON=1, OFF=0
302 SELECCION DEL MODO DE LECTURA ON=1, OFF=0
303 """
303 """
304 if index == 0:
304 if index == 0:
305 self.online = 0
305 self.online = 0
306 self.proDelay.setText("0")
306 self.proDelay.setText("0")
307 self.proSet.setText("")
307 self.proSet.setText("")
308 self.proSet.setEnabled(False)
308 self.proSet.setEnabled(False)
309 self.proDelay.setEnabled(False)
309 self.proDelay.setEnabled(False)
310 elif index == 1:
310 elif index == 1:
311 self.online = 1
311 self.online = 1
312 self.proSet.setText("")
312 self.proSet.setText("")
313 self.proDelay.setText("5")
313 self.proDelay.setText("5")
314 self.proSet.setEnabled(True)
314 self.proSet.setEnabled(True)
315 self.proDelay.setEnabled(True)
315 self.proDelay.setEnabled(True)
316
316
317 @pyqtSignature("int")
317 @pyqtSignature("int")
318 def on_proComDataType_activated(self, index):
318 def on_proComDataType_activated(self, index):
319 """
319 """
320 Voltage or Spectra
320 Voltage or Spectra
321 """
321 """
322 self.labelSet.show()
322 self.labelSet.show()
323 self.proSet.show()
323 self.proSet.show()
324
324
325 self.labExpLabel.show()
325 self.labExpLabel.show()
326 self.proExpLabel.show()
326 self.proExpLabel.show()
327
327
328 self.labelIPPKm.hide()
328 self.labelIPPKm.hide()
329 self.proIPPKm.hide()
329 self.proIPPKm.hide()
330
330
331 if index == 0:
331 if index == 0:
332 extension = '.r'
332 extension = '.r'
333 elif index == 1:
333 elif index == 1:
334 extension = '.pdata'
334 extension = '.pdata'
335 elif index == 2:
335 elif index == 2:
336 extension = '.fits'
336 extension = '.fits'
337 elif index == 3:
337 elif index == 3:
338 extension = '.hdf5'
338 extension = '.hdf5'
339
339
340 self.labelIPPKm.show()
340 self.labelIPPKm.show()
341 self.proIPPKm.show()
341 self.proIPPKm.show()
342
342
343 self.labelSet.hide()
343 self.labelSet.hide()
344 self.proSet.hide()
344 self.proSet.hide()
345
345
346 self.labExpLabel.hide()
346 self.labExpLabel.hide()
347 self.proExpLabel.hide()
347 self.proExpLabel.hide()
348
348
349 self.proDataType.setText(extension)
349 self.proDataType.setText(extension)
350
350
351 @pyqtSignature("int")
351 @pyqtSignature("int")
352 def on_proComWalk_activated(self, index):
352 def on_proComWalk_activated(self, index):
353 """
353 """
354
354
355 """
355 """
356 if index == 0:
356 if index == 0:
357 self.walk = 0
357 self.walk = 0
358 elif index == 1:
358 elif index == 1:
359 self.walk = 1
359 self.walk = 1
360
360
361 @pyqtSignature("")
361 @pyqtSignature("")
362 def on_proToolPath_clicked(self):
362 def on_proToolPath_clicked(self):
363 """
363 """
364 Choose your path
364 Choose your path
365 """
365 """
366
366
367 current_dpath = './'
367 current_dpath = './'
368 if self.dataPath:
368 if self.dataPath:
369 current_dpath = self.dataPath
369 current_dpath = self.dataPath
370
370
371 datapath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', current_dpath, QtGui.QFileDialog.ShowDirsOnly))
371 datapath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', current_dpath, QtGui.QFileDialog.ShowDirsOnly))
372
372
373 #If it was canceled
373 #If it was canceled
374 if not datapath:
374 if not datapath:
375 return
375 return
376
376
377 #If any change was done
377 #If any change was done
378 if datapath == self.dataPath:
378 if datapath == self.dataPath:
379 return
379 return
380
380
381 self.proDataPath.setText(datapath)
381 self.proDataPath.setText(datapath)
382
382
383 self.actionStart.setEnabled(False)
383 self.actionStart.setEnabled(False)
384 self.actionStarToolbar.setEnabled(False)
384 self.actionStarToolbar.setEnabled(False)
385 self.proOk.setEnabled(False)
385 self.proOk.setEnabled(False)
386
386
387 self.proComStartDate.clear()
387 self.proComStartDate.clear()
388 self.proComEndDate.clear()
388 self.proComEndDate.clear()
389
389
390 if not os.path.exists(datapath):
390 if not os.path.exists(datapath):
391
391
392 self.console.clear()
392 self.console.clear()
393 self.console.append("Write a valid path")
393 self.console.append("Write a valid path")
394 return
394 return
395
395
396 self.dataPath = datapath
396 self.dataPath = datapath
397
397
398 self.console.clear()
398 self.console.clear()
399 self.console.append("Select the read mode and press 'load button'")
399 self.console.append("Select the read mode and press 'load button'")
400
400
401
401
402 @pyqtSignature("")
402 @pyqtSignature("")
403 def on_proLoadButton_clicked(self):
403 def on_proLoadButton_clicked(self):
404
404
405 self.console.clear()
405 self.console.clear()
406
406
407 # if not self.getSelectedProjectObj():
407 # if not self.getSelectedProjectObj():
408 # self.console.append("Please select a project before load files")
408 # self.console.append("Please select a project before load files")
409 # return
409 # return
410
410
411 parameter_list = self.checkInputsProject()
411 parameter_list = self.checkInputsProject()
412
412
413 if not parameter_list[0]:
413 if not parameter_list[0]:
414 return
414 return
415
415
416 parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set, expLabel = parameter_list
416 parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set, expLabel = parameter_list
417
417
418 if read_mode == "Offline":
418 if read_mode == "Offline":
419 self.proComStartDate.clear()
419 self.proComStartDate.clear()
420 self.proComEndDate.clear()
420 self.proComEndDate.clear()
421 self.proComStartDate.setEnabled(True)
421 self.proComStartDate.setEnabled(True)
422 self.proComEndDate.setEnabled(True)
422 self.proComEndDate.setEnabled(True)
423 self.proStartTime.setEnabled(True)
423 self.proStartTime.setEnabled(True)
424 self.proEndTime.setEnabled(True)
424 self.proEndTime.setEnabled(True)
425 self.frame_2.setEnabled(True)
425 self.frame_2.setEnabled(True)
426
426
427 if read_mode == "Online":
427 if read_mode == "Online":
428 self.proComStartDate.addItem("1960/01/30")
428 self.proComStartDate.addItem("1960/01/30")
429 self.proComEndDate.addItem("2018/12/31")
429 self.proComEndDate.addItem("2018/12/31")
430 self.proComStartDate.setEnabled(False)
430 self.proComStartDate.setEnabled(False)
431 self.proComEndDate.setEnabled(False)
431 self.proComEndDate.setEnabled(False)
432 self.proStartTime.setEnabled(False)
432 self.proStartTime.setEnabled(False)
433 self.proEndTime.setEnabled(False)
433 self.proEndTime.setEnabled(False)
434 self.frame_2.setEnabled(True)
434 self.frame_2.setEnabled(True)
435
435
436 self.loadDays(data_path, ext, walk, expLabel)
436 self.loadDays(data_path, ext, walk, expLabel)
437
437
438 @pyqtSignature("int")
438 @pyqtSignature("int")
439 def on_proComStartDate_activated(self, index):
439 def on_proComStartDate_activated(self, index):
440 """
440 """
441 SELECCION DEL RANGO DE FECHAS -START DATE
441 SELECCION DEL RANGO DE FECHAS -START DATE
442 """
442 """
443 stopIndex = self.proComEndDate.count() - self.proComEndDate.currentIndex() - 1
443 stopIndex = self.proComEndDate.count() - self.proComEndDate.currentIndex() - 1
444
444
445 self.proComEndDate.clear()
445 self.proComEndDate.clear()
446 for i in self.dateList[index:]:
446 for i in self.dateList[index:]:
447 self.proComEndDate.addItem(i)
447 self.proComEndDate.addItem(i)
448
448
449 if self.proComEndDate.count() - stopIndex - 1 >= 0:
449 if self.proComEndDate.count() - stopIndex - 1 >= 0:
450 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - stopIndex - 1)
450 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - stopIndex - 1)
451 else:
451 else:
452 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1)
452 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1)
453
453
454 @pyqtSignature("int")
454 @pyqtSignature("int")
455 def on_proComEndDate_activated(self, index):
455 def on_proComEndDate_activated(self, index):
456 """
456 """
457 SELECCION DEL RANGO DE FECHAS-END DATE
457 SELECCION DEL RANGO DE FECHAS-END DATE
458 """
458 """
459 pass
459 pass
460
460
461 @pyqtSignature("")
461 @pyqtSignature("")
462 def on_proOk_clicked(self):
462 def on_proOk_clicked(self):
463 """
463 """
464 Añade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml.
464 Añade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml.
465 Prepara la configuración del diágrama del Arbol del treeView numero 2
465 Prepara la configuración del diágrama del Arbol del treeView numero 2
466 """
466 """
467
467
468 self.actionStart.setEnabled(False)
468 self.actionStart.setEnabled(False)
469 self.actionStarToolbar.setEnabled(False)
469 self.actionStarToolbar.setEnabled(False)
470
470
471 self.console.clear()
471 self.console.clear()
472
472
473 if self.create:
473 if self.create:
474
474
475 projectId = self.__getNewProjectId()
475 projectId = self.__getNewProjectId()
476
476
477 if not projectId:
477 if not projectId:
478 return 0
478 return 0
479
479
480 projectObjView = self.createProjectView(projectId)
480 projectObjView = self.createProjectView(projectId)
481
481
482 if not projectObjView:
482 if not projectObjView:
483 return 0
483 return 0
484
484
485 self.create = False
485 self.create = False
486
486
487 readUnitObj = self.createReadUnitView(projectObjView)
487 readUnitObj = self.createReadUnitView(projectObjView)
488
488
489 if not readUnitObj:
489 if not readUnitObj:
490 return 0
490 return 0
491
491
492 else:
492 else:
493 projectObjView = self.updateProjectView()
493 projectObjView = self.updateProjectView()
494
494
495 if not projectObjView:
495 if not projectObjView:
496 return 0
496 return 0
497
497
498 projectId = projectObjView.getId()
498 projectId = projectObjView.getId()
499 idReadUnit = projectObjView.getReadUnitId()
499 idReadUnit = projectObjView.getReadUnitId()
500 readUnitObj = self.updateReadUnitView(projectObjView, idReadUnit)
500 readUnitObj = self.updateReadUnitView(projectObjView, idReadUnit)
501
501
502 if not readUnitObj:
502 if not readUnitObj:
503 return 0
503 return 0
504
504
505 self.__itemTreeDict[projectId].setText(projectObjView.name)
505 self.__itemTreeDict[projectId].setText(projectObjView.name)
506 # Project Properties
506 # Project Properties
507 self.refreshProjectProperties(projectObjView)
507 self.refreshProjectProperties(projectObjView)
508 # Disable tabProject after finish the creation
508 # Disable tabProject after finish the creation
509
509
510 self.actionStart.setEnabled(True)
510 self.actionStart.setEnabled(True)
511 self.actionStarToolbar.setEnabled(True)
511 self.actionStarToolbar.setEnabled(True)
512 self.console.clear()
512 self.console.clear()
513 self.console.append("The project parameters were validated")
513 self.console.append("The project parameters were validated")
514
514
515 return 1
515 return 1
516
516
517 @pyqtSignature("")
517 @pyqtSignature("")
518 def on_proClear_clicked(self):
518 def on_proClear_clicked(self):
519
519
520 self.console.clear()
520 self.console.clear()
521
521
522 @pyqtSignature("int")
522 @pyqtSignature("int")
523 def on_volOpCebChannels_stateChanged(self, p0):
523 def on_volOpCebChannels_stateChanged(self, p0):
524 """
524 """
525 Check Box habilita operaciones de Seleccin de Canales
525 Check Box habilita operaciones de Seleccin de Canales
526 """
526 """
527 if p0 == 2:
527 if p0 == 2:
528 self.volOpComChannels.setEnabled(True)
528 self.volOpComChannels.setEnabled(True)
529 self.volOpChannel.setEnabled(True)
529 self.volOpChannel.setEnabled(True)
530
530
531 if p0 == 0:
531 if p0 == 0:
532 self.volOpComChannels.setEnabled(False)
532 self.volOpComChannels.setEnabled(False)
533 self.volOpChannel.setEnabled(False)
533 self.volOpChannel.setEnabled(False)
534 self.volOpChannel.clear()
534 self.volOpChannel.clear()
535
535
536 @pyqtSignature("int")
536 @pyqtSignature("int")
537 def on_volOpCebHeights_stateChanged(self, p0):
537 def on_volOpCebHeights_stateChanged(self, p0):
538 """
538 """
539 Check Box habilita operaciones de Seleccin de Alturas
539 Check Box habilita operaciones de Seleccin de Alturas
540 """
540 """
541 if p0 == 2:
541 if p0 == 2:
542 self.volOpHeights.setEnabled(True)
542 self.volOpHeights.setEnabled(True)
543 self.volOpComHeights.setEnabled(True)
543 self.volOpComHeights.setEnabled(True)
544
544
545 if p0 == 0:
545 if p0 == 0:
546 self.volOpHeights.setEnabled(False)
546 self.volOpHeights.setEnabled(False)
547 self.volOpHeights.clear()
547 self.volOpHeights.clear()
548 self.volOpComHeights.setEnabled(False)
548 self.volOpComHeights.setEnabled(False)
549
549
550 @pyqtSignature("int")
550 @pyqtSignature("int")
551 def on_volOpCebFilter_stateChanged(self, p0):
551 def on_volOpCebFilter_stateChanged(self, p0):
552 """
552 """
553 Name='Decoder', optype='other'
553 Name='Decoder', optype='other'
554 """
554 """
555 if p0 == 2:
555 if p0 == 2:
556 self.volOpFilter.setEnabled(True)
556 self.volOpFilter.setEnabled(True)
557
557
558 if p0 == 0:
558 if p0 == 0:
559 self.volOpFilter.setEnabled(False)
559 self.volOpFilter.setEnabled(False)
560 self.volOpFilter.clear()
560 self.volOpFilter.clear()
561
561
562 @pyqtSignature("int")
562 @pyqtSignature("int")
563 def on_volOpCebProfile_stateChanged(self, p0):
563 def on_volOpCebProfile_stateChanged(self, p0):
564 """
564 """
565 Check Box habilita ingreso del rango de Perfiles
565 Check Box habilita ingreso del rango de Perfiles
566 """
566 """
567 if p0 == 2:
567 if p0 == 2:
568 self.volOpComProfile.setEnabled(True)
568 self.volOpComProfile.setEnabled(True)
569 self.volOpProfile.setEnabled(True)
569 self.volOpProfile.setEnabled(True)
570
570
571 if p0 == 0:
571 if p0 == 0:
572 self.volOpComProfile.setEnabled(False)
572 self.volOpComProfile.setEnabled(False)
573 self.volOpProfile.setEnabled(False)
573 self.volOpProfile.setEnabled(False)
574 self.volOpProfile.clear()
574 self.volOpProfile.clear()
575
575
576 @pyqtSignature("int")
576 @pyqtSignature("int")
577 def on_volOpComProfile_activated(self, index):
577 def on_volOpComProfile_activated(self, index):
578 """
578 """
579 Check Box habilita ingreso del rango de Perfiles
579 Check Box habilita ingreso del rango de Perfiles
580 """
580 """
581 #Profile List
581 #Profile List
582 if index == 0:
582 if index == 0:
583 self.volOpProfile.setToolTip('List of selected profiles. Example: 0, 1, 2, 3, 4, 5, 6, 7')
583 self.volOpProfile.setToolTip('List of selected profiles. Example: 0, 1, 2, 3, 4, 5, 6, 7')
584
584
585 #Profile Range
585 #Profile Range
586 if index == 1:
586 if index == 1:
587 self.volOpProfile.setToolTip('Minimum and maximum profile index. Example: 0, 7')
587 self.volOpProfile.setToolTip('Minimum and maximum profile index. Example: 0, 7')
588
588
589 #Profile Range List
589 #Profile Range List
590 if index == 2:
590 if index == 2:
591 self.volOpProfile.setToolTip('List of profile ranges. Example: (0, 7), (12, 19), (100, 200)')
591 self.volOpProfile.setToolTip('List of profile ranges. Example: (0, 7), (12, 19), (100, 200)')
592
592
593 @pyqtSignature("int")
593 @pyqtSignature("int")
594 def on_volOpCebDecodification_stateChanged(self, p0):
594 def on_volOpCebDecodification_stateChanged(self, p0):
595 """
595 """
596 Check Box habilita
596 Check Box habilita
597 """
597 """
598 if p0 == 2:
598 if p0 == 2:
599 self.volOpComCode.setEnabled(True)
599 self.volOpComCode.setEnabled(True)
600 self.volOpComMode.setEnabled(True)
600 self.volOpComMode.setEnabled(True)
601 if p0 == 0:
601 if p0 == 0:
602 self.volOpComCode.setEnabled(False)
602 self.volOpComCode.setEnabled(False)
603 self.volOpComMode.setEnabled(False)
603 self.volOpComMode.setEnabled(False)
604
604
605 @pyqtSignature("int")
605 @pyqtSignature("int")
606 def on_volOpComCode_activated(self, index):
606 def on_volOpComCode_activated(self, index):
607 """
607 """
608 Check Box habilita ingreso
608 Check Box habilita ingreso
609 """
609 """
610 if index == 13:
610 if index == 13:
611 self.volOpCode.setEnabled(True)
611 self.volOpCode.setEnabled(True)
612 else:
612 else:
613 self.volOpCode.setEnabled(False)
613 self.volOpCode.setEnabled(False)
614
614
615 if index == 0:
615 if index == 0:
616 code = ''
616 code = ''
617 self.volOpCode.setText(str(code))
617 self.volOpCode.setText(str(code))
618 return
618 return
619
619
620 if index == 1:
620 if index == 1:
621 code = '(1,1,-1)'
621 code = '(1,1,-1)'
622 nCode = '1'
622 nCode = '1'
623 nBaud = '3'
623 nBaud = '3'
624 if index == 2:
624 if index == 2:
625 code = '(1,1,-1,1)'
625 code = '(1,1,-1,1)'
626 nCode = '1'
626 nCode = '1'
627 nBaud = '4'
627 nBaud = '4'
628 if index == 3:
628 if index == 3:
629 code = '(1,1,1,-1,1)'
629 code = '(1,1,1,-1,1)'
630 nCode = '1'
630 nCode = '1'
631 nBaud = '5'
631 nBaud = '5'
632 if index == 4:
632 if index == 4:
633 code = '(1,1,1,-1,-1,1,-1)'
633 code = '(1,1,1,-1,-1,1,-1)'
634 nCode = '1'
634 nCode = '1'
635 nBaud = '7'
635 nBaud = '7'
636 if index == 5:
636 if index == 5:
637 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1)'
637 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1)'
638 nCode = '1'
638 nCode = '1'
639 nBaud = '11'
639 nBaud = '11'
640 if index == 6:
640 if index == 6:
641 code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1)'
641 code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1)'
642 nCode = '1'
642 nCode = '1'
643 nBaud = '13'
643 nBaud = '13'
644 if index == 7:
644 if index == 7:
645 code = '(1,1,-1,-1,-1,1)'
645 code = '(1,1,-1,-1,-1,1)'
646 nCode = '2'
646 nCode = '2'
647 nBaud = '3'
647 nBaud = '3'
648 if index == 8:
648 if index == 8:
649 code = '(1,1,-1,1,-1,-1,1,-1)'
649 code = '(1,1,-1,1,-1,-1,1,-1)'
650 nCode = '2'
650 nCode = '2'
651 nBaud = '4'
651 nBaud = '4'
652 if index == 9:
652 if index == 9:
653 code = '(1,1,1,-1,1,-1,-1,-1,1,-1)'
653 code = '(1,1,1,-1,1,-1,-1,-1,1,-1)'
654 nCode = '2'
654 nCode = '2'
655 nBaud = '5'
655 nBaud = '5'
656 if index == 10:
656 if index == 10:
657 code = '(1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1)'
657 code = '(1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1)'
658 nCode = '2'
658 nCode = '2'
659 nBaud = '7'
659 nBaud = '7'
660 if index == 11:
660 if index == 11:
661 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1 ,-1 ,-1 ,1 ,1,1,-1 ,1 ,1 ,-1 ,1)'
661 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1 ,-1 ,-1 ,1 ,1,1,-1 ,1 ,1 ,-1 ,1)'
662 nCode = '2'
662 nCode = '2'
663 nBaud = '11'
663 nBaud = '11'
664 if index == 12:
664 if index == 12:
665 code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1)'
665 code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1)'
666 nCode = '2'
666 nCode = '2'
667 nBaud = '13'
667 nBaud = '13'
668
668
669 code = ast.literal_eval(code)
669 code = ast.literal_eval(code)
670 nCode = int(nCode)
670 nCode = int(nCode)
671 nBaud = int(nBaud)
671 nBaud = int(nBaud)
672
672
673 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
673 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
674
674
675 self.volOpCode.setText(str(code))
675 self.volOpCode.setText(str(code))
676
676
677 @pyqtSignature("int")
677 @pyqtSignature("int")
678 def on_volOpCebFlip_stateChanged(self, p0):
678 def on_volOpCebFlip_stateChanged(self, p0):
679 """
679 """
680 Check Box habilita ingresode del numero de Integraciones a realizar
680 Check Box habilita ingresode del numero de Integraciones a realizar
681 """
681 """
682 if p0 == 2:
682 if p0 == 2:
683 self.volOpFlip.setEnabled(True)
683 self.volOpFlip.setEnabled(True)
684 if p0 == 0:
684 if p0 == 0:
685 self.volOpFlip.setEnabled(False)
685 self.volOpFlip.setEnabled(False)
686 self.volOpFlip.clear()
686 self.volOpFlip.clear()
687
687
688 @pyqtSignature("int")
688 @pyqtSignature("int")
689 def on_volOpCebCohInt_stateChanged(self, p0):
689 def on_volOpCebCohInt_stateChanged(self, p0):
690 """
690 """
691 Check Box habilita ingresode del numero de Integraciones a realizar
691 Check Box habilita ingresode del numero de Integraciones a realizar
692 """
692 """
693 if p0 == 2:
693 if p0 == 2:
694 self.volOpCohInt.setEnabled(True)
694 self.volOpCohInt.setEnabled(True)
695 if p0 == 0:
695 if p0 == 0:
696 self.volOpCohInt.setEnabled(False)
696 self.volOpCohInt.setEnabled(False)
697 self.volOpCohInt.clear()
697 self.volOpCohInt.clear()
698
698
699 @pyqtSignature("int")
699 @pyqtSignature("int")
700 def on_volOpCebRadarfrequency_stateChanged(self, p0):
700 def on_volOpCebRadarfrequency_stateChanged(self, p0):
701 """
701 """
702 Check Box habilita ingresode del numero de Integraciones a realizar
702 Check Box habilita ingresode del numero de Integraciones a realizar
703 """
703 """
704 if p0 == 2:
704 if p0 == 2:
705 self.volOpRadarfrequency.setEnabled(True)
705 self.volOpRadarfrequency.setEnabled(True)
706 if p0 == 0:
706 if p0 == 0:
707 self.volOpRadarfrequency.clear()
707 self.volOpRadarfrequency.clear()
708 self.volOpRadarfrequency.setEnabled(False)
708 self.volOpRadarfrequency.setEnabled(False)
709
709
710 @pyqtSignature("")
710 @pyqtSignature("")
711 def on_volOutputToolPath_clicked(self):
711 def on_volOutputToolPath_clicked(self):
712 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
712 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
713 self.volOutputPath.setText(dirOutPath)
713 self.volOutputPath.setText(dirOutPath)
714
714
715 @pyqtSignature("")
715 @pyqtSignature("")
716 def on_specOutputToolPath_clicked(self):
716 def on_specOutputToolPath_clicked(self):
717 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
717 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
718 self.specOutputPath.setText(dirOutPath)
718 self.specOutputPath.setText(dirOutPath)
719
719
720 @pyqtSignature("")
720 @pyqtSignature("")
721 def on_specHeisOutputToolPath_clicked(self):
721 def on_specHeisOutputToolPath_clicked(self):
722 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
722 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
723 self.specHeisOutputPath.setText(dirOutPath)
723 self.specHeisOutputPath.setText(dirOutPath)
724
724
725 @pyqtSignature("")
725 @pyqtSignature("")
726 def on_specHeisOutputMetadaToolPath_clicked(self):
726 def on_specHeisOutputMetadaToolPath_clicked(self):
727
727
728 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
728 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
729 self.specHeisOutputMetada.setText(filename)
729 self.specHeisOutputMetada.setText(filename)
730
730
731 @pyqtSignature("")
731 @pyqtSignature("")
732 def on_volOpOk_clicked(self):
732 def on_volOpOk_clicked(self):
733 """
733 """
734 BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES AADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO
734 BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES AADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO
735 PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML
735 PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML
736 """
736 """
737
737
738 checkPath = False
738 checkPath = False
739
739
740 self.actionSaveToolbar.setEnabled(False)
740 self.actionSaveToolbar.setEnabled(False)
741 self.actionStarToolbar.setEnabled(False)
741 self.actionStarToolbar.setEnabled(False)
742
742
743 self.console.clear()
743 self.console.clear()
744 self.console.append("Checking input parameters ...")
744 self.console.append("Checking input parameters ...")
745
745
746 puObj = self.getSelectedItemObj()
746 puObj = self.getSelectedItemObj()
747 puObj.removeOperations()
747 puObj.removeOperations()
748
748
749 if self.volOpCebRadarfrequency.isChecked():
749 if self.volOpCebRadarfrequency.isChecked():
750 value = str(self.volOpRadarfrequency.text())
750 value = str(self.volOpRadarfrequency.text())
751 format = 'float'
751 format = 'float'
752 name_operation = 'setRadarFrequency'
752 name_operation = 'setRadarFrequency'
753 name_parameter = 'frequency'
753 name_parameter = 'frequency'
754 if not value == "":
754 if not value == "":
755 try:
755 try:
756 radarfreq = float(self.volOpRadarfrequency.text())*1e6
756 radarfreq = float(self.volOpRadarfrequency.text())*1e6
757 except:
757 except:
758 self.console.clear()
758 self.console.clear()
759 self.console.append("Invalid value '%s' for Radar Frequency" %value)
759 self.console.append("Invalid value '%s' for Radar Frequency" %value)
760 return 0
760 return 0
761
761
762 opObj = puObj.addOperation(name=name_operation)
762 opObj = puObj.addOperation(name=name_operation)
763 if not opObj.addParameter(name=name_parameter, value=radarfreq, format=format):
763 if not opObj.addParameter(name=name_parameter, value=radarfreq, format=format):
764 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
764 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
765 return 0
765 return 0
766
766
767 if self.volOpCebChannels.isChecked():
767 if self.volOpCebChannels.isChecked():
768 value = str(self.volOpChannel.text())
768 value = str(self.volOpChannel.text())
769
769
770 if value == "":
770 if value == "":
771 print "Please fill channel list"
771 print "Please fill channel list"
772 return 0
772 return 0
773
773
774 format = 'intlist'
774 format = 'intlist'
775 if self.volOpComChannels.currentIndex() == 0:
775 if self.volOpComChannels.currentIndex() == 0:
776 name_operation = "selectChannels"
776 name_operation = "selectChannels"
777 name_parameter = 'channelList'
777 name_parameter = 'channelList'
778 else:
778 else:
779 name_operation = "selectChannelsByIndex"
779 name_operation = "selectChannelsByIndex"
780 name_parameter = 'channelIndexList'
780 name_parameter = 'channelIndexList'
781
781
782 opObj = puObj.addOperation(name=name_operation)
782 opObj = puObj.addOperation(name=name_operation)
783 if not opObj.addParameter(name=name_parameter, value=value, format=format):
783 if not opObj.addParameter(name=name_parameter, value=value, format=format):
784 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
784 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
785 return 0
785 return 0
786
786
787 if self.volOpCebHeights.isChecked():
787 if self.volOpCebHeights.isChecked():
788 value = str(self.volOpHeights.text())
788 value = str(self.volOpHeights.text())
789
789
790 if value == "":
790 if value == "":
791 print "Please fill height range"
791 print "Please fill height range"
792 return 0
792 return 0
793
793
794 valueList = value.split(',')
794 valueList = value.split(',')
795 format = 'float'
795 format = 'float'
796 if self.volOpComHeights.currentIndex() == 0:
796 if self.volOpComHeights.currentIndex() == 0:
797 name_operation = 'selectHeights'
797 name_operation = 'selectHeights'
798 name_parameter1 = 'minHei'
798 name_parameter1 = 'minHei'
799 name_parameter2 = 'maxHei'
799 name_parameter2 = 'maxHei'
800 else:
800 else:
801 name_operation = 'selectHeightsByIndex'
801 name_operation = 'selectHeightsByIndex'
802 name_parameter1 = 'minIndex'
802 name_parameter1 = 'minIndex'
803 name_parameter2 = 'maxIndex'
803 name_parameter2 = 'maxIndex'
804
804
805 opObj = puObj.addOperation(name=name_operation)
805 opObj = puObj.addOperation(name=name_operation)
806 opObj.addParameter(name=name_parameter1, value=valueList[0], format=format)
806 opObj.addParameter(name=name_parameter1, value=valueList[0], format=format)
807 opObj.addParameter(name=name_parameter2, value=valueList[1], format=format)
807 opObj.addParameter(name=name_parameter2, value=valueList[1], format=format)
808
808
809 if self.volOpCebFilter.isChecked():
809 if self.volOpCebFilter.isChecked():
810 value = str(self.volOpFilter.text())
810 value = str(self.volOpFilter.text())
811 if value == "":
811 if value == "":
812 print "Please fill filter value"
812 print "Please fill filter value"
813 return 0
813 return 0
814
814
815 format = 'int'
815 format = 'int'
816 name_operation = 'filterByHeights'
816 name_operation = 'filterByHeights'
817 name_parameter = 'window'
817 name_parameter = 'window'
818 opObj = puObj.addOperation(name=name_operation)
818 opObj = puObj.addOperation(name=name_operation)
819 if not opObj.addParameter(name=name_parameter, value=value, format=format):
819 if not opObj.addParameter(name=name_parameter, value=value, format=format):
820 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
820 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
821 return 0
821 return 0
822
822
823 if self.volOpCebProfile.isChecked():
823 if self.volOpCebProfile.isChecked():
824 value = str(self.volOpProfile.text())
824 value = str(self.volOpProfile.text())
825
825
826 if value == "":
826 if value == "":
827 print "Please fill profile value"
827 print "Please fill profile value"
828 return 0
828 return 0
829
829
830 format = 'intlist'
830 format = 'intlist'
831 optype = 'other'
831 optype = 'other'
832 name_operation = 'ProfileSelector'
832 name_operation = 'ProfileSelector'
833 if self.volOpComProfile.currentIndex() == 0:
833 if self.volOpComProfile.currentIndex() == 0:
834 name_parameter = 'profileList'
834 name_parameter = 'profileList'
835 if self.volOpComProfile.currentIndex() == 1:
835 if self.volOpComProfile.currentIndex() == 1:
836 name_parameter = 'profileRangeList'
836 name_parameter = 'profileRangeList'
837 if self.volOpComProfile.currentIndex() == 2:
837 if self.volOpComProfile.currentIndex() == 2:
838 name_parameter = 'rangeList'
838 name_parameter = 'rangeList'
839
839
840 opObj = puObj.addOperation(name='ProfileSelector', optype='other')
840 opObj = puObj.addOperation(name='ProfileSelector', optype='other')
841 if not opObj.addParameter(name=name_parameter, value=value, format=format):
841 if not opObj.addParameter(name=name_parameter, value=value, format=format):
842 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
842 self.console.append("Invalid value '%s' for %s" %(value,name_parameter))
843 return 0
843 return 0
844
844
845 if self.volOpCebDecodification.isChecked():
845 if self.volOpCebDecodification.isChecked():
846 name_operation = 'Decoder'
846 name_operation = 'Decoder'
847 opObj = puObj.addOperation(name=name_operation, optype='other')
847
848
848 #User defined
849 #User defined
849 nBaud = None
850 nBaud = None
850 nCode = None
851 nCode = None
851
852
852 code = str(self.volOpCode.text())
853 code = str(self.volOpCode.text())
853 try:
854 try:
854 code_tmp = ast.literal_eval(code)
855 code_tmp = ast.literal_eval(code)
855 except:
856 except:
856 code_tmp = []
857 code_tmp = []
857
858
858 if len(code_tmp) < 1:
859 if len(code_tmp) > 0:
859 self.console.append("Please write a right value for Code (Exmaple: [1,1,-1], [1,-1,1])")
860 return 0
861
860
862 if type(code_tmp) not in (tuple, list):
861 if type(code_tmp) not in (tuple, list):
863 self.console.append("Please write a right value for Code (Exmaple: [1,1,-1], [1,-1,1])")
862 self.console.append("Please write a right value for Code (Exmaple: [1,1,-1], [1,-1,1])")
864 return 0
863 return 0
865
864
866 if len(code_tmp) > 1 and type(code_tmp[0]) in (tuple, list): #[ [1,-1,1], [1,1,-1] ]
865 if len(code_tmp) > 1 and type(code_tmp[0]) in (tuple, list): #[ [1,-1,1], [1,1,-1] ]
867 nBaud = len(code_tmp[0])
866 nBaud = len(code_tmp[0])
868 nCode = len(code_tmp)
867 nCode = len(code_tmp)
869 elif len(code_tmp) == 1 and type(code_tmp[0]) in (tuple, list): #[ [1,-1,1] ]
868 elif len(code_tmp) == 1 and type(code_tmp[0]) in (tuple, list): #[ [1,-1,1] ]
870 nBaud = len(code_tmp[0])
869 nBaud = len(code_tmp[0])
871 nCode = 1
870 nCode = 1
872 elif type(code_tmp[0]) in (int, float): #[1,-1,1] or (1,-1,1)
871 elif type(code_tmp[0]) in (int, float): #[1,-1,1] or (1,-1,1)
873 nBaud = len(code_tmp)
872 nBaud = len(code_tmp)
874 nCode = 1
873 nCode = 1
875 else:
874 else:
876 self.console.append("Please write a right value for Code (Exmaple: [1,1,-1], [1,-1,1])")
875 self.console.append("Please write a right value for Code (Exmaple: [1,1,-1], [1,-1,1])")
877 return 0
876 return 0
878
877
879 if not nBaud or not nCode:
878 if not nBaud or not nCode:
880 self.console.append("Please write a right value for Code")
879 self.console.append("Please write a right value for Code")
881 return 0
880 return 0
882
883 opObj = puObj.addOperation(name='Decoder', optype='other')
884
881
885 code = code.replace("(", "")
882 code = code.replace("(", "")
886 code = code.replace(")", "")
883 code = code.replace(")", "")
887 code = code.replace("[", "")
884 code = code.replace("[", "")
888 code = code.replace("]", "")
885 code = code.replace("]", "")
889
886
890 if not opObj.addParameter(name='code', value=code, format='intlist'):
887 if not opObj.addParameter(name='code', value=code, format='intlist'):
891 self.console.append("Please write a right value for Code")
888 self.console.append("Please write a right value for Code")
892 return 0
889 return 0
893 if not opObj.addParameter(name='nCode', value=nCode, format='int'):
890 if not opObj.addParameter(name='nCode', value=nCode, format='int'):
894 self.console.append("Please write a right value for Code")
891 self.console.append("Please write a right value for Code")
895 return 0
892 return 0
896 if not opObj.addParameter(name='nBaud', value=nBaud, format='int'):
893 if not opObj.addParameter(name='nBaud', value=nBaud, format='int'):
897 self.console.append("Please write a right value for Code")
894 self.console.append("Please write a right value for Code")
898 return 0
895 return 0
899
896
900 name_parameter = 'mode'
897 name_parameter = 'mode'
901 format = 'int'
898 format = 'int'
902
899
903 value = str(self.volOpComMode.currentIndex())
900 value = str(self.volOpComMode.currentIndex())
904
901
905 if not opObj.addParameter(name=name_parameter, value=value, format=format):
902 if not opObj.addParameter(name=name_parameter, value=value, format=format):
906 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
903 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
907 return 0
904 return 0
908
905
909
906
910 if self.volOpCebFlip.isChecked():
907 if self.volOpCebFlip.isChecked():
911 name_operation = 'deFlip'
908 name_operation = 'deFlip'
912 optype = 'self'
909 optype = 'self'
913
910
914 opObj = puObj.addOperation(name=name_operation, optype=optype)
911 opObj = puObj.addOperation(name=name_operation, optype=optype)
915
912
916 name_parameter = 'channelList'
913 name_parameter = 'channelList'
917 format = 'intlist'
914 format = 'intlist'
918 value = str(self.volOpFlip.text())
915 value = str(self.volOpFlip.text())
919
916
920 if value != "":
917 if value != "":
921 if not opObj.addParameter(name=name_parameter, value=value, format=format):
918 if not opObj.addParameter(name=name_parameter, value=value, format=format):
922 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
919 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
923 return 0
920 return 0
924
921
925 if self.volOpCebCohInt.isChecked():
922 if self.volOpCebCohInt.isChecked():
926 name_operation = 'CohInt'
923 name_operation = 'CohInt'
927 optype = 'other'
924 optype = 'other'
928 value = str(self.volOpCohInt.text())
925 value = str(self.volOpCohInt.text())
929
926
930 if value == "":
927 if value == "":
931 print "Please fill number of coherent integrations"
928 print "Please fill number of coherent integrations"
932 return 0
929 return 0
933
930
934 name_parameter = 'n'
931 name_parameter = 'n'
935 format = 'float'
932 format = 'float'
936
933
937 opObj = puObj.addOperation(name=name_operation, optype=optype)
934 opObj = puObj.addOperation(name=name_operation, optype=optype)
938
935
939 if not opObj.addParameter(name=name_parameter, value=value, format=format):
936 if not opObj.addParameter(name=name_parameter, value=value, format=format):
940 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
937 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
941 return 0
938 return 0
942
939
943 if self.volGraphCebshow.isChecked():
940 if self.volGraphCebshow.isChecked():
944 name_operation = 'Scope'
941 name_operation = 'Scope'
945 optype = 'other'
942 optype = 'other'
946 name_parameter = 'type'
943 name_parameter = 'type'
947 value = 'Scope'
944 value = 'Scope'
948 if self.idImagscope == 0:
945 if self.idImagscope == 0:
949 self.idImagscope = 100
946 self.idImagscope = 100
950 else:
947 else:
951 self.idImagscope = self.idImagscope + 1
948 self.idImagscope = self.idImagscope + 1
952
949
953 name_parameter1 = 'id'
950 name_parameter1 = 'id'
954 value1 = int(self.idImagscope)
951 value1 = int(self.idImagscope)
955 format1 = 'int'
952 format1 = 'int'
956 format = 'str'
953 format = 'str'
957
954
958 opObj = puObj.addOperation(name=name_operation, optype=optype)
955 opObj = puObj.addOperation(name=name_operation, optype=optype)
959 # opObj.addParameter(name=name_parameter, value=value, format=format)
956 # opObj.addParameter(name=name_parameter, value=value, format=format)
960 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
957 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
961
958
962 channelList = str(self.volGraphChannelList.text()).replace(" ","")
959 channelList = str(self.volGraphChannelList.text()).replace(" ","")
963 xvalue = str(self.volGraphfreqrange.text()).replace(" ","")
960 xvalue = str(self.volGraphfreqrange.text()).replace(" ","")
964 yvalue = str(self.volGraphHeightrange.text()).replace(" ","")
961 yvalue = str(self.volGraphHeightrange.text()).replace(" ","")
965
962
966 if channelList:
963 if channelList:
967 opObj.addParameter(name='channelList', value=channelList, format='intlist')
964 opObj.addParameter(name='channelList', value=channelList, format='intlist')
968
965
969 if xvalue:
966 if xvalue:
970 xvalueList = xvalue.split(',')
967 xvalueList = xvalue.split(',')
971 try:
968 try:
972 value0 = float(xvalueList[0])
969 value0 = float(xvalueList[0])
973 value1 = float(xvalueList[1])
970 value1 = float(xvalueList[1])
974 except:
971 except:
975 return 0
972 return 0
976 opObj.addParameter(name='xmin', value=value0, format='float')
973 opObj.addParameter(name='xmin', value=value0, format='float')
977 opObj.addParameter(name='xmax', value=value1, format='float')
974 opObj.addParameter(name='xmax', value=value1, format='float')
978
975
979
976
980 if not yvalue == "":
977 if not yvalue == "":
981 yvalueList = yvalue.split(",")
978 yvalueList = yvalue.split(",")
982 try:
979 try:
983 value0 = int(yvalueList[0])
980 value0 = int(yvalueList[0])
984 value1 = int(yvalueList[1])
981 value1 = int(yvalueList[1])
985 except:
982 except:
986 return 0
983 return 0
987
984
988 opObj.addParameter(name='ymin', value=value0, format='int')
985 opObj.addParameter(name='ymin', value=value0, format='int')
989 opObj.addParameter(name='ymax', value=value1, format='int')
986 opObj.addParameter(name='ymax', value=value1, format='int')
990
987
991 if self.volGraphCebSave.isChecked():
988 if self.volGraphCebSave.isChecked():
992 checkPath = True
989 checkPath = True
993 opObj.addParameter(name='save', value='1', format='int')
990 opObj.addParameter(name='save', value='1', format='int')
994 opObj.addParameter(name='figpath', value=str(self.volGraphPath.text()), format='str')
991 opObj.addParameter(name='figpath', value=str(self.volGraphPath.text()), format='str')
995 value = str(self.volGraphPrefix.text()).replace(" ","")
992 value = str(self.volGraphPrefix.text()).replace(" ","")
996 if value:
993 if value:
997 opObj.addParameter(name='figfile', value=value, format='str')
994 opObj.addParameter(name='figfile', value=value, format='str')
998
995
999 localfolder = None
996 localfolder = None
1000 if checkPath:
997 if checkPath:
1001 localfolder = str(self.volGraphPath.text())
998 localfolder = str(self.volGraphPath.text())
1002 if localfolder == '':
999 if localfolder == '':
1003 self.console.clear()
1000 self.console.clear()
1004 self.console.append("Graphic path should be defined")
1001 self.console.append("Graphic path should be defined")
1005 return 0
1002 return 0
1006
1003
1007 # if something happend
1004 # if something happend
1008 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Voltage')
1005 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Voltage')
1009 if parms_ok:
1006 if parms_ok:
1010 name_operation = 'VoltageWriter'
1007 name_operation = 'VoltageWriter'
1011 optype = 'other'
1008 optype = 'other'
1012 name_parameter1 = 'path'
1009 name_parameter1 = 'path'
1013 name_parameter2 = 'blocksPerFile'
1010 name_parameter2 = 'blocksPerFile'
1014 name_parameter3 = 'profilesPerBlock'
1011 name_parameter3 = 'profilesPerBlock'
1015 value1 = output_path
1012 value1 = output_path
1016 value2 = blocksperfile
1013 value2 = blocksperfile
1017 value3 = profilesperblock
1014 value3 = profilesperblock
1018 format = "int"
1015 format = "int"
1019 opObj = puObj.addOperation(name=name_operation, optype=optype)
1016 opObj = puObj.addOperation(name=name_operation, optype=optype)
1020 opObj.addParameter(name=name_parameter1, value=value1)
1017 opObj.addParameter(name=name_parameter1, value=value1)
1021 opObj.addParameter(name=name_parameter2, value=value2, format=format)
1018 opObj.addParameter(name=name_parameter2, value=value2, format=format)
1022 opObj.addParameter(name=name_parameter3, value=value3, format=format)
1019 opObj.addParameter(name=name_parameter3, value=value3, format=format)
1023
1020
1024 self.console.clear()
1021 self.console.clear()
1025 try:
1022 try:
1026 self.refreshPUProperties(puObj)
1023 self.refreshPUProperties(puObj)
1027 except:
1024 except:
1028 self.console.append("An error reading input parameters was found ...Check them!")
1025 self.console.append("An error reading input parameters was found ...Check them!")
1029 return 0
1026 return 0
1030
1027
1031 self.console.append("Save your project and press Play button to start signal processing")
1028 self.console.append("Save your project and press Play button to start signal processing")
1032
1029
1033 self.actionSaveToolbar.setEnabled(True)
1030 self.actionSaveToolbar.setEnabled(True)
1034 self.actionStarToolbar.setEnabled(True)
1031 self.actionStarToolbar.setEnabled(True)
1035
1032
1036 return 1
1033 return 1
1037
1034
1038 """
1035 """
1039 Voltage Graph
1036 Voltage Graph
1040 """
1037 """
1041 @pyqtSignature("int")
1038 @pyqtSignature("int")
1042 def on_volGraphCebSave_stateChanged(self, p0):
1039 def on_volGraphCebSave_stateChanged(self, p0):
1043 """
1040 """
1044 Check Box habilita ingresode del numero de Integraciones a realizar
1041 Check Box habilita ingresode del numero de Integraciones a realizar
1045 """
1042 """
1046 if p0 == 2:
1043 if p0 == 2:
1047 self.volGraphPath.setEnabled(True)
1044 self.volGraphPath.setEnabled(True)
1048 self.volGraphPrefix.setEnabled(True)
1045 self.volGraphPrefix.setEnabled(True)
1049 self.volGraphToolPath.setEnabled(True)
1046 self.volGraphToolPath.setEnabled(True)
1050
1047
1051 if p0 == 0:
1048 if p0 == 0:
1052 self.volGraphPath.setEnabled(False)
1049 self.volGraphPath.setEnabled(False)
1053 self.volGraphPrefix.setEnabled(False)
1050 self.volGraphPrefix.setEnabled(False)
1054 self.volGraphToolPath.setEnabled(False)
1051 self.volGraphToolPath.setEnabled(False)
1055
1052
1056 @pyqtSignature("")
1053 @pyqtSignature("")
1057 def on_volGraphToolPath_clicked(self):
1054 def on_volGraphToolPath_clicked(self):
1058 """
1055 """
1059 Donde se guardan los DATOS
1056 Donde se guardan los DATOS
1060 """
1057 """
1061 save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
1058 save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
1062 self.volGraphPath.setText(save_path)
1059 self.volGraphPath.setText(save_path)
1063
1060
1064 if not os.path.exists(save_path):
1061 if not os.path.exists(save_path):
1065 self.console.clear()
1062 self.console.clear()
1066 self.console.append("Set a valid path")
1063 self.console.append("Set a valid path")
1067 self.volGraphOk.setEnabled(False)
1064 self.volGraphOk.setEnabled(False)
1068 return
1065 return
1069
1066
1070 @pyqtSignature("int")
1067 @pyqtSignature("int")
1071 def on_volGraphCebshow_stateChanged(self, p0):
1068 def on_volGraphCebshow_stateChanged(self, p0):
1072 """
1069 """
1073 Check Box habilita ingresode del numero de Integraciones a realizar
1070 Check Box habilita ingresode del numero de Integraciones a realizar
1074 """
1071 """
1075 if p0 == 0:
1072 if p0 == 0:
1076
1073
1077 self.volGraphChannelList.setEnabled(False)
1074 self.volGraphChannelList.setEnabled(False)
1078 self.volGraphfreqrange.setEnabled(False)
1075 self.volGraphfreqrange.setEnabled(False)
1079 self.volGraphHeightrange.setEnabled(False)
1076 self.volGraphHeightrange.setEnabled(False)
1080 if p0 == 2:
1077 if p0 == 2:
1081
1078
1082 self.volGraphChannelList.setEnabled(True)
1079 self.volGraphChannelList.setEnabled(True)
1083 self.volGraphfreqrange.setEnabled(True)
1080 self.volGraphfreqrange.setEnabled(True)
1084 self.volGraphHeightrange.setEnabled(True)
1081 self.volGraphHeightrange.setEnabled(True)
1085
1082
1086 """
1083 """
1087 Spectra operation
1084 Spectra operation
1088 """
1085 """
1089 @pyqtSignature("int")
1086 @pyqtSignature("int")
1090 def on_specOpCebRadarfrequency_stateChanged(self, p0):
1087 def on_specOpCebRadarfrequency_stateChanged(self, p0):
1091 """
1088 """
1092 Check Box habilita ingresode del numero de Integraciones a realizar
1089 Check Box habilita ingresode del numero de Integraciones a realizar
1093 """
1090 """
1094 if p0 == 2:
1091 if p0 == 2:
1095 self.specOpRadarfrequency.setEnabled(True)
1092 self.specOpRadarfrequency.setEnabled(True)
1096 if p0 == 0:
1093 if p0 == 0:
1097 self.specOpRadarfrequency.clear()
1094 self.specOpRadarfrequency.clear()
1098 self.specOpRadarfrequency.setEnabled(False)
1095 self.specOpRadarfrequency.setEnabled(False)
1099
1096
1100
1097
1101 @pyqtSignature("int")
1098 @pyqtSignature("int")
1102 def on_specOpCebCrossSpectra_stateChanged(self, p0):
1099 def on_specOpCebCrossSpectra_stateChanged(self, p0):
1103 """
1100 """
1104 Habilita la opcion de aadir el parmetro CrossSpectra a la Unidad de Procesamiento .
1101 Habilita la opcion de aadir el parmetro CrossSpectra a la Unidad de Procesamiento .
1105 """
1102 """
1106 if p0 == 2:
1103 if p0 == 2:
1107 # self.specOpnFFTpoints.setEnabled(True)
1104 # self.specOpnFFTpoints.setEnabled(True)
1108 self.specOppairsList.setEnabled(True)
1105 self.specOppairsList.setEnabled(True)
1109 if p0 == 0:
1106 if p0 == 0:
1110 # self.specOpnFFTpoints.setEnabled(False)
1107 # self.specOpnFFTpoints.setEnabled(False)
1111 self.specOppairsList.setEnabled(False)
1108 self.specOppairsList.setEnabled(False)
1112
1109
1113 @pyqtSignature("int")
1110 @pyqtSignature("int")
1114 def on_specOpCebChannel_stateChanged(self, p0):
1111 def on_specOpCebChannel_stateChanged(self, p0):
1115 """
1112 """
1116 Habilita la opcion de aadir el parmetro numero de Canales a la Unidad de Procesamiento .
1113 Habilita la opcion de aadir el parmetro numero de Canales a la Unidad de Procesamiento .
1117 """
1114 """
1118 if p0 == 2:
1115 if p0 == 2:
1119 self.specOpChannel.setEnabled(True)
1116 self.specOpChannel.setEnabled(True)
1120 self.specOpComChannel.setEnabled(True)
1117 self.specOpComChannel.setEnabled(True)
1121 if p0 == 0:
1118 if p0 == 0:
1122 self.specOpChannel.setEnabled(False)
1119 self.specOpChannel.setEnabled(False)
1123 self.specOpComChannel.setEnabled(False)
1120 self.specOpComChannel.setEnabled(False)
1124
1121
1125 @pyqtSignature("int")
1122 @pyqtSignature("int")
1126 def on_specOpCebHeights_stateChanged(self, p0):
1123 def on_specOpCebHeights_stateChanged(self, p0):
1127 """
1124 """
1128 Habilita la opcion de aadir el parmetro de alturas a la Unidad de Procesamiento .
1125 Habilita la opcion de aadir el parmetro de alturas a la Unidad de Procesamiento .
1129 """
1126 """
1130 if p0 == 2:
1127 if p0 == 2:
1131 self.specOpComHeights.setEnabled(True)
1128 self.specOpComHeights.setEnabled(True)
1132 self.specOpHeights.setEnabled(True)
1129 self.specOpHeights.setEnabled(True)
1133 if p0 == 0:
1130 if p0 == 0:
1134 self.specOpComHeights.setEnabled(False)
1131 self.specOpComHeights.setEnabled(False)
1135 self.specOpHeights.setEnabled(False)
1132 self.specOpHeights.setEnabled(False)
1136
1133
1137
1134
1138 @pyqtSignature("int")
1135 @pyqtSignature("int")
1139 def on_specOpCebIncoherent_stateChanged(self, p0):
1136 def on_specOpCebIncoherent_stateChanged(self, p0):
1140 """
1137 """
1141 Habilita la opcion de aadir el parmetro integraciones incoherentes a la Unidad de Procesamiento .
1138 Habilita la opcion de aadir el parmetro integraciones incoherentes a la Unidad de Procesamiento .
1142 """
1139 """
1143 if p0 == 2:
1140 if p0 == 2:
1144 self.specOpIncoherent.setEnabled(True)
1141 self.specOpIncoherent.setEnabled(True)
1145 if p0 == 0:
1142 if p0 == 0:
1146 self.specOpIncoherent.setEnabled(False)
1143 self.specOpIncoherent.setEnabled(False)
1147
1144
1148 @pyqtSignature("int")
1145 @pyqtSignature("int")
1149 def on_specOpCebRemoveDC_stateChanged(self, p0):
1146 def on_specOpCebRemoveDC_stateChanged(self, p0):
1150 """
1147 """
1151 Habilita la opcion de aadir el parmetro remover DC a la Unidad de Procesamiento .
1148 Habilita la opcion de aadir el parmetro remover DC a la Unidad de Procesamiento .
1152 """
1149 """
1153 if p0 == 2:
1150 if p0 == 2:
1154 self.specOpComRemoveDC.setEnabled(True)
1151 self.specOpComRemoveDC.setEnabled(True)
1155 if p0 == 0:
1152 if p0 == 0:
1156 self.specOpComRemoveDC.setEnabled(False)
1153 self.specOpComRemoveDC.setEnabled(False)
1157
1154
1158 @pyqtSignature("int")
1155 @pyqtSignature("int")
1159 def on_specOpCebgetNoise_stateChanged(self, p0):
1156 def on_specOpCebgetNoise_stateChanged(self, p0):
1160 """
1157 """
1161 Habilita la opcion de aadir la estimacion de ruido a la Unidad de Procesamiento .
1158 Habilita la opcion de aadir la estimacion de ruido a la Unidad de Procesamiento .
1162 """
1159 """
1163 if p0 == 2:
1160 if p0 == 2:
1164 self.specOpgetNoise.setEnabled(True)
1161 self.specOpgetNoise.setEnabled(True)
1165
1162
1166 if p0 == 0:
1163 if p0 == 0:
1167 self.specOpgetNoise.setEnabled(False)
1164 self.specOpgetNoise.setEnabled(False)
1168
1165
1169 @pyqtSignature("")
1166 @pyqtSignature("")
1170 def on_specOpOk_clicked(self):
1167 def on_specOpOk_clicked(self):
1171 """
1168 """
1172 AÑADE OPERACION SPECTRA
1169 AÑADE OPERACION SPECTRA
1173 """
1170 """
1174
1171
1175 addFTP = False
1172 addFTP = False
1176 checkPath = False
1173 checkPath = False
1177
1174
1178 self.actionSaveToolbar.setEnabled(False)
1175 self.actionSaveToolbar.setEnabled(False)
1179 self.actionStarToolbar.setEnabled(False)
1176 self.actionStarToolbar.setEnabled(False)
1180
1177
1181 self.console.clear()
1178 self.console.clear()
1182 self.console.append("Checking input parameters ...")
1179 self.console.append("Checking input parameters ...")
1183
1180
1184 projectObj = self.getSelectedProjectObj()
1181 projectObj = self.getSelectedProjectObj()
1185
1182
1186 if not projectObj:
1183 if not projectObj:
1187 self.console.append("Please select a project before update it")
1184 self.console.append("Please select a project before update it")
1188 return
1185 return
1189
1186
1190 puObj = self.getSelectedItemObj()
1187 puObj = self.getSelectedItemObj()
1191
1188
1192 puObj.removeOperations()
1189 puObj.removeOperations()
1193
1190
1194 if self.specOpCebRadarfrequency.isChecked():
1191 if self.specOpCebRadarfrequency.isChecked():
1195 value = str(self.specOpRadarfrequency.text())
1192 value = str(self.specOpRadarfrequency.text())
1196 format = 'float'
1193 format = 'float'
1197 name_operation = 'setRadarFrequency'
1194 name_operation = 'setRadarFrequency'
1198 name_parameter = 'frequency'
1195 name_parameter = 'frequency'
1199
1196
1200 if not isFloat(value):
1197 if not isFloat(value):
1201 self.console.clear()
1198 self.console.clear()
1202 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
1199 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
1203 return 0
1200 return 0
1204
1201
1205 radarfreq = float(value)*1e6
1202 radarfreq = float(value)*1e6
1206 opObj = puObj.addOperation(name=name_operation)
1203 opObj = puObj.addOperation(name=name_operation)
1207 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
1204 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
1208
1205
1209 inputId = puObj.getInputId()
1206 inputId = puObj.getInputId()
1210 inputPuObj = projectObj.getProcUnitObj(inputId)
1207 inputPuObj = projectObj.getProcUnitObj(inputId)
1211
1208
1212 if inputPuObj.datatype == 'Voltage' or inputPuObj.datatype == 'USRP':
1209 if inputPuObj.datatype == 'Voltage' or inputPuObj.datatype == 'USRP':
1213
1210
1214 value = str(self.specOpnFFTpoints.text())
1211 value = str(self.specOpnFFTpoints.text())
1215
1212
1216 if not isInt(value):
1213 if not isInt(value):
1217 self.console.append("Invalid value '%s' for '%s'" %(value, 'nFFTPoints'))
1214 self.console.append("Invalid value '%s' for '%s'" %(value, 'nFFTPoints'))
1218 return 0
1215 return 0
1219
1216
1220 puObj.addParameter(name='nFFTPoints', value=value, format='int')
1217 puObj.addParameter(name='nFFTPoints', value=value, format='int')
1221
1218
1222 value = str(self.specOpProfiles.text())
1219 value = str(self.specOpProfiles.text())
1223 if not isInt(value):
1220 if not isInt(value):
1224 self.console.append("Please write a value on Profiles field")
1221 self.console.append("Please write a value on Profiles field")
1225 else:
1222 else:
1226 puObj.addParameter(name='nProfiles', value=value, format='int')
1223 puObj.addParameter(name='nProfiles', value=value, format='int')
1227
1224
1228 value = str(self.specOpippFactor.text())
1225 value = str(self.specOpippFactor.text())
1229 if not isInt(value):
1226 if not isInt(value):
1230 self.console.append("Please write a value on IppFactor field")
1227 self.console.append("Please write a value on IppFactor field")
1231 else:
1228 else:
1232 puObj.addParameter(name='ippFactor' , value=value , format='int')
1229 puObj.addParameter(name='ippFactor' , value=value , format='int')
1233
1230
1234 if self.specOpCebCrossSpectra.isChecked():
1231 if self.specOpCebCrossSpectra.isChecked():
1235 name_parameter = 'pairsList'
1232 name_parameter = 'pairsList'
1236 format = 'pairslist'
1233 format = 'pairslist'
1237 value = str(self.specOppairsList.text())
1234 value = str(self.specOppairsList.text())
1238
1235
1239 if value == "":
1236 if value == "":
1240 print "Please fill the pairs list field"
1237 print "Please fill the pairs list field"
1241 return 0
1238 return 0
1242
1239
1243 if not opObj.addParameter(name=name_parameter, value=value, format=format):
1240 if not opObj.addParameter(name=name_parameter, value=value, format=format):
1244 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
1241 self.console.append("Invalid value '%s' for '%s'" %(value,name_parameter))
1245 return 0
1242 return 0
1246
1243
1247 if self.specOpCebHeights.isChecked():
1244 if self.specOpCebHeights.isChecked():
1248 value = str(self.specOpHeights.text())
1245 value = str(self.specOpHeights.text())
1249
1246
1250 if value == "":
1247 if value == "":
1251 self.console.append("Empty value for '%s'" %(value, "Height range"))
1248 self.console.append("Empty value for '%s'" %(value, "Height range"))
1252 return 0
1249 return 0
1253
1250
1254 valueList = value.split(',')
1251 valueList = value.split(',')
1255 format = 'float'
1252 format = 'float'
1256 value0 = valueList[0]
1253 value0 = valueList[0]
1257 value1 = valueList[1]
1254 value1 = valueList[1]
1258
1255
1259 if not isFloat(value0) or not isFloat(value1):
1256 if not isFloat(value0) or not isFloat(value1):
1260 self.console.append("Invalid value '%s' for '%s'" %(value, "Height range"))
1257 self.console.append("Invalid value '%s' for '%s'" %(value, "Height range"))
1261 return 0
1258 return 0
1262
1259
1263 if self.specOpComHeights.currentIndex() == 0:
1260 if self.specOpComHeights.currentIndex() == 0:
1264 name_operation = 'selectHeights'
1261 name_operation = 'selectHeights'
1265 name_parameter1 = 'minHei'
1262 name_parameter1 = 'minHei'
1266 name_parameter2 = 'maxHei'
1263 name_parameter2 = 'maxHei'
1267 else:
1264 else:
1268 name_operation = 'selectHeightsByIndex'
1265 name_operation = 'selectHeightsByIndex'
1269 name_parameter1 = 'minIndex'
1266 name_parameter1 = 'minIndex'
1270 name_parameter2 = 'maxIndex'
1267 name_parameter2 = 'maxIndex'
1271
1268
1272 opObj = puObj.addOperation(name=name_operation)
1269 opObj = puObj.addOperation(name=name_operation)
1273 opObj.addParameter(name=name_parameter1, value=value0, format=format)
1270 opObj.addParameter(name=name_parameter1, value=value0, format=format)
1274 opObj.addParameter(name=name_parameter2, value=value1, format=format)
1271 opObj.addParameter(name=name_parameter2, value=value1, format=format)
1275
1272
1276 if self.specOpCebChannel.isChecked():
1273 if self.specOpCebChannel.isChecked():
1277
1274
1278 if self.specOpComChannel.currentIndex() == 0:
1275 if self.specOpComChannel.currentIndex() == 0:
1279 name_operation = "selectChannels"
1276 name_operation = "selectChannels"
1280 name_parameter = 'channelList'
1277 name_parameter = 'channelList'
1281 else:
1278 else:
1282 name_operation = "selectChannelsByIndex"
1279 name_operation = "selectChannelsByIndex"
1283 name_parameter = 'channelIndexList'
1280 name_parameter = 'channelIndexList'
1284
1281
1285 format = 'intlist'
1282 format = 'intlist'
1286 value = str(self.specOpChannel.text())
1283 value = str(self.specOpChannel.text())
1287
1284
1288 if value == "":
1285 if value == "":
1289 print "Please fill channel list"
1286 print "Please fill channel list"
1290 return 0
1287 return 0
1291
1288
1292 if not isList(value):
1289 if not isList(value):
1293 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
1290 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
1294 return 0
1291 return 0
1295
1292
1296 opObj = puObj.addOperation(name=name_operation)
1293 opObj = puObj.addOperation(name=name_operation)
1297 opObj.addParameter(name=name_parameter, value=value, format=format)
1294 opObj.addParameter(name=name_parameter, value=value, format=format)
1298
1295
1299 if self.specOpCebIncoherent.isChecked():
1296 if self.specOpCebIncoherent.isChecked():
1300
1297
1301 name_operation = 'IncohInt'
1298 name_operation = 'IncohInt'
1302 optype = 'other'
1299 optype = 'other'
1303
1300
1304 if self.specOpCobIncInt.currentIndex() == 0:
1301 if self.specOpCobIncInt.currentIndex() == 0:
1305 name_parameter = 'timeInterval'
1302 name_parameter = 'timeInterval'
1306 format = 'float'
1303 format = 'float'
1307 else:
1304 else:
1308 name_parameter = 'n'
1305 name_parameter = 'n'
1309 format = 'float'
1306 format = 'float'
1310
1307
1311 value = str(self.specOpIncoherent.text())
1308 value = str(self.specOpIncoherent.text())
1312
1309
1313 if value == "":
1310 if value == "":
1314 print "Please fill Incoherent integration value"
1311 print "Please fill Incoherent integration value"
1315 return 0
1312 return 0
1316
1313
1317 if not isFloat(value):
1314 if not isFloat(value):
1318 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
1315 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
1319 return 0
1316 return 0
1320
1317
1321 opObj = puObj.addOperation(name=name_operation, optype=optype)
1318 opObj = puObj.addOperation(name=name_operation, optype=optype)
1322 opObj.addParameter(name=name_parameter, value=value, format=format)
1319 opObj.addParameter(name=name_parameter, value=value, format=format)
1323
1320
1324 if self.specOpCebRemoveDC.isChecked():
1321 if self.specOpCebRemoveDC.isChecked():
1325 name_operation = 'removeDC'
1322 name_operation = 'removeDC'
1326 name_parameter = 'mode'
1323 name_parameter = 'mode'
1327 format = 'int'
1324 format = 'int'
1328 if self.specOpComRemoveDC.currentIndex() == 0:
1325 if self.specOpComRemoveDC.currentIndex() == 0:
1329 value = 1
1326 value = 1
1330 else:
1327 else:
1331 value = 2
1328 value = 2
1332 opObj = puObj.addOperation(name=name_operation)
1329 opObj = puObj.addOperation(name=name_operation)
1333 opObj.addParameter(name=name_parameter, value=value, format=format)
1330 opObj.addParameter(name=name_parameter, value=value, format=format)
1334
1331
1335 if self.specOpCebRemoveInt.isChecked():
1332 if self.specOpCebRemoveInt.isChecked():
1336 name_operation = 'removeInterference'
1333 name_operation = 'removeInterference'
1337 opObj = puObj.addOperation(name=name_operation)
1334 opObj = puObj.addOperation(name=name_operation)
1338
1335
1339
1336
1340 if self.specOpCebgetNoise.isChecked():
1337 if self.specOpCebgetNoise.isChecked():
1341 value = str(self.specOpgetNoise.text())
1338 value = str(self.specOpgetNoise.text())
1342 valueList = value.split(',')
1339 valueList = value.split(',')
1343 format = 'float'
1340 format = 'float'
1344 name_operation = "getNoise"
1341 name_operation = "getNoise"
1345 opObj = puObj.addOperation(name=name_operation)
1342 opObj = puObj.addOperation(name=name_operation)
1346
1343
1347 if not value == '':
1344 if not value == '':
1348 valueList = value.split(',')
1345 valueList = value.split(',')
1349 length = len(valueList)
1346 length = len(valueList)
1350 if length == 1:
1347 if length == 1:
1351 try:
1348 try:
1352 value1 = float(valueList[0])
1349 value1 = float(valueList[0])
1353 except:
1350 except:
1354 self.console.clear()
1351 self.console.clear()
1355 self.console.append("Please Write correct parameter Get Noise")
1352 self.console.append("Please Write correct parameter Get Noise")
1356 return 0
1353 return 0
1357 name1 = 'minHei'
1354 name1 = 'minHei'
1358 opObj.addParameter(name=name1, value=value1, format=format)
1355 opObj.addParameter(name=name1, value=value1, format=format)
1359 elif length == 2:
1356 elif length == 2:
1360 try:
1357 try:
1361 value1 = float(valueList[0])
1358 value1 = float(valueList[0])
1362 value2 = float(valueList[1])
1359 value2 = float(valueList[1])
1363 except:
1360 except:
1364 self.console.clear()
1361 self.console.clear()
1365 self.console.append("Please Write corrects parameter Get Noise")
1362 self.console.append("Please Write corrects parameter Get Noise")
1366 return 0
1363 return 0
1367 name1 = 'minHei'
1364 name1 = 'minHei'
1368 name2 = 'maxHei'
1365 name2 = 'maxHei'
1369 opObj.addParameter(name=name1, value=value1, format=format)
1366 opObj.addParameter(name=name1, value=value1, format=format)
1370 opObj.addParameter(name=name2, value=value2, format=format)
1367 opObj.addParameter(name=name2, value=value2, format=format)
1371
1368
1372 elif length == 3:
1369 elif length == 3:
1373 try:
1370 try:
1374 value1 = float(valueList[0])
1371 value1 = float(valueList[0])
1375 value2 = float(valueList[1])
1372 value2 = float(valueList[1])
1376 value3 = float(valueList[2])
1373 value3 = float(valueList[2])
1377 except:
1374 except:
1378 self.console.clear()
1375 self.console.clear()
1379 self.console.append("Please Write corrects parameter Get Noise")
1376 self.console.append("Please Write corrects parameter Get Noise")
1380 return 0
1377 return 0
1381 name1 = 'minHei'
1378 name1 = 'minHei'
1382 name2 = 'maxHei'
1379 name2 = 'maxHei'
1383 name3 = 'minVel'
1380 name3 = 'minVel'
1384 opObj.addParameter(name=name1, value=value1, format=format)
1381 opObj.addParameter(name=name1, value=value1, format=format)
1385 opObj.addParameter(name=name2, value=value2, format=format)
1382 opObj.addParameter(name=name2, value=value2, format=format)
1386 opObj.addParameter(name=name3, value=value3, format=format)
1383 opObj.addParameter(name=name3, value=value3, format=format)
1387
1384
1388 elif length == 4:
1385 elif length == 4:
1389 try:
1386 try:
1390 value1 = float(valueList[0])
1387 value1 = float(valueList[0])
1391 value2 = float(valueList[1])
1388 value2 = float(valueList[1])
1392 value3 = float(valueList[2])
1389 value3 = float(valueList[2])
1393 value4 = float(valueList[3])
1390 value4 = float(valueList[3])
1394 except:
1391 except:
1395 self.console.clear()
1392 self.console.clear()
1396 self.console.append("Please Write corrects parameter Get Noise")
1393 self.console.append("Please Write corrects parameter Get Noise")
1397 return 0
1394 return 0
1398 name1 = 'minHei'
1395 name1 = 'minHei'
1399 name2 = 'maxHei'
1396 name2 = 'maxHei'
1400 name3 = 'minVel'
1397 name3 = 'minVel'
1401 name4 = 'maxVel'
1398 name4 = 'maxVel'
1402 opObj.addParameter(name=name1, value=value1, format=format)
1399 opObj.addParameter(name=name1, value=value1, format=format)
1403 opObj.addParameter(name=name2, value=value2, format=format)
1400 opObj.addParameter(name=name2, value=value2, format=format)
1404 opObj.addParameter(name=name3, value=value3, format=format)
1401 opObj.addParameter(name=name3, value=value3, format=format)
1405 opObj.addParameter(name=name4, value=value4, format=format)
1402 opObj.addParameter(name=name4, value=value4, format=format)
1406
1403
1407 elif length > 4:
1404 elif length > 4:
1408 self.console.clear()
1405 self.console.clear()
1409 self.console.append("Get Noise Operation only accepts 4 parameters")
1406 self.console.append("Get Noise Operation only accepts 4 parameters")
1410 return 0
1407 return 0
1411
1408
1412 channelList = str(self.specGgraphChannelList.text()).replace(" ","")
1409 channelList = str(self.specGgraphChannelList.text()).replace(" ","")
1413 vel_range = str(self.specGgraphFreq.text()).replace(" ","")
1410 vel_range = str(self.specGgraphFreq.text()).replace(" ","")
1414 hei_range = str(self.specGgraphHeight.text()).replace(" ","")
1411 hei_range = str(self.specGgraphHeight.text()).replace(" ","")
1415 db_range = str(self.specGgraphDbsrange.text()).replace(" ","")
1412 db_range = str(self.specGgraphDbsrange.text()).replace(" ","")
1416
1413
1417 trange = str(self.specGgraphTminTmax.text()).replace(" ","")
1414 trange = str(self.specGgraphTminTmax.text()).replace(" ","")
1418 magrange = str(self.specGgraphmagnitud.text()).replace(" ","")
1415 magrange = str(self.specGgraphmagnitud.text()).replace(" ","")
1419 phaserange = str(self.specGgraphPhase.text()).replace(" ","")
1416 phaserange = str(self.specGgraphPhase.text()).replace(" ","")
1420 # timerange = str(self.specGgraphTimeRange.text()).replace(" ","")
1417 # timerange = str(self.specGgraphTimeRange.text()).replace(" ","")
1421
1418
1422 figpath = str(self.specGraphPath.text())
1419 figpath = str(self.specGraphPath.text())
1423 figfile = str(self.specGraphPrefix.text()).replace(" ","")
1420 figfile = str(self.specGraphPrefix.text()).replace(" ","")
1424 try:
1421 try:
1425 wrperiod = int(str(self.specGgraphftpratio.text()).replace(" ",""))
1422 wrperiod = int(str(self.specGgraphftpratio.text()).replace(" ",""))
1426 except:
1423 except:
1427 wrperiod = None
1424 wrperiod = None
1428
1425
1429 #-----Spectra Plot-----
1426 #-----Spectra Plot-----
1430 if self.specGraphCebSpectraplot.isChecked():
1427 if self.specGraphCebSpectraplot.isChecked():
1431
1428
1432 opObj = puObj.addOperation(name='SpectraPlot', optype='other')
1429 opObj = puObj.addOperation(name='SpectraPlot', optype='other')
1433 opObj.addParameter(name='id', value=opObj.id, format='int')
1430 opObj.addParameter(name='id', value=opObj.id, format='int')
1434
1431
1435 if not channelList == '':
1432 if not channelList == '':
1436
1433
1437 if not isList(channelList):
1434 if not isList(channelList):
1438 self.console.append("Invalid channelList")
1435 self.console.append("Invalid channelList")
1439 return 0
1436 return 0
1440
1437
1441 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1438 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1442
1439
1443 if not vel_range == '':
1440 if not vel_range == '':
1444 xvalueList = vel_range.split(',')
1441 xvalueList = vel_range.split(',')
1445 try:
1442 try:
1446 value1 = float(xvalueList[0])
1443 value1 = float(xvalueList[0])
1447 value2 = float(xvalueList[1])
1444 value2 = float(xvalueList[1])
1448 except:
1445 except:
1449 self.console.clear()
1446 self.console.clear()
1450 self.console.append("Invalid velocity/frequency range")
1447 self.console.append("Invalid velocity/frequency range")
1451 return 0
1448 return 0
1452
1449
1453 opObj.addParameter(name='xmin', value=value1, format='float')
1450 opObj.addParameter(name='xmin', value=value1, format='float')
1454 opObj.addParameter(name='xmax', value=value2, format='float')
1451 opObj.addParameter(name='xmax', value=value2, format='float')
1455
1452
1456 if not hei_range == '':
1453 if not hei_range == '':
1457 yvalueList = hei_range.split(",")
1454 yvalueList = hei_range.split(",")
1458 try:
1455 try:
1459 value1 = float(yvalueList[0])
1456 value1 = float(yvalueList[0])
1460 value2 = float(yvalueList[1])
1457 value2 = float(yvalueList[1])
1461 except:
1458 except:
1462 self.console.clear()
1459 self.console.clear()
1463 self.console.append("Invalid height range")
1460 self.console.append("Invalid height range")
1464 return 0
1461 return 0
1465
1462
1466 opObj.addParameter(name='ymin', value=value1, format='float')
1463 opObj.addParameter(name='ymin', value=value1, format='float')
1467 opObj.addParameter(name='ymax', value=value2, format='float')
1464 opObj.addParameter(name='ymax', value=value2, format='float')
1468
1465
1469 if not db_range == '':
1466 if not db_range == '':
1470 zvalueList = db_range.split(",")
1467 zvalueList = db_range.split(",")
1471 try:
1468 try:
1472 value1 = float(zvalueList[0])
1469 value1 = float(zvalueList[0])
1473 value2 = float(zvalueList[1])
1470 value2 = float(zvalueList[1])
1474 except:
1471 except:
1475 self.console.clear()
1472 self.console.clear()
1476 self.console.append("Invalid db range")
1473 self.console.append("Invalid db range")
1477 return 0
1474 return 0
1478
1475
1479 opObj.addParameter(name='zmin', value=value1, format='float')
1476 opObj.addParameter(name='zmin', value=value1, format='float')
1480 opObj.addParameter(name='zmax', value=value2, format='float')
1477 opObj.addParameter(name='zmax', value=value2, format='float')
1481
1478
1482 if self.specGraphSaveSpectra.isChecked():
1479 if self.specGraphSaveSpectra.isChecked():
1483 checkPath = True
1480 checkPath = True
1484 opObj.addParameter(name='save', value=1 , format='bool')
1481 opObj.addParameter(name='save', value=1 , format='bool')
1485 opObj.addParameter(name='figpath', value=figpath, format='str')
1482 opObj.addParameter(name='figpath', value=figpath, format='str')
1486 if figfile:
1483 if figfile:
1487 opObj.addParameter(name='figfile', value=figfile, format='str')
1484 opObj.addParameter(name='figfile', value=figfile, format='str')
1488 if wrperiod:
1485 if wrperiod:
1489 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1486 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1490
1487
1491 if self.specGraphftpSpectra.isChecked():
1488 if self.specGraphftpSpectra.isChecked():
1492 opObj.addParameter(name='ftp', value='1', format='int')
1489 opObj.addParameter(name='ftp', value='1', format='int')
1493 self.addFTPConf2Operation(puObj, opObj)
1490 self.addFTPConf2Operation(puObj, opObj)
1494 addFTP = True
1491 addFTP = True
1495
1492
1496 if self.specGraphCebCrossSpectraplot.isChecked():
1493 if self.specGraphCebCrossSpectraplot.isChecked():
1497
1494
1498 opObj = puObj.addOperation(name='CrossSpectraPlot', optype='other')
1495 opObj = puObj.addOperation(name='CrossSpectraPlot', optype='other')
1499 # opObj.addParameter(name='power_cmap', value='jet', format='str')
1496 # opObj.addParameter(name='power_cmap', value='jet', format='str')
1500 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1497 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1501 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1498 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1502 opObj.addParameter(name='id', value=opObj.id, format='int')
1499 opObj.addParameter(name='id', value=opObj.id, format='int')
1503
1500
1504 if not vel_range == '':
1501 if not vel_range == '':
1505 xvalueList = vel_range.split(',')
1502 xvalueList = vel_range.split(',')
1506 try:
1503 try:
1507 value1 = float(xvalueList[0])
1504 value1 = float(xvalueList[0])
1508 value2 = float(xvalueList[1])
1505 value2 = float(xvalueList[1])
1509 except:
1506 except:
1510 self.console.clear()
1507 self.console.clear()
1511 self.console.append("Invalid velocity/frequency range")
1508 self.console.append("Invalid velocity/frequency range")
1512 return 0
1509 return 0
1513
1510
1514 opObj.addParameter(name='xmin', value=value1, format='float')
1511 opObj.addParameter(name='xmin', value=value1, format='float')
1515 opObj.addParameter(name='xmax', value=value2, format='float')
1512 opObj.addParameter(name='xmax', value=value2, format='float')
1516
1513
1517 if not hei_range == '':
1514 if not hei_range == '':
1518 yvalueList = hei_range.split(",")
1515 yvalueList = hei_range.split(",")
1519 try:
1516 try:
1520 value1 = float(yvalueList[0])
1517 value1 = float(yvalueList[0])
1521 value2 = float(yvalueList[1])
1518 value2 = float(yvalueList[1])
1522 except:
1519 except:
1523 self.console.clear()
1520 self.console.clear()
1524 self.console.append("Invalid height range")
1521 self.console.append("Invalid height range")
1525 return 0
1522 return 0
1526
1523
1527 opObj.addParameter(name='ymin', value=value1, format='float')
1524 opObj.addParameter(name='ymin', value=value1, format='float')
1528 opObj.addParameter(name='ymax', value=value2, format='float')
1525 opObj.addParameter(name='ymax', value=value2, format='float')
1529
1526
1530 if not db_range == '':
1527 if not db_range == '':
1531 zvalueList = db_range.split(",")
1528 zvalueList = db_range.split(",")
1532 try:
1529 try:
1533 value1 = float(zvalueList[0])
1530 value1 = float(zvalueList[0])
1534 value2 = float(zvalueList[1])
1531 value2 = float(zvalueList[1])
1535 except:
1532 except:
1536 self.console.clear()
1533 self.console.clear()
1537 self.console.append("Invalid db range")
1534 self.console.append("Invalid db range")
1538 return 0
1535 return 0
1539
1536
1540 opObj.addParameter(name='zmin', value=value1, format='float')
1537 opObj.addParameter(name='zmin', value=value1, format='float')
1541 opObj.addParameter(name='zmax', value=value2, format='float')
1538 opObj.addParameter(name='zmax', value=value2, format='float')
1542
1539
1543 if not magrange == '':
1540 if not magrange == '':
1544 zvalueList = magrange.split(",")
1541 zvalueList = magrange.split(",")
1545 try:
1542 try:
1546 value1 = float(zvalueList[0])
1543 value1 = float(zvalueList[0])
1547 value2 = float(zvalueList[1])
1544 value2 = float(zvalueList[1])
1548 except:
1545 except:
1549 self.console.clear()
1546 self.console.clear()
1550 self.console.append("Invalid magnitude range")
1547 self.console.append("Invalid magnitude range")
1551 return 0
1548 return 0
1552
1549
1553 opObj.addParameter(name='coh_min', value=value1, format='float')
1550 opObj.addParameter(name='coh_min', value=value1, format='float')
1554 opObj.addParameter(name='coh_max', value=value2, format='float')
1551 opObj.addParameter(name='coh_max', value=value2, format='float')
1555
1552
1556 if not phaserange == '':
1553 if not phaserange == '':
1557 zvalueList = phaserange.split(",")
1554 zvalueList = phaserange.split(",")
1558 try:
1555 try:
1559 value1 = float(zvalueList[0])
1556 value1 = float(zvalueList[0])
1560 value2 = float(zvalueList[1])
1557 value2 = float(zvalueList[1])
1561 except:
1558 except:
1562 self.console.clear()
1559 self.console.clear()
1563 self.console.append("Invalid phase range")
1560 self.console.append("Invalid phase range")
1564 return 0
1561 return 0
1565
1562
1566 opObj.addParameter(name='phase_min', value=value1, format='float')
1563 opObj.addParameter(name='phase_min', value=value1, format='float')
1567 opObj.addParameter(name='phase_max', value=value2, format='float')
1564 opObj.addParameter(name='phase_max', value=value2, format='float')
1568
1565
1569 if self.specGraphSaveCross.isChecked():
1566 if self.specGraphSaveCross.isChecked():
1570 checkPath = True
1567 checkPath = True
1571 opObj.addParameter(name='save', value='1', format='bool')
1568 opObj.addParameter(name='save', value='1', format='bool')
1572 opObj.addParameter(name='figpath', value=figpath, format='str')
1569 opObj.addParameter(name='figpath', value=figpath, format='str')
1573 if figfile:
1570 if figfile:
1574 opObj.addParameter(name='figfile', value=figfile, format='str')
1571 opObj.addParameter(name='figfile', value=figfile, format='str')
1575 if wrperiod:
1572 if wrperiod:
1576 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1573 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1577
1574
1578 if self.specGraphftpCross.isChecked():
1575 if self.specGraphftpCross.isChecked():
1579 opObj.addParameter(name='ftp', value='1', format='int')
1576 opObj.addParameter(name='ftp', value='1', format='int')
1580 self.addFTPConf2Operation(puObj, opObj)
1577 self.addFTPConf2Operation(puObj, opObj)
1581 addFTP = True
1578 addFTP = True
1582
1579
1583 if self.specGraphCebRTIplot.isChecked():
1580 if self.specGraphCebRTIplot.isChecked():
1584
1581
1585 opObj = puObj.addOperation(name='RTIPlot', optype='other')
1582 opObj = puObj.addOperation(name='RTIPlot', optype='other')
1586 opObj.addParameter(name='id', value=opObj.id, format='int')
1583 opObj.addParameter(name='id', value=opObj.id, format='int')
1587
1584
1588 if not channelList == '':
1585 if not channelList == '':
1589 if not isList(channelList):
1586 if not isList(channelList):
1590 self.console.append("Invalid channelList")
1587 self.console.append("Invalid channelList")
1591 return 0
1588 return 0
1592 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1589 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1593
1590
1594 if not trange == '':
1591 if not trange == '':
1595 xvalueList = trange.split(',')
1592 xvalueList = trange.split(',')
1596 try:
1593 try:
1597 value1 = float(xvalueList[0])
1594 value1 = float(xvalueList[0])
1598 value2 = float(xvalueList[1])
1595 value2 = float(xvalueList[1])
1599 except:
1596 except:
1600 self.console.clear()
1597 self.console.clear()
1601 self.console.append("Invalid time range")
1598 self.console.append("Invalid time range")
1602 return 0
1599 return 0
1603
1600
1604 opObj.addParameter(name='xmin', value=value1, format='float')
1601 opObj.addParameter(name='xmin', value=value1, format='float')
1605 opObj.addParameter(name='xmax', value=value2, format='float')
1602 opObj.addParameter(name='xmax', value=value2, format='float')
1606
1603
1607 # if not timerange == '':
1604 # if not timerange == '':
1608 # try:
1605 # try:
1609 # timerange = float(timerange)
1606 # timerange = float(timerange)
1610 # except:
1607 # except:
1611 # self.console.clear()
1608 # self.console.clear()
1612 # self.console.append("Invalid time range")
1609 # self.console.append("Invalid time range")
1613 # return 0
1610 # return 0
1614 #
1611 #
1615 # opObj.addParameter(name='timerange', value=timerange, format='float')
1612 # opObj.addParameter(name='timerange', value=timerange, format='float')
1616
1613
1617 if not hei_range == '':
1614 if not hei_range == '':
1618 yvalueList = hei_range.split(",")
1615 yvalueList = hei_range.split(",")
1619 try:
1616 try:
1620 value1 = float(yvalueList[0])
1617 value1 = float(yvalueList[0])
1621 value2 = float(yvalueList[1])
1618 value2 = float(yvalueList[1])
1622 except:
1619 except:
1623 self.console.clear()
1620 self.console.clear()
1624 self.console.append("Invalid height range")
1621 self.console.append("Invalid height range")
1625 return 0
1622 return 0
1626
1623
1627 opObj.addParameter(name='ymin', value=value1, format='float')
1624 opObj.addParameter(name='ymin', value=value1, format='float')
1628 opObj.addParameter(name='ymax', value=value2, format='float')
1625 opObj.addParameter(name='ymax', value=value2, format='float')
1629
1626
1630 if not db_range == '':
1627 if not db_range == '':
1631 zvalueList = db_range.split(",")
1628 zvalueList = db_range.split(",")
1632 try:
1629 try:
1633 value1 = float(zvalueList[0])
1630 value1 = float(zvalueList[0])
1634 value2 = float(zvalueList[1])
1631 value2 = float(zvalueList[1])
1635 except:
1632 except:
1636 self.console.clear()
1633 self.console.clear()
1637 self.console.append("Invalid db range")
1634 self.console.append("Invalid db range")
1638 return 0
1635 return 0
1639
1636
1640 opObj.addParameter(name='zmin', value=value1, format='float')
1637 opObj.addParameter(name='zmin', value=value1, format='float')
1641 opObj.addParameter(name='zmax', value=value2, format='float')
1638 opObj.addParameter(name='zmax', value=value2, format='float')
1642
1639
1643 if self.specGraphSaveRTIplot.isChecked():
1640 if self.specGraphSaveRTIplot.isChecked():
1644 checkPath = True
1641 checkPath = True
1645 opObj.addParameter(name='save', value='1', format='bool')
1642 opObj.addParameter(name='save', value='1', format='bool')
1646 opObj.addParameter(name='figpath', value=figpath, format='str')
1643 opObj.addParameter(name='figpath', value=figpath, format='str')
1647 if figfile:
1644 if figfile:
1648 opObj.addParameter(name='figfile', value=value, format='str')
1645 opObj.addParameter(name='figfile', value=value, format='str')
1649 if wrperiod:
1646 if wrperiod:
1650 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1647 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1651
1648
1652 if self.specGraphftpRTIplot.isChecked():
1649 if self.specGraphftpRTIplot.isChecked():
1653 opObj.addParameter(name='ftp', value='1', format='int')
1650 opObj.addParameter(name='ftp', value='1', format='int')
1654 self.addFTPConf2Operation(puObj, opObj)
1651 self.addFTPConf2Operation(puObj, opObj)
1655 addFTP = True
1652 addFTP = True
1656
1653
1657 if self.specGraphCebCoherencmap.isChecked():
1654 if self.specGraphCebCoherencmap.isChecked():
1658
1655
1659 opObj = puObj.addOperation(name='CoherenceMap', optype='other')
1656 opObj = puObj.addOperation(name='CoherenceMap', optype='other')
1660 # opObj.addParameter(name=name_parameter, value=value, format=format)
1657 # opObj.addParameter(name=name_parameter, value=value, format=format)
1661 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1658 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1662 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1659 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1663 opObj.addParameter(name='id', value=opObj.id, format='int')
1660 opObj.addParameter(name='id', value=opObj.id, format='int')
1664
1661
1665 # if not timerange == '':
1662 # if not timerange == '':
1666 # try:
1663 # try:
1667 # timerange = int(timerange)
1664 # timerange = int(timerange)
1668 # except:
1665 # except:
1669 # self.console.clear()
1666 # self.console.clear()
1670 # self.console.append("Invalid time range")
1667 # self.console.append("Invalid time range")
1671 # return 0
1668 # return 0
1672 #
1669 #
1673 # opObj.addParameter(name='timerange', value=timerange, format='int')
1670 # opObj.addParameter(name='timerange', value=timerange, format='int')
1674
1671
1675 if not trange == '':
1672 if not trange == '':
1676 xvalueList = trange.split(',')
1673 xvalueList = trange.split(',')
1677 try:
1674 try:
1678 value1 = float(xvalueList[0])
1675 value1 = float(xvalueList[0])
1679 value2 = float(xvalueList[1])
1676 value2 = float(xvalueList[1])
1680 except:
1677 except:
1681 self.console.clear()
1678 self.console.clear()
1682 self.console.append("Invalid time range")
1679 self.console.append("Invalid time range")
1683 return 0
1680 return 0
1684
1681
1685 opObj.addParameter(name='xmin', value=value1, format='float')
1682 opObj.addParameter(name='xmin', value=value1, format='float')
1686 opObj.addParameter(name='xmax', value=value2, format='float')
1683 opObj.addParameter(name='xmax', value=value2, format='float')
1687
1684
1688 if not hei_range == '':
1685 if not hei_range == '':
1689 yvalueList = hei_range.split(",")
1686 yvalueList = hei_range.split(",")
1690 try:
1687 try:
1691 value1 = float(yvalueList[0])
1688 value1 = float(yvalueList[0])
1692 value2 = float(yvalueList[1])
1689 value2 = float(yvalueList[1])
1693 except:
1690 except:
1694 self.console.clear()
1691 self.console.clear()
1695 self.console.append("Invalid height range")
1692 self.console.append("Invalid height range")
1696 return 0
1693 return 0
1697
1694
1698 opObj.addParameter(name='ymin', value=value1, format='float')
1695 opObj.addParameter(name='ymin', value=value1, format='float')
1699 opObj.addParameter(name='ymax', value=value2, format='float')
1696 opObj.addParameter(name='ymax', value=value2, format='float')
1700
1697
1701 if not magrange == '':
1698 if not magrange == '':
1702 zvalueList = magrange.split(",")
1699 zvalueList = magrange.split(",")
1703 try:
1700 try:
1704 value1 = float(zvalueList[0])
1701 value1 = float(zvalueList[0])
1705 value2 = float(zvalueList[1])
1702 value2 = float(zvalueList[1])
1706 except:
1703 except:
1707 self.console.clear()
1704 self.console.clear()
1708 self.console.append("Invalid magnitude range")
1705 self.console.append("Invalid magnitude range")
1709 return 0
1706 return 0
1710
1707
1711 opObj.addParameter(name='zmin', value=value1, format='float')
1708 opObj.addParameter(name='zmin', value=value1, format='float')
1712 opObj.addParameter(name='zmax', value=value2, format='float')
1709 opObj.addParameter(name='zmax', value=value2, format='float')
1713
1710
1714 if not phaserange == '':
1711 if not phaserange == '':
1715 zvalueList = phaserange.split(",")
1712 zvalueList = phaserange.split(",")
1716 try:
1713 try:
1717 value1 = float(zvalueList[0])
1714 value1 = float(zvalueList[0])
1718 value2 = float(zvalueList[1])
1715 value2 = float(zvalueList[1])
1719 except:
1716 except:
1720 self.console.clear()
1717 self.console.clear()
1721 self.console.append("Invalid phase range")
1718 self.console.append("Invalid phase range")
1722 return 0
1719 return 0
1723
1720
1724 opObj.addParameter(name='phase_min', value=value1, format='float')
1721 opObj.addParameter(name='phase_min', value=value1, format='float')
1725 opObj.addParameter(name='phase_max', value=value2, format='float')
1722 opObj.addParameter(name='phase_max', value=value2, format='float')
1726
1723
1727 if self.specGraphSaveCoherencemap.isChecked():
1724 if self.specGraphSaveCoherencemap.isChecked():
1728 checkPath = True
1725 checkPath = True
1729 opObj.addParameter(name='save', value='1', format='bool')
1726 opObj.addParameter(name='save', value='1', format='bool')
1730 opObj.addParameter(name='figpath', value=figpath, format='str')
1727 opObj.addParameter(name='figpath', value=figpath, format='str')
1731 if figfile:
1728 if figfile:
1732 opObj.addParameter(name='figfile', value=value, format='str')
1729 opObj.addParameter(name='figfile', value=value, format='str')
1733 if wrperiod:
1730 if wrperiod:
1734 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1731 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1735
1732
1736 if self.specGraphftpCoherencemap.isChecked():
1733 if self.specGraphftpCoherencemap.isChecked():
1737 opObj.addParameter(name='ftp', value='1', format='int')
1734 opObj.addParameter(name='ftp', value='1', format='int')
1738 self.addFTPConf2Operation(puObj, opObj)
1735 self.addFTPConf2Operation(puObj, opObj)
1739 addFTP = True
1736 addFTP = True
1740
1737
1741 if self.specGraphPowerprofile.isChecked():
1738 if self.specGraphPowerprofile.isChecked():
1742
1739
1743 opObj = puObj.addOperation(name='PowerProfilePlot', optype='other')
1740 opObj = puObj.addOperation(name='PowerProfilePlot', optype='other')
1744 opObj.addParameter(name='id', value=opObj.id, format='int')
1741 opObj.addParameter(name='id', value=opObj.id, format='int')
1745
1742
1746 if not channelList == '':
1743 if not channelList == '':
1747 if not isList(channelList):
1744 if not isList(channelList):
1748 self.console.append("Invalid channelList")
1745 self.console.append("Invalid channelList")
1749 return 0
1746 return 0
1750
1747
1751 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1748 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1752
1749
1753 if not db_range == '':
1750 if not db_range == '':
1754 xvalueList = db_range.split(',')
1751 xvalueList = db_range.split(',')
1755 try:
1752 try:
1756 value1 = float(xvalueList[0])
1753 value1 = float(xvalueList[0])
1757 value2 = float(xvalueList[1])
1754 value2 = float(xvalueList[1])
1758 except:
1755 except:
1759 self.console.clear()
1756 self.console.clear()
1760 self.console.append("Invalid db range")
1757 self.console.append("Invalid db range")
1761 return 0
1758 return 0
1762
1759
1763 opObj.addParameter(name='xmin', value=value1, format='float')
1760 opObj.addParameter(name='xmin', value=value1, format='float')
1764 opObj.addParameter(name='xmax', value=value2, format='float')
1761 opObj.addParameter(name='xmax', value=value2, format='float')
1765
1762
1766 if not hei_range == '':
1763 if not hei_range == '':
1767 yvalueList = hei_range.split(",")
1764 yvalueList = hei_range.split(",")
1768 try:
1765 try:
1769 value1 = float(yvalueList[0])
1766 value1 = float(yvalueList[0])
1770 value2 = float(yvalueList[1])
1767 value2 = float(yvalueList[1])
1771 except:
1768 except:
1772 self.console.clear()
1769 self.console.clear()
1773 self.console.append("Invalid height range")
1770 self.console.append("Invalid height range")
1774 return 0
1771 return 0
1775
1772
1776 opObj.addParameter(name='ymin', value=value1, format='float')
1773 opObj.addParameter(name='ymin', value=value1, format='float')
1777 opObj.addParameter(name='ymax', value=value2, format='float')
1774 opObj.addParameter(name='ymax', value=value2, format='float')
1778
1775
1779 if self.specGraphSavePowerprofile.isChecked():
1776 if self.specGraphSavePowerprofile.isChecked():
1780 checkPath = True
1777 checkPath = True
1781 opObj.addParameter(name='save', value='1', format='bool')
1778 opObj.addParameter(name='save', value='1', format='bool')
1782 opObj.addParameter(name='figpath', value=figpath, format='str')
1779 opObj.addParameter(name='figpath', value=figpath, format='str')
1783 if figfile:
1780 if figfile:
1784 opObj.addParameter(name='figfile', value=value, format='str')
1781 opObj.addParameter(name='figfile', value=value, format='str')
1785 if wrperiod:
1782 if wrperiod:
1786 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1783 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1787
1784
1788 if self.specGraphftpPowerprofile.isChecked():
1785 if self.specGraphftpPowerprofile.isChecked():
1789 opObj.addParameter(name='ftp', value='1', format='int')
1786 opObj.addParameter(name='ftp', value='1', format='int')
1790 self.addFTPConf2Operation(puObj, opObj)
1787 self.addFTPConf2Operation(puObj, opObj)
1791 addFTP = True
1788 addFTP = True
1792 # rti noise
1789 # rti noise
1793
1790
1794 if self.specGraphCebRTInoise.isChecked():
1791 if self.specGraphCebRTInoise.isChecked():
1795
1792
1796 opObj = puObj.addOperation(name='Noise', optype='other')
1793 opObj = puObj.addOperation(name='Noise', optype='other')
1797 opObj.addParameter(name='id', value=opObj.id, format='int')
1794 opObj.addParameter(name='id', value=opObj.id, format='int')
1798
1795
1799 if not channelList == '':
1796 if not channelList == '':
1800 if not isList(channelList):
1797 if not isList(channelList):
1801 self.console.append("Invalid channelList")
1798 self.console.append("Invalid channelList")
1802 return 0
1799 return 0
1803 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1800 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1804
1801
1805 # if not timerange == '':
1802 # if not timerange == '':
1806 # try:
1803 # try:
1807 # timerange = float(timerange)
1804 # timerange = float(timerange)
1808 # except:
1805 # except:
1809 # self.console.clear()
1806 # self.console.clear()
1810 # self.console.append("Invalid time range")
1807 # self.console.append("Invalid time range")
1811 # return 0
1808 # return 0
1812 #
1809 #
1813 # opObj.addParameter(name='timerange', value=timerange, format='float')
1810 # opObj.addParameter(name='timerange', value=timerange, format='float')
1814
1811
1815 if not trange == '':
1812 if not trange == '':
1816 xvalueList = trange.split(',')
1813 xvalueList = trange.split(',')
1817 try:
1814 try:
1818 value1 = float(xvalueList[0])
1815 value1 = float(xvalueList[0])
1819 value2 = float(xvalueList[1])
1816 value2 = float(xvalueList[1])
1820 except:
1817 except:
1821 self.console.clear()
1818 self.console.clear()
1822 self.console.append("Invalid time range")
1819 self.console.append("Invalid time range")
1823 return 0
1820 return 0
1824
1821
1825 opObj.addParameter(name='xmin', value=value1, format='float')
1822 opObj.addParameter(name='xmin', value=value1, format='float')
1826 opObj.addParameter(name='xmax', value=value2, format='float')
1823 opObj.addParameter(name='xmax', value=value2, format='float')
1827
1824
1828 if not db_range == '':
1825 if not db_range == '':
1829 yvalueList = db_range.split(",")
1826 yvalueList = db_range.split(",")
1830 try:
1827 try:
1831 value1 = float(yvalueList[0])
1828 value1 = float(yvalueList[0])
1832 value2 = float(yvalueList[1])
1829 value2 = float(yvalueList[1])
1833 except:
1830 except:
1834 self.console.clear()
1831 self.console.clear()
1835 self.console.append("Invalid db range")
1832 self.console.append("Invalid db range")
1836 return 0
1833 return 0
1837
1834
1838 opObj.addParameter(name='ymin', value=value1, format='float')
1835 opObj.addParameter(name='ymin', value=value1, format='float')
1839 opObj.addParameter(name='ymax', value=value2, format='float')
1836 opObj.addParameter(name='ymax', value=value2, format='float')
1840
1837
1841 if self.specGraphSaveRTInoise.isChecked():
1838 if self.specGraphSaveRTInoise.isChecked():
1842 checkPath = True
1839 checkPath = True
1843 opObj.addParameter(name='save', value='1', format='bool')
1840 opObj.addParameter(name='save', value='1', format='bool')
1844 opObj.addParameter(name='figpath', value=figpath, format='str')
1841 opObj.addParameter(name='figpath', value=figpath, format='str')
1845 if figfile:
1842 if figfile:
1846 opObj.addParameter(name='figfile', value=value, format='str')
1843 opObj.addParameter(name='figfile', value=value, format='str')
1847 if wrperiod:
1844 if wrperiod:
1848 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1845 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1849
1846
1850 # test_ftp
1847 # test_ftp
1851 if self.specGraphftpRTInoise.isChecked():
1848 if self.specGraphftpRTInoise.isChecked():
1852 opObj.addParameter(name='ftp', value='1', format='int')
1849 opObj.addParameter(name='ftp', value='1', format='int')
1853 self.addFTPConf2Operation(puObj, opObj)
1850 self.addFTPConf2Operation(puObj, opObj)
1854 addFTP = True
1851 addFTP = True
1855
1852
1856 if checkPath:
1853 if checkPath:
1857 if not figpath:
1854 if not figpath:
1858 self.console.clear()
1855 self.console.clear()
1859 self.console.append("Graphic path should be defined")
1856 self.console.append("Graphic path should be defined")
1860 return 0
1857 return 0
1861
1858
1862 if addFTP and not figpath:
1859 if addFTP and not figpath:
1863 self.console.clear()
1860 self.console.clear()
1864 self.console.append("You have to save the plots before sending them to FTP Server")
1861 self.console.append("You have to save the plots before sending them to FTP Server")
1865 return 0
1862 return 0
1866
1863
1867 # if something happend
1864 # if something happend
1868 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Spectra')
1865 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Spectra')
1869 if parms_ok:
1866 if parms_ok:
1870 opObj = puObj.addOperation(name='SpectraWriter', optype='other')
1867 opObj = puObj.addOperation(name='SpectraWriter', optype='other')
1871 opObj.addParameter(name='path', value=output_path)
1868 opObj.addParameter(name='path', value=output_path)
1872 opObj.addParameter(name='blocksPerFile', value=blocksperfile, format='int')
1869 opObj.addParameter(name='blocksPerFile', value=blocksperfile, format='int')
1873
1870
1874 self.console.clear()
1871 self.console.clear()
1875 try:
1872 try:
1876 self.refreshPUProperties(puObj)
1873 self.refreshPUProperties(puObj)
1877 except:
1874 except:
1878 self.console.append("An error reading input parameters was found ... Check them!")
1875 self.console.append("An error reading input parameters was found ... Check them!")
1879 return 0
1876 return 0
1880
1877
1881 self.console.append("Save your project and press Play button to start signal processing")
1878 self.console.append("Save your project and press Play button to start signal processing")
1882
1879
1883 self.actionSaveToolbar.setEnabled(True)
1880 self.actionSaveToolbar.setEnabled(True)
1884 self.actionStarToolbar.setEnabled(True)
1881 self.actionStarToolbar.setEnabled(True)
1885
1882
1886 return 1
1883 return 1
1887
1884
1888 """
1885 """
1889 Spectra Graph
1886 Spectra Graph
1890 """
1887 """
1891 @pyqtSignature("int")
1888 @pyqtSignature("int")
1892 def on_specGraphCebSpectraplot_stateChanged(self, p0):
1889 def on_specGraphCebSpectraplot_stateChanged(self, p0):
1893
1890
1894 self.__checkSpecGraphFilters()
1891 self.__checkSpecGraphFilters()
1895
1892
1896
1893
1897 @pyqtSignature("int")
1894 @pyqtSignature("int")
1898 def on_specGraphCebCrossSpectraplot_stateChanged(self, p0):
1895 def on_specGraphCebCrossSpectraplot_stateChanged(self, p0):
1899
1896
1900 self.__checkSpecGraphFilters()
1897 self.__checkSpecGraphFilters()
1901
1898
1902 @pyqtSignature("int")
1899 @pyqtSignature("int")
1903 def on_specGraphCebRTIplot_stateChanged(self, p0):
1900 def on_specGraphCebRTIplot_stateChanged(self, p0):
1904
1901
1905 self.__checkSpecGraphFilters()
1902 self.__checkSpecGraphFilters()
1906
1903
1907
1904
1908 @pyqtSignature("int")
1905 @pyqtSignature("int")
1909 def on_specGraphCebRTInoise_stateChanged(self, p0):
1906 def on_specGraphCebRTInoise_stateChanged(self, p0):
1910
1907
1911 self.__checkSpecGraphFilters()
1908 self.__checkSpecGraphFilters()
1912
1909
1913
1910
1914 @pyqtSignature("int")
1911 @pyqtSignature("int")
1915 def on_specGraphCebCoherencmap_stateChanged(self, p0):
1912 def on_specGraphCebCoherencmap_stateChanged(self, p0):
1916
1913
1917 self.__checkSpecGraphFilters()
1914 self.__checkSpecGraphFilters()
1918
1915
1919 @pyqtSignature("int")
1916 @pyqtSignature("int")
1920 def on_specGraphPowerprofile_stateChanged(self, p0):
1917 def on_specGraphPowerprofile_stateChanged(self, p0):
1921
1918
1922 self.__checkSpecGraphFilters()
1919 self.__checkSpecGraphFilters()
1923
1920
1924 @pyqtSignature("int")
1921 @pyqtSignature("int")
1925 def on_specGraphPhase_stateChanged(self, p0):
1922 def on_specGraphPhase_stateChanged(self, p0):
1926
1923
1927 self.__checkSpecGraphFilters()
1924 self.__checkSpecGraphFilters()
1928
1925
1929 @pyqtSignature("int")
1926 @pyqtSignature("int")
1930 def on_specGraphSaveSpectra_stateChanged(self, p0):
1927 def on_specGraphSaveSpectra_stateChanged(self, p0):
1931 """
1928 """
1932 """
1929 """
1933 self.__checkSpecGraphSaving()
1930 self.__checkSpecGraphSaving()
1934
1931
1935 @pyqtSignature("int")
1932 @pyqtSignature("int")
1936 def on_specGraphSaveCross_stateChanged(self, p0):
1933 def on_specGraphSaveCross_stateChanged(self, p0):
1937
1934
1938 self.__checkSpecGraphSaving()
1935 self.__checkSpecGraphSaving()
1939
1936
1940 @pyqtSignature("int")
1937 @pyqtSignature("int")
1941 def on_specGraphSaveRTIplot_stateChanged(self, p0):
1938 def on_specGraphSaveRTIplot_stateChanged(self, p0):
1942
1939
1943 self.__checkSpecGraphSaving()
1940 self.__checkSpecGraphSaving()
1944
1941
1945 @pyqtSignature("int")
1942 @pyqtSignature("int")
1946 def on_specGraphSaveRTInoise_stateChanged(self, p0):
1943 def on_specGraphSaveRTInoise_stateChanged(self, p0):
1947
1944
1948 self.__checkSpecGraphSaving()
1945 self.__checkSpecGraphSaving()
1949
1946
1950 @pyqtSignature("int")
1947 @pyqtSignature("int")
1951 def on_specGraphSaveCoherencemap_stateChanged(self, p0):
1948 def on_specGraphSaveCoherencemap_stateChanged(self, p0):
1952
1949
1953 self.__checkSpecGraphSaving()
1950 self.__checkSpecGraphSaving()
1954
1951
1955 @pyqtSignature("int")
1952 @pyqtSignature("int")
1956 def on_specGraphSavePowerprofile_stateChanged(self, p0):
1953 def on_specGraphSavePowerprofile_stateChanged(self, p0):
1957
1954
1958 self.__checkSpecGraphSaving()
1955 self.__checkSpecGraphSaving()
1959
1956
1960 @pyqtSignature("int")
1957 @pyqtSignature("int")
1961 def on_specGraphftpSpectra_stateChanged(self, p0):
1958 def on_specGraphftpSpectra_stateChanged(self, p0):
1962 """
1959 """
1963 """
1960 """
1964 self.__checkSpecGraphFTP()
1961 self.__checkSpecGraphFTP()
1965
1962
1966
1963
1967 @pyqtSignature("int")
1964 @pyqtSignature("int")
1968 def on_specGraphftpCross_stateChanged(self, p0):
1965 def on_specGraphftpCross_stateChanged(self, p0):
1969
1966
1970 self.__checkSpecGraphFTP()
1967 self.__checkSpecGraphFTP()
1971
1968
1972 @pyqtSignature("int")
1969 @pyqtSignature("int")
1973 def on_specGraphftpRTIplot_stateChanged(self, p0):
1970 def on_specGraphftpRTIplot_stateChanged(self, p0):
1974
1971
1975 self.__checkSpecGraphFTP()
1972 self.__checkSpecGraphFTP()
1976
1973
1977 @pyqtSignature("int")
1974 @pyqtSignature("int")
1978 def on_specGraphftpRTInoise_stateChanged(self, p0):
1975 def on_specGraphftpRTInoise_stateChanged(self, p0):
1979
1976
1980 self.__checkSpecGraphFTP()
1977 self.__checkSpecGraphFTP()
1981
1978
1982 @pyqtSignature("int")
1979 @pyqtSignature("int")
1983 def on_specGraphftpCoherencemap_stateChanged(self, p0):
1980 def on_specGraphftpCoherencemap_stateChanged(self, p0):
1984
1981
1985 self.__checkSpecGraphFTP()
1982 self.__checkSpecGraphFTP()
1986
1983
1987 @pyqtSignature("int")
1984 @pyqtSignature("int")
1988 def on_specGraphftpPowerprofile_stateChanged(self, p0):
1985 def on_specGraphftpPowerprofile_stateChanged(self, p0):
1989
1986
1990 self.__checkSpecGraphFTP()
1987 self.__checkSpecGraphFTP()
1991
1988
1992 @pyqtSignature("")
1989 @pyqtSignature("")
1993 def on_specGraphToolPath_clicked(self):
1990 def on_specGraphToolPath_clicked(self):
1994 """
1991 """
1995 """
1992 """
1996 save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
1993 save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
1997 self.specGraphPath.setText(save_path)
1994 self.specGraphPath.setText(save_path)
1998 if not os.path.exists(save_path):
1995 if not os.path.exists(save_path):
1999 self.console.clear()
1996 self.console.clear()
2000 self.console.append("Write a valid path")
1997 self.console.append("Write a valid path")
2001 return
1998 return
2002
1999
2003 @pyqtSignature("")
2000 @pyqtSignature("")
2004 def on_specGraphClear_clicked(self):
2001 def on_specGraphClear_clicked(self):
2005 return
2002 return
2006
2003
2007 @pyqtSignature("")
2004 @pyqtSignature("")
2008 def on_specHeisGraphToolPath_clicked(self):
2005 def on_specHeisGraphToolPath_clicked(self):
2009 """
2006 """
2010 """
2007 """
2011 save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2008 save_path = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2012 self.specHeisGraphPath.setText(save_path)
2009 self.specHeisGraphPath.setText(save_path)
2013 if not os.path.exists(save_path):
2010 if not os.path.exists(save_path):
2014 self.console.clear()
2011 self.console.clear()
2015 self.console.append("Write a valid path")
2012 self.console.append("Write a valid path")
2016 return
2013 return
2017
2014
2018 @pyqtSignature("int")
2015 @pyqtSignature("int")
2019 def on_specHeisOpCebIncoherent_stateChanged(self, p0):
2016 def on_specHeisOpCebIncoherent_stateChanged(self, p0):
2020 """
2017 """
2021 Habilita la opcion de aadir el parmetro integraciones incoherentes a la Unidad de Procesamiento .
2018 Habilita la opcion de aadir el parmetro integraciones incoherentes a la Unidad de Procesamiento .
2022 """
2019 """
2023 if p0 == 2:
2020 if p0 == 2:
2024 self.specHeisOpIncoherent.setEnabled(True)
2021 self.specHeisOpIncoherent.setEnabled(True)
2025 self.specHeisOpCobIncInt.setEnabled(True)
2022 self.specHeisOpCobIncInt.setEnabled(True)
2026 if p0 == 0:
2023 if p0 == 0:
2027 self.specHeisOpIncoherent.setEnabled(False)
2024 self.specHeisOpIncoherent.setEnabled(False)
2028 self.specHeisOpCobIncInt.setEnabled(False)
2025 self.specHeisOpCobIncInt.setEnabled(False)
2029
2026
2030 @pyqtSignature("")
2027 @pyqtSignature("")
2031 def on_specHeisOpOk_clicked(self):
2028 def on_specHeisOpOk_clicked(self):
2032 """
2029 """
2033 AÑADE OPERACION SPECTRAHEIS
2030 AÑADE OPERACION SPECTRAHEIS
2034 """
2031 """
2035 addFTP = False
2032 addFTP = False
2036 checkPath = False
2033 checkPath = False
2037
2034
2038 self.actionSaveToolbar.setEnabled(False)
2035 self.actionSaveToolbar.setEnabled(False)
2039 self.actionStarToolbar.setEnabled(False)
2036 self.actionStarToolbar.setEnabled(False)
2040
2037
2041 self.console.clear()
2038 self.console.clear()
2042 self.console.append("Checking input parameters ...")
2039 self.console.append("Checking input parameters ...")
2043
2040
2044 puObj = self.getSelectedItemObj()
2041 puObj = self.getSelectedItemObj()
2045 puObj.removeOperations()
2042 puObj.removeOperations()
2046
2043
2047 if self.specHeisOpCebIncoherent.isChecked():
2044 if self.specHeisOpCebIncoherent.isChecked():
2048 value = str(self.specHeisOpIncoherent.text())
2045 value = str(self.specHeisOpIncoherent.text())
2049 name_operation = 'IncohInt4SpectraHeis'
2046 name_operation = 'IncohInt4SpectraHeis'
2050 optype = 'other'
2047 optype = 'other'
2051
2048
2052 name_parameter = 'timeInterval'
2049 name_parameter = 'timeInterval'
2053 format = 'float'
2050 format = 'float'
2054
2051
2055 if self.specOpCobIncInt.currentIndex() == 0:
2052 if self.specOpCobIncInt.currentIndex() == 0:
2056 name_parameter = 'timeInterval'
2053 name_parameter = 'timeInterval'
2057 format = 'float'
2054 format = 'float'
2058
2055
2059 if not isFloat(value):
2056 if not isFloat(value):
2060 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
2057 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
2061 return 0
2058 return 0
2062
2059
2063 opObj = puObj.addOperation(name=name_operation, optype=optype)
2060 opObj = puObj.addOperation(name=name_operation, optype=optype)
2064
2061
2065 if not opObj.addParameter(name=name_parameter, value=value, format=format):
2062 if not opObj.addParameter(name=name_parameter, value=value, format=format):
2066 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
2063 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
2067 return 0
2064 return 0
2068
2065
2069 channelList = str(self.specHeisGgraphChannelList.text())
2066 channelList = str(self.specHeisGgraphChannelList.text())
2070 freq_range = str(self.specHeisGgraphXminXmax.text())
2067 freq_range = str(self.specHeisGgraphXminXmax.text())
2071 power_range = str(self.specHeisGgraphYminYmax.text())
2068 power_range = str(self.specHeisGgraphYminYmax.text())
2072 time_range = str(self.specHeisGgraphTminTmax.text())
2069 time_range = str(self.specHeisGgraphTminTmax.text())
2073 timerange = str(self.specHeisGgraphTimeRange.text())
2070 timerange = str(self.specHeisGgraphTimeRange.text())
2074
2071
2075 # ---- Spectra Plot-----
2072 # ---- Spectra Plot-----
2076 if self.specHeisGraphCebSpectraplot.isChecked():
2073 if self.specHeisGraphCebSpectraplot.isChecked():
2077
2074
2078 name_operation = 'SpectraHeisScope'
2075 name_operation = 'SpectraHeisScope'
2079 optype = 'other'
2076 optype = 'other'
2080 opObj = puObj.addOperation(name=name_operation, optype=optype)
2077 opObj = puObj.addOperation(name=name_operation, optype=optype)
2081
2078
2082 name_parameter = 'id'
2079 name_parameter = 'id'
2083 format = 'int'
2080 format = 'int'
2084 value = opObj.id
2081 value = opObj.id
2085
2082
2086 if not opObj.addParameter(name=name_parameter, value=value, format=format):
2083 if not opObj.addParameter(name=name_parameter, value=value, format=format):
2087 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
2084 self.console.append("Invalid value '%s' for '%s'" %(value, name_parameter))
2088 return 0
2085 return 0
2089
2086
2090 if not (channelList == ''):
2087 if not (channelList == ''):
2091 name_parameter = 'channelList'
2088 name_parameter = 'channelList'
2092 format = 'intlist'
2089 format = 'intlist'
2093
2090
2094 if not isList(channelList):
2091 if not isList(channelList):
2095 self.console.append("Invalid value '%s' for '%s'" %(channelList, name_parameter))
2092 self.console.append("Invalid value '%s' for '%s'" %(channelList, name_parameter))
2096 return 0
2093 return 0
2097
2094
2098 opObj.addParameter(name=name_parameter, value=channelList, format=format)
2095 opObj.addParameter(name=name_parameter, value=channelList, format=format)
2099
2096
2100 if not freq_range == '':
2097 if not freq_range == '':
2101 xvalueList = freq_range.split(',')
2098 xvalueList = freq_range.split(',')
2102
2099
2103 if len(xvalueList) != 2:
2100 if len(xvalueList) != 2:
2104 self.console.append("Invalid value '%s' for '%s'" %(freq_range, "xrange"))
2101 self.console.append("Invalid value '%s' for '%s'" %(freq_range, "xrange"))
2105 return 0
2102 return 0
2106
2103
2107 value1 = xvalueList[0]
2104 value1 = xvalueList[0]
2108 value2 = xvalueList[1]
2105 value2 = xvalueList[1]
2109
2106
2110 if not isFloat(value1) or not isFloat(value2):
2107 if not isFloat(value1) or not isFloat(value2):
2111 self.console.append("Invalid value '%s' for '%s'" %(freq_range, "xrange"))
2108 self.console.append("Invalid value '%s' for '%s'" %(freq_range, "xrange"))
2112 return 0
2109 return 0
2113
2110
2114 name1 = 'xmin'
2111 name1 = 'xmin'
2115 name2 = 'xmax'
2112 name2 = 'xmax'
2116 format = 'float'
2113 format = 'float'
2117
2114
2118 opObj.addParameter(name=name1, value=value1, format=format)
2115 opObj.addParameter(name=name1, value=value1, format=format)
2119 opObj.addParameter(name=name2, value=value2, format=format)
2116 opObj.addParameter(name=name2, value=value2, format=format)
2120
2117
2121 #------specHeisGgraphYmin-Ymax---
2118 #------specHeisGgraphYmin-Ymax---
2122 if not power_range == '':
2119 if not power_range == '':
2123 yvalueList = power_range.split(",")
2120 yvalueList = power_range.split(",")
2124
2121
2125 if len(yvalueList) != 2:
2122 if len(yvalueList) != 2:
2126 self.console.append("Invalid value '%s' for '%s'" %(power_range, "xrange"))
2123 self.console.append("Invalid value '%s' for '%s'" %(power_range, "xrange"))
2127 return 0
2124 return 0
2128
2125
2129 value1 = yvalueList[0]
2126 value1 = yvalueList[0]
2130 value2 = yvalueList[1]
2127 value2 = yvalueList[1]
2131
2128
2132 if not isFloat(value1) or not isFloat(value2):
2129 if not isFloat(value1) or not isFloat(value2):
2133 self.console.append("Invalid value '%s' for '%s'" %(power_range, "yrange"))
2130 self.console.append("Invalid value '%s' for '%s'" %(power_range, "yrange"))
2134 return 0
2131 return 0
2135
2132
2136 name1 = 'ymin'
2133 name1 = 'ymin'
2137 name2 = 'ymax'
2134 name2 = 'ymax'
2138 format = 'float'
2135 format = 'float'
2139 opObj.addParameter(name=name1, value=value1, format=format)
2136 opObj.addParameter(name=name1, value=value1, format=format)
2140 opObj.addParameter(name=name2, value=value2, format=format)
2137 opObj.addParameter(name=name2, value=value2, format=format)
2141
2138
2142 if self.specHeisGraphSaveSpectra.isChecked():
2139 if self.specHeisGraphSaveSpectra.isChecked():
2143 checkPath = True
2140 checkPath = True
2144 name_parameter1 = 'save'
2141 name_parameter1 = 'save'
2145 name_parameter2 = 'figpath'
2142 name_parameter2 = 'figpath'
2146 name_parameter3 = 'figfile'
2143 name_parameter3 = 'figfile'
2147 value1 = '1'
2144 value1 = '1'
2148 value2 = str(self.specHeisGraphPath.text())
2145 value2 = str(self.specHeisGraphPath.text())
2149 value3 = str(self.specHeisGraphPrefix.text())
2146 value3 = str(self.specHeisGraphPrefix.text())
2150 format1 = 'bool'
2147 format1 = 'bool'
2151 format2 = 'str'
2148 format2 = 'str'
2152 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
2149 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
2153 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2150 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2154 if not value3 == "":
2151 if not value3 == "":
2155 try:
2152 try:
2156 value3 = str(self.specHeisGraphPrefix.text())
2153 value3 = str(self.specHeisGraphPrefix.text())
2157 except:
2154 except:
2158 self.console.clear()
2155 self.console.clear()
2159 self.console.append("Please Write prefix")
2156 self.console.append("Please Write prefix")
2160 return 0
2157 return 0
2161 opObj.addParameter(name='figfile', value=str(self.specHeisGraphPrefix.text()), format='str')
2158 opObj.addParameter(name='figfile', value=str(self.specHeisGraphPrefix.text()), format='str')
2162
2159
2163 # opObj.addParameter(name=name_parameter3, value=value3, format=format2)
2160 # opObj.addParameter(name=name_parameter3, value=value3, format=format2)
2164 # opObj.addParameter(name='wr_period', value='5',format='int')
2161 # opObj.addParameter(name='wr_period', value='5',format='int')
2165
2162
2166 if self.specHeisGraphftpSpectra.isChecked():
2163 if self.specHeisGraphftpSpectra.isChecked():
2167 opObj.addParameter(name='ftp', value='1', format='int')
2164 opObj.addParameter(name='ftp', value='1', format='int')
2168 self.addFTPConf2Operation(puObj, opObj)
2165 self.addFTPConf2Operation(puObj, opObj)
2169 addFTP = True
2166 addFTP = True
2170
2167
2171 if self.specHeisGraphCebRTIplot.isChecked():
2168 if self.specHeisGraphCebRTIplot.isChecked():
2172 name_operation = 'RTIfromSpectraHeis'
2169 name_operation = 'RTIfromSpectraHeis'
2173 optype = 'other'
2170 optype = 'other'
2174
2171
2175 name_parameter = 'id'
2172 name_parameter = 'id'
2176 format = 'int'
2173 format = 'int'
2177
2174
2178 opObj = puObj.addOperation(name=name_operation, optype=optype)
2175 opObj = puObj.addOperation(name=name_operation, optype=optype)
2179 value = opObj.id
2176 value = opObj.id
2180 opObj.addParameter(name=name_parameter, value=value, format=format)
2177 opObj.addParameter(name=name_parameter, value=value, format=format)
2181
2178
2182 if not channelList == '':
2179 if not channelList == '':
2183 opObj.addParameter(name='channelList', value=channelList, format='intlist')
2180 opObj.addParameter(name='channelList', value=channelList, format='intlist')
2184
2181
2185 if not time_range == '':
2182 if not time_range == '':
2186 xvalueList = time_range.split(',')
2183 xvalueList = time_range.split(',')
2187 try:
2184 try:
2188 value = float(xvalueList[0])
2185 value = float(xvalueList[0])
2189 value = float(xvalueList[1])
2186 value = float(xvalueList[1])
2190 except:
2187 except:
2191 return 0
2188 return 0
2192 format = 'float'
2189 format = 'float'
2193 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
2190 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
2194 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
2191 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
2195
2192
2196 if not timerange == '':
2193 if not timerange == '':
2197 format = 'int'
2194 format = 'int'
2198 try:
2195 try:
2199 timerange = int(timerange)
2196 timerange = int(timerange)
2200 except:
2197 except:
2201 return 0
2198 return 0
2202 opObj.addParameter(name='timerange', value=timerange, format=format)
2199 opObj.addParameter(name='timerange', value=timerange, format=format)
2203
2200
2204
2201
2205 if not power_range == '':
2202 if not power_range == '':
2206 yvalueList = power_range.split(",")
2203 yvalueList = power_range.split(",")
2207 try:
2204 try:
2208 value = float(yvalueList[0])
2205 value = float(yvalueList[0])
2209 value = float(yvalueList[1])
2206 value = float(yvalueList[1])
2210 except:
2207 except:
2211 return 0
2208 return 0
2212
2209
2213 format = 'float'
2210 format = 'float'
2214 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
2211 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
2215 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
2212 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
2216
2213
2217 if self.specHeisGraphSaveRTIplot.isChecked():
2214 if self.specHeisGraphSaveRTIplot.isChecked():
2218 checkPath = True
2215 checkPath = True
2219 opObj.addParameter(name='save', value='1', format='bool')
2216 opObj.addParameter(name='save', value='1', format='bool')
2220 opObj.addParameter(name='figpath', value=str(self.specHeisGraphPath.text()), format='str')
2217 opObj.addParameter(name='figpath', value=str(self.specHeisGraphPath.text()), format='str')
2221 value = str(self.specHeisGraphPrefix.text())
2218 value = str(self.specHeisGraphPrefix.text())
2222 if not value == "":
2219 if not value == "":
2223 try:
2220 try:
2224 value = str(self.specHeisGraphPrefix.text())
2221 value = str(self.specHeisGraphPrefix.text())
2225 except:
2222 except:
2226 self.console.clear()
2223 self.console.clear()
2227 self.console.append("Please Write prefix")
2224 self.console.append("Please Write prefix")
2228 return 0
2225 return 0
2229 opObj.addParameter(name='figfile', value=value, format='str')
2226 opObj.addParameter(name='figfile', value=value, format='str')
2230
2227
2231 # test_ftp
2228 # test_ftp
2232 if self.specHeisGraphftpRTIplot.isChecked():
2229 if self.specHeisGraphftpRTIplot.isChecked():
2233 opObj.addParameter(name='ftp', value='1', format='int')
2230 opObj.addParameter(name='ftp', value='1', format='int')
2234 self.addFTPConf2Operation(puObj, opObj)
2231 self.addFTPConf2Operation(puObj, opObj)
2235 addFTP = True
2232 addFTP = True
2236
2233
2237 localfolder = None
2234 localfolder = None
2238 if checkPath:
2235 if checkPath:
2239 localfolder = str(self.specHeisGraphPath.text())
2236 localfolder = str(self.specHeisGraphPath.text())
2240 if localfolder == '':
2237 if localfolder == '':
2241 self.console.clear()
2238 self.console.clear()
2242 self.console.append("Graphic path should be defined")
2239 self.console.append("Graphic path should be defined")
2243 return 0
2240 return 0
2244
2241
2245 if addFTP and not localfolder:
2242 if addFTP and not localfolder:
2246 self.console.clear()
2243 self.console.clear()
2247 self.console.append("You should save plots before send them to FTP Server")
2244 self.console.append("You should save plots before send them to FTP Server")
2248 return 0
2245 return 0
2249
2246
2250 # if something happened
2247 # if something happened
2251 parms_ok, output_path, blocksperfile, metada = self.checkInputsPUSave(datatype='SpectraHeis')
2248 parms_ok, output_path, blocksperfile, metada = self.checkInputsPUSave(datatype='SpectraHeis')
2252 if parms_ok:
2249 if parms_ok:
2253 name_operation = 'FitsWriter'
2250 name_operation = 'FitsWriter'
2254 optype = 'other'
2251 optype = 'other'
2255 name_parameter1 = 'path'
2252 name_parameter1 = 'path'
2256 name_parameter2 = 'dataBlocksPerFile'
2253 name_parameter2 = 'dataBlocksPerFile'
2257 name_parameter3 = 'metadatafile'
2254 name_parameter3 = 'metadatafile'
2258 value1 = output_path
2255 value1 = output_path
2259 value2 = blocksperfile
2256 value2 = blocksperfile
2260 value3 = metada
2257 value3 = metada
2261 format2 = "int"
2258 format2 = "int"
2262 format3 = "str"
2259 format3 = "str"
2263 opObj = puObj.addOperation(name=name_operation, optype=optype)
2260 opObj = puObj.addOperation(name=name_operation, optype=optype)
2264 opObj.addParameter(name=name_parameter1, value=value1)
2261 opObj.addParameter(name=name_parameter1, value=value1)
2265 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2262 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2266 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
2263 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
2267
2264
2268 self.console.clear()
2265 self.console.clear()
2269 try:
2266 try:
2270 self.refreshPUProperties(puObj)
2267 self.refreshPUProperties(puObj)
2271 except:
2268 except:
2272 self.console.append("An error reading input parameters was found ... Check them!")
2269 self.console.append("An error reading input parameters was found ... Check them!")
2273 return 0
2270 return 0
2274
2271
2275 self.console.append("Save your project and press Play button to start signal processing")
2272 self.console.append("Save your project and press Play button to start signal processing")
2276
2273
2277 self.actionSaveToolbar.setEnabled(True)
2274 self.actionSaveToolbar.setEnabled(True)
2278 self.actionStarToolbar.setEnabled(True)
2275 self.actionStarToolbar.setEnabled(True)
2279
2276
2280 return 1
2277 return 1
2281 @pyqtSignature("int")
2278 @pyqtSignature("int")
2282 def on_specHeisGraphCebSpectraplot_stateChanged(self, p0):
2279 def on_specHeisGraphCebSpectraplot_stateChanged(self, p0):
2283
2280
2284 if p0 == 2:
2281 if p0 == 2:
2285 self.specHeisGgraphChannelList.setEnabled(True)
2282 self.specHeisGgraphChannelList.setEnabled(True)
2286 self.specHeisGgraphXminXmax.setEnabled(True)
2283 self.specHeisGgraphXminXmax.setEnabled(True)
2287 self.specHeisGgraphYminYmax.setEnabled(True)
2284 self.specHeisGgraphYminYmax.setEnabled(True)
2288 if p0 == 0:
2285 if p0 == 0:
2289 self.specHeisGgraphXminXmax.setEnabled(False)
2286 self.specHeisGgraphXminXmax.setEnabled(False)
2290 self.specHeisGgraphYminYmax.setEnabled(False)
2287 self.specHeisGgraphYminYmax.setEnabled(False)
2291
2288
2292 @pyqtSignature("int")
2289 @pyqtSignature("int")
2293 def on_specHeisGraphCebRTIplot_stateChanged(self, p0):
2290 def on_specHeisGraphCebRTIplot_stateChanged(self, p0):
2294
2291
2295 if p0 == 2:
2292 if p0 == 2:
2296 self.specHeisGgraphChannelList.setEnabled(True)
2293 self.specHeisGgraphChannelList.setEnabled(True)
2297 self.specHeisGgraphTminTmax.setEnabled(True)
2294 self.specHeisGgraphTminTmax.setEnabled(True)
2298 self.specHeisGgraphYminYmax.setEnabled(True)
2295 self.specHeisGgraphYminYmax.setEnabled(True)
2299 self.specHeisGgraphTimeRange.setEnabled(True)
2296 self.specHeisGgraphTimeRange.setEnabled(True)
2300
2297
2301 if p0 == 0:
2298 if p0 == 0:
2302 self.specHeisGgraphTminTmax.setEnabled(False)
2299 self.specHeisGgraphTminTmax.setEnabled(False)
2303 self.specHeisGgraphYminYmax.setEnabled(False)
2300 self.specHeisGgraphYminYmax.setEnabled(False)
2304 self.specHeisGgraphTimeRange.setEnabled(False)
2301 self.specHeisGgraphTimeRange.setEnabled(False)
2305
2302
2306 @pyqtSignature("int")
2303 @pyqtSignature("int")
2307 def on_specHeisGraphSaveSpectra_stateChanged(self, p0):
2304 def on_specHeisGraphSaveSpectra_stateChanged(self, p0):
2308 """
2305 """
2309 """
2306 """
2310 if p0 == 2:
2307 if p0 == 2:
2311 self.specHeisGraphPath.setEnabled(True)
2308 self.specHeisGraphPath.setEnabled(True)
2312 self.specHeisGraphPrefix.setEnabled(True)
2309 self.specHeisGraphPrefix.setEnabled(True)
2313 self.specHeisGraphToolPath.setEnabled(True)
2310 self.specHeisGraphToolPath.setEnabled(True)
2314 if p0 == 0:
2311 if p0 == 0:
2315 self.specHeisGraphPath.setEnabled(False)
2312 self.specHeisGraphPath.setEnabled(False)
2316 self.specHeisGraphPrefix.setEnabled(False)
2313 self.specHeisGraphPrefix.setEnabled(False)
2317 self.specHeisGraphToolPath.setEnabled(False)
2314 self.specHeisGraphToolPath.setEnabled(False)
2318
2315
2319 @pyqtSignature("int")
2316 @pyqtSignature("int")
2320 def on_specHeisGraphSaveRTIplot_stateChanged(self, p0):
2317 def on_specHeisGraphSaveRTIplot_stateChanged(self, p0):
2321 if p0 == 2:
2318 if p0 == 2:
2322 self.specHeisGraphPath.setEnabled(True)
2319 self.specHeisGraphPath.setEnabled(True)
2323 self.specHeisGraphPrefix.setEnabled(True)
2320 self.specHeisGraphPrefix.setEnabled(True)
2324 self.specHeisGraphToolPath.setEnabled(True)
2321 self.specHeisGraphToolPath.setEnabled(True)
2325
2322
2326 @pyqtSignature("int")
2323 @pyqtSignature("int")
2327 def on_specHeisGraphftpSpectra_stateChanged(self, p0):
2324 def on_specHeisGraphftpSpectra_stateChanged(self, p0):
2328 """
2325 """
2329 """
2326 """
2330 if p0 == 2:
2327 if p0 == 2:
2331 self.specHeisGgraphftpratio.setEnabled(True)
2328 self.specHeisGgraphftpratio.setEnabled(True)
2332
2329
2333 if p0 == 0:
2330 if p0 == 0:
2334 self.specHeisGgraphftpratio.setEnabled(False)
2331 self.specHeisGgraphftpratio.setEnabled(False)
2335
2332
2336 @pyqtSignature("int")
2333 @pyqtSignature("int")
2337 def on_specHeisGraphftpRTIplot_stateChanged(self, p0):
2334 def on_specHeisGraphftpRTIplot_stateChanged(self, p0):
2338 if p0 == 2:
2335 if p0 == 2:
2339 self.specHeisGgraphftpratio.setEnabled(True)
2336 self.specHeisGgraphftpratio.setEnabled(True)
2340
2337
2341 @pyqtSignature("")
2338 @pyqtSignature("")
2342 def on_specHeisGraphClear_clicked(self):
2339 def on_specHeisGraphClear_clicked(self):
2343 pass
2340 pass
2344
2341
2345 def __checkSpecGraphSaving(self):
2342 def __checkSpecGraphSaving(self):
2346
2343
2347 enable = False
2344 enable = False
2348
2345
2349 if self.specGraphSaveSpectra.checkState():
2346 if self.specGraphSaveSpectra.checkState():
2350 enable = True
2347 enable = True
2351
2348
2352 if self.specGraphSaveCross.checkState():
2349 if self.specGraphSaveCross.checkState():
2353 enable = True
2350 enable = True
2354
2351
2355 if self.specGraphSaveRTIplot.checkState():
2352 if self.specGraphSaveRTIplot.checkState():
2356 enable = True
2353 enable = True
2357
2354
2358 if self.specGraphSaveCoherencemap.checkState():
2355 if self.specGraphSaveCoherencemap.checkState():
2359 enable = True
2356 enable = True
2360
2357
2361 if self.specGraphSavePowerprofile.checkState():
2358 if self.specGraphSavePowerprofile.checkState():
2362 enable = True
2359 enable = True
2363
2360
2364 if self.specGraphSaveRTInoise.checkState():
2361 if self.specGraphSaveRTInoise.checkState():
2365 enable = True
2362 enable = True
2366
2363
2367 self.specGraphPath.setEnabled(enable)
2364 self.specGraphPath.setEnabled(enable)
2368 self.specGraphPrefix.setEnabled(enable)
2365 self.specGraphPrefix.setEnabled(enable)
2369 self.specGraphToolPath.setEnabled(enable)
2366 self.specGraphToolPath.setEnabled(enable)
2370
2367
2371 self.specGgraphftpratio.setEnabled(enable)
2368 self.specGgraphftpratio.setEnabled(enable)
2372
2369
2373 def __checkSpecGraphFTP(self):
2370 def __checkSpecGraphFTP(self):
2374
2371
2375 enable = False
2372 enable = False
2376
2373
2377 if self.specGraphftpSpectra.checkState():
2374 if self.specGraphftpSpectra.checkState():
2378 enable = True
2375 enable = True
2379
2376
2380 if self.specGraphftpCross.checkState():
2377 if self.specGraphftpCross.checkState():
2381 enable = True
2378 enable = True
2382
2379
2383 if self.specGraphftpRTIplot.checkState():
2380 if self.specGraphftpRTIplot.checkState():
2384 enable = True
2381 enable = True
2385
2382
2386 if self.specGraphftpCoherencemap.checkState():
2383 if self.specGraphftpCoherencemap.checkState():
2387 enable = True
2384 enable = True
2388
2385
2389 if self.specGraphftpPowerprofile.checkState():
2386 if self.specGraphftpPowerprofile.checkState():
2390 enable = True
2387 enable = True
2391
2388
2392 if self.specGraphftpRTInoise.checkState():
2389 if self.specGraphftpRTInoise.checkState():
2393 enable = True
2390 enable = True
2394
2391
2395 # self.specGgraphftpratio.setEnabled(enable)
2392 # self.specGgraphftpratio.setEnabled(enable)
2396
2393
2397 def __checkSpecGraphFilters(self):
2394 def __checkSpecGraphFilters(self):
2398
2395
2399 freq = False
2396 freq = False
2400 height = False
2397 height = False
2401 db = False
2398 db = False
2402 time = False
2399 time = False
2403 magnitud = False
2400 magnitud = False
2404 phase = False
2401 phase = False
2405 channelList = False
2402 channelList = False
2406
2403
2407 if self.specGraphCebSpectraplot.checkState():
2404 if self.specGraphCebSpectraplot.checkState():
2408 freq = True
2405 freq = True
2409 height = True
2406 height = True
2410 db = True
2407 db = True
2411 channelList = True
2408 channelList = True
2412
2409
2413 if self.specGraphCebCrossSpectraplot.checkState():
2410 if self.specGraphCebCrossSpectraplot.checkState():
2414 freq = True
2411 freq = True
2415 height = True
2412 height = True
2416 db = True
2413 db = True
2417 magnitud = True
2414 magnitud = True
2418 phase = True
2415 phase = True
2419
2416
2420 if self.specGraphCebRTIplot.checkState():
2417 if self.specGraphCebRTIplot.checkState():
2421 height = True
2418 height = True
2422 db = True
2419 db = True
2423 time = True
2420 time = True
2424 channelList = True
2421 channelList = True
2425
2422
2426 if self.specGraphCebCoherencmap.checkState():
2423 if self.specGraphCebCoherencmap.checkState():
2427 height = True
2424 height = True
2428 time = True
2425 time = True
2429 magnitud = True
2426 magnitud = True
2430 phase = True
2427 phase = True
2431
2428
2432 if self.specGraphPowerprofile.checkState():
2429 if self.specGraphPowerprofile.checkState():
2433 height = True
2430 height = True
2434 db = True
2431 db = True
2435 channelList = True
2432 channelList = True
2436
2433
2437 if self.specGraphCebRTInoise.checkState():
2434 if self.specGraphCebRTInoise.checkState():
2438 db = True
2435 db = True
2439 time = True
2436 time = True
2440 channelList = True
2437 channelList = True
2441
2438
2442
2439
2443 self.specGgraphFreq.setEnabled(freq)
2440 self.specGgraphFreq.setEnabled(freq)
2444 self.specGgraphHeight.setEnabled(height)
2441 self.specGgraphHeight.setEnabled(height)
2445 self.specGgraphDbsrange.setEnabled(db)
2442 self.specGgraphDbsrange.setEnabled(db)
2446 self.specGgraphTminTmax.setEnabled(time)
2443 self.specGgraphTminTmax.setEnabled(time)
2447
2444
2448 self.specGgraphmagnitud.setEnabled(magnitud)
2445 self.specGgraphmagnitud.setEnabled(magnitud)
2449 self.specGgraphPhase.setEnabled(phase)
2446 self.specGgraphPhase.setEnabled(phase)
2450 self.specGgraphChannelList.setEnabled(channelList)
2447 self.specGgraphChannelList.setEnabled(channelList)
2451
2448
2452 def __getParmsFromProjectWindow(self):
2449 def __getParmsFromProjectWindow(self):
2453 """
2450 """
2454 Check Inputs Project:
2451 Check Inputs Project:
2455 - project_name
2452 - project_name
2456 - datatype
2453 - datatype
2457 - ext
2454 - ext
2458 - data_path
2455 - data_path
2459 - readmode
2456 - readmode
2460 - delay
2457 - delay
2461 - set
2458 - set
2462 - walk
2459 - walk
2463 """
2460 """
2464 parms_ok = True
2461 parms_ok = True
2465
2462
2466 project_name = str(self.proName.text())
2463 project_name = str(self.proName.text())
2467
2464
2468 if project_name == '' or project_name == None:
2465 if project_name == '' or project_name == None:
2469 outputstr = "Enter a project Name"
2466 outputstr = "Enter a project Name"
2470 self.console.append(outputstr)
2467 self.console.append(outputstr)
2471 parms_ok = False
2468 parms_ok = False
2472 project_name = None
2469 project_name = None
2473
2470
2474 description = str(self.proDescription.toPlainText())
2471 description = str(self.proDescription.toPlainText())
2475
2472
2476 datatype = str(self.proComDataType.currentText())
2473 datatype = str(self.proComDataType.currentText())
2477
2474
2478 ext = str(self.proDataType.text())
2475 ext = str(self.proDataType.text())
2479
2476
2480 dpath = str(self.proDataPath.text())
2477 dpath = str(self.proDataPath.text())
2481
2478
2482 if dpath == '':
2479 if dpath == '':
2483 outputstr = 'Datapath is empty'
2480 outputstr = 'Datapath is empty'
2484 self.console.append(outputstr)
2481 self.console.append(outputstr)
2485 parms_ok = False
2482 parms_ok = False
2486 dpath = None
2483 dpath = None
2487
2484
2488 if dpath != None:
2485 if dpath != None:
2489 if not os.path.isdir(dpath):
2486 if not os.path.isdir(dpath):
2490 outputstr = 'Datapath (%s) does not exist' % dpath
2487 outputstr = 'Datapath (%s) does not exist' % dpath
2491 self.console.append(outputstr)
2488 self.console.append(outputstr)
2492 parms_ok = False
2489 parms_ok = False
2493 dpath = None
2490 dpath = None
2494
2491
2495 online = int(self.proComReadMode.currentIndex())
2492 online = int(self.proComReadMode.currentIndex())
2496
2493
2497 delay = None
2494 delay = None
2498 if online==1:
2495 if online==1:
2499 try:
2496 try:
2500 delay = int(str(self.proDelay.text()))
2497 delay = int(str(self.proDelay.text()))
2501 except:
2498 except:
2502 outputstr = 'Delay value (%s) must be a integer number' %str(self.proDelay.text())
2499 outputstr = 'Delay value (%s) must be a integer number' %str(self.proDelay.text())
2503 self.console.append(outputstr)
2500 self.console.append(outputstr)
2504 parms_ok = False
2501 parms_ok = False
2505
2502
2506
2503
2507 set = None
2504 set = None
2508 value = str(self.proSet.text())
2505 value = str(self.proSet.text())
2509 try:
2506 try:
2510 set = int(value)
2507 set = int(value)
2511 except:
2508 except:
2512 pass
2509 pass
2513
2510
2514 ippKm = None
2511 ippKm = None
2515
2512
2516 value = str(self.proIPPKm.text())
2513 value = str(self.proIPPKm.text())
2517
2514
2518 try:
2515 try:
2519 ippKm = float(value)
2516 ippKm = float(value)
2520 except:
2517 except:
2521 if datatype=="USRP":
2518 if datatype=="USRP":
2522 outputstr = 'IPP value "%s" must be a float number' % str(self.proIPPKm.text())
2519 outputstr = 'IPP value "%s" must be a float number' % str(self.proIPPKm.text())
2523 self.console.append(outputstr)
2520 self.console.append(outputstr)
2524 parms_ok = False
2521 parms_ok = False
2525
2522
2526 walk = int(self.proComWalk.currentIndex())
2523 walk = int(self.proComWalk.currentIndex())
2527 expLabel = str(self.proExpLabel.text())
2524 expLabel = str(self.proExpLabel.text())
2528
2525
2529 startDate = str(self.proComStartDate.currentText())
2526 startDate = str(self.proComStartDate.currentText())
2530 endDate = str(self.proComEndDate.currentText())
2527 endDate = str(self.proComEndDate.currentText())
2531
2528
2532 # startDateList = startDate.split("/")
2529 # startDateList = startDate.split("/")
2533 # endDateList = endDate.split("/")
2530 # endDateList = endDate.split("/")
2534 #
2531 #
2535 # startDate = datetime.date(int(startDateList[0]), int(startDateList[1]), int(startDateList[2]))
2532 # startDate = datetime.date(int(startDateList[0]), int(startDateList[1]), int(startDateList[2]))
2536 # endDate = datetime.date(int(endDateList[0]), int(endDateList[1]), int(endDateList[2]))
2533 # endDate = datetime.date(int(endDateList[0]), int(endDateList[1]), int(endDateList[2]))
2537
2534
2538 startTime = self.proStartTime.time()
2535 startTime = self.proStartTime.time()
2539 endTime = self.proEndTime.time()
2536 endTime = self.proEndTime.time()
2540
2537
2541 startTime = str(startTime.toString("H:m:s"))
2538 startTime = str(startTime.toString("H:m:s"))
2542 endTime = str(endTime.toString("H:m:s"))
2539 endTime = str(endTime.toString("H:m:s"))
2543
2540
2544 projectParms = ProjectParms()
2541 projectParms = ProjectParms()
2545
2542
2546 projectParms.name = project_name
2543 projectParms.name = project_name
2547 projectParms.description = description
2544 projectParms.description = description
2548 projectParms.datatype = datatype
2545 projectParms.datatype = datatype
2549 projectParms.ext = ext
2546 projectParms.ext = ext
2550 projectParms.dpath = dpath
2547 projectParms.dpath = dpath
2551 projectParms.online = online
2548 projectParms.online = online
2552 projectParms.startDate = startDate
2549 projectParms.startDate = startDate
2553 projectParms.endDate = endDate
2550 projectParms.endDate = endDate
2554 projectParms.startTime = startTime
2551 projectParms.startTime = startTime
2555 projectParms.endTime = endTime
2552 projectParms.endTime = endTime
2556 projectParms.delay = delay
2553 projectParms.delay = delay
2557 projectParms.walk = walk
2554 projectParms.walk = walk
2558 projectParms.expLabel = expLabel
2555 projectParms.expLabel = expLabel
2559 projectParms.set = set
2556 projectParms.set = set
2560 projectParms.ippKm = ippKm
2557 projectParms.ippKm = ippKm
2561 projectParms.parmsOk = parms_ok
2558 projectParms.parmsOk = parms_ok
2562
2559
2563 return projectParms
2560 return projectParms
2564
2561
2565
2562
2566 def __getParmsFromProjectObj(self, projectObjView):
2563 def __getParmsFromProjectObj(self, projectObjView):
2567
2564
2568 parms_ok = True
2565 parms_ok = True
2569
2566
2570 project_name, description = projectObjView.name, projectObjView.description
2567 project_name, description = projectObjView.name, projectObjView.description
2571
2568
2572 readUnitObj = projectObjView.getReadUnitObj()
2569 readUnitObj = projectObjView.getReadUnitObj()
2573 datatype = readUnitObj.datatype
2570 datatype = readUnitObj.datatype
2574
2571
2575 operationObj = readUnitObj.getOperationObj(name='run')
2572 operationObj = readUnitObj.getOperationObj(name='run')
2576
2573
2577 dpath = operationObj.getParameterValue(parameterName='path')
2574 dpath = operationObj.getParameterValue(parameterName='path')
2578 startDate = operationObj.getParameterValue(parameterName='startDate')
2575 startDate = operationObj.getParameterValue(parameterName='startDate')
2579 endDate = operationObj.getParameterValue(parameterName='endDate')
2576 endDate = operationObj.getParameterValue(parameterName='endDate')
2580
2577
2581 startDate = startDate.strftime("%Y/%m/%d")
2578 startDate = startDate.strftime("%Y/%m/%d")
2582 endDate = endDate.strftime("%Y/%m/%d")
2579 endDate = endDate.strftime("%Y/%m/%d")
2583
2580
2584 startTime = operationObj.getParameterValue(parameterName='startTime')
2581 startTime = operationObj.getParameterValue(parameterName='startTime')
2585 endTime = operationObj.getParameterValue(parameterName='endTime')
2582 endTime = operationObj.getParameterValue(parameterName='endTime')
2586
2583
2587 startTime = startTime.strftime("%H:%M:%S")
2584 startTime = startTime.strftime("%H:%M:%S")
2588 endTime = endTime.strftime("%H:%M:%S")
2585 endTime = endTime.strftime("%H:%M:%S")
2589
2586
2590 online = 0
2587 online = 0
2591 try:
2588 try:
2592 online = operationObj.getParameterValue(parameterName='online')
2589 online = operationObj.getParameterValue(parameterName='online')
2593 except:
2590 except:
2594 pass
2591 pass
2595
2592
2596 delay = ''
2593 delay = ''
2597 try:
2594 try:
2598 delay = operationObj.getParameterValue(parameterName='delay')
2595 delay = operationObj.getParameterValue(parameterName='delay')
2599 except:
2596 except:
2600 pass
2597 pass
2601
2598
2602 walk = 0
2599 walk = 0
2603 try:
2600 try:
2604 walk = operationObj.getParameterValue(parameterName='walk')
2601 walk = operationObj.getParameterValue(parameterName='walk')
2605 except:
2602 except:
2606 pass
2603 pass
2607
2604
2608 set = ''
2605 set = ''
2609 try:
2606 try:
2610 set = operationObj.getParameterValue(parameterName='set')
2607 set = operationObj.getParameterValue(parameterName='set')
2611 except:
2608 except:
2612 pass
2609 pass
2613
2610
2614 expLabel = ''
2611 expLabel = ''
2615 try:
2612 try:
2616 expLabel = operationObj.getParameterValue(parameterName='expLabel')
2613 expLabel = operationObj.getParameterValue(parameterName='expLabel')
2617 except:
2614 except:
2618 pass
2615 pass
2619
2616
2620 ippKm = ''
2617 ippKm = ''
2621 if datatype.lower() == 'usrp':
2618 if datatype.lower() == 'usrp':
2622 try:
2619 try:
2623 ippKm = operationObj.getParameterValue(parameterName='ippKm')
2620 ippKm = operationObj.getParameterValue(parameterName='ippKm')
2624 except:
2621 except:
2625 pass
2622 pass
2626
2623
2627 projectParms = ProjectParms()
2624 projectParms = ProjectParms()
2628
2625
2629 projectParms.name = project_name
2626 projectParms.name = project_name
2630 projectParms.description = description
2627 projectParms.description = description
2631 projectParms.datatype = datatype
2628 projectParms.datatype = datatype
2632 projectParms.ext = None
2629 projectParms.ext = None
2633 projectParms.dpath = dpath
2630 projectParms.dpath = dpath
2634 projectParms.online = online
2631 projectParms.online = online
2635 projectParms.startDate = startDate
2632 projectParms.startDate = startDate
2636 projectParms.endDate = endDate
2633 projectParms.endDate = endDate
2637 projectParms.startTime = startTime
2634 projectParms.startTime = startTime
2638 projectParms.endTime = endTime
2635 projectParms.endTime = endTime
2639 projectParms.delay=delay
2636 projectParms.delay=delay
2640 projectParms.walk=walk
2637 projectParms.walk=walk
2641 projectParms.set=set
2638 projectParms.set=set
2642 projectParms.ippKm=ippKm
2639 projectParms.ippKm=ippKm
2643 projectParms.expLabel = expLabel
2640 projectParms.expLabel = expLabel
2644 projectParms.parmsOk=parms_ok
2641 projectParms.parmsOk=parms_ok
2645
2642
2646 return projectParms
2643 return projectParms
2647
2644
2648 def refreshProjectWindow(self, projectObjView):
2645 def refreshProjectWindow(self, projectObjView):
2649
2646
2650 projectParms = self.__getParmsFromProjectObj(projectObjView)
2647 projectParms = self.__getParmsFromProjectObj(projectObjView)
2651
2648
2652 index = projectParms.getDatatypeIndex()
2649 index = projectParms.getDatatypeIndex()
2653
2650
2654 self.proName.setText(projectParms.name)
2651 self.proName.setText(projectParms.name)
2655 self.proDescription.clear()
2652 self.proDescription.clear()
2656 self.proDescription.append(projectParms.description)
2653 self.proDescription.append(projectParms.description)
2657
2654
2658 self.on_proComDataType_activated(index=index)
2655 self.on_proComDataType_activated(index=index)
2659 self.proDataPath.setText(projectParms.dpath)
2656 self.proDataPath.setText(projectParms.dpath)
2660 self.proComDataType.setCurrentIndex(index)
2657 self.proComDataType.setCurrentIndex(index)
2661 self.proComReadMode.setCurrentIndex(projectParms.online)
2658 self.proComReadMode.setCurrentIndex(projectParms.online)
2662 self.proDelay.setText(str(projectParms.delay))
2659 self.proDelay.setText(str(projectParms.delay))
2663 self.proSet.setText(str(projectParms.set))
2660 self.proSet.setText(str(projectParms.set))
2664 self.proIPPKm.setText(str(projectParms.ippKm))
2661 self.proIPPKm.setText(str(projectParms.ippKm))
2665 self.proComWalk.setCurrentIndex(projectParms.walk)
2662 self.proComWalk.setCurrentIndex(projectParms.walk)
2666 self.proExpLabel.setText(str(projectParms.expLabel).strip())
2663 self.proExpLabel.setText(str(projectParms.expLabel).strip())
2667
2664
2668 dateList = self.loadDays(data_path = projectParms.dpath,
2665 dateList = self.loadDays(data_path = projectParms.dpath,
2669 ext = projectParms.getExt(),
2666 ext = projectParms.getExt(),
2670 walk = projectParms.walk,
2667 walk = projectParms.walk,
2671 expLabel = projectParms.expLabel)
2668 expLabel = projectParms.expLabel)
2672
2669
2673 try:
2670 try:
2674 startDateIndex = dateList.index(projectParms.startDate)
2671 startDateIndex = dateList.index(projectParms.startDate)
2675 except:
2672 except:
2676 startDateIndex = 0
2673 startDateIndex = 0
2677
2674
2678 try:
2675 try:
2679 endDateIndex = dateList.index(projectParms.endDate)
2676 endDateIndex = dateList.index(projectParms.endDate)
2680 except:
2677 except:
2681 endDateIndex = int(self.proComEndDate.count()-1)
2678 endDateIndex = int(self.proComEndDate.count()-1)
2682
2679
2683 self.proComStartDate.setCurrentIndex(startDateIndex)
2680 self.proComStartDate.setCurrentIndex(startDateIndex)
2684 self.proComEndDate.setCurrentIndex(endDateIndex)
2681 self.proComEndDate.setCurrentIndex(endDateIndex)
2685
2682
2686 startlist = projectParms.startTime.split(":")
2683 startlist = projectParms.startTime.split(":")
2687 endlist = projectParms.endTime.split(":")
2684 endlist = projectParms.endTime.split(":")
2688
2685
2689 self.time.setHMS(int(startlist[0]), int(startlist[1]), int(startlist[2]))
2686 self.time.setHMS(int(startlist[0]), int(startlist[1]), int(startlist[2]))
2690 self.proStartTime.setTime(self.time)
2687 self.proStartTime.setTime(self.time)
2691
2688
2692 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2689 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2693 self.proEndTime.setTime(self.time)
2690 self.proEndTime.setTime(self.time)
2694
2691
2695
2692
2696 def __refreshVoltageWindow(self, puObj):
2693 def __refreshVoltageWindow(self, puObj):
2697
2694
2698 opObj = puObj.getOperationObj(name='setRadarFrequency')
2695 opObj = puObj.getOperationObj(name='setRadarFrequency')
2699 if opObj == None:
2696 if opObj == None:
2700 self.volOpRadarfrequency.clear()
2697 self.volOpRadarfrequency.clear()
2701 self.volOpCebRadarfrequency.setCheckState(0)
2698 self.volOpCebRadarfrequency.setCheckState(0)
2702 else:
2699 else:
2703 value = opObj.getParameterValue(parameterName='frequency')
2700 value = opObj.getParameterValue(parameterName='frequency')
2704 value = str(float(value)/1e6)
2701 value = str(float(value)/1e6)
2705 self.volOpRadarfrequency.setText(value)
2702 self.volOpRadarfrequency.setText(value)
2706 self.volOpRadarfrequency.setEnabled(True)
2703 self.volOpRadarfrequency.setEnabled(True)
2707 self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2704 self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2708
2705
2709 opObj = puObj.getOperationObj(name="selectChannels")
2706 opObj = puObj.getOperationObj(name="selectChannels")
2710
2707
2711 if opObj == None:
2708 if opObj == None:
2712 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2709 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2713
2710
2714 if opObj == None:
2711 if opObj == None:
2715 self.volOpChannel.clear()
2712 self.volOpChannel.clear()
2716 self.volOpCebChannels.setCheckState(0)
2713 self.volOpCebChannels.setCheckState(0)
2717 else:
2714 else:
2718 channelEnabled = False
2715 channelEnabled = False
2719 try:
2716 try:
2720 value = opObj.getParameterValue(parameterName='channelList')
2717 value = opObj.getParameterValue(parameterName='channelList')
2721 value = str(value)[1:-1]
2718 value = str(value)[1:-1]
2722 channelEnabled = True
2719 channelEnabled = True
2723 channelMode = 0
2720 channelMode = 0
2724 except:
2721 except:
2725 pass
2722 pass
2726 try:
2723 try:
2727 value = opObj.getParameterValue(parameterName='channelIndexList')
2724 value = opObj.getParameterValue(parameterName='channelIndexList')
2728 value = str(value)[1:-1]
2725 value = str(value)[1:-1]
2729 channelEnabled = True
2726 channelEnabled = True
2730 channelMode = 1
2727 channelMode = 1
2731 except:
2728 except:
2732 pass
2729 pass
2733
2730
2734 if channelEnabled:
2731 if channelEnabled:
2735 self.volOpChannel.setText(value)
2732 self.volOpChannel.setText(value)
2736 self.volOpChannel.setEnabled(True)
2733 self.volOpChannel.setEnabled(True)
2737 self.volOpCebChannels.setCheckState(QtCore.Qt.Checked)
2734 self.volOpCebChannels.setCheckState(QtCore.Qt.Checked)
2738 self.volOpComChannels.setCurrentIndex(channelMode)
2735 self.volOpComChannels.setCurrentIndex(channelMode)
2739
2736
2740 opObj = puObj.getOperationObj(name="selectHeights")
2737 opObj = puObj.getOperationObj(name="selectHeights")
2741 if opObj == None:
2738 if opObj == None:
2742 self.volOpHeights.clear()
2739 self.volOpHeights.clear()
2743 self.volOpCebHeights.setCheckState(0)
2740 self.volOpCebHeights.setCheckState(0)
2744 else:
2741 else:
2745 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2742 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2746 value1 = str(value1)
2743 value1 = str(value1)
2747 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2744 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2748 value2 = str(value2)
2745 value2 = str(value2)
2749 value = value1 + "," + value2
2746 value = value1 + "," + value2
2750 self.volOpHeights.setText(value)
2747 self.volOpHeights.setText(value)
2751 self.volOpHeights.setEnabled(True)
2748 self.volOpHeights.setEnabled(True)
2752 self.volOpCebHeights.setCheckState(QtCore.Qt.Checked)
2749 self.volOpCebHeights.setCheckState(QtCore.Qt.Checked)
2753
2750
2754 opObj = puObj.getOperationObj(name="filterByHeights")
2751 opObj = puObj.getOperationObj(name="filterByHeights")
2755 if opObj == None:
2752 if opObj == None:
2756 self.volOpFilter.clear()
2753 self.volOpFilter.clear()
2757 self.volOpCebFilter.setCheckState(0)
2754 self.volOpCebFilter.setCheckState(0)
2758 else:
2755 else:
2759 value = opObj.getParameterValue(parameterName='window')
2756 value = opObj.getParameterValue(parameterName='window')
2760 value = str(value)
2757 value = str(value)
2761 self.volOpFilter.setText(value)
2758 self.volOpFilter.setText(value)
2762 self.volOpFilter.setEnabled(True)
2759 self.volOpFilter.setEnabled(True)
2763 self.volOpCebFilter.setCheckState(QtCore.Qt.Checked)
2760 self.volOpCebFilter.setCheckState(QtCore.Qt.Checked)
2764
2761
2765 opObj = puObj.getOperationObj(name="ProfileSelector")
2762 opObj = puObj.getOperationObj(name="ProfileSelector")
2766 if opObj == None:
2763 if opObj == None:
2767 self.volOpProfile.clear()
2764 self.volOpProfile.clear()
2768 self.volOpCebProfile.setCheckState(0)
2765 self.volOpCebProfile.setCheckState(0)
2769 else:
2766 else:
2770 for parmObj in opObj.getParameterObjList():
2767 for parmObj in opObj.getParameterObjList():
2771
2768
2772 if parmObj.name == "profileList":
2769 if parmObj.name == "profileList":
2773 value = parmObj.getValue()
2770 value = parmObj.getValue()
2774 value = str(value)[1:-1]
2771 value = str(value)[1:-1]
2775 self.volOpProfile.setText(value)
2772 self.volOpProfile.setText(value)
2776 self.volOpProfile.setEnabled(True)
2773 self.volOpProfile.setEnabled(True)
2777 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2774 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2778 self.volOpComProfile.setCurrentIndex(0)
2775 self.volOpComProfile.setCurrentIndex(0)
2779
2776
2780 if parmObj.name == "profileRangeList":
2777 if parmObj.name == "profileRangeList":
2781 value = parmObj.getValue()
2778 value = parmObj.getValue()
2782 value = str(value)[1:-1]
2779 value = str(value)[1:-1]
2783 self.volOpProfile.setText(value)
2780 self.volOpProfile.setText(value)
2784 self.volOpProfile.setEnabled(True)
2781 self.volOpProfile.setEnabled(True)
2785 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2782 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2786 self.volOpComProfile.setCurrentIndex(1)
2783 self.volOpComProfile.setCurrentIndex(1)
2787
2784
2788 if parmObj.name == "rangeList":
2785 if parmObj.name == "rangeList":
2789 value = parmObj.getValue()
2786 value = parmObj.getValue()
2790 value = str(value)[1:-1]
2787 value = str(value)[1:-1]
2791 self.volOpProfile.setText(value)
2788 self.volOpProfile.setText(value)
2792 self.volOpProfile.setEnabled(True)
2789 self.volOpProfile.setEnabled(True)
2793 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2790 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2794 self.volOpComProfile.setCurrentIndex(2)
2791 self.volOpComProfile.setCurrentIndex(2)
2795
2792
2796 opObj = puObj.getOperationObj(name="Decoder")
2793 opObj = puObj.getOperationObj(name="Decoder")
2797 self.volOpCode.setText("")
2794 self.volOpCode.setText("")
2798 if opObj == None:
2795 if opObj == None:
2799 self.volOpCebDecodification.setCheckState(0)
2796 self.volOpCebDecodification.setCheckState(0)
2800 else:
2797 else:
2801 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
2798 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
2802
2799
2803 parmObj = opObj.getParameterObj('code')
2800 parmObj = opObj.getParameterObj('code')
2804
2801
2805 if parmObj == None:
2802 if parmObj == None:
2806 self.volOpComCode.setCurrentIndex(0)
2803 self.volOpComCode.setCurrentIndex(0)
2807 else:
2804 else:
2808
2805
2809 parmObj1 = opObj.getParameterObj('nCode')
2806 parmObj1 = opObj.getParameterObj('nCode')
2810 parmObj2 = opObj.getParameterObj('nBaud')
2807 parmObj2 = opObj.getParameterObj('nBaud')
2811
2808
2812 if parmObj1 == None or parmObj2 == None:
2809 if parmObj1 == None or parmObj2 == None:
2813 self.volOpComCode.setCurrentIndex(0)
2810 self.volOpComCode.setCurrentIndex(0)
2814 else:
2811 else:
2815 code = ast.literal_eval(str(parmObj.getValue()))
2812 code = ast.literal_eval(str(parmObj.getValue()))
2816 nCode = parmObj1.getValue()
2813 nCode = parmObj1.getValue()
2817 nBaud = parmObj2.getValue()
2814 nBaud = parmObj2.getValue()
2818
2815
2819 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
2816 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
2820
2817
2821 #User defined by default
2818 #User defined by default
2822 self.volOpComCode.setCurrentIndex(13)
2819 self.volOpComCode.setCurrentIndex(13)
2823 self.volOpCode.setText(str(code))
2820 self.volOpCode.setText(str(code))
2824
2821
2825 if nCode == 1:
2822 if nCode == 1:
2826 if nBaud == 3:
2823 if nBaud == 3:
2827 self.volOpComCode.setCurrentIndex(1)
2824 self.volOpComCode.setCurrentIndex(1)
2828 if nBaud == 4:
2825 if nBaud == 4:
2829 self.volOpComCode.setCurrentIndex(2)
2826 self.volOpComCode.setCurrentIndex(2)
2830 if nBaud == 5:
2827 if nBaud == 5:
2831 self.volOpComCode.setCurrentIndex(3)
2828 self.volOpComCode.setCurrentIndex(3)
2832 if nBaud == 7:
2829 if nBaud == 7:
2833 self.volOpComCode.setCurrentIndex(4)
2830 self.volOpComCode.setCurrentIndex(4)
2834 if nBaud == 11:
2831 if nBaud == 11:
2835 self.volOpComCode.setCurrentIndex(5)
2832 self.volOpComCode.setCurrentIndex(5)
2836 if nBaud == 13:
2833 if nBaud == 13:
2837 self.volOpComCode.setCurrentIndex(6)
2834 self.volOpComCode.setCurrentIndex(6)
2838
2835
2839 if nCode == 2:
2836 if nCode == 2:
2840 if nBaud == 3:
2837 if nBaud == 3:
2841 self.volOpComCode.setCurrentIndex(7)
2838 self.volOpComCode.setCurrentIndex(7)
2842 if nBaud == 4:
2839 if nBaud == 4:
2843 self.volOpComCode.setCurrentIndex(8)
2840 self.volOpComCode.setCurrentIndex(8)
2844 if nBaud == 5:
2841 if nBaud == 5:
2845 self.volOpComCode.setCurrentIndex(9)
2842 self.volOpComCode.setCurrentIndex(9)
2846 if nBaud == 7:
2843 if nBaud == 7:
2847 self.volOpComCode.setCurrentIndex(10)
2844 self.volOpComCode.setCurrentIndex(10)
2848 if nBaud == 11:
2845 if nBaud == 11:
2849 self.volOpComCode.setCurrentIndex(11)
2846 self.volOpComCode.setCurrentIndex(11)
2850 if nBaud == 13:
2847 if nBaud == 13:
2851 self.volOpComCode.setCurrentIndex(12)
2848 self.volOpComCode.setCurrentIndex(12)
2852
2849
2853
2850
2854 opObj = puObj.getOperationObj(name="deFlip")
2851 opObj = puObj.getOperationObj(name="deFlip")
2855 if opObj == None:
2852 if opObj == None:
2856 self.volOpFlip.clear()
2853 self.volOpFlip.clear()
2857 self.volOpFlip.setEnabled(False)
2854 self.volOpFlip.setEnabled(False)
2858 self.volOpCebFlip.setCheckState(0)
2855 self.volOpCebFlip.setCheckState(0)
2859 else:
2856 else:
2860 try:
2857 try:
2861 value = opObj.getParameterValue(parameterName='channelList')
2858 value = opObj.getParameterValue(parameterName='channelList')
2862 value = str(value)[1:-1]
2859 value = str(value)[1:-1]
2863 except:
2860 except:
2864 value = ""
2861 value = ""
2865
2862
2866 self.volOpFlip.setText(value)
2863 self.volOpFlip.setText(value)
2867 self.volOpFlip.setEnabled(True)
2864 self.volOpFlip.setEnabled(True)
2868 self.volOpCebFlip.setCheckState(QtCore.Qt.Checked)
2865 self.volOpCebFlip.setCheckState(QtCore.Qt.Checked)
2869
2866
2870 opObj = puObj.getOperationObj(name="CohInt")
2867 opObj = puObj.getOperationObj(name="CohInt")
2871 if opObj == None:
2868 if opObj == None:
2872 self.volOpCohInt.clear()
2869 self.volOpCohInt.clear()
2873 self.volOpCebCohInt.setCheckState(0)
2870 self.volOpCebCohInt.setCheckState(0)
2874 else:
2871 else:
2875 value = opObj.getParameterValue(parameterName='n')
2872 value = opObj.getParameterValue(parameterName='n')
2876 self.volOpCohInt.setText(str(value))
2873 self.volOpCohInt.setText(str(value))
2877 self.volOpCohInt.setEnabled(True)
2874 self.volOpCohInt.setEnabled(True)
2878 self.volOpCebCohInt.setCheckState(QtCore.Qt.Checked)
2875 self.volOpCebCohInt.setCheckState(QtCore.Qt.Checked)
2879
2876
2880 opObj = puObj.getOperationObj(name='Scope')
2877 opObj = puObj.getOperationObj(name='Scope')
2881 if opObj == None:
2878 if opObj == None:
2882 self.volGraphCebshow.setCheckState(0)
2879 self.volGraphCebshow.setCheckState(0)
2883 else:
2880 else:
2884 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
2881 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
2885
2882
2886 parmObj = opObj.getParameterObj(parameterName='channelList')
2883 parmObj = opObj.getParameterObj(parameterName='channelList')
2887
2884
2888 if parmObj == None:
2885 if parmObj == None:
2889 self.volGraphChannelList.clear()
2886 self.volGraphChannelList.clear()
2890 else:
2887 else:
2891 value = parmObj.getValue()
2888 value = parmObj.getValue()
2892 value = str(value)
2889 value = str(value)
2893 self.volGraphChannelList.setText(value)
2890 self.volGraphChannelList.setText(value)
2894 self.volOpProfile.setEnabled(True)
2891 self.volOpProfile.setEnabled(True)
2895
2892
2896 parmObj1 = opObj.getParameterObj(parameterName='xmin')
2893 parmObj1 = opObj.getParameterObj(parameterName='xmin')
2897 parmObj2 = opObj.getParameterObj(parameterName='xmax')
2894 parmObj2 = opObj.getParameterObj(parameterName='xmax')
2898
2895
2899 if parmObj1 == None or parmObj2 ==None:
2896 if parmObj1 == None or parmObj2 ==None:
2900 self.volGraphfreqrange.clear()
2897 self.volGraphfreqrange.clear()
2901 else:
2898 else:
2902 value1 = parmObj1.getValue()
2899 value1 = parmObj1.getValue()
2903 value1 = str(value1)
2900 value1 = str(value1)
2904 value2 = parmObj2.getValue()
2901 value2 = parmObj2.getValue()
2905 value2 = str(value2)
2902 value2 = str(value2)
2906 value = value1 + "," + value2
2903 value = value1 + "," + value2
2907 self.volGraphfreqrange.setText(value)
2904 self.volGraphfreqrange.setText(value)
2908
2905
2909 parmObj1 = opObj.getParameterObj(parameterName='ymin')
2906 parmObj1 = opObj.getParameterObj(parameterName='ymin')
2910 parmObj2 = opObj.getParameterObj(parameterName='ymax')
2907 parmObj2 = opObj.getParameterObj(parameterName='ymax')
2911
2908
2912 if parmObj1 == None or parmObj2 ==None:
2909 if parmObj1 == None or parmObj2 ==None:
2913 self.volGraphHeightrange.clear()
2910 self.volGraphHeightrange.clear()
2914 else:
2911 else:
2915 value1 = parmObj1.getValue()
2912 value1 = parmObj1.getValue()
2916 value1 = str(value1)
2913 value1 = str(value1)
2917 value2 = parmObj2.getValue()
2914 value2 = parmObj2.getValue()
2918 value2 = str(value2)
2915 value2 = str(value2)
2919 value = value1 + "," + value2
2916 value = value1 + "," + value2
2920 value2 = str(value2)
2917 value2 = str(value2)
2921 self.volGraphHeightrange.setText(value)
2918 self.volGraphHeightrange.setText(value)
2922
2919
2923 parmObj = opObj.getParameterObj(parameterName='save')
2920 parmObj = opObj.getParameterObj(parameterName='save')
2924
2921
2925 if parmObj == None:
2922 if parmObj == None:
2926 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2923 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2927 else:
2924 else:
2928 value = parmObj.getValue()
2925 value = parmObj.getValue()
2929 if int(value):
2926 if int(value):
2930 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
2927 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
2931 else:
2928 else:
2932 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2929 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2933
2930
2934 parmObj = opObj.getParameterObj(parameterName='figpath')
2931 parmObj = opObj.getParameterObj(parameterName='figpath')
2935 if parmObj == None:
2932 if parmObj == None:
2936 self.volGraphPath.clear()
2933 self.volGraphPath.clear()
2937 else:
2934 else:
2938 value = parmObj.getValue()
2935 value = parmObj.getValue()
2939 path = str(value)
2936 path = str(value)
2940 self.volGraphPath.setText(path)
2937 self.volGraphPath.setText(path)
2941
2938
2942 parmObj = opObj.getParameterObj(parameterName='figfile')
2939 parmObj = opObj.getParameterObj(parameterName='figfile')
2943 if parmObj == None:
2940 if parmObj == None:
2944 self.volGraphPrefix.clear()
2941 self.volGraphPrefix.clear()
2945 else:
2942 else:
2946 value = parmObj.getValue()
2943 value = parmObj.getValue()
2947 figfile = str(value)
2944 figfile = str(value)
2948 self.volGraphPrefix.setText(figfile)
2945 self.volGraphPrefix.setText(figfile)
2949
2946
2950 # outputVoltageWrite
2947 # outputVoltageWrite
2951 opObj = puObj.getOperationObj(name='VoltageWriter')
2948 opObj = puObj.getOperationObj(name='VoltageWriter')
2952
2949
2953 if opObj == None:
2950 if opObj == None:
2954 self.volOutputPath.clear()
2951 self.volOutputPath.clear()
2955 self.volOutputblocksperfile.clear()
2952 self.volOutputblocksperfile.clear()
2956 self.volOutputprofilesperblock.clear()
2953 self.volOutputprofilesperblock.clear()
2957 else:
2954 else:
2958 parmObj = opObj.getParameterObj(parameterName='path')
2955 parmObj = opObj.getParameterObj(parameterName='path')
2959 if parmObj == None:
2956 if parmObj == None:
2960 self.volOutputPath.clear()
2957 self.volOutputPath.clear()
2961 else:
2958 else:
2962 value = parmObj.getValue()
2959 value = parmObj.getValue()
2963 path = str(value)
2960 path = str(value)
2964 self.volOutputPath.setText(path)
2961 self.volOutputPath.setText(path)
2965
2962
2966 parmObj = opObj.getParameterObj(parameterName='blocksPerFile')
2963 parmObj = opObj.getParameterObj(parameterName='blocksPerFile')
2967 if parmObj == None:
2964 if parmObj == None:
2968 self.volOutputblocksperfile.clear()
2965 self.volOutputblocksperfile.clear()
2969 else:
2966 else:
2970 value = parmObj.getValue()
2967 value = parmObj.getValue()
2971 blocksperfile = str(value)
2968 blocksperfile = str(value)
2972 self.volOutputblocksperfile.setText(blocksperfile)
2969 self.volOutputblocksperfile.setText(blocksperfile)
2973
2970
2974 parmObj = opObj.getParameterObj(parameterName='profilesPerBlock')
2971 parmObj = opObj.getParameterObj(parameterName='profilesPerBlock')
2975 if parmObj == None:
2972 if parmObj == None:
2976 self.volOutputprofilesperblock.clear()
2973 self.volOutputprofilesperblock.clear()
2977 else:
2974 else:
2978 value = parmObj.getValue()
2975 value = parmObj.getValue()
2979 profilesPerBlock = str(value)
2976 profilesPerBlock = str(value)
2980 self.volOutputprofilesperblock.setText(profilesPerBlock)
2977 self.volOutputprofilesperblock.setText(profilesPerBlock)
2981
2978
2982 return
2979 return
2983
2980
2984 def __refreshSpectraWindow(self, puObj):
2981 def __refreshSpectraWindow(self, puObj):
2985
2982
2986 inputId = puObj.getInputId()
2983 inputId = puObj.getInputId()
2987 inputPUObj = self.__puObjDict[inputId]
2984 inputPUObj = self.__puObjDict[inputId]
2988
2985
2989 if inputPUObj.datatype == 'Voltage':
2986 if inputPUObj.datatype == 'Voltage':
2990 self.specOpnFFTpoints.setEnabled(True)
2987 self.specOpnFFTpoints.setEnabled(True)
2991 self.specOpProfiles.setEnabled(True)
2988 self.specOpProfiles.setEnabled(True)
2992 self.specOpippFactor.setEnabled(True)
2989 self.specOpippFactor.setEnabled(True)
2993 else:
2990 else:
2994 self.specOpnFFTpoints.setEnabled(False)
2991 self.specOpnFFTpoints.setEnabled(False)
2995 self.specOpProfiles.setEnabled(False)
2992 self.specOpProfiles.setEnabled(False)
2996 self.specOpippFactor.setEnabled(False)
2993 self.specOpippFactor.setEnabled(False)
2997
2994
2998 opObj = puObj.getOperationObj(name='setRadarFrequency')
2995 opObj = puObj.getOperationObj(name='setRadarFrequency')
2999 if opObj == None:
2996 if opObj == None:
3000 self.specOpRadarfrequency.clear()
2997 self.specOpRadarfrequency.clear()
3001 self.specOpCebRadarfrequency.setCheckState(0)
2998 self.specOpCebRadarfrequency.setCheckState(0)
3002 else:
2999 else:
3003 value = opObj.getParameterValue(parameterName='frequency')
3000 value = opObj.getParameterValue(parameterName='frequency')
3004 value = str(float(value)/1e6)
3001 value = str(float(value)/1e6)
3005 self.specOpRadarfrequency.setText(value)
3002 self.specOpRadarfrequency.setText(value)
3006 self.specOpRadarfrequency.setEnabled(True)
3003 self.specOpRadarfrequency.setEnabled(True)
3007 self.specOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
3004 self.specOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
3008
3005
3009 opObj = puObj.getOperationObj(name="run")
3006 opObj = puObj.getOperationObj(name="run")
3010 if opObj == None:
3007 if opObj == None:
3011 self.specOpnFFTpoints.clear()
3008 self.specOpnFFTpoints.clear()
3012 self.specOpProfiles.clear()
3009 self.specOpProfiles.clear()
3013 self.specOpippFactor.clear()
3010 self.specOpippFactor.clear()
3014 else:
3011 else:
3015 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
3012 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
3016 if parmObj == None:
3013 if parmObj == None:
3017 self.specOpnFFTpoints.clear()
3014 self.specOpnFFTpoints.clear()
3018 else:
3015 else:
3019 self.specOpnFFTpoints.setEnabled(True)
3016 self.specOpnFFTpoints.setEnabled(True)
3020 value = opObj.getParameterValue(parameterName='nFFTPoints')
3017 value = opObj.getParameterValue(parameterName='nFFTPoints')
3021 self.specOpnFFTpoints.setText(str(value))
3018 self.specOpnFFTpoints.setText(str(value))
3022
3019
3023 parmObj = opObj.getParameterObj(parameterName='nProfiles')
3020 parmObj = opObj.getParameterObj(parameterName='nProfiles')
3024 if parmObj == None:
3021 if parmObj == None:
3025 self.specOpProfiles.clear()
3022 self.specOpProfiles.clear()
3026 else:
3023 else:
3027 self.specOpProfiles.setEnabled(True)
3024 self.specOpProfiles.setEnabled(True)
3028 value = opObj.getParameterValue(parameterName='nProfiles')
3025 value = opObj.getParameterValue(parameterName='nProfiles')
3029 self.specOpProfiles.setText(str(value))
3026 self.specOpProfiles.setText(str(value))
3030
3027
3031 parmObj = opObj.getParameterObj(parameterName='ippFactor')
3028 parmObj = opObj.getParameterObj(parameterName='ippFactor')
3032 if parmObj == None:
3029 if parmObj == None:
3033 self.specOpippFactor.clear()
3030 self.specOpippFactor.clear()
3034 else:
3031 else:
3035 self.specOpippFactor.setEnabled(True)
3032 self.specOpippFactor.setEnabled(True)
3036 value = opObj.getParameterValue(parameterName='ippFactor')
3033 value = opObj.getParameterValue(parameterName='ippFactor')
3037 self.specOpippFactor.setText(str(value))
3034 self.specOpippFactor.setText(str(value))
3038
3035
3039 opObj = puObj.getOperationObj(name="run")
3036 opObj = puObj.getOperationObj(name="run")
3040 if opObj == None:
3037 if opObj == None:
3041 self.specOppairsList.clear()
3038 self.specOppairsList.clear()
3042 self.specOpCebCrossSpectra.setCheckState(0)
3039 self.specOpCebCrossSpectra.setCheckState(0)
3043 else:
3040 else:
3044 parmObj = opObj.getParameterObj(parameterName='pairsList')
3041 parmObj = opObj.getParameterObj(parameterName='pairsList')
3045 if parmObj == None:
3042 if parmObj == None:
3046 self.specOppairsList.clear()
3043 self.specOppairsList.clear()
3047 self.specOpCebCrossSpectra.setCheckState(0)
3044 self.specOpCebCrossSpectra.setCheckState(0)
3048 else:
3045 else:
3049 value = opObj.getParameterValue(parameterName='pairsList')
3046 value = opObj.getParameterValue(parameterName='pairsList')
3050 value = str(value)[1:-1]
3047 value = str(value)[1:-1]
3051 self.specOppairsList.setText(str(value))
3048 self.specOppairsList.setText(str(value))
3052 self.specOppairsList.setEnabled(True)
3049 self.specOppairsList.setEnabled(True)
3053 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
3050 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
3054
3051
3055 opObj = puObj.getOperationObj(name="selectChannels")
3052 opObj = puObj.getOperationObj(name="selectChannels")
3056
3053
3057 if opObj == None:
3054 if opObj == None:
3058 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
3055 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
3059
3056
3060 if opObj == None:
3057 if opObj == None:
3061 self.specOpChannel.clear()
3058 self.specOpChannel.clear()
3062 self.specOpCebChannel.setCheckState(0)
3059 self.specOpCebChannel.setCheckState(0)
3063 else:
3060 else:
3064 channelEnabled = False
3061 channelEnabled = False
3065 try:
3062 try:
3066 value = opObj.getParameterValue(parameterName='channelList')
3063 value = opObj.getParameterValue(parameterName='channelList')
3067 value = str(value)[1:-1]
3064 value = str(value)[1:-1]
3068 channelEnabled = True
3065 channelEnabled = True
3069 channelMode = 0
3066 channelMode = 0
3070 except:
3067 except:
3071 pass
3068 pass
3072 try:
3069 try:
3073 value = opObj.getParameterValue(parameterName='channelIndexList')
3070 value = opObj.getParameterValue(parameterName='channelIndexList')
3074 value = str(value)[1:-1]
3071 value = str(value)[1:-1]
3075 channelEnabled = True
3072 channelEnabled = True
3076 channelMode = 1
3073 channelMode = 1
3077 except:
3074 except:
3078 pass
3075 pass
3079
3076
3080 if channelEnabled:
3077 if channelEnabled:
3081 self.specOpChannel.setText(value)
3078 self.specOpChannel.setText(value)
3082 self.specOpChannel.setEnabled(True)
3079 self.specOpChannel.setEnabled(True)
3083 self.specOpCebChannel.setCheckState(QtCore.Qt.Checked)
3080 self.specOpCebChannel.setCheckState(QtCore.Qt.Checked)
3084 self.specOpComChannel.setCurrentIndex(channelMode)
3081 self.specOpComChannel.setCurrentIndex(channelMode)
3085
3082
3086 opObj = puObj.getOperationObj(name="selectHeights")
3083 opObj = puObj.getOperationObj(name="selectHeights")
3087 if opObj == None:
3084 if opObj == None:
3088 self.specOpHeights.clear()
3085 self.specOpHeights.clear()
3089 self.specOpCebHeights.setCheckState(0)
3086 self.specOpCebHeights.setCheckState(0)
3090 else:
3087 else:
3091 value1 = int(opObj.getParameterValue(parameterName='minHei'))
3088 value1 = int(opObj.getParameterValue(parameterName='minHei'))
3092 value1 = str(value1)
3089 value1 = str(value1)
3093 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
3090 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
3094 value2 = str(value2)
3091 value2 = str(value2)
3095 value = value1 + "," + value2
3092 value = value1 + "," + value2
3096 self.specOpHeights.setText(value)
3093 self.specOpHeights.setText(value)
3097 self.specOpHeights.setEnabled(True)
3094 self.specOpHeights.setEnabled(True)
3098 self.specOpCebHeights.setCheckState(QtCore.Qt.Checked)
3095 self.specOpCebHeights.setCheckState(QtCore.Qt.Checked)
3099
3096
3100 opObj = puObj.getOperationObj(name="IncohInt")
3097 opObj = puObj.getOperationObj(name="IncohInt")
3101 if opObj == None:
3098 if opObj == None:
3102 self.specOpIncoherent.clear()
3099 self.specOpIncoherent.clear()
3103 self.specOpCebIncoherent.setCheckState(0)
3100 self.specOpCebIncoherent.setCheckState(0)
3104 else:
3101 else:
3105 for parmObj in opObj.getParameterObjList():
3102 for parmObj in opObj.getParameterObjList():
3106 if parmObj.name == 'timeInterval':
3103 if parmObj.name == 'timeInterval':
3107 value = opObj.getParameterValue(parameterName='timeInterval')
3104 value = opObj.getParameterValue(parameterName='timeInterval')
3108 value = float(value)
3105 value = float(value)
3109 self.specOpIncoherent.setText(str(value))
3106 self.specOpIncoherent.setText(str(value))
3110 self.specOpIncoherent.setEnabled(True)
3107 self.specOpIncoherent.setEnabled(True)
3111 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3108 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3112 self.specOpCobIncInt.setCurrentIndex(0)
3109 self.specOpCobIncInt.setCurrentIndex(0)
3113
3110
3114 if parmObj.name == 'n':
3111 if parmObj.name == 'n':
3115 value = opObj.getParameterValue(parameterName='n')
3112 value = opObj.getParameterValue(parameterName='n')
3116 value = float(value)
3113 value = float(value)
3117 self.specOpIncoherent.setText(str(value))
3114 self.specOpIncoherent.setText(str(value))
3118 self.specOpIncoherent.setEnabled(True)
3115 self.specOpIncoherent.setEnabled(True)
3119 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3116 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3120 self.specOpCobIncInt.setCurrentIndex(1)
3117 self.specOpCobIncInt.setCurrentIndex(1)
3121
3118
3122 opObj = puObj.getOperationObj(name="removeDC")
3119 opObj = puObj.getOperationObj(name="removeDC")
3123 if opObj == None:
3120 if opObj == None:
3124 self.specOpCebRemoveDC.setCheckState(0)
3121 self.specOpCebRemoveDC.setCheckState(0)
3125 else:
3122 else:
3126 self.specOpCebRemoveDC.setCheckState(QtCore.Qt.Checked)
3123 self.specOpCebRemoveDC.setCheckState(QtCore.Qt.Checked)
3127 value = opObj.getParameterValue(parameterName='mode')
3124 value = opObj.getParameterValue(parameterName='mode')
3128 if value == 1:
3125 if value == 1:
3129 self.specOpComRemoveDC.setCurrentIndex(0)
3126 self.specOpComRemoveDC.setCurrentIndex(0)
3130 elif value == 2:
3127 elif value == 2:
3131 self.specOpComRemoveDC.setCurrentIndex(1)
3128 self.specOpComRemoveDC.setCurrentIndex(1)
3132
3129
3133 opObj = puObj.getOperationObj(name="removeInterference")
3130 opObj = puObj.getOperationObj(name="removeInterference")
3134 if opObj == None:
3131 if opObj == None:
3135 self.specOpCebRemoveInt.setCheckState(0)
3132 self.specOpCebRemoveInt.setCheckState(0)
3136 else:
3133 else:
3137 self.specOpCebRemoveInt.setCheckState(QtCore.Qt.Checked)
3134 self.specOpCebRemoveInt.setCheckState(QtCore.Qt.Checked)
3138
3135
3139 opObj = puObj.getOperationObj(name='getNoise')
3136 opObj = puObj.getOperationObj(name='getNoise')
3140 if opObj == None:
3137 if opObj == None:
3141 self.specOpCebgetNoise.setCheckState(0)
3138 self.specOpCebgetNoise.setCheckState(0)
3142 self.specOpgetNoise.clear()
3139 self.specOpgetNoise.clear()
3143 else:
3140 else:
3144 self.specOpCebgetNoise.setCheckState(QtCore.Qt.Checked)
3141 self.specOpCebgetNoise.setCheckState(QtCore.Qt.Checked)
3145 parmObj = opObj.getParameterObj(parameterName='minHei')
3142 parmObj = opObj.getParameterObj(parameterName='minHei')
3146 if parmObj == None:
3143 if parmObj == None:
3147 self.specOpgetNoise.clear()
3144 self.specOpgetNoise.clear()
3148 value1 = None
3145 value1 = None
3149 else:
3146 else:
3150 value1 = opObj.getParameterValue(parameterName='minHei')
3147 value1 = opObj.getParameterValue(parameterName='minHei')
3151 value1 = str(value1)
3148 value1 = str(value1)
3152 parmObj = opObj.getParameterObj(parameterName='maxHei')
3149 parmObj = opObj.getParameterObj(parameterName='maxHei')
3153 if parmObj == None:
3150 if parmObj == None:
3154 value2 = None
3151 value2 = None
3155 value = value1
3152 value = value1
3156 self.specOpgetNoise.setText(value)
3153 self.specOpgetNoise.setText(value)
3157 self.specOpgetNoise.setEnabled(True)
3154 self.specOpgetNoise.setEnabled(True)
3158 else:
3155 else:
3159 value2 = opObj.getParameterValue(parameterName='maxHei')
3156 value2 = opObj.getParameterValue(parameterName='maxHei')
3160 value2 = str(value2)
3157 value2 = str(value2)
3161 parmObj = opObj.getParameterObj(parameterName='minVel')
3158 parmObj = opObj.getParameterObj(parameterName='minVel')
3162 if parmObj == None:
3159 if parmObj == None:
3163 value3 = None
3160 value3 = None
3164 value = value1 + "," + value2
3161 value = value1 + "," + value2
3165 self.specOpgetNoise.setText(value)
3162 self.specOpgetNoise.setText(value)
3166 self.specOpgetNoise.setEnabled(True)
3163 self.specOpgetNoise.setEnabled(True)
3167 else:
3164 else:
3168 value3 = opObj.getParameterValue(parameterName='minVel')
3165 value3 = opObj.getParameterValue(parameterName='minVel')
3169 value3 = str(value3)
3166 value3 = str(value3)
3170 parmObj = opObj.getParameterObj(parameterName='maxVel')
3167 parmObj = opObj.getParameterObj(parameterName='maxVel')
3171 if parmObj == None:
3168 if parmObj == None:
3172 value4 = None
3169 value4 = None
3173 value = value1 + "," + value2 + "," + value3
3170 value = value1 + "," + value2 + "," + value3
3174 self.specOpgetNoise.setText(value)
3171 self.specOpgetNoise.setText(value)
3175 self.specOpgetNoise.setEnabled(True)
3172 self.specOpgetNoise.setEnabled(True)
3176 else:
3173 else:
3177 value4 = opObj.getParameterValue(parameterName='maxVel')
3174 value4 = opObj.getParameterValue(parameterName='maxVel')
3178 value4 = str(value4)
3175 value4 = str(value4)
3179 value = value1 + "," + value2 + "," + value3 + ',' + value4
3176 value = value1 + "," + value2 + "," + value3 + ',' + value4
3180 self.specOpgetNoise.setText(value)
3177 self.specOpgetNoise.setText(value)
3181 self.specOpgetNoise.setEnabled(True)
3178 self.specOpgetNoise.setEnabled(True)
3182
3179
3183 self.specGraphPath.clear()
3180 self.specGraphPath.clear()
3184 self.specGraphPrefix.clear()
3181 self.specGraphPrefix.clear()
3185 self.specGgraphFreq.clear()
3182 self.specGgraphFreq.clear()
3186 self.specGgraphHeight.clear()
3183 self.specGgraphHeight.clear()
3187 self.specGgraphDbsrange.clear()
3184 self.specGgraphDbsrange.clear()
3188 self.specGgraphmagnitud.clear()
3185 self.specGgraphmagnitud.clear()
3189 self.specGgraphPhase.clear()
3186 self.specGgraphPhase.clear()
3190 self.specGgraphChannelList.clear()
3187 self.specGgraphChannelList.clear()
3191 self.specGgraphTminTmax.clear()
3188 self.specGgraphTminTmax.clear()
3192 self.specGgraphTimeRange.clear()
3189 self.specGgraphTimeRange.clear()
3193 self.specGgraphftpratio.clear()
3190 self.specGgraphftpratio.clear()
3194
3191
3195 opObj = puObj.getOperationObj(name='SpectraPlot')
3192 opObj = puObj.getOperationObj(name='SpectraPlot')
3196
3193
3197 if opObj == None:
3194 if opObj == None:
3198 self.specGraphCebSpectraplot.setCheckState(0)
3195 self.specGraphCebSpectraplot.setCheckState(0)
3199 self.specGraphSaveSpectra.setCheckState(0)
3196 self.specGraphSaveSpectra.setCheckState(0)
3200 self.specGraphftpSpectra.setCheckState(0)
3197 self.specGraphftpSpectra.setCheckState(0)
3201 else:
3198 else:
3202 operationSpectraPlot = "Enable"
3199 operationSpectraPlot = "Enable"
3203 self.specGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3200 self.specGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3204 parmObj = opObj.getParameterObj(parameterName='channelList')
3201 parmObj = opObj.getParameterObj(parameterName='channelList')
3205 if parmObj == None:
3202 if parmObj == None:
3206 self.specGgraphChannelList.clear()
3203 self.specGgraphChannelList.clear()
3207 else:
3204 else:
3208 value = opObj.getParameterValue(parameterName='channelList')
3205 value = opObj.getParameterValue(parameterName='channelList')
3209 channelListSpectraPlot = str(value)[1:-1]
3206 channelListSpectraPlot = str(value)[1:-1]
3210 self.specGgraphChannelList.setText(channelListSpectraPlot)
3207 self.specGgraphChannelList.setText(channelListSpectraPlot)
3211 self.specGgraphChannelList.setEnabled(True)
3208 self.specGgraphChannelList.setEnabled(True)
3212
3209
3213 parmObj = opObj.getParameterObj(parameterName='xmin')
3210 parmObj = opObj.getParameterObj(parameterName='xmin')
3214 if parmObj == None:
3211 if parmObj == None:
3215 self.specGgraphFreq.clear()
3212 self.specGgraphFreq.clear()
3216 else:
3213 else:
3217 value1 = opObj.getParameterValue(parameterName='xmin')
3214 value1 = opObj.getParameterValue(parameterName='xmin')
3218 value1 = str(value1)
3215 value1 = str(value1)
3219 value2 = opObj.getParameterValue(parameterName='xmax')
3216 value2 = opObj.getParameterValue(parameterName='xmax')
3220 value2 = str(value2)
3217 value2 = str(value2)
3221 value = value1 + "," + value2
3218 value = value1 + "," + value2
3222 self.specGgraphFreq.setText(value)
3219 self.specGgraphFreq.setText(value)
3223 self.specGgraphFreq.setEnabled(True)
3220 self.specGgraphFreq.setEnabled(True)
3224
3221
3225 parmObj = opObj.getParameterObj(parameterName='ymin')
3222 parmObj = opObj.getParameterObj(parameterName='ymin')
3226 if parmObj == None:
3223 if parmObj == None:
3227 self.specGgraphHeight.clear()
3224 self.specGgraphHeight.clear()
3228 else:
3225 else:
3229 value1 = opObj.getParameterValue(parameterName='ymin')
3226 value1 = opObj.getParameterValue(parameterName='ymin')
3230 value1 = str(value1)
3227 value1 = str(value1)
3231 value2 = opObj.getParameterValue(parameterName='ymax')
3228 value2 = opObj.getParameterValue(parameterName='ymax')
3232 value2 = str(value2)
3229 value2 = str(value2)
3233 value = value1 + "," + value2
3230 value = value1 + "," + value2
3234 self.specGgraphHeight.setText(value)
3231 self.specGgraphHeight.setText(value)
3235 self.specGgraphHeight.setEnabled(True)
3232 self.specGgraphHeight.setEnabled(True)
3236
3233
3237 parmObj = opObj.getParameterObj(parameterName='zmin')
3234 parmObj = opObj.getParameterObj(parameterName='zmin')
3238 if parmObj == None:
3235 if parmObj == None:
3239 self.specGgraphDbsrange.clear()
3236 self.specGgraphDbsrange.clear()
3240 else:
3237 else:
3241 value1 = opObj.getParameterValue(parameterName='zmin')
3238 value1 = opObj.getParameterValue(parameterName='zmin')
3242 value1 = str(value1)
3239 value1 = str(value1)
3243 value2 = opObj.getParameterValue(parameterName='zmax')
3240 value2 = opObj.getParameterValue(parameterName='zmax')
3244 value2 = str(value2)
3241 value2 = str(value2)
3245 value = value1 + "," + value2
3242 value = value1 + "," + value2
3246 self.specGgraphDbsrange.setText(value)
3243 self.specGgraphDbsrange.setText(value)
3247 self.specGgraphDbsrange.setEnabled(True)
3244 self.specGgraphDbsrange.setEnabled(True)
3248
3245
3249 parmObj = opObj.getParameterObj(parameterName="save")
3246 parmObj = opObj.getParameterObj(parameterName="save")
3250 if parmObj == None:
3247 if parmObj == None:
3251 self.specGraphSaveSpectra.setCheckState(0)
3248 self.specGraphSaveSpectra.setCheckState(0)
3252 else:
3249 else:
3253 self.specGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3250 self.specGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3254
3251
3255 parmObj = opObj.getParameterObj(parameterName="ftp")
3252 parmObj = opObj.getParameterObj(parameterName="ftp")
3256 if parmObj == None:
3253 if parmObj == None:
3257 self.specGraphftpSpectra.setCheckState(0)
3254 self.specGraphftpSpectra.setCheckState(0)
3258 else:
3255 else:
3259 self.specGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3256 self.specGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3260
3257
3261 parmObj = opObj.getParameterObj(parameterName="figpath")
3258 parmObj = opObj.getParameterObj(parameterName="figpath")
3262 if parmObj:
3259 if parmObj:
3263 value = parmObj.getValue()
3260 value = parmObj.getValue()
3264 self.specGraphPath.setText(value)
3261 self.specGraphPath.setText(value)
3265
3262
3266 parmObj = opObj.getParameterObj(parameterName="wr_period")
3263 parmObj = opObj.getParameterObj(parameterName="wr_period")
3267 if parmObj:
3264 if parmObj:
3268 value = parmObj.getValue()
3265 value = parmObj.getValue()
3269 self.specGgraphftpratio.setText(str(value))
3266 self.specGgraphftpratio.setText(str(value))
3270
3267
3271 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
3268 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
3272
3269
3273 if opObj == None:
3270 if opObj == None:
3274 self.specGraphCebCrossSpectraplot.setCheckState(0)
3271 self.specGraphCebCrossSpectraplot.setCheckState(0)
3275 self.specGraphSaveCross.setCheckState(0)
3272 self.specGraphSaveCross.setCheckState(0)
3276 self.specGraphftpCross.setCheckState(0)
3273 self.specGraphftpCross.setCheckState(0)
3277 else:
3274 else:
3278 operationCrossSpectraPlot = "Enable"
3275 operationCrossSpectraPlot = "Enable"
3279 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
3276 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
3280 parmObj = opObj.getParameterObj(parameterName='xmin')
3277 parmObj = opObj.getParameterObj(parameterName='xmin')
3281 if parmObj == None:
3278 if parmObj == None:
3282 self.specGgraphFreq.clear()
3279 self.specGgraphFreq.clear()
3283 else:
3280 else:
3284 value1 = opObj.getParameterValue(parameterName='xmin')
3281 value1 = opObj.getParameterValue(parameterName='xmin')
3285 value1 = str(value1)
3282 value1 = str(value1)
3286 value2 = opObj.getParameterValue(parameterName='xmax')
3283 value2 = opObj.getParameterValue(parameterName='xmax')
3287 value2 = str(value2)
3284 value2 = str(value2)
3288 value = value1 + "," + value2
3285 value = value1 + "," + value2
3289 self.specGgraphFreq.setText(value)
3286 self.specGgraphFreq.setText(value)
3290 self.specGgraphFreq.setEnabled(True)
3287 self.specGgraphFreq.setEnabled(True)
3291
3288
3292 parmObj = opObj.getParameterObj(parameterName='ymin')
3289 parmObj = opObj.getParameterObj(parameterName='ymin')
3293 if parmObj == None:
3290 if parmObj == None:
3294 self.specGgraphHeight.clear()
3291 self.specGgraphHeight.clear()
3295 else:
3292 else:
3296 value1 = opObj.getParameterValue(parameterName='ymin')
3293 value1 = opObj.getParameterValue(parameterName='ymin')
3297 value1 = str(value1)
3294 value1 = str(value1)
3298 value2 = opObj.getParameterValue(parameterName='ymax')
3295 value2 = opObj.getParameterValue(parameterName='ymax')
3299 value2 = str(value2)
3296 value2 = str(value2)
3300 value = value1 + "," + value2
3297 value = value1 + "," + value2
3301 self.specGgraphHeight.setText(value)
3298 self.specGgraphHeight.setText(value)
3302 self.specGgraphHeight.setEnabled(True)
3299 self.specGgraphHeight.setEnabled(True)
3303
3300
3304 parmObj = opObj.getParameterObj(parameterName='zmin')
3301 parmObj = opObj.getParameterObj(parameterName='zmin')
3305 if parmObj == None:
3302 if parmObj == None:
3306 self.specGgraphDbsrange.clear()
3303 self.specGgraphDbsrange.clear()
3307 else:
3304 else:
3308 value1 = opObj.getParameterValue(parameterName='zmin')
3305 value1 = opObj.getParameterValue(parameterName='zmin')
3309 value1 = str(value1)
3306 value1 = str(value1)
3310 value2 = opObj.getParameterValue(parameterName='zmax')
3307 value2 = opObj.getParameterValue(parameterName='zmax')
3311 value2 = str(value2)
3308 value2 = str(value2)
3312 value = value1 + "," + value2
3309 value = value1 + "," + value2
3313 self.specGgraphDbsrange.setText(value)
3310 self.specGgraphDbsrange.setText(value)
3314 self.specGgraphDbsrange.setEnabled(True)
3311 self.specGgraphDbsrange.setEnabled(True)
3315
3312
3316 parmObj = opObj.getParameterObj(parameterName='coh_min')
3313 parmObj = opObj.getParameterObj(parameterName='coh_min')
3317 if parmObj == None:
3314 if parmObj == None:
3318 self.specGgraphmagnitud.clear()
3315 self.specGgraphmagnitud.clear()
3319 else:
3316 else:
3320 value1 = opObj.getParameterValue(parameterName='coh_min')
3317 value1 = opObj.getParameterValue(parameterName='coh_min')
3321 value1 = str(value1)
3318 value1 = str(value1)
3322 value2 = opObj.getParameterValue(parameterName='coh_max')
3319 value2 = opObj.getParameterValue(parameterName='coh_max')
3323 value2 = str(value2)
3320 value2 = str(value2)
3324 value = value1 + "," + value2
3321 value = value1 + "," + value2
3325 self.specGgraphmagnitud.setText(value)
3322 self.specGgraphmagnitud.setText(value)
3326 self.specGgraphmagnitud.setEnabled(True)
3323 self.specGgraphmagnitud.setEnabled(True)
3327
3324
3328 parmObj = opObj.getParameterObj(parameterName='phase_min')
3325 parmObj = opObj.getParameterObj(parameterName='phase_min')
3329 if parmObj == None:
3326 if parmObj == None:
3330 self.specGgraphPhase.clear()
3327 self.specGgraphPhase.clear()
3331 else:
3328 else:
3332 value1 = opObj.getParameterValue(parameterName='phase_min')
3329 value1 = opObj.getParameterValue(parameterName='phase_min')
3333 value1 = str(value1)
3330 value1 = str(value1)
3334 value2 = opObj.getParameterValue(parameterName='phase_max')
3331 value2 = opObj.getParameterValue(parameterName='phase_max')
3335 value2 = str(value2)
3332 value2 = str(value2)
3336 value = value1 + "," + value2
3333 value = value1 + "," + value2
3337 self.specGgraphPhase.setText(value)
3334 self.specGgraphPhase.setText(value)
3338 self.specGgraphPhase.setEnabled(True)
3335 self.specGgraphPhase.setEnabled(True)
3339
3336
3340 parmObj = opObj.getParameterObj(parameterName="save")
3337 parmObj = opObj.getParameterObj(parameterName="save")
3341 if parmObj == None:
3338 if parmObj == None:
3342 self.specGraphSaveCross.setCheckState(0)
3339 self.specGraphSaveCross.setCheckState(0)
3343 else:
3340 else:
3344 self.specGraphSaveCross.setCheckState(QtCore.Qt.Checked)
3341 self.specGraphSaveCross.setCheckState(QtCore.Qt.Checked)
3345
3342
3346 parmObj = opObj.getParameterObj(parameterName="ftp")
3343 parmObj = opObj.getParameterObj(parameterName="ftp")
3347 if parmObj == None:
3344 if parmObj == None:
3348 self.specGraphftpCross.setCheckState(0)
3345 self.specGraphftpCross.setCheckState(0)
3349 else:
3346 else:
3350 self.specGraphftpCross.setCheckState(QtCore.Qt.Checked)
3347 self.specGraphftpCross.setCheckState(QtCore.Qt.Checked)
3351
3348
3352 parmObj = opObj.getParameterObj(parameterName="figpath")
3349 parmObj = opObj.getParameterObj(parameterName="figpath")
3353 if parmObj:
3350 if parmObj:
3354 value = parmObj.getValue()
3351 value = parmObj.getValue()
3355 self.specGraphPath.setText(value)
3352 self.specGraphPath.setText(value)
3356
3353
3357 parmObj = opObj.getParameterObj(parameterName="wr_period")
3354 parmObj = opObj.getParameterObj(parameterName="wr_period")
3358 if parmObj:
3355 if parmObj:
3359 value = parmObj.getValue()
3356 value = parmObj.getValue()
3360 self.specGgraphftpratio.setText(str(value))
3357 self.specGgraphftpratio.setText(str(value))
3361
3358
3362 opObj = puObj.getOperationObj(name='RTIPlot')
3359 opObj = puObj.getOperationObj(name='RTIPlot')
3363
3360
3364 if opObj == None:
3361 if opObj == None:
3365 self.specGraphCebRTIplot.setCheckState(0)
3362 self.specGraphCebRTIplot.setCheckState(0)
3366 self.specGraphSaveRTIplot.setCheckState(0)
3363 self.specGraphSaveRTIplot.setCheckState(0)
3367 self.specGraphftpRTIplot.setCheckState(0)
3364 self.specGraphftpRTIplot.setCheckState(0)
3368 else:
3365 else:
3369 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3366 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3370 parmObj = opObj.getParameterObj(parameterName='channelList')
3367 parmObj = opObj.getParameterObj(parameterName='channelList')
3371 if parmObj == None:
3368 if parmObj == None:
3372 self.specGgraphChannelList.clear()
3369 self.specGgraphChannelList.clear()
3373 else:
3370 else:
3374 value = opObj.getParameterValue(parameterName='channelList')
3371 value = opObj.getParameterValue(parameterName='channelList')
3375 channelListRTIPlot = str(value)[1:-1]
3372 channelListRTIPlot = str(value)[1:-1]
3376 self.specGgraphChannelList.setText(channelListRTIPlot)
3373 self.specGgraphChannelList.setText(channelListRTIPlot)
3377 self.specGgraphChannelList.setEnabled(True)
3374 self.specGgraphChannelList.setEnabled(True)
3378
3375
3379 parmObj = opObj.getParameterObj(parameterName='xmin')
3376 parmObj = opObj.getParameterObj(parameterName='xmin')
3380 if parmObj == None:
3377 if parmObj == None:
3381 self.specGgraphTminTmax.clear()
3378 self.specGgraphTminTmax.clear()
3382 else:
3379 else:
3383 value1 = opObj.getParameterValue(parameterName='xmin')
3380 value1 = opObj.getParameterValue(parameterName='xmin')
3384 value1 = str(value1)
3381 value1 = str(value1)
3385 value2 = opObj.getParameterValue(parameterName='xmax')
3382 value2 = opObj.getParameterValue(parameterName='xmax')
3386 value2 = str(value2)
3383 value2 = str(value2)
3387 value = value1 + "," + value2
3384 value = value1 + "," + value2
3388 self.specGgraphTminTmax.setText(value)
3385 self.specGgraphTminTmax.setText(value)
3389 self.specGgraphTminTmax.setEnabled(True)
3386 self.specGgraphTminTmax.setEnabled(True)
3390
3387
3391 parmObj = opObj.getParameterObj(parameterName='timerange')
3388 parmObj = opObj.getParameterObj(parameterName='timerange')
3392 if parmObj == None:
3389 if parmObj == None:
3393 self.specGgraphTimeRange.clear()
3390 self.specGgraphTimeRange.clear()
3394 else:
3391 else:
3395 value1 = opObj.getParameterValue(parameterName='timerange')
3392 value1 = opObj.getParameterValue(parameterName='timerange')
3396 value1 = str(value1)
3393 value1 = str(value1)
3397 self.specGgraphTimeRange.setText(value1)
3394 self.specGgraphTimeRange.setText(value1)
3398 self.specGgraphTimeRange.setEnabled(True)
3395 self.specGgraphTimeRange.setEnabled(True)
3399
3396
3400 parmObj = opObj.getParameterObj(parameterName='ymin')
3397 parmObj = opObj.getParameterObj(parameterName='ymin')
3401 if parmObj == None:
3398 if parmObj == None:
3402 self.specGgraphHeight.clear()
3399 self.specGgraphHeight.clear()
3403 else:
3400 else:
3404 value1 = opObj.getParameterValue(parameterName='ymin')
3401 value1 = opObj.getParameterValue(parameterName='ymin')
3405 value1 = str(value1)
3402 value1 = str(value1)
3406 value2 = opObj.getParameterValue(parameterName='ymax')
3403 value2 = opObj.getParameterValue(parameterName='ymax')
3407 value2 = str(value2)
3404 value2 = str(value2)
3408 value = value1 + "," + value2
3405 value = value1 + "," + value2
3409 self.specGgraphHeight.setText(value)
3406 self.specGgraphHeight.setText(value)
3410 self.specGgraphHeight.setEnabled(True)
3407 self.specGgraphHeight.setEnabled(True)
3411
3408
3412 parmObj = opObj.getParameterObj(parameterName='zmin')
3409 parmObj = opObj.getParameterObj(parameterName='zmin')
3413 if parmObj == None:
3410 if parmObj == None:
3414 self.specGgraphDbsrange.clear()
3411 self.specGgraphDbsrange.clear()
3415 else:
3412 else:
3416 value1 = opObj.getParameterValue(parameterName='zmin')
3413 value1 = opObj.getParameterValue(parameterName='zmin')
3417 value1 = str(value1)
3414 value1 = str(value1)
3418 value2 = opObj.getParameterValue(parameterName='zmax')
3415 value2 = opObj.getParameterValue(parameterName='zmax')
3419 value2 = str(value2)
3416 value2 = str(value2)
3420 value = value1 + "," + value2
3417 value = value1 + "," + value2
3421 self.specGgraphDbsrange.setText(value)
3418 self.specGgraphDbsrange.setText(value)
3422 self.specGgraphDbsrange.setEnabled(True)
3419 self.specGgraphDbsrange.setEnabled(True)
3423
3420
3424 parmObj = opObj.getParameterObj(parameterName="save")
3421 parmObj = opObj.getParameterObj(parameterName="save")
3425 if parmObj == None:
3422 if parmObj == None:
3426 self.specGraphSaveRTIplot.setCheckState(0)
3423 self.specGraphSaveRTIplot.setCheckState(0)
3427 else:
3424 else:
3428 self.specGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3425 self.specGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3429
3426
3430 parmObj = opObj.getParameterObj(parameterName="ftp")
3427 parmObj = opObj.getParameterObj(parameterName="ftp")
3431 if parmObj == None:
3428 if parmObj == None:
3432 self.specGraphftpRTIplot.setCheckState(0)
3429 self.specGraphftpRTIplot.setCheckState(0)
3433 else:
3430 else:
3434 self.specGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3431 self.specGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3435
3432
3436 parmObj = opObj.getParameterObj(parameterName="figpath")
3433 parmObj = opObj.getParameterObj(parameterName="figpath")
3437 if parmObj:
3434 if parmObj:
3438 value = parmObj.getValue()
3435 value = parmObj.getValue()
3439 self.specGraphPath.setText(value)
3436 self.specGraphPath.setText(value)
3440
3437
3441 parmObj = opObj.getParameterObj(parameterName="wr_period")
3438 parmObj = opObj.getParameterObj(parameterName="wr_period")
3442 if parmObj:
3439 if parmObj:
3443 value = parmObj.getValue()
3440 value = parmObj.getValue()
3444 self.specGgraphftpratio.setText(str(value))
3441 self.specGgraphftpratio.setText(str(value))
3445
3442
3446 opObj = puObj.getOperationObj(name='CoherenceMap')
3443 opObj = puObj.getOperationObj(name='CoherenceMap')
3447
3444
3448 if opObj == None:
3445 if opObj == None:
3449 self.specGraphCebCoherencmap.setCheckState(0)
3446 self.specGraphCebCoherencmap.setCheckState(0)
3450 self.specGraphSaveCoherencemap.setCheckState(0)
3447 self.specGraphSaveCoherencemap.setCheckState(0)
3451 self.specGraphftpCoherencemap.setCheckState(0)
3448 self.specGraphftpCoherencemap.setCheckState(0)
3452 else:
3449 else:
3453 operationCoherenceMap = "Enable"
3450 operationCoherenceMap = "Enable"
3454 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
3451 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
3455 parmObj = opObj.getParameterObj(parameterName='xmin')
3452 parmObj = opObj.getParameterObj(parameterName='xmin')
3456 if parmObj == None:
3453 if parmObj == None:
3457 self.specGgraphTminTmax.clear()
3454 self.specGgraphTminTmax.clear()
3458 else:
3455 else:
3459 value1 = opObj.getParameterValue(parameterName='xmin')
3456 value1 = opObj.getParameterValue(parameterName='xmin')
3460 value1 = str(value1)
3457 value1 = str(value1)
3461 value2 = opObj.getParameterValue(parameterName='xmax')
3458 value2 = opObj.getParameterValue(parameterName='xmax')
3462 value2 = str(value2)
3459 value2 = str(value2)
3463 value = value1 + "," + value2
3460 value = value1 + "," + value2
3464 self.specGgraphTminTmax.setText(value)
3461 self.specGgraphTminTmax.setText(value)
3465 self.specGgraphTminTmax.setEnabled(True)
3462 self.specGgraphTminTmax.setEnabled(True)
3466
3463
3467 parmObj = opObj.getParameterObj(parameterName='timerange')
3464 parmObj = opObj.getParameterObj(parameterName='timerange')
3468 if parmObj == None:
3465 if parmObj == None:
3469 self.specGgraphTimeRange.clear()
3466 self.specGgraphTimeRange.clear()
3470 else:
3467 else:
3471 value1 = opObj.getParameterValue(parameterName='timerange')
3468 value1 = opObj.getParameterValue(parameterName='timerange')
3472 value1 = str(value1)
3469 value1 = str(value1)
3473 self.specGgraphTimeRange.setText(value1)
3470 self.specGgraphTimeRange.setText(value1)
3474 self.specGgraphTimeRange.setEnabled(True)
3471 self.specGgraphTimeRange.setEnabled(True)
3475
3472
3476 parmObj = opObj.getParameterObj(parameterName='ymin')
3473 parmObj = opObj.getParameterObj(parameterName='ymin')
3477 if parmObj == None:
3474 if parmObj == None:
3478 self.specGgraphHeight.clear()
3475 self.specGgraphHeight.clear()
3479 else:
3476 else:
3480 value1 = opObj.getParameterValue(parameterName='ymin')
3477 value1 = opObj.getParameterValue(parameterName='ymin')
3481 value1 = str(value1)
3478 value1 = str(value1)
3482 value2 = opObj.getParameterValue(parameterName='ymax')
3479 value2 = opObj.getParameterValue(parameterName='ymax')
3483 value2 = str(value2)
3480 value2 = str(value2)
3484 value = value1 + "," + value2
3481 value = value1 + "," + value2
3485 self.specGgraphHeight.setText(value)
3482 self.specGgraphHeight.setText(value)
3486 self.specGgraphHeight.setEnabled(True)
3483 self.specGgraphHeight.setEnabled(True)
3487
3484
3488 parmObj = opObj.getParameterObj(parameterName='zmin')
3485 parmObj = opObj.getParameterObj(parameterName='zmin')
3489 if parmObj == None:
3486 if parmObj == None:
3490 self.specGgraphmagnitud.clear()
3487 self.specGgraphmagnitud.clear()
3491 else:
3488 else:
3492 value1 = opObj.getParameterValue(parameterName='zmin')
3489 value1 = opObj.getParameterValue(parameterName='zmin')
3493 value1 = str(value1)
3490 value1 = str(value1)
3494 value2 = opObj.getParameterValue(parameterName='zmax')
3491 value2 = opObj.getParameterValue(parameterName='zmax')
3495 value2 = str(value2)
3492 value2 = str(value2)
3496 value = value1 + "," + value2
3493 value = value1 + "," + value2
3497 self.specGgraphmagnitud.setText(value)
3494 self.specGgraphmagnitud.setText(value)
3498 self.specGgraphmagnitud.setEnabled(True)
3495 self.specGgraphmagnitud.setEnabled(True)
3499
3496
3500 parmObj = opObj.getParameterObj(parameterName='coh_min')
3497 parmObj = opObj.getParameterObj(parameterName='coh_min')
3501 if parmObj == None:
3498 if parmObj == None:
3502 self.specGgraphmagnitud.clear()
3499 self.specGgraphmagnitud.clear()
3503 else:
3500 else:
3504 value1 = opObj.getParameterValue(parameterName='coh_min')
3501 value1 = opObj.getParameterValue(parameterName='coh_min')
3505 value1 = str(value1)
3502 value1 = str(value1)
3506 value2 = opObj.getParameterValue(parameterName='coh_max')
3503 value2 = opObj.getParameterValue(parameterName='coh_max')
3507 value2 = str(value2)
3504 value2 = str(value2)
3508 value = value1 + "," + value2
3505 value = value1 + "," + value2
3509 self.specGgraphmagnitud.setText(value)
3506 self.specGgraphmagnitud.setText(value)
3510 self.specGgraphmagnitud.setEnabled(True)
3507 self.specGgraphmagnitud.setEnabled(True)
3511
3508
3512 parmObj = opObj.getParameterObj(parameterName='phase_min')
3509 parmObj = opObj.getParameterObj(parameterName='phase_min')
3513 if parmObj == None:
3510 if parmObj == None:
3514 self.specGgraphPhase.clear()
3511 self.specGgraphPhase.clear()
3515 else:
3512 else:
3516 value1 = opObj.getParameterValue(parameterName='phase_min')
3513 value1 = opObj.getParameterValue(parameterName='phase_min')
3517 value1 = str(value1)
3514 value1 = str(value1)
3518 value2 = opObj.getParameterValue(parameterName='phase_max')
3515 value2 = opObj.getParameterValue(parameterName='phase_max')
3519 value2 = str(value2)
3516 value2 = str(value2)
3520 value = value1 + "," + value2
3517 value = value1 + "," + value2
3521 self.specGgraphPhase.setText(value)
3518 self.specGgraphPhase.setText(value)
3522 self.specGgraphPhase.setEnabled(True)
3519 self.specGgraphPhase.setEnabled(True)
3523
3520
3524 parmObj = opObj.getParameterObj(parameterName="save")
3521 parmObj = opObj.getParameterObj(parameterName="save")
3525 if parmObj == None:
3522 if parmObj == None:
3526 self.specGraphSaveCoherencemap.setCheckState(0)
3523 self.specGraphSaveCoherencemap.setCheckState(0)
3527 else:
3524 else:
3528 self.specGraphSaveCoherencemap.setCheckState(QtCore.Qt.Checked)
3525 self.specGraphSaveCoherencemap.setCheckState(QtCore.Qt.Checked)
3529
3526
3530 parmObj = opObj.getParameterObj(parameterName="ftp")
3527 parmObj = opObj.getParameterObj(parameterName="ftp")
3531 if parmObj == None:
3528 if parmObj == None:
3532 self.specGraphftpCoherencemap.setCheckState(0)
3529 self.specGraphftpCoherencemap.setCheckState(0)
3533 else:
3530 else:
3534 self.specGraphftpCoherencemap.setCheckState(QtCore.Qt.Checked)
3531 self.specGraphftpCoherencemap.setCheckState(QtCore.Qt.Checked)
3535
3532
3536 parmObj = opObj.getParameterObj(parameterName="figpath")
3533 parmObj = opObj.getParameterObj(parameterName="figpath")
3537 if parmObj:
3534 if parmObj:
3538 value = parmObj.getValue()
3535 value = parmObj.getValue()
3539 self.specGraphPath.setText(value)
3536 self.specGraphPath.setText(value)
3540
3537
3541 parmObj = opObj.getParameterObj(parameterName="wr_period")
3538 parmObj = opObj.getParameterObj(parameterName="wr_period")
3542 if parmObj:
3539 if parmObj:
3543 value = parmObj.getValue()
3540 value = parmObj.getValue()
3544 self.specGgraphftpratio.setText(str(value))
3541 self.specGgraphftpratio.setText(str(value))
3545
3542
3546 opObj = puObj.getOperationObj(name='PowerProfilePlot')
3543 opObj = puObj.getOperationObj(name='PowerProfilePlot')
3547
3544
3548 if opObj == None:
3545 if opObj == None:
3549 self.specGraphPowerprofile.setCheckState(0)
3546 self.specGraphPowerprofile.setCheckState(0)
3550 self.specGraphSavePowerprofile.setCheckState(0)
3547 self.specGraphSavePowerprofile.setCheckState(0)
3551 self.specGraphftpPowerprofile.setCheckState(0)
3548 self.specGraphftpPowerprofile.setCheckState(0)
3552 operationPowerProfilePlot = "Disabled"
3549 operationPowerProfilePlot = "Disabled"
3553 channelList = None
3550 channelList = None
3554 freq_vel = None
3551 freq_vel = None
3555 heightsrange = None
3552 heightsrange = None
3556 else:
3553 else:
3557 operationPowerProfilePlot = "Enable"
3554 operationPowerProfilePlot = "Enable"
3558 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
3555 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
3559 parmObj = opObj.getParameterObj(parameterName='xmin')
3556 parmObj = opObj.getParameterObj(parameterName='xmin')
3560 if parmObj == None:
3557 if parmObj == None:
3561 self.specGgraphDbsrange.clear()
3558 self.specGgraphDbsrange.clear()
3562 else:
3559 else:
3563 value1 = opObj.getParameterValue(parameterName='xmin')
3560 value1 = opObj.getParameterValue(parameterName='xmin')
3564 value1 = str(value1)
3561 value1 = str(value1)
3565 value2 = opObj.getParameterValue(parameterName='xmax')
3562 value2 = opObj.getParameterValue(parameterName='xmax')
3566 value2 = str(value2)
3563 value2 = str(value2)
3567 value = value1 + "," + value2
3564 value = value1 + "," + value2
3568 self.specGgraphDbsrange.setText(value)
3565 self.specGgraphDbsrange.setText(value)
3569 self.specGgraphDbsrange.setEnabled(True)
3566 self.specGgraphDbsrange.setEnabled(True)
3570
3567
3571 parmObj = opObj.getParameterObj(parameterName='ymin')
3568 parmObj = opObj.getParameterObj(parameterName='ymin')
3572 if parmObj == None:
3569 if parmObj == None:
3573 self.specGgraphHeight.clear()
3570 self.specGgraphHeight.clear()
3574 else:
3571 else:
3575 value1 = opObj.getParameterValue(parameterName='ymin')
3572 value1 = opObj.getParameterValue(parameterName='ymin')
3576 value1 = str(value1)
3573 value1 = str(value1)
3577 value2 = opObj.getParameterValue(parameterName='ymax')
3574 value2 = opObj.getParameterValue(parameterName='ymax')
3578 value2 = str(value2)
3575 value2 = str(value2)
3579 value = value1 + "," + value2
3576 value = value1 + "," + value2
3580 self.specGgraphHeight.setText(value)
3577 self.specGgraphHeight.setText(value)
3581 self.specGgraphHeight.setEnabled(True)
3578 self.specGgraphHeight.setEnabled(True)
3582
3579
3583 parmObj = opObj.getParameterObj(parameterName="save")
3580 parmObj = opObj.getParameterObj(parameterName="save")
3584 if parmObj == None:
3581 if parmObj == None:
3585 self.specGraphSavePowerprofile.setCheckState(0)
3582 self.specGraphSavePowerprofile.setCheckState(0)
3586 else:
3583 else:
3587 self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked)
3584 self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked)
3588
3585
3589 parmObj = opObj.getParameterObj(parameterName="ftp")
3586 parmObj = opObj.getParameterObj(parameterName="ftp")
3590 if parmObj == None:
3587 if parmObj == None:
3591 self.specGraphftpPowerprofile.setCheckState(0)
3588 self.specGraphftpPowerprofile.setCheckState(0)
3592 else:
3589 else:
3593 self.specGraphftpPowerprofile.setCheckState(QtCore.Qt.Checked)
3590 self.specGraphftpPowerprofile.setCheckState(QtCore.Qt.Checked)
3594
3591
3595 parmObj = opObj.getParameterObj(parameterName="figpath")
3592 parmObj = opObj.getParameterObj(parameterName="figpath")
3596 if parmObj:
3593 if parmObj:
3597 value = parmObj.getValue()
3594 value = parmObj.getValue()
3598 self.specGraphPath.setText(value)
3595 self.specGraphPath.setText(value)
3599
3596
3600 parmObj = opObj.getParameterObj(parameterName="wr_period")
3597 parmObj = opObj.getParameterObj(parameterName="wr_period")
3601 if parmObj:
3598 if parmObj:
3602 value = parmObj.getValue()
3599 value = parmObj.getValue()
3603 self.specGgraphftpratio.setText(str(value))
3600 self.specGgraphftpratio.setText(str(value))
3604
3601
3605 opObj = puObj.getOperationObj(name='Noise')
3602 opObj = puObj.getOperationObj(name='Noise')
3606
3603
3607 if opObj == None:
3604 if opObj == None:
3608 self.specGraphCebRTInoise.setCheckState(0)
3605 self.specGraphCebRTInoise.setCheckState(0)
3609 self.specGraphSaveRTInoise.setCheckState(0)
3606 self.specGraphSaveRTInoise.setCheckState(0)
3610 self.specGraphftpRTInoise.setCheckState(0)
3607 self.specGraphftpRTInoise.setCheckState(0)
3611 else:
3608 else:
3612 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
3609 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
3613 parmObj = opObj.getParameterObj(parameterName='channelList')
3610 parmObj = opObj.getParameterObj(parameterName='channelList')
3614 if parmObj == None:
3611 if parmObj == None:
3615 self.specGgraphChannelList.clear()
3612 self.specGgraphChannelList.clear()
3616 else:
3613 else:
3617 value = opObj.getParameterValue(parameterName='channelList')
3614 value = opObj.getParameterValue(parameterName='channelList')
3618 channelListRTINoise = str(value)[1:-1]
3615 channelListRTINoise = str(value)[1:-1]
3619 self.specGgraphChannelList.setText(channelListRTINoise)
3616 self.specGgraphChannelList.setText(channelListRTINoise)
3620 self.specGgraphChannelList.setEnabled(True)
3617 self.specGgraphChannelList.setEnabled(True)
3621
3618
3622 parmObj = opObj.getParameterObj(parameterName='xmin')
3619 parmObj = opObj.getParameterObj(parameterName='xmin')
3623 if parmObj == None:
3620 if parmObj == None:
3624 self.specGgraphTminTmax.clear()
3621 self.specGgraphTminTmax.clear()
3625 else:
3622 else:
3626 value1 = opObj.getParameterValue(parameterName='xmin')
3623 value1 = opObj.getParameterValue(parameterName='xmin')
3627 value1 = str(value1)
3624 value1 = str(value1)
3628 value2 = opObj.getParameterValue(parameterName='xmax')
3625 value2 = opObj.getParameterValue(parameterName='xmax')
3629 value2 = str(value2)
3626 value2 = str(value2)
3630 value = value1 + "," + value2
3627 value = value1 + "," + value2
3631 self.specGgraphTminTmax.setText(value)
3628 self.specGgraphTminTmax.setText(value)
3632 self.specGgraphTminTmax.setEnabled(True)
3629 self.specGgraphTminTmax.setEnabled(True)
3633
3630
3634 parmObj = opObj.getParameterObj(parameterName='timerange')
3631 parmObj = opObj.getParameterObj(parameterName='timerange')
3635 if parmObj == None:
3632 if parmObj == None:
3636 self.specGgraphTimeRange.clear()
3633 self.specGgraphTimeRange.clear()
3637 else:
3634 else:
3638 value1 = opObj.getParameterValue(parameterName='timerange')
3635 value1 = opObj.getParameterValue(parameterName='timerange')
3639 value1 = str(value1)
3636 value1 = str(value1)
3640 self.specGgraphTimeRange.setText(value1)
3637 self.specGgraphTimeRange.setText(value1)
3641 self.specGgraphTimeRange.setEnabled(True)
3638 self.specGgraphTimeRange.setEnabled(True)
3642
3639
3643
3640
3644 parmObj = opObj.getParameterObj(parameterName='ymin')
3641 parmObj = opObj.getParameterObj(parameterName='ymin')
3645 if parmObj == None:
3642 if parmObj == None:
3646 self.specGgraphDbsrange.clear()
3643 self.specGgraphDbsrange.clear()
3647 else:
3644 else:
3648 value1 = opObj.getParameterValue(parameterName='ymin')
3645 value1 = opObj.getParameterValue(parameterName='ymin')
3649 value1 = str(value1)
3646 value1 = str(value1)
3650 value2 = opObj.getParameterValue(parameterName='ymax')
3647 value2 = opObj.getParameterValue(parameterName='ymax')
3651 value2 = str(value2)
3648 value2 = str(value2)
3652 value = value1 + "," + value2
3649 value = value1 + "," + value2
3653 self.specGgraphDbsrange.setText(value)
3650 self.specGgraphDbsrange.setText(value)
3654 self.specGgraphDbsrange.setEnabled(True)
3651 self.specGgraphDbsrange.setEnabled(True)
3655
3652
3656 parmObj = opObj.getParameterObj(parameterName="save")
3653 parmObj = opObj.getParameterObj(parameterName="save")
3657 if parmObj == None:
3654 if parmObj == None:
3658 self.specGraphSaveRTInoise.setCheckState(0)
3655 self.specGraphSaveRTInoise.setCheckState(0)
3659 else:
3656 else:
3660 self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked)
3657 self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked)
3661
3658
3662 parmObj = opObj.getParameterObj(parameterName="ftp")
3659 parmObj = opObj.getParameterObj(parameterName="ftp")
3663 if parmObj == None:
3660 if parmObj == None:
3664 self.specGraphftpRTInoise.setCheckState(0)
3661 self.specGraphftpRTInoise.setCheckState(0)
3665 else:
3662 else:
3666 self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked)
3663 self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked)
3667
3664
3668 parmObj = opObj.getParameterObj(parameterName="figpath")
3665 parmObj = opObj.getParameterObj(parameterName="figpath")
3669 if parmObj:
3666 if parmObj:
3670 value = parmObj.getValue()
3667 value = parmObj.getValue()
3671 self.specGraphPath.setText(value)
3668 self.specGraphPath.setText(value)
3672
3669
3673 parmObj = opObj.getParameterObj(parameterName="wr_period")
3670 parmObj = opObj.getParameterObj(parameterName="wr_period")
3674 if parmObj:
3671 if parmObj:
3675 value = parmObj.getValue()
3672 value = parmObj.getValue()
3676 self.specGgraphftpratio.setText(str(value))
3673 self.specGgraphftpratio.setText(str(value))
3677
3674
3678 opObj = puObj.getOperationObj(name='SpectraWriter')
3675 opObj = puObj.getOperationObj(name='SpectraWriter')
3679 if opObj == None:
3676 if opObj == None:
3680 self.specOutputPath.clear()
3677 self.specOutputPath.clear()
3681 self.specOutputblocksperfile.clear()
3678 self.specOutputblocksperfile.clear()
3682 else:
3679 else:
3683 value = opObj.getParameterObj(parameterName='path')
3680 value = opObj.getParameterObj(parameterName='path')
3684 if value == None:
3681 if value == None:
3685 self.specOutputPath.clear()
3682 self.specOutputPath.clear()
3686 else:
3683 else:
3687 value = opObj.getParameterValue(parameterName='path')
3684 value = opObj.getParameterValue(parameterName='path')
3688 path = str(value)
3685 path = str(value)
3689 self.specOutputPath.setText(path)
3686 self.specOutputPath.setText(path)
3690 value = opObj.getParameterObj(parameterName='blocksPerFile')
3687 value = opObj.getParameterObj(parameterName='blocksPerFile')
3691 if value == None:
3688 if value == None:
3692 self.specOutputblocksperfile.clear()
3689 self.specOutputblocksperfile.clear()
3693 else:
3690 else:
3694 value = opObj.getParameterValue(parameterName='blocksPerFile')
3691 value = opObj.getParameterValue(parameterName='blocksPerFile')
3695 blocksperfile = str(value)
3692 blocksperfile = str(value)
3696 self.specOutputblocksperfile.setText(blocksperfile)
3693 self.specOutputblocksperfile.setText(blocksperfile)
3697
3694
3698 return
3695 return
3699
3696
3700 def __refreshSpectraHeisWindow(self, puObj):
3697 def __refreshSpectraHeisWindow(self, puObj):
3701
3698
3702 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
3699 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
3703 if opObj == None:
3700 if opObj == None:
3704 self.specHeisOpIncoherent.clear()
3701 self.specHeisOpIncoherent.clear()
3705 self.specHeisOpCebIncoherent.setCheckState(0)
3702 self.specHeisOpCebIncoherent.setCheckState(0)
3706 else:
3703 else:
3707 for parmObj in opObj.getParameterObjList():
3704 for parmObj in opObj.getParameterObjList():
3708 if parmObj.name == 'timeInterval':
3705 if parmObj.name == 'timeInterval':
3709 value = opObj.getParameterValue(parameterName='timeInterval')
3706 value = opObj.getParameterValue(parameterName='timeInterval')
3710 value = float(value)
3707 value = float(value)
3711 self.specHeisOpIncoherent.setText(str(value))
3708 self.specHeisOpIncoherent.setText(str(value))
3712 self.specHeisOpIncoherent.setEnabled(True)
3709 self.specHeisOpIncoherent.setEnabled(True)
3713 self.specHeisOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3710 self.specHeisOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3714 self.specHeisOpCobIncInt.setCurrentIndex(0)
3711 self.specHeisOpCobIncInt.setCurrentIndex(0)
3715
3712
3716 # SpectraHeis Graph
3713 # SpectraHeis Graph
3717
3714
3718 self.specHeisGgraphXminXmax.clear()
3715 self.specHeisGgraphXminXmax.clear()
3719 self.specHeisGgraphYminYmax.clear()
3716 self.specHeisGgraphYminYmax.clear()
3720
3717
3721 self.specHeisGgraphChannelList.clear()
3718 self.specHeisGgraphChannelList.clear()
3722 self.specHeisGgraphTminTmax.clear()
3719 self.specHeisGgraphTminTmax.clear()
3723 self.specHeisGgraphTimeRange.clear()
3720 self.specHeisGgraphTimeRange.clear()
3724 self.specHeisGgraphftpratio.clear()
3721 self.specHeisGgraphftpratio.clear()
3725
3722
3726 opObj = puObj.getOperationObj(name='SpectraHeisScope')
3723 opObj = puObj.getOperationObj(name='SpectraHeisScope')
3727 if opObj == None:
3724 if opObj == None:
3728 self.specHeisGraphCebSpectraplot.setCheckState(0)
3725 self.specHeisGraphCebSpectraplot.setCheckState(0)
3729 self.specHeisGraphSaveSpectra.setCheckState(0)
3726 self.specHeisGraphSaveSpectra.setCheckState(0)
3730 self.specHeisGraphftpSpectra.setCheckState(0)
3727 self.specHeisGraphftpSpectra.setCheckState(0)
3731 else:
3728 else:
3732 operationSpectraHeisScope = "Enable"
3729 operationSpectraHeisScope = "Enable"
3733 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3730 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3734
3731
3735 parmObj = opObj.getParameterObj(parameterName='channelList')
3732 parmObj = opObj.getParameterObj(parameterName='channelList')
3736 if parmObj == None:
3733 if parmObj == None:
3737 self.specHeisGgraphChannelList.clear()
3734 self.specHeisGgraphChannelList.clear()
3738 else:
3735 else:
3739 value = opObj.getParameterValue(parameterName='channelList')
3736 value = opObj.getParameterValue(parameterName='channelList')
3740 channelListSpectraHeisScope = str(value)[1:-1]
3737 channelListSpectraHeisScope = str(value)[1:-1]
3741 self.specHeisGgraphChannelList.setText(channelListSpectraHeisScope)
3738 self.specHeisGgraphChannelList.setText(channelListSpectraHeisScope)
3742 self.specHeisGgraphChannelList.setEnabled(True)
3739 self.specHeisGgraphChannelList.setEnabled(True)
3743
3740
3744 parmObj = opObj.getParameterObj(parameterName='xmin')
3741 parmObj = opObj.getParameterObj(parameterName='xmin')
3745 if parmObj == None:
3742 if parmObj == None:
3746 self.specHeisGgraphXminXmax.clear()
3743 self.specHeisGgraphXminXmax.clear()
3747 else:
3744 else:
3748 value1 = opObj.getParameterValue(parameterName='xmin')
3745 value1 = opObj.getParameterValue(parameterName='xmin')
3749 value1 = str(value1)
3746 value1 = str(value1)
3750 value2 = opObj.getParameterValue(parameterName='xmax')
3747 value2 = opObj.getParameterValue(parameterName='xmax')
3751 value2 = str(value2)
3748 value2 = str(value2)
3752 value = value1 + "," + value2
3749 value = value1 + "," + value2
3753 self.specHeisGgraphXminXmax.setText(value)
3750 self.specHeisGgraphXminXmax.setText(value)
3754 self.specHeisGgraphXminXmax.setEnabled(True)
3751 self.specHeisGgraphXminXmax.setEnabled(True)
3755
3752
3756 parmObj = opObj.getParameterObj(parameterName='ymin')
3753 parmObj = opObj.getParameterObj(parameterName='ymin')
3757 if parmObj == None:
3754 if parmObj == None:
3758 self.specHeisGgraphYminYmax.clear()
3755 self.specHeisGgraphYminYmax.clear()
3759 else:
3756 else:
3760 value1 = opObj.getParameterValue(parameterName='ymin')
3757 value1 = opObj.getParameterValue(parameterName='ymin')
3761 value1 = str(value1)
3758 value1 = str(value1)
3762 value2 = opObj.getParameterValue(parameterName='ymax')
3759 value2 = opObj.getParameterValue(parameterName='ymax')
3763 value2 = str(value2)
3760 value2 = str(value2)
3764 value = value1 + "," + value2
3761 value = value1 + "," + value2
3765 self.specHeisGgraphYminYmax.setText(value)
3762 self.specHeisGgraphYminYmax.setText(value)
3766 self.specHeisGgraphYminYmax.setEnabled(True)
3763 self.specHeisGgraphYminYmax.setEnabled(True)
3767
3764
3768 parmObj = opObj.getParameterObj(parameterName="save")
3765 parmObj = opObj.getParameterObj(parameterName="save")
3769 if parmObj == None:
3766 if parmObj == None:
3770 self.specHeisGraphSaveSpectra.setCheckState(0)
3767 self.specHeisGraphSaveSpectra.setCheckState(0)
3771 else:
3768 else:
3772 self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3769 self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3773
3770
3774 parmObj = opObj.getParameterObj(parameterName="ftp")
3771 parmObj = opObj.getParameterObj(parameterName="ftp")
3775 if parmObj == None:
3772 if parmObj == None:
3776 self.specHeisGraphftpSpectra.setCheckState(0)
3773 self.specHeisGraphftpSpectra.setCheckState(0)
3777 else:
3774 else:
3778 self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3775 self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3779
3776
3780 parmObj = opObj.getParameterObj(parameterName="figpath")
3777 parmObj = opObj.getParameterObj(parameterName="figpath")
3781 if parmObj:
3778 if parmObj:
3782 value = parmObj.getValue()
3779 value = parmObj.getValue()
3783 self.specHeisGraphPath.setText(value)
3780 self.specHeisGraphPath.setText(value)
3784
3781
3785 parmObj = opObj.getParameterObj(parameterName="wr_period")
3782 parmObj = opObj.getParameterObj(parameterName="wr_period")
3786 if parmObj:
3783 if parmObj:
3787 value = parmObj.getValue()
3784 value = parmObj.getValue()
3788 self.specHeisGgraphftpratio.setText(str(value))
3785 self.specHeisGgraphftpratio.setText(str(value))
3789
3786
3790 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
3787 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
3791
3788
3792 if opObj == None:
3789 if opObj == None:
3793 self.specHeisGraphCebRTIplot.setCheckState(0)
3790 self.specHeisGraphCebRTIplot.setCheckState(0)
3794 self.specHeisGraphSaveRTIplot.setCheckState(0)
3791 self.specHeisGraphSaveRTIplot.setCheckState(0)
3795 self.specHeisGraphftpRTIplot.setCheckState(0)
3792 self.specHeisGraphftpRTIplot.setCheckState(0)
3796 else:
3793 else:
3797 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3794 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3798 parmObj = opObj.getParameterObj(parameterName='channelList')
3795 parmObj = opObj.getParameterObj(parameterName='channelList')
3799 if parmObj == None:
3796 if parmObj == None:
3800 self.specHeisGgraphChannelList.clear()
3797 self.specHeisGgraphChannelList.clear()
3801 else:
3798 else:
3802 value = opObj.getParameterValue(parameterName='channelList')
3799 value = opObj.getParameterValue(parameterName='channelList')
3803 channelListRTIPlot = str(value)[1:-1]
3800 channelListRTIPlot = str(value)[1:-1]
3804 self.specGgraphChannelList.setText(channelListRTIPlot)
3801 self.specGgraphChannelList.setText(channelListRTIPlot)
3805 self.specGgraphChannelList.setEnabled(True)
3802 self.specGgraphChannelList.setEnabled(True)
3806
3803
3807 parmObj = opObj.getParameterObj(parameterName='xmin')
3804 parmObj = opObj.getParameterObj(parameterName='xmin')
3808 if parmObj == None:
3805 if parmObj == None:
3809 self.specHeisGgraphTminTmax.clear()
3806 self.specHeisGgraphTminTmax.clear()
3810 else:
3807 else:
3811 value1 = opObj.getParameterValue(parameterName='xmin')
3808 value1 = opObj.getParameterValue(parameterName='xmin')
3812 value1 = str(value1)
3809 value1 = str(value1)
3813 value2 = opObj.getParameterValue(parameterName='xmax')
3810 value2 = opObj.getParameterValue(parameterName='xmax')
3814 value2 = str(value2)
3811 value2 = str(value2)
3815 value = value1 + "," + value2
3812 value = value1 + "," + value2
3816 self.specHeisGgraphTminTmax.setText(value)
3813 self.specHeisGgraphTminTmax.setText(value)
3817 self.specHeisGgraphTminTmax.setEnabled(True)
3814 self.specHeisGgraphTminTmax.setEnabled(True)
3818
3815
3819 parmObj = opObj.getParameterObj(parameterName='timerange')
3816 parmObj = opObj.getParameterObj(parameterName='timerange')
3820 if parmObj == None:
3817 if parmObj == None:
3821 self.specGgraphTimeRange.clear()
3818 self.specGgraphTimeRange.clear()
3822 else:
3819 else:
3823 value1 = opObj.getParameterValue(parameterName='timerange')
3820 value1 = opObj.getParameterValue(parameterName='timerange')
3824 value1 = str(value1)
3821 value1 = str(value1)
3825 self.specHeisGgraphTimeRange.setText(value1)
3822 self.specHeisGgraphTimeRange.setText(value1)
3826 self.specHeisGgraphTimeRange.setEnabled(True)
3823 self.specHeisGgraphTimeRange.setEnabled(True)
3827
3824
3828 parmObj = opObj.getParameterObj(parameterName='ymin')
3825 parmObj = opObj.getParameterObj(parameterName='ymin')
3829 if parmObj == None:
3826 if parmObj == None:
3830 self.specHeisGgraphYminYmax.clear()
3827 self.specHeisGgraphYminYmax.clear()
3831 else:
3828 else:
3832 value1 = opObj.getParameterValue(parameterName='ymin')
3829 value1 = opObj.getParameterValue(parameterName='ymin')
3833 value1 = str(value1)
3830 value1 = str(value1)
3834 value2 = opObj.getParameterValue(parameterName='ymax')
3831 value2 = opObj.getParameterValue(parameterName='ymax')
3835 value2 = str(value2)
3832 value2 = str(value2)
3836 value = value1 + "," + value2
3833 value = value1 + "," + value2
3837 self.specHeisGgraphYminYmax.setText(value)
3834 self.specHeisGgraphYminYmax.setText(value)
3838 self.specHeisGgraphYminYmax.setEnabled(True)
3835 self.specHeisGgraphYminYmax.setEnabled(True)
3839
3836
3840 parmObj = opObj.getParameterObj(parameterName="save")
3837 parmObj = opObj.getParameterObj(parameterName="save")
3841 if parmObj == None:
3838 if parmObj == None:
3842 self.specHeisGraphSaveRTIplot.setCheckState(0)
3839 self.specHeisGraphSaveRTIplot.setCheckState(0)
3843 else:
3840 else:
3844 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3841 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3845
3842
3846 parmObj = opObj.getParameterObj(parameterName="ftp")
3843 parmObj = opObj.getParameterObj(parameterName="ftp")
3847 if parmObj == None:
3844 if parmObj == None:
3848 self.specHeisGraphftpRTIplot.setCheckState(0)
3845 self.specHeisGraphftpRTIplot.setCheckState(0)
3849 else:
3846 else:
3850 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3847 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3851
3848
3852 parmObj = opObj.getParameterObj(parameterName="figpath")
3849 parmObj = opObj.getParameterObj(parameterName="figpath")
3853 if parmObj:
3850 if parmObj:
3854 value = parmObj.getValue()
3851 value = parmObj.getValue()
3855 self.specHeisGraphPath.setText(value)
3852 self.specHeisGraphPath.setText(value)
3856
3853
3857 parmObj = opObj.getParameterObj(parameterName="wr_period")
3854 parmObj = opObj.getParameterObj(parameterName="wr_period")
3858 if parmObj:
3855 if parmObj:
3859 value = parmObj.getValue()
3856 value = parmObj.getValue()
3860 self.specHeisGgraphftpratio.setText(str(value))
3857 self.specHeisGgraphftpratio.setText(str(value))
3861
3858
3862 # outputSpectraHeisWrite
3859 # outputSpectraHeisWrite
3863 opObj = puObj.getOperationObj(name='FitsWriter')
3860 opObj = puObj.getOperationObj(name='FitsWriter')
3864 if opObj == None:
3861 if opObj == None:
3865 self.specHeisOutputPath.clear()
3862 self.specHeisOutputPath.clear()
3866 self.specHeisOutputblocksperfile.clear()
3863 self.specHeisOutputblocksperfile.clear()
3867 self.specHeisOutputMetada.clear()
3864 self.specHeisOutputMetada.clear()
3868 else:
3865 else:
3869 value = opObj.getParameterObj(parameterName='path')
3866 value = opObj.getParameterObj(parameterName='path')
3870 if value == None:
3867 if value == None:
3871 self.specHeisOutputPath.clear()
3868 self.specHeisOutputPath.clear()
3872 else:
3869 else:
3873 value = opObj.getParameterValue(parameterName='path')
3870 value = opObj.getParameterValue(parameterName='path')
3874 path = str(value)
3871 path = str(value)
3875 self.specHeisOutputPath.setText(path)
3872 self.specHeisOutputPath.setText(path)
3876 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
3873 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
3877 if value == None:
3874 if value == None:
3878 self.specHeisOutputblocksperfile.clear()
3875 self.specHeisOutputblocksperfile.clear()
3879 else:
3876 else:
3880 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
3877 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
3881 blocksperfile = str(value)
3878 blocksperfile = str(value)
3882 self.specHeisOutputblocksperfile.setText(blocksperfile)
3879 self.specHeisOutputblocksperfile.setText(blocksperfile)
3883 value = opObj.getParameterObj(parameterName='metadatafile')
3880 value = opObj.getParameterObj(parameterName='metadatafile')
3884 if value == None:
3881 if value == None:
3885 self.specHeisOutputMetada.clear()
3882 self.specHeisOutputMetada.clear()
3886 else:
3883 else:
3887 value = opObj.getParameterValue(parameterName='metadatafile')
3884 value = opObj.getParameterValue(parameterName='metadatafile')
3888 metada = str(value)
3885 metada = str(value)
3889 self.specHeisOutputMetada.setText(metada)
3886 self.specHeisOutputMetada.setText(metada)
3890
3887
3891 return
3888 return
3892
3889
3893 def __refreshCorrelationWindow(self, puObj):
3890 def __refreshCorrelationWindow(self, puObj):
3894 pass
3891 pass
3895
3892
3896 def refreshPUWindow(self, puObj):
3893 def refreshPUWindow(self, puObj):
3897
3894
3898 if puObj.datatype == 'Voltage':
3895 if puObj.datatype == 'Voltage':
3899 self.__refreshVoltageWindow(puObj)
3896 self.__refreshVoltageWindow(puObj)
3900
3897
3901 if puObj.datatype == 'Spectra':
3898 if puObj.datatype == 'Spectra':
3902 self.__refreshSpectraWindow(puObj)
3899 self.__refreshSpectraWindow(puObj)
3903
3900
3904 if puObj.datatype == 'SpectraHeis':
3901 if puObj.datatype == 'SpectraHeis':
3905 self.__refreshSpectraHeisWindow(puObj)
3902 self.__refreshSpectraHeisWindow(puObj)
3906
3903
3907 def refreshProjectProperties(self, projectObjView):
3904 def refreshProjectProperties(self, projectObjView):
3908
3905
3909 propertyBuffObj = PropertyBuffer()
3906 propertyBuffObj = PropertyBuffer()
3910 name = projectObjView.name
3907 name = projectObjView.name
3911
3908
3912 propertyBuffObj.append("Properties", "Name", projectObjView.name),
3909 propertyBuffObj.append("Properties", "Name", projectObjView.name),
3913 propertyBuffObj.append("Properties", "Description", projectObjView.description)
3910 propertyBuffObj.append("Properties", "Description", projectObjView.description)
3914 propertyBuffObj.append("Properties", "Workspace", self.pathWorkSpace)
3911 propertyBuffObj.append("Properties", "Workspace", self.pathWorkSpace)
3915
3912
3916 readUnitObj = projectObjView.getReadUnitObj()
3913 readUnitObj = projectObjView.getReadUnitObj()
3917 runOperationObj = readUnitObj.getOperationObj(name='run')
3914 runOperationObj = readUnitObj.getOperationObj(name='run')
3918
3915
3919 for thisParmObj in runOperationObj.getParameterObjList():
3916 for thisParmObj in runOperationObj.getParameterObjList():
3920 propertyBuffObj.append("Reading parms", thisParmObj.name, str(thisParmObj.getValue()))
3917 propertyBuffObj.append("Reading parms", thisParmObj.name, str(thisParmObj.getValue()))
3921
3918
3922 propertiesModel = propertyBuffObj.getPropertyModel()
3919 propertiesModel = propertyBuffObj.getPropertyModel()
3923
3920
3924 self.treeProjectProperties.setModel(propertiesModel)
3921 self.treeProjectProperties.setModel(propertiesModel)
3925 self.treeProjectProperties.expandAll()
3922 self.treeProjectProperties.expandAll()
3926 self.treeProjectProperties.resizeColumnToContents(0)
3923 self.treeProjectProperties.resizeColumnToContents(0)
3927 self.treeProjectProperties.resizeColumnToContents(1)
3924 self.treeProjectProperties.resizeColumnToContents(1)
3928
3925
3929 def refreshPUProperties(self, puObjView):
3926 def refreshPUProperties(self, puObjView):
3930
3927
3931 ############ FTP CONFIG ################################
3928 ############ FTP CONFIG ################################
3932 #Deleting FTP Conf. This processing unit have not got any
3929 #Deleting FTP Conf. This processing unit have not got any
3933 #FTP configuration by default
3930 #FTP configuration by default
3934 if puObjView.id in self.__puLocalFolder2FTP.keys():
3931 if puObjView.id in self.__puLocalFolder2FTP.keys():
3935 self.__puLocalFolder2FTP.pop(puObjView.id)
3932 self.__puLocalFolder2FTP.pop(puObjView.id)
3936 ########################################################
3933 ########################################################
3937
3934
3938 propertyBuffObj = PropertyBuffer()
3935 propertyBuffObj = PropertyBuffer()
3939
3936
3940 for thisOp in puObjView.getOperationObjList():
3937 for thisOp in puObjView.getOperationObjList():
3941
3938
3942 operationName = thisOp.name
3939 operationName = thisOp.name
3943
3940
3944 if operationName == 'run':
3941 if operationName == 'run':
3945 operationName = 'Properties'
3942 operationName = 'Properties'
3946
3943
3947 else:
3944 else:
3948 if not thisOp.getParameterObjList():
3945 if not thisOp.getParameterObjList():
3949 propertyBuffObj.append(operationName, '--', '--')
3946 propertyBuffObj.append(operationName, '--', '--')
3950 continue
3947 continue
3951
3948
3952 for thisParmObj in thisOp.getParameterObjList():
3949 for thisParmObj in thisOp.getParameterObjList():
3953 propertyBuffObj.append(operationName, thisParmObj.name, str(thisParmObj.getValue()))
3950 propertyBuffObj.append(operationName, thisParmObj.name, str(thisParmObj.getValue()))
3954
3951
3955 ############ FTP CONFIG ################################
3952 ############ FTP CONFIG ################################
3956 if thisParmObj.name == "ftp_wei" and thisParmObj.getValue():
3953 if thisParmObj.name == "ftp_wei" and thisParmObj.getValue():
3957 value = thisParmObj.getValue()
3954 value = thisParmObj.getValue()
3958 self.temporalFTP.ftp_wei = value
3955 self.temporalFTP.ftp_wei = value
3959
3956
3960 if thisParmObj.name == "exp_code" and thisParmObj.getValue():
3957 if thisParmObj.name == "exp_code" and thisParmObj.getValue():
3961 value = thisParmObj.getValue()
3958 value = thisParmObj.getValue()
3962 self.temporalFTP.exp_code = value
3959 self.temporalFTP.exp_code = value
3963
3960
3964 if thisParmObj.name == "sub_exp_code" and thisParmObj.getValue():
3961 if thisParmObj.name == "sub_exp_code" and thisParmObj.getValue():
3965 value = thisParmObj.getValue()
3962 value = thisParmObj.getValue()
3966 self.temporalFTP.sub_exp_code = value
3963 self.temporalFTP.sub_exp_code = value
3967
3964
3968 if thisParmObj.name == "plot_pos" and thisParmObj.getValue():
3965 if thisParmObj.name == "plot_pos" and thisParmObj.getValue():
3969 value = thisParmObj.getValue()
3966 value = thisParmObj.getValue()
3970 self.temporalFTP.plot_pos = value
3967 self.temporalFTP.plot_pos = value
3971
3968
3972 if thisParmObj.name == 'ftp' and thisParmObj.getValue():
3969 if thisParmObj.name == 'ftp' and thisParmObj.getValue():
3973 figpathObj = thisOp.getParameterObj('figpath')
3970 figpathObj = thisOp.getParameterObj('figpath')
3974 if figpathObj:
3971 if figpathObj:
3975 self.__puLocalFolder2FTP[puObjView.id] = figpathObj.getValue()
3972 self.__puLocalFolder2FTP[puObjView.id] = figpathObj.getValue()
3976
3973
3977 ########################################################
3974 ########################################################
3978
3975
3979 propertiesModel = propertyBuffObj.getPropertyModel()
3976 propertiesModel = propertyBuffObj.getPropertyModel()
3980
3977
3981 self.treeProjectProperties.setModel(propertiesModel)
3978 self.treeProjectProperties.setModel(propertiesModel)
3982 self.treeProjectProperties.expandAll()
3979 self.treeProjectProperties.expandAll()
3983 self.treeProjectProperties.resizeColumnToContents(0)
3980 self.treeProjectProperties.resizeColumnToContents(0)
3984 self.treeProjectProperties.resizeColumnToContents(1)
3981 self.treeProjectProperties.resizeColumnToContents(1)
3985
3982
3986 def refreshGraphicsId(self):
3983 def refreshGraphicsId(self):
3987
3984
3988 projectObj = self.getSelectedProjectObj()
3985 projectObj = self.getSelectedProjectObj()
3989
3986
3990 if not projectObj:
3987 if not projectObj:
3991 return
3988 return
3992
3989
3993 for idPU, puObj in projectObj.procUnitConfObjDict.items():
3990 for idPU, puObj in projectObj.procUnitConfObjDict.items():
3994
3991
3995 for opObj in puObj.getOperationObjList():
3992 for opObj in puObj.getOperationObjList():
3996
3993
3997 if opObj.name not in ('Scope', 'SpectraPlot', 'CrossSpectraPlot', 'RTIPlot', 'CoherenceMap', 'PowerProfilePlot', 'Noise', 'SpectraHeisScope', 'RTIfromSpectraHeis'):
3994 if opObj.name not in ('Scope', 'SpectraPlot', 'CrossSpectraPlot', 'RTIPlot', 'CoherenceMap', 'PowerProfilePlot', 'Noise', 'SpectraHeisScope', 'RTIfromSpectraHeis'):
3998 continue
3995 continue
3999
3996
4000 opObj.changeParameter(name='id', value=opObj.id, format='int')
3997 opObj.changeParameter(name='id', value=opObj.id, format='int')
4001
3998
4002 def on_click(self, index):
3999 def on_click(self, index):
4003
4000
4004 self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index)
4001 self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index)
4005
4002
4006 projectObjView = self.getSelectedProjectObj()
4003 projectObjView = self.getSelectedProjectObj()
4007
4004
4008 if not projectObjView:
4005 if not projectObjView:
4009 return
4006 return
4010
4007
4011 self.create = False
4008 self.create = False
4012 selectedObjView = self.getSelectedItemObj()
4009 selectedObjView = self.getSelectedItemObj()
4013
4010
4014 #A project has been selected
4011 #A project has been selected
4015 if projectObjView == selectedObjView:
4012 if projectObjView == selectedObjView:
4016
4013
4017 self.refreshProjectWindow(projectObjView)
4014 self.refreshProjectWindow(projectObjView)
4018 self.refreshProjectProperties(projectObjView)
4015 self.refreshProjectProperties(projectObjView)
4019
4016
4020 self.tabProject.setEnabled(True)
4017 self.tabProject.setEnabled(True)
4021 self.tabVoltage.setEnabled(False)
4018 self.tabVoltage.setEnabled(False)
4022 self.tabSpectra.setEnabled(False)
4019 self.tabSpectra.setEnabled(False)
4023 self.tabCorrelation.setEnabled(False)
4020 self.tabCorrelation.setEnabled(False)
4024 self.tabSpectraHeis.setEnabled(False)
4021 self.tabSpectraHeis.setEnabled(False)
4025 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4022 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4026
4023
4027 return
4024 return
4028
4025
4029 #A processing unit has been selected
4026 #A processing unit has been selected
4030 voltEnable = False
4027 voltEnable = False
4031 specEnable = False
4028 specEnable = False
4032 corrEnable = False
4029 corrEnable = False
4033 specHeisEnable = False
4030 specHeisEnable = False
4034 tabSelected = self.tabProject
4031 tabSelected = self.tabProject
4035
4032
4036 puObj = selectedObjView
4033 puObj = selectedObjView
4037
4034
4038 self.refreshPUWindow(puObj)
4035 self.refreshPUWindow(puObj)
4039 self.refreshPUProperties(puObj)
4036 self.refreshPUProperties(puObj)
4040 self.showtabPUCreated(puObj.datatype)
4037 self.showtabPUCreated(puObj.datatype)
4041
4038
4042 def on_right_click(self, pos):
4039 def on_right_click(self, pos):
4043
4040
4044 self.menu = QtGui.QMenu()
4041 self.menu = QtGui.QMenu()
4045 quitAction0 = self.menu.addAction("Create a New Project")
4042 quitAction0 = self.menu.addAction("Create a New Project")
4046 quitAction1 = self.menu.addAction("Create a New Processing Unit")
4043 quitAction1 = self.menu.addAction("Create a New Processing Unit")
4047 quitAction2 = self.menu.addAction("Delete Item")
4044 quitAction2 = self.menu.addAction("Delete Item")
4048 quitAction3 = self.menu.addAction("Quit")
4045 quitAction3 = self.menu.addAction("Quit")
4049
4046
4050 if len(self.__itemTreeDict) == 0:
4047 if len(self.__itemTreeDict) == 0:
4051 quitAction2.setEnabled(False)
4048 quitAction2.setEnabled(False)
4052 else:
4049 else:
4053 quitAction2.setEnabled(True)
4050 quitAction2.setEnabled(True)
4054
4051
4055 action = self.menu.exec_(self.mapToGlobal(pos))
4052 action = self.menu.exec_(self.mapToGlobal(pos))
4056
4053
4057 if action == quitAction0:
4054 if action == quitAction0:
4058 self. setInputsProject_View()
4055 self. setInputsProject_View()
4059 self.create = True
4056 self.create = True
4060
4057
4061 if action == quitAction1:
4058 if action == quitAction1:
4062 if len(self.__projectObjDict) == 0:
4059 if len(self.__projectObjDict) == 0:
4063 outputstr = "You need to create a Project before adding a Processing Unit"
4060 outputstr = "You need to create a Project before adding a Processing Unit"
4064 self.console.clear()
4061 self.console.clear()
4065 self.console.append(outputstr)
4062 self.console.append(outputstr)
4066 return 0
4063 return 0
4067 else:
4064 else:
4068 self.addPUWindow()
4065 self.addPUWindow()
4069 self.console.clear()
4066 self.console.clear()
4070 self.console.append("Please, Choose the type of Processing Unit")
4067 self.console.append("Please, Choose the type of Processing Unit")
4071 # self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
4068 # self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
4072 # self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
4069 # self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
4073 # self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
4070 # self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
4074
4071
4075 if action == quitAction2:
4072 if action == quitAction2:
4076 index = self.selectedItemTree
4073 index = self.selectedItemTree
4077 try:
4074 try:
4078 index.parent()
4075 index.parent()
4079 except:
4076 except:
4080 self.console.append('Please first select a Project or Processing Unit')
4077 self.console.append('Please first select a Project or Processing Unit')
4081 return 0
4078 return 0
4082 # print index.parent(),index
4079 # print index.parent(),index
4083 if index.parent() == None:
4080 if index.parent() == None:
4084 self.projectExplorerModel.removeRow(index.row())
4081 self.projectExplorerModel.removeRow(index.row())
4085 else:
4082 else:
4086 index.parent().removeRow(index.row())
4083 index.parent().removeRow(index.row())
4087 self.removeItemTreeFromProject()
4084 self.removeItemTreeFromProject()
4088 self.console.clear()
4085 self.console.clear()
4089 # for i in self.projectExplorerTree.selectionModel().selection().indexes():
4086 # for i in self.projectExplorerTree.selectionModel().selection().indexes():
4090 # print i.row()
4087 # print i.row()
4091
4088
4092 if action == quitAction3:
4089 if action == quitAction3:
4093 self.close()
4090 self.close()
4094 return 0
4091 return 0
4095
4092
4096 def createProjectView(self, id):
4093 def createProjectView(self, id):
4097
4094
4098 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4095 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4099 id = str(id)
4096 id = str(id)
4100 projectParms = self.__getParmsFromProjectWindow()
4097 projectParms = self.__getParmsFromProjectWindow()
4101
4098
4102 if not projectParms.isValid():
4099 if not projectParms.isValid():
4103 return None
4100 return None
4104
4101
4105 projectObjView = Project()
4102 projectObjView = Project()
4106 projectObjView.setup(id=id, name=projectParms.name, description=projectParms.description)
4103 projectObjView.setup(id=id, name=projectParms.name, description=projectParms.description)
4107
4104
4108 self.__projectObjDict[id] = projectObjView
4105 self.__projectObjDict[id] = projectObjView
4109 self.addProject2ProjectExplorer(id=id, name=projectObjView.name)
4106 self.addProject2ProjectExplorer(id=id, name=projectObjView.name)
4110
4107
4111 return projectObjView
4108 return projectObjView
4112
4109
4113 def updateProjectView(self):
4110 def updateProjectView(self):
4114
4111
4115 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4112 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4116
4113
4117 projectParms = self.__getParmsFromProjectWindow()
4114 projectParms = self.__getParmsFromProjectWindow()
4118
4115
4119 if not projectParms.isValid():
4116 if not projectParms.isValid():
4120 return None
4117 return None
4121
4118
4122 projectObjView = self.getSelectedProjectObj()
4119 projectObjView = self.getSelectedProjectObj()
4123
4120
4124 if not projectObjView:
4121 if not projectObjView:
4125 self.console.append("Please select a project before update it")
4122 self.console.append("Please select a project before update it")
4126 return None
4123 return None
4127
4124
4128 projectObjView.update(name=projectParms.name, description=projectParms.description)
4125 projectObjView.update(name=projectParms.name, description=projectParms.description)
4129
4126
4130 return projectObjView
4127 return projectObjView
4131
4128
4132 def createReadUnitView(self, projectObjView):
4129 def createReadUnitView(self, projectObjView):
4133
4130
4134 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4131 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4135
4132
4136 projectParms = self.__getParmsFromProjectWindow()
4133 projectParms = self.__getParmsFromProjectWindow()
4137
4134
4138 if not projectParms.isValid():
4135 if not projectParms.isValid():
4139 return None
4136 return None
4140
4137
4141 if projectParms.datatype in ("Voltage", "Spectra", "Fits"):
4138 if projectParms.datatype in ("Voltage", "Spectra", "Fits"):
4142 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
4139 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
4143 path=projectParms.dpath,
4140 path=projectParms.dpath,
4144 startDate=projectParms.startDate,
4141 startDate=projectParms.startDate,
4145 endDate=projectParms.endDate,
4142 endDate=projectParms.endDate,
4146 startTime=projectParms.startTime,
4143 startTime=projectParms.startTime,
4147 endTime=projectParms.endTime,
4144 endTime=projectParms.endTime,
4148 online=projectParms.online,
4145 online=projectParms.online,
4149 walk=projectParms.walk
4146 walk=projectParms.walk
4150 )
4147 )
4151
4148
4152 if projectParms.set:
4149 if projectParms.set:
4153 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
4150 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
4154
4151
4155 if projectParms.delay:
4152 if projectParms.delay:
4156 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4153 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4157
4154
4158 if projectParms.expLabel:
4155 if projectParms.expLabel:
4159 readUnitConfObj.addParameter(name="expLabel", value=projectParms.expLabel)
4156 readUnitConfObj.addParameter(name="expLabel", value=projectParms.expLabel)
4160
4157
4158 readUnitConfObj.addOperation(name="printInfo")
4159
4161 if projectParms.datatype == "USRP":
4160 if projectParms.datatype == "USRP":
4162 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
4161 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
4163 path=projectParms.dpath,
4162 path=projectParms.dpath,
4164 startDate=projectParms.startDate,
4163 startDate=projectParms.startDate,
4165 endDate=projectParms.endDate,
4164 endDate=projectParms.endDate,
4166 startTime=projectParms.startTime,
4165 startTime=projectParms.startTime,
4167 endTime=projectParms.endTime,
4166 endTime=projectParms.endTime,
4168 online=projectParms.online,
4167 online=projectParms.online,
4169 ippKm=projectParms.ippKm
4168 ippKm=projectParms.ippKm
4170 )
4169 )
4171
4170
4172 if projectParms.delay:
4171 if projectParms.delay:
4173 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4172 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4174
4173
4175 return readUnitConfObj
4174 return readUnitConfObj
4176
4175
4177 def updateReadUnitView(self, projectObjView, idReadUnit):
4176 def updateReadUnitView(self, projectObjView, idReadUnit):
4178
4177
4179 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
4178 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
4180
4179
4181 readUnitConfObj = projectObjView.getProcUnitObj(idReadUnit)
4180 readUnitConfObj = projectObjView.getProcUnitObj(idReadUnit)
4182
4181
4183 projectParms = self.__getParmsFromProjectWindow()
4182 projectParms = self.__getParmsFromProjectWindow()
4184
4183
4185 if not projectParms.isValid():
4184 if not projectParms.isValid():
4186 return None
4185 return None
4187
4186
4188 if projectParms.datatype in ["Voltage", "Spectra", "Fits"]:
4187 if projectParms.datatype in ["Voltage", "Spectra", "Fits"]:
4189 readUnitConfObj.update(datatype=projectParms.datatype,
4188 readUnitConfObj.update(datatype=projectParms.datatype,
4190 path=projectParms.dpath,
4189 path=projectParms.dpath,
4191 startDate=projectParms.startDate,
4190 startDate=projectParms.startDate,
4192 endDate=projectParms.endDate,
4191 endDate=projectParms.endDate,
4193 startTime=projectParms.startTime,
4192 startTime=projectParms.startTime,
4194 endTime=projectParms.endTime,
4193 endTime=projectParms.endTime,
4195 online=projectParms.online,
4194 online=projectParms.online,
4196 walk=projectParms.walk
4195 walk=projectParms.walk
4197 )
4196 )
4198 if projectParms.set:
4197 if projectParms.set:
4199 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
4198 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
4200
4199
4201 if projectParms.delay:
4200 if projectParms.delay:
4202 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4201 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4203
4202
4204 if projectParms.expLabel:
4203 if projectParms.expLabel:
4205 readUnitConfObj.addParameter(name="expLabel", value=projectParms.expLabel)
4204 readUnitConfObj.addParameter(name="expLabel", value=projectParms.expLabel)
4206
4205
4206 readUnitConfObj.addOperation(name="printInfo")
4207
4207 if projectParms.datatype == "USRP":
4208 if projectParms.datatype == "USRP":
4208 readUnitConfObj.update(datatype=projectParms.datatype,
4209 readUnitConfObj.update(datatype=projectParms.datatype,
4209 path=projectParms.dpath,
4210 path=projectParms.dpath,
4210 startDate=projectParms.startDate,
4211 startDate=projectParms.startDate,
4211 endDate=projectParms.endDate,
4212 endDate=projectParms.endDate,
4212 startTime=projectParms.startTime,
4213 startTime=projectParms.startTime,
4213 endTime=projectParms.endTime,
4214 endTime=projectParms.endTime,
4214 online=projectParms.online,
4215 online=projectParms.online,
4215 ippKm=projectParms.ippKm
4216 ippKm=projectParms.ippKm
4216 )
4217 )
4217
4218
4218 if projectParms.delay:
4219 if projectParms.delay:
4219 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4220 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4220
4221
4221 return readUnitConfObj
4222 return readUnitConfObj
4222
4223
4223 def createProcUnitView(self, projectObjView, datatype, inputId):
4224 def createProcUnitView(self, projectObjView, datatype, inputId):
4224
4225
4225 procUnitConfObj = projectObjView.addProcUnit(datatype=datatype, inputId=inputId)
4226 procUnitConfObj = projectObjView.addProcUnit(datatype=datatype, inputId=inputId)
4226
4227
4227 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4228 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4228
4229
4229 return procUnitConfObj
4230 return procUnitConfObj
4230
4231
4231 def updateProcUnitView(self, id):
4232 def updateProcUnitView(self, id):
4232
4233
4233 procUnitConfObj = projectObjView.getProcUnitObj(id)
4234 procUnitConfObj = projectObjView.getProcUnitObj(id)
4234 procUnitConfObj.removeOperations()
4235 procUnitConfObj.removeOperations()
4235
4236
4236 return procUnitConfObj
4237 return procUnitConfObj
4237
4238
4238 def addPUWindow(self):
4239 def addPUWindow(self):
4239
4240
4240 self.configUPWindowObj = UnitProcessWindow(self)
4241 self.configUPWindowObj = UnitProcessWindow(self)
4241 fatherObj = self.getSelectedItemObj()
4242 fatherObj = self.getSelectedItemObj()
4242 try:
4243 try:
4243 fatherObj.getElementName()
4244 fatherObj.getElementName()
4244 except:
4245 except:
4245 self.console.append("First left click on Project or Processing Unit")
4246 self.console.append("First left click on Project or Processing Unit")
4246 return 0
4247 return 0
4247
4248
4248 if fatherObj.getElementName() == 'Project':
4249 if fatherObj.getElementName() == 'Project':
4249 readUnitConfObj = fatherObj.getReadUnitObj()
4250 readUnitConfObj = fatherObj.getReadUnitObj()
4250 self.configUPWindowObj.dataTypeProject = str(readUnitConfObj.datatype)
4251 self.configUPWindowObj.dataTypeProject = str(readUnitConfObj.datatype)
4251
4252
4252 self.configUPWindowObj.getfromWindowList.append(fatherObj)
4253 self.configUPWindowObj.getfromWindowList.append(fatherObj)
4253 self.configUPWindowObj.loadTotalList()
4254 self.configUPWindowObj.loadTotalList()
4254 self.configUPWindowObj.show()
4255 self.configUPWindowObj.show()
4255 self.configUPWindowObj.closed.connect(self.createPUWindow)
4256 self.configUPWindowObj.closed.connect(self.createPUWindow)
4256
4257
4257 def createPUWindow(self):
4258 def createPUWindow(self):
4258
4259
4259 if not self.configUPWindowObj.create:
4260 if not self.configUPWindowObj.create:
4260 return
4261 return
4261
4262
4262 fatherObj = self.configUPWindowObj.getFromWindow
4263 fatherObj = self.configUPWindowObj.getFromWindow
4263 datatype = self.configUPWindowObj.typeofUP
4264 datatype = self.configUPWindowObj.typeofUP
4264
4265
4265 if fatherObj.getElementName() == 'Project':
4266 if fatherObj.getElementName() == 'Project':
4266 inputId = fatherObj.getReadUnitId()
4267 inputId = fatherObj.getReadUnitId()
4267 projectObjView = fatherObj
4268 projectObjView = fatherObj
4268 else:
4269 else:
4269 inputId = fatherObj.getId()
4270 inputId = fatherObj.getId()
4270 projectObjView = self.getSelectedProjectObj()
4271 projectObjView = self.getSelectedProjectObj()
4271
4272
4272 if not projectObjView:
4273 if not projectObjView:
4273 return
4274 return
4274
4275
4275 puObj = self.createProcUnitView(projectObjView, datatype, inputId)
4276 puObj = self.createProcUnitView(projectObjView, datatype, inputId)
4276
4277
4277 self.addPU2ProjectExplorer(puObj)
4278 self.addPU2ProjectExplorer(puObj)
4278
4279
4279 self.showtabPUCreated(datatype)
4280 self.showtabPUCreated(datatype)
4280
4281
4281 self.clearPUWindow(datatype)
4282 self.clearPUWindow(datatype)
4282
4283
4283 self.showPUinitView()
4284 self.showPUinitView()
4284
4285
4285 def addFTPConf2Operation(self, puObj, opObj):
4286 def addFTPConf2Operation(self, puObj, opObj):
4286
4287
4287 if not self.temporalFTP.create:
4288 if not self.temporalFTP.create:
4288 self.temporalFTP.setwithoutconfiguration()
4289 self.temporalFTP.setwithoutconfiguration()
4289
4290
4290 # opObj.addParameter(name='server', value=self.temporalFTP.server, format='str')
4291 # opObj.addParameter(name='server', value=self.temporalFTP.server, format='str')
4291 # opObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str')
4292 # opObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str')
4292 # opObj.addParameter(name='username', value=self.temporalFTP.username, format='str')
4293 # opObj.addParameter(name='username', value=self.temporalFTP.username, format='str')
4293 # opObj.addParameter(name='password', value=self.temporalFTP.password, format='str')
4294 # opObj.addParameter(name='password', value=self.temporalFTP.password, format='str')
4294
4295
4295 if self.temporalFTP.ftp_wei:
4296 if self.temporalFTP.ftp_wei:
4296 opObj.addParameter(name='ftp_wei', value=int(self.temporalFTP.ftp_wei), format='int')
4297 opObj.addParameter(name='ftp_wei', value=int(self.temporalFTP.ftp_wei), format='int')
4297 if self.temporalFTP.exp_code:
4298 if self.temporalFTP.exp_code:
4298 opObj.addParameter(name='exp_code', value=int(self.temporalFTP.exp_code), format='int')
4299 opObj.addParameter(name='exp_code', value=int(self.temporalFTP.exp_code), format='int')
4299 if self.temporalFTP.sub_exp_code:
4300 if self.temporalFTP.sub_exp_code:
4300 opObj.addParameter(name='sub_exp_code', value=int(self.temporalFTP.sub_exp_code), format='int')
4301 opObj.addParameter(name='sub_exp_code', value=int(self.temporalFTP.sub_exp_code), format='int')
4301 if self.temporalFTP.plot_pos:
4302 if self.temporalFTP.plot_pos:
4302 opObj.addParameter(name='plot_pos', value=int(self.temporalFTP.plot_pos), format='int')
4303 opObj.addParameter(name='plot_pos', value=int(self.temporalFTP.plot_pos), format='int')
4303
4304
4304 # def __checkFTPProcUnit(self, projectObj, localfolder):
4305 # def __checkFTPProcUnit(self, projectObj, localfolder):
4305 #
4306 #
4306 # puId = None
4307 # puId = None
4307 # puObj = None
4308 # puObj = None
4308 #
4309 #
4309 # for thisPuId, thisPuObj in projectObj.procUnitItems():
4310 # for thisPuId, thisPuObj in projectObj.procUnitItems():
4310 #
4311 #
4311 # if not thisPuObj.name == "SendToServer":
4312 # if not thisPuObj.name == "SendToServer":
4312 # continue
4313 # continue
4313 #
4314 #
4314 # opObj = thisPuObj.getOperationObj(name='run')
4315 # opObj = thisPuObj.getOperationObj(name='run')
4315 #
4316 #
4316 # parmObj = opObj.getParameterObj('localfolder')
4317 # parmObj = opObj.getParameterObj('localfolder')
4317 #
4318 #
4318 # #localfolder parameter should always be set, if it is not set then ProcUnit should be removed
4319 # #localfolder parameter should always be set, if it is not set then ProcUnit should be removed
4319 # if not parmObj:
4320 # if not parmObj:
4320 # projectObj.removeProcUnit(thisPuId)
4321 # projectObj.removeProcUnit(thisPuId)
4321 # continue
4322 # continue
4322 #
4323 #
4323 # thisLocalfolder = parmObj.getValue()
4324 # thisLocalfolder = parmObj.getValue()
4324 #
4325 #
4325 # if localfolder != thisLocalfolder:
4326 # if localfolder != thisLocalfolder:
4326 # continue
4327 # continue
4327 #
4328 #
4328 # puId = thisPuId
4329 # puId = thisPuId
4329 # puObj = thisPuObj
4330 # puObj = thisPuObj
4330 # break
4331 # break
4331 #
4332 #
4332 # return puObj
4333 # return puObj
4333
4334
4334 def createFTPProcUnitView(self):
4335 def createFTPProcUnitView(self):
4335
4336
4336 if not self.temporalFTP.create:
4337 if not self.temporalFTP.create:
4337 self.temporalFTP.setwithoutconfiguration()
4338 self.temporalFTP.setwithoutconfiguration()
4338
4339
4339 projectObj = self.getSelectedProjectObj()
4340 projectObj = self.getSelectedProjectObj()
4340
4341
4341 if not projectObj:
4342 if not projectObj:
4342 return
4343 return
4343
4344
4344 self.removeAllFTPProcUnitView(projectObj)
4345 self.removeAllFTPProcUnitView(projectObj)
4345
4346
4346 if not self.__puLocalFolder2FTP:
4347 if not self.__puLocalFolder2FTP:
4347 return
4348 return
4348
4349
4349 folderList = ",".join(self.__puLocalFolder2FTP.values())
4350 folderList = ",".join(self.__puLocalFolder2FTP.values())
4350
4351
4351 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
4352 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
4352
4353
4353 procUnitConfObj.addParameter(name='server', value=self.temporalFTP.server, format='str')
4354 procUnitConfObj.addParameter(name='server', value=self.temporalFTP.server, format='str')
4354 procUnitConfObj.addParameter(name='username', value=self.temporalFTP.username, format='str')
4355 procUnitConfObj.addParameter(name='username', value=self.temporalFTP.username, format='str')
4355 procUnitConfObj.addParameter(name='password', value=self.temporalFTP.password, format='str')
4356 procUnitConfObj.addParameter(name='password', value=self.temporalFTP.password, format='str')
4356 procUnitConfObj.addParameter(name='localfolder', value=folderList, format='list')
4357 procUnitConfObj.addParameter(name='localfolder', value=folderList, format='list')
4357 procUnitConfObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str')
4358 procUnitConfObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str')
4358 procUnitConfObj.addParameter(name='ext', value=self.temporalFTP.extension, format='str')
4359 procUnitConfObj.addParameter(name='ext', value=self.temporalFTP.extension, format='str')
4359 procUnitConfObj.addParameter(name='period', value=self.temporalFTP.period, format='int')
4360 procUnitConfObj.addParameter(name='period', value=self.temporalFTP.period, format='int')
4360 procUnitConfObj.addParameter(name='protocol', value=self.temporalFTP.protocol, format='str')
4361 procUnitConfObj.addParameter(name='protocol', value=self.temporalFTP.protocol, format='str')
4361
4362
4362 procUnitConfObj.addParameter(name='ftp_wei', value=self.temporalFTP.ftp_wei, format='int')
4363 procUnitConfObj.addParameter(name='ftp_wei', value=self.temporalFTP.ftp_wei, format='int')
4363 procUnitConfObj.addParameter(name='exp_code', value=self.temporalFTP.exp_code, format='int')
4364 procUnitConfObj.addParameter(name='exp_code', value=self.temporalFTP.exp_code, format='int')
4364 procUnitConfObj.addParameter(name='sub_exp_code', value=self.temporalFTP.sub_exp_code, format='int')
4365 procUnitConfObj.addParameter(name='sub_exp_code', value=self.temporalFTP.sub_exp_code, format='int')
4365 procUnitConfObj.addParameter(name='plot_pos', value=self.temporalFTP.plot_pos, format='int')
4366 procUnitConfObj.addParameter(name='plot_pos', value=self.temporalFTP.plot_pos, format='int')
4366
4367
4367 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4368 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4368
4369
4369 def removeAllFTPProcUnitView(self, projectObj):
4370 def removeAllFTPProcUnitView(self, projectObj):
4370
4371
4371 for thisPuId, thisPuObj in projectObj.procUnitItems():
4372 for thisPuId, thisPuObj in projectObj.procUnitItems():
4372
4373
4373 if not thisPuObj.name == "SendToServer":
4374 if not thisPuObj.name == "SendToServer":
4374 continue
4375 continue
4375
4376
4376 projectObj.removeProcUnit(thisPuId)
4377 projectObj.removeProcUnit(thisPuId)
4377
4378
4378 if thisPuId not in self.__puObjDict.keys():
4379 if thisPuId not in self.__puObjDict.keys():
4379 continue
4380 continue
4380
4381
4381 self.__puObjDict.pop(thisPuId)
4382 self.__puObjDict.pop(thisPuId)
4382
4383
4383 def showPUinitView(self):
4384 def showPUinitView(self):
4384
4385
4385 self.propertiesModel = TreeModel()
4386 self.propertiesModel = TreeModel()
4386 self.propertiesModel.initPUVoltageView()
4387 self.propertiesModel.initPUVoltageView()
4387 self.treeProjectProperties.setModel(self.propertiesModel)
4388 self.treeProjectProperties.setModel(self.propertiesModel)
4388 self.treeProjectProperties.expandAll()
4389 self.treeProjectProperties.expandAll()
4389 self.treeProjectProperties.allColumnsShowFocus()
4390 self.treeProjectProperties.allColumnsShowFocus()
4390 self.treeProjectProperties.resizeColumnToContents(1)
4391 self.treeProjectProperties.resizeColumnToContents(1)
4391
4392
4392 def saveFTPFromOpObj(self, operationObj):
4393 def saveFTPFromOpObj(self, operationObj):
4393
4394
4394 if operationObj.name != "SendByFTP":
4395 if operationObj.name != "SendByFTP":
4395 return
4396 return
4396
4397
4397 server = operationObj.getParameterValue("server")
4398 server = operationObj.getParameterValue("server")
4398 username = operationObj.getParameterValue("username")
4399 username = operationObj.getParameterValue("username")
4399 password = operationObj.getParameterValue("password")
4400 password = operationObj.getParameterValue("password")
4400 localfolder = operationObj.getParameterValue("localfolder")
4401 localfolder = operationObj.getParameterValue("localfolder")
4401 remotefolder = operationObj.getParameterValue("remotefolder")
4402 remotefolder = operationObj.getParameterValue("remotefolder")
4402 ext = operationObj.getParameterValue("ext")
4403 ext = operationObj.getParameterValue("ext")
4403 period = operationObj.getParameterValue("period")
4404 period = operationObj.getParameterValue("period")
4404
4405
4405 self.temporalFTP.save(server=server,
4406 self.temporalFTP.save(server=server,
4406 remotefolder=remotefolder,
4407 remotefolder=remotefolder,
4407 username=username,
4408 username=username,
4408 password=password,
4409 password=password,
4409 localfolder=localfolder,
4410 localfolder=localfolder,
4410 extension=ext)
4411 extension=ext)
4411
4412
4412 return
4413 return
4413
4414
4414 def saveFTPFromProcUnitObj(self, puObj):
4415 def saveFTPFromProcUnitObj(self, puObj):
4415
4416
4416 opObj = puObj.getOperationObj(name="run")
4417 opObj = puObj.getOperationObj(name="run")
4417
4418
4418 parmObj = opObj.getParameterObj(parameterName="server")
4419 parmObj = opObj.getParameterObj(parameterName="server")
4419 if parmObj == None:
4420 if parmObj == None:
4420 server = 'jro-app.igp.gob.pe'
4421 server = 'jro-app.igp.gob.pe'
4421 else:
4422 else:
4422 server = parmObj.getValue()
4423 server = parmObj.getValue()
4423
4424
4424 parmObj = opObj.getParameterObj(parameterName="remotefolder")
4425 parmObj = opObj.getParameterObj(parameterName="remotefolder")
4425 if parmObj == None:
4426 if parmObj == None:
4426 remotefolder = '/home/wmaster/graficos'
4427 remotefolder = '/home/wmaster/graficos'
4427 else:
4428 else:
4428 remotefolder = parmObj.getValue()
4429 remotefolder = parmObj.getValue()
4429
4430
4430 parmObj = opObj.getParameterObj(parameterName="username")
4431 parmObj = opObj.getParameterObj(parameterName="username")
4431 if parmObj == None:
4432 if parmObj == None:
4432 username = 'wmaster'
4433 username = 'wmaster'
4433 else:
4434 else:
4434 username = parmObj.getValue()
4435 username = parmObj.getValue()
4435
4436
4436 parmObj = opObj.getParameterObj(parameterName="password")
4437 parmObj = opObj.getParameterObj(parameterName="password")
4437 if parmObj == None:
4438 if parmObj == None:
4438 password = 'mst2010vhf'
4439 password = 'mst2010vhf'
4439 else:
4440 else:
4440 password = parmObj.getValue()
4441 password = parmObj.getValue()
4441
4442
4442 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
4443 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
4443 if parmObj == None:
4444 if parmObj == None:
4444 ftp_wei = 0
4445 ftp_wei = 0
4445 else:
4446 else:
4446 ftp_wei = parmObj.getValue()
4447 ftp_wei = parmObj.getValue()
4447
4448
4448 parmObj = opObj.getParameterObj(parameterName="exp_code")
4449 parmObj = opObj.getParameterObj(parameterName="exp_code")
4449 if parmObj == None:
4450 if parmObj == None:
4450 exp_code = 0
4451 exp_code = 0
4451 else:
4452 else:
4452 exp_code = parmObj.getValue()
4453 exp_code = parmObj.getValue()
4453
4454
4454 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
4455 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
4455 if parmObj == None:
4456 if parmObj == None:
4456 sub_exp_code = 0
4457 sub_exp_code = 0
4457 else:
4458 else:
4458 sub_exp_code = parmObj.getValue()
4459 sub_exp_code = parmObj.getValue()
4459
4460
4460 parmObj = opObj.getParameterObj(parameterName="plot_pos")
4461 parmObj = opObj.getParameterObj(parameterName="plot_pos")
4461 if parmObj == None:
4462 if parmObj == None:
4462 plot_pos = 0
4463 plot_pos = 0
4463 else:
4464 else:
4464 plot_pos = parmObj.getValue()
4465 plot_pos = parmObj.getValue()
4465
4466
4466 parmObj = opObj.getParameterObj(parameterName="localfolder")
4467 parmObj = opObj.getParameterObj(parameterName="localfolder")
4467 if parmObj == None:
4468 if parmObj == None:
4468 localfolder = None
4469 localfolder = None
4469 else:
4470 else:
4470 localfolder = parmObj.getValue()
4471 localfolder = parmObj.getValue()
4471
4472
4472 parmObj = opObj.getParameterObj(parameterName="ext")
4473 parmObj = opObj.getParameterObj(parameterName="ext")
4473 if parmObj == None:
4474 if parmObj == None:
4474 extension = '.png'
4475 extension = '.png'
4475 else:
4476 else:
4476 extension = parmObj.getValue()
4477 extension = parmObj.getValue()
4477
4478
4478 self.temporalFTP.save(server=server,
4479 self.temporalFTP.save(server=server,
4479 remotefolder=remotefolder,
4480 remotefolder=remotefolder,
4480 username=username,
4481 username=username,
4481 password=password,
4482 password=password,
4482 ftp_wei=ftp_wei,
4483 ftp_wei=ftp_wei,
4483 exp_code=exp_code,
4484 exp_code=exp_code,
4484 sub_exp_code=sub_exp_code,
4485 sub_exp_code=sub_exp_code,
4485 plot_pos=plot_pos,
4486 plot_pos=plot_pos,
4486 localfolder=localfolder,
4487 localfolder=localfolder,
4487 extension=extension)
4488 extension=extension)
4488
4489
4489 def addProject2ProjectExplorer(self, id, name):
4490 def addProject2ProjectExplorer(self, id, name):
4490
4491
4491 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4492 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4492
4493
4493 parentItem = self.projectExplorerModel.invisibleRootItem()
4494 parentItem = self.projectExplorerModel.invisibleRootItem()
4494 parentItem.appendRow(itemTree)
4495 parentItem.appendRow(itemTree)
4495
4496
4496 self.projectExplorerTree.setCurrentIndex(itemTree.index())
4497 self.projectExplorerTree.setCurrentIndex(itemTree.index())
4497
4498
4498 self.selectedItemTree = itemTree
4499 self.selectedItemTree = itemTree
4499
4500
4500 self.__itemTreeDict[id] = itemTree
4501 self.__itemTreeDict[id] = itemTree
4501
4502
4502 def addPU2ProjectExplorer(self, puObj):
4503 def addPU2ProjectExplorer(self, puObj):
4503
4504
4504 id, name = puObj.id, puObj.datatype
4505 id, name = puObj.id, puObj.datatype
4505
4506
4506 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4507 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4507
4508
4508 parentItem = self.selectedItemTree
4509 parentItem = self.selectedItemTree
4509 parentItem.appendRow(itemTree)
4510 parentItem.appendRow(itemTree)
4510 self.projectExplorerTree.expandAll()
4511 self.projectExplorerTree.expandAll()
4511
4512
4512 self.projectExplorerTree.setCurrentIndex(itemTree.index())
4513 self.projectExplorerTree.setCurrentIndex(itemTree.index())
4513
4514
4514 self.selectedItemTree = itemTree
4515 self.selectedItemTree = itemTree
4515
4516
4516 self.__itemTreeDict[id] = itemTree
4517 self.__itemTreeDict[id] = itemTree
4517
4518
4518 def addPU2PELoadXML(self, puObj):
4519 def addPU2PELoadXML(self, puObj):
4519
4520
4520 id, name, inputId = puObj.id, puObj.datatype, puObj.inputId
4521 id, name, inputId = puObj.id, puObj.datatype, puObj.inputId
4521
4522
4522 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4523 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4523
4524
4524 if self.__itemTreeDict.has_key(inputId):
4525 if self.__itemTreeDict.has_key(inputId):
4525 parentItem = self.__itemTreeDict[inputId]
4526 parentItem = self.__itemTreeDict[inputId]
4526 else:
4527 else:
4527 #If parent is a Reader object
4528 #If parent is a Reader object
4528 parentItem = self.__itemTreeDict[id[:-1]]
4529 parentItem = self.__itemTreeDict[id[:-1]]
4529
4530
4530 parentItem.appendRow(itemTree)
4531 parentItem.appendRow(itemTree)
4531 self.projectExplorerTree.expandAll()
4532 self.projectExplorerTree.expandAll()
4532 parentItem = itemTree
4533 parentItem = itemTree
4533 self.projectExplorerTree.setCurrentIndex(parentItem.index())
4534 self.projectExplorerTree.setCurrentIndex(parentItem.index())
4534
4535
4535 self.__itemTreeDict[id] = itemTree
4536 self.__itemTreeDict[id] = itemTree
4536 self.selectedItemTree = itemTree
4537 self.selectedItemTree = itemTree
4537
4538
4538 def getSelectedProjectObj(self):
4539 def getSelectedProjectObj(self):
4539 """
4540 """
4540 Return the current project object selected. If a processing unit is
4541 Return the current project object selected. If a processing unit is
4541 actually selected this function returns associated project.
4542 actually selected this function returns associated project.
4542
4543
4543 None if any project or processing unit is selected
4544 None if any project or processing unit is selected
4544 """
4545 """
4545 for key in self.__itemTreeDict.keys():
4546 for key in self.__itemTreeDict.keys():
4546 if self.__itemTreeDict[key] != self.selectedItemTree:
4547 if self.__itemTreeDict[key] != self.selectedItemTree:
4547 continue
4548 continue
4548
4549
4549 if self.__projectObjDict.has_key(key):
4550 if self.__projectObjDict.has_key(key):
4550 projectObj = self.__projectObjDict[key]
4551 projectObj = self.__projectObjDict[key]
4551 return projectObj
4552 return projectObj
4552
4553
4553 puObj = self.__puObjDict[key]
4554 puObj = self.__puObjDict[key]
4554
4555
4555 if puObj.parentId == None:
4556 if puObj.parentId == None:
4556 projectId = puObj.getId()[0]
4557 projectId = puObj.getId()[0]
4557 else:
4558 else:
4558 projectId = puObj.parentId
4559 projectId = puObj.parentId
4559
4560
4560 projectObj = self.__projectObjDict[projectId]
4561 projectObj = self.__projectObjDict[projectId]
4561 return projectObj
4562 return projectObj
4562
4563
4563 return None
4564 return None
4564
4565
4565 def getSelectedItemObj(self):
4566 def getSelectedItemObj(self):
4566 """
4567 """
4567 Return the current project or processing unit object selected
4568 Return the current project or processing unit object selected
4568
4569
4569 None if any project or processing unit is selected
4570 None if any project or processing unit is selected
4570 """
4571 """
4571 for key in self.__itemTreeDict.keys():
4572 for key in self.__itemTreeDict.keys():
4572 if self.__itemTreeDict[key] != self.selectedItemTree:
4573 if self.__itemTreeDict[key] != self.selectedItemTree:
4573 continue
4574 continue
4574
4575
4575 if self.__projectObjDict.has_key(key) == True:
4576 if self.__projectObjDict.has_key(key) == True:
4576 fatherObj = self.__projectObjDict[key]
4577 fatherObj = self.__projectObjDict[key]
4577 else:
4578 else:
4578 fatherObj = self.__puObjDict[key]
4579 fatherObj = self.__puObjDict[key]
4579
4580
4580 return fatherObj
4581 return fatherObj
4581
4582
4582 return None
4583 return None
4583
4584
4584 def _WarningWindow(self, text, information):
4585 def _WarningWindow(self, text, information):
4585
4586
4586 msgBox = QtGui.QMessageBox()
4587 msgBox = QtGui.QMessageBox()
4587 msgBox.setText(text)
4588 msgBox.setText(text)
4588 msgBox.setInformativeText(information)
4589 msgBox.setInformativeText(information)
4589 msgBox.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
4590 msgBox.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
4590 msgBox.setDefaultButton(QtGui.QMessageBox.Ok)
4591 msgBox.setDefaultButton(QtGui.QMessageBox.Ok)
4591 ret = msgBox.exec_()
4592 ret = msgBox.exec_()
4592
4593
4593 answer = False
4594 answer = False
4594
4595
4595 if ret == QtGui.QMessageBox.Ok:
4596 if ret == QtGui.QMessageBox.Ok:
4596 answer = True
4597 answer = True
4597
4598
4598 return answer
4599 return answer
4599
4600
4600 def __getNewProjectId(self):
4601 def __getNewProjectId(self):
4601
4602
4602 loadProject = False
4603 loadProject = False
4603
4604
4604 for thisId in range(1,10):
4605 for thisId in range(1,10):
4605 newId = str(thisId)
4606 newId = str(thisId)
4606 if newId in self.__projectObjDict.keys():
4607 if newId in self.__projectObjDict.keys():
4607 continue
4608 continue
4608
4609
4609 loadProject = True
4610 loadProject = True
4610 projectId = newId
4611 projectId = newId
4611 break
4612 break
4612
4613
4613 if not loadProject:
4614 if not loadProject:
4614 self.console.clear()
4615 self.console.clear()
4615 self.console.append("The maximum number of projects has been loaded, a new project can not be loaded")
4616 self.console.append("The maximum number of projects has been loaded, a new project can not be loaded")
4616 return None
4617 return None
4617
4618
4618 return projectId
4619 return projectId
4619
4620
4620 def openProject(self):
4621 def openProject(self):
4621
4622
4622 self.actionStart.setEnabled(False)
4623 self.actionStart.setEnabled(False)
4623 self.actionStarToolbar.setEnabled(False)
4624 self.actionStarToolbar.setEnabled(False)
4624
4625
4625 self.frame_2.setEnabled(True)
4626 self.frame_2.setEnabled(True)
4626
4627
4627 # print self.dir
4628 # print self.dir
4628 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
4629 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
4629
4630
4630 projectObjLoad = Project()
4631 projectObjLoad = Project()
4631
4632
4632 try:
4633 try:
4633 projectObjLoad.readXml(filename)
4634 projectObjLoad.readXml(filename)
4634 except:
4635 except:
4635 self.console.clear()
4636 self.console.clear()
4636 self.console.append("The selected xml file could not be loaded ...")
4637 self.console.append("The selected xml file could not be loaded ...")
4637 return 0
4638 return 0
4638
4639
4639 self.create = False
4640 self.create = False
4640 self.refreshProjectWindow(projectObjLoad)
4641 self.refreshProjectWindow(projectObjLoad)
4641 self.refreshProjectProperties(projectObjLoad)
4642 self.refreshProjectProperties(projectObjLoad)
4642
4643
4643 projectId = projectObjLoad.id
4644 projectId = projectObjLoad.id
4644
4645
4645 if projectId in self.__projectObjDict.keys():
4646 if projectId in self.__projectObjDict.keys():
4646
4647
4647 # answer = self._WarningWindow("You already have a project loaded with the same Id",
4648 # answer = self._WarningWindow("You already have a project loaded with the same Id",
4648 # "Do you want to load the file anyway?")
4649 # "Do you want to load the file anyway?")
4649 # if not answer:
4650 # if not answer:
4650 # return
4651 # return
4651
4652
4652 projectId = self.__getNewProjectId()
4653 projectId = self.__getNewProjectId()
4653
4654
4654 if not projectId:
4655 if not projectId:
4655 return
4656 return
4656
4657
4657 projectObjLoad.updateId(projectId)
4658 projectObjLoad.updateId(projectId)
4658
4659
4659 self.__projectObjDict[projectId] = projectObjLoad
4660 self.__projectObjDict[projectId] = projectObjLoad
4660
4661
4661 self.addProject2ProjectExplorer(id=projectId, name=projectObjLoad.name)
4662 self.addProject2ProjectExplorer(id=projectId, name=projectObjLoad.name)
4662
4663
4663 self.tabWidgetProject.setEnabled(True)
4664 self.tabWidgetProject.setEnabled(True)
4664 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4665 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4665 # Disable tabProject after finish the creation
4666 # Disable tabProject after finish the creation
4666 self.tabProject.setEnabled(True)
4667 self.tabProject.setEnabled(True)
4667 puObjorderList = OrderedDict(sorted(projectObjLoad.procUnitConfObjDict.items(), key=lambda x: x[0]))
4668 puObjorderList = OrderedDict(sorted(projectObjLoad.procUnitConfObjDict.items(), key=lambda x: x[0]))
4668
4669
4669 for puId, puObj in puObjorderList.items():
4670 for puId, puObj in puObjorderList.items():
4670
4671
4671 self.__puObjDict[puId] = puObj
4672 self.__puObjDict[puId] = puObj
4672
4673
4673 if puObj.name == "SendToServer":
4674 if puObj.name == "SendToServer":
4674 self.saveFTPFromProcUnitObj(puObj)
4675 self.saveFTPFromProcUnitObj(puObj)
4675
4676
4676 ############## COMPATIBLE WITH OLD VERSIONS ################
4677 ############## COMPATIBLE WITH OLD VERSIONS ################
4677 operationObj = puObj.getOperationObj("SendByFTP")
4678 operationObj = puObj.getOperationObj("SendByFTP")
4678
4679
4679 if operationObj:
4680 if operationObj:
4680 self.saveFTPFromOpObj(operationObj)
4681 self.saveFTPFromOpObj(operationObj)
4681 ############################################################
4682 ############################################################
4682
4683
4683 if puObj.inputId == '0':
4684 if puObj.inputId == '0':
4684 continue
4685 continue
4685
4686
4686 self.addPU2PELoadXML(puObj)
4687 self.addPU2PELoadXML(puObj)
4687
4688
4688 self.refreshPUWindow(puObj)
4689 self.refreshPUWindow(puObj)
4689 self.refreshPUProperties(puObj)
4690 self.refreshPUProperties(puObj)
4690 self.showtabPUCreated(datatype=puObj.datatype)
4691 self.showtabPUCreated(datatype=puObj.datatype)
4691
4692
4692 self.console.clear()
4693 self.console.clear()
4693 self.console.append("The selected xml file has been loaded successfully")
4694 self.console.append("The selected xml file has been loaded successfully")
4694
4695
4695 self.actionStart.setEnabled(True)
4696 self.actionStart.setEnabled(True)
4696 self.actionStarToolbar.setEnabled(True)
4697 self.actionStarToolbar.setEnabled(True)
4697
4698
4698 def create_updating_timer(self):
4699 def create_updating_timer(self):
4699 self.comm_data_timer = QtCore.QTimer(self)
4700 self.comm_data_timer = QtCore.QTimer(self)
4700 self.comm_data_timer.timeout.connect(self.on_comm_updating_timer)
4701 self.comm_data_timer.timeout.connect(self.on_comm_updating_timer)
4701 self.comm_data_timer.start(1000)
4702 self.comm_data_timer.start(1000)
4702
4703
4703 def on_comm_updating_timer(self):
4704 def on_comm_updating_timer(self):
4704 # Verifica si algun proceso ha sido inicializado y sigue ejecutandose
4705 # Verifica si algun proceso ha sido inicializado y sigue ejecutandose
4705 # Si el proceso se ha parado actualizar el GUI (stopProject)
4706 # Si el proceso se ha parado actualizar el GUI (stopProject)
4706 if not self.__enable:
4707 if not self.__enable:
4707 return
4708 return
4708
4709
4709 if self.controllerThread.isFinished():
4710 if self.controllerThread.isFinished():
4710 self.stopProject()
4711 self.stopProject()
4711
4712
4712 # def jobStartedFromThread(self, success):
4713 # def jobStartedFromThread(self, success):
4713 #
4714 #
4714 # self.console.clear()
4715 # self.console.clear()
4715 # self.console.append("Job started")
4716 # self.console.append("Job started")
4716 #
4717 #
4717 # def jobFinishedFromThread(self, success):
4718 # def jobFinishedFromThread(self, success):
4718 #
4719 #
4719 # self.stopProject()
4720 # self.stopProject()
4720
4721
4721 def playProject(self, ext=".xml", save=1):
4722 def playProject(self, ext=".xml", save=1):
4722
4723
4723 projectObj = self.getSelectedProjectObj()
4724 projectObj = self.getSelectedProjectObj()
4724
4725
4725 if not projectObj:
4726 if not projectObj:
4726 self.console.append("Please select a project before pressing PLAY button")
4727 self.console.append("Please select a project before pressing PLAY button")
4727 return
4728 return
4728
4729
4729 if save:
4730 if save:
4730 filename = self.saveProject()
4731 filename = self.saveProject()
4731 if filename == None:
4732 if filename == None:
4732 self.console.append("Process did not initialize.")
4733 self.console.append("Process did not initialize.")
4733 return
4734 return
4734 else:
4735 else:
4735 filename = TEMPORAL_FILE
4736 filename = TEMPORAL_FILE
4736 projectObj.writeXml( os.path.join(self.pathWorkSpace,filename) )
4737 projectObj.writeXml( os.path.join(self.pathWorkSpace,filename) )
4737
4738
4738 self.actionStart.setEnabled(False)
4739 self.actionStart.setEnabled(False)
4739 self.actionPause.setEnabled(True)
4740 self.actionPause.setEnabled(True)
4740 self.actionStop.setEnabled(True)
4741 self.actionStop.setEnabled(True)
4741
4742
4742 self.actionStarToolbar.setEnabled(False)
4743 self.actionStarToolbar.setEnabled(False)
4743 self.actionPauseToolbar.setEnabled(True)
4744 self.actionPauseToolbar.setEnabled(True)
4744 self.actionStopToolbar.setEnabled(True)
4745 self.actionStopToolbar.setEnabled(True)
4745
4746
4746 self.console.append("Please Wait...")
4747 self.console.append("Please Wait...")
4747
4748
4748 self.controllerThread = ControllerThread(filename)
4749 self.controllerThread = ControllerThread(filename)
4749
4750
4750 # QObject.connect( self.controllerThread, SIGNAL( "jobFinished( PyQt_PyObject )" ), self.jobFinishedFromThread )
4751 # QObject.connect( self.controllerThread, SIGNAL( "jobFinished( PyQt_PyObject )" ), self.jobFinishedFromThread )
4751 # QObject.connect( self.controllerThread, SIGNAL( "jobStarted( PyQt_PyObject )" ), self.jobStartedFromThread )
4752 # QObject.connect( self.controllerThread, SIGNAL( "jobStarted( PyQt_PyObject )" ), self.jobStartedFromThread )
4752 self.console.clear()
4753 self.console.clear()
4753 self.controllerThread.start()
4754 self.controllerThread.start()
4754 sleep(0.5)
4755 sleep(0.5)
4755 self.__enable = True
4756 self.__enable = True
4756
4757
4757 def stopProject(self):
4758 def stopProject(self):
4758
4759
4759 self.__enable = False
4760 self.__enable = False
4760
4761
4761 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.STOP, True))
4762 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.STOP, True))
4762 self.controllerThread.stop()
4763 self.controllerThread.stop()
4763
4764
4764 while self.controllerThread.isRunning():
4765 while self.controllerThread.isRunning():
4765 sleep(0.5)
4766 sleep(0.5)
4766
4767
4767 self.actionStart.setEnabled(True)
4768 self.actionStart.setEnabled(True)
4768 self.actionPause.setEnabled(False)
4769 self.actionPause.setEnabled(False)
4769 self.actionStop.setEnabled(False)
4770 self.actionStop.setEnabled(False)
4770
4771
4771 self.actionStarToolbar.setEnabled(True)
4772 self.actionStarToolbar.setEnabled(True)
4772 self.actionPauseToolbar.setEnabled(False)
4773 self.actionPauseToolbar.setEnabled(False)
4773 self.actionStopToolbar.setEnabled(False)
4774 self.actionStopToolbar.setEnabled(False)
4774
4775
4775 self.restorePauseIcon()
4776 self.restorePauseIcon()
4776
4777
4777 def pauseProject(self):
4778 def pauseProject(self):
4778
4779
4779 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PAUSE, data=True))
4780 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PAUSE, data=True))
4780 self.controllerThread.pause()
4781 self.controllerThread.pause()
4781
4782
4782 self.actionStart.setEnabled(False)
4783 self.actionStart.setEnabled(False)
4783 self.actionPause.setEnabled(True)
4784 self.actionPause.setEnabled(True)
4784 self.actionStop.setEnabled(True)
4785 self.actionStop.setEnabled(True)
4785
4786
4786 self.actionStarToolbar.setEnabled(False)
4787 self.actionStarToolbar.setEnabled(False)
4787 self.actionPauseToolbar.setEnabled(True)
4788 self.actionPauseToolbar.setEnabled(True)
4788 self.actionStopToolbar.setEnabled(True)
4789 self.actionStopToolbar.setEnabled(True)
4789
4790
4790 def saveProject(self, filename=None):
4791 def saveProject(self, filename=None):
4791
4792
4792 self.actionStart.setEnabled(False)
4793 self.actionStart.setEnabled(False)
4793 self.actionStarToolbar.setEnabled(False)
4794 self.actionStarToolbar.setEnabled(False)
4794
4795
4795 projectObj = self.getSelectedProjectObj()
4796 projectObj = self.getSelectedProjectObj()
4796
4797
4797 if not projectObj:
4798 if not projectObj:
4798
4799
4799 if self.create:
4800 if self.create:
4800 self.console.append("Please press Ok before save it")
4801 self.console.append("Please press Ok before save it")
4801 else:
4802 else:
4802 self.console.append("Please select a project before save it")
4803 self.console.append("Please select a project before save it")
4803 return
4804 return
4804
4805
4805 self.refreshGraphicsId()
4806 self.refreshGraphicsId()
4806
4807
4807 sts = True
4808 sts = True
4808 selectedItemObj = self.getSelectedItemObj()
4809 selectedItemObj = self.getSelectedItemObj()
4809
4810
4810 #A Processing Unit has been selected
4811 #A Processing Unit has been selected
4811 if projectObj == selectedItemObj:
4812 if projectObj == selectedItemObj:
4812 if not self.on_proOk_clicked():
4813 if not self.on_proOk_clicked():
4813 return None
4814 return None
4814
4815
4815 #A Processing Unit has been selected
4816 #A Processing Unit has been selected
4816 if projectObj != selectedItemObj:
4817 if projectObj != selectedItemObj:
4817 puObj = selectedItemObj
4818 puObj = selectedItemObj
4818
4819
4819 if puObj.name == 'VoltageProc':
4820 if puObj.name == 'VoltageProc':
4820 sts = self.on_volOpOk_clicked()
4821 sts = self.on_volOpOk_clicked()
4821 if puObj.name == 'SpectraProc':
4822 if puObj.name == 'SpectraProc':
4822 sts = self.on_specOpOk_clicked()
4823 sts = self.on_specOpOk_clicked()
4823 if puObj.name == 'SpectraHeisProc':
4824 if puObj.name == 'SpectraHeisProc':
4824 sts = self.on_specHeisOpOk_clicked()
4825 sts = self.on_specHeisOpOk_clicked()
4825
4826
4826 if not sts:
4827 if not sts:
4827 return None
4828 return None
4828
4829
4829 self.createFTPProcUnitView()
4830 self.createFTPProcUnitView()
4830
4831
4831 if not filename:
4832 if not filename:
4832 filename = os.path.join( str(self.pathWorkSpace), "%s%s" %(str(projectObj.name), '.xml') )
4833 filename = os.path.join( str(self.pathWorkSpace), "%s%s" %(str(projectObj.name), '.xml') )
4833
4834
4834 projectObj.writeXml(filename)
4835 projectObj.writeXml(filename)
4835 self.console.clear()
4836 self.console.clear()
4836 self.console.append("Project saved")
4837 self.console.append("Project saved")
4837 self.console.append("Press Play button to start data processing ...")
4838 self.console.append("Press Play button to start data processing ...")
4838
4839
4839 self.actionStart.setEnabled(True)
4840 self.actionStart.setEnabled(True)
4840 self.actionStarToolbar.setEnabled(True)
4841 self.actionStarToolbar.setEnabled(True)
4841
4842
4842 return filename
4843 return filename
4843
4844
4844 def removeItemTreeFromProject(self):
4845 def removeItemTreeFromProject(self):
4845 """
4846 """
4846 Metodo para eliminar el proyecto en el dictionario de proyectos y en el dictionario de vista de arbol
4847 Metodo para eliminar el proyecto en el dictionario de proyectos y en el dictionario de vista de arbol
4847 """
4848 """
4848 for key in self.__itemTreeDict.keys():
4849 for key in self.__itemTreeDict.keys():
4849
4850
4850 #Check again because an item can delete multiple items (childs)
4851 #Check again because an item can delete multiple items (childs)
4851 if key not in self.__itemTreeDict.keys():
4852 if key not in self.__itemTreeDict.keys():
4852 continue
4853 continue
4853
4854
4854 if self.__itemTreeDict[key] != self.selectedItemTree:
4855 if self.__itemTreeDict[key] != self.selectedItemTree:
4855 continue
4856 continue
4856
4857
4857 if self.__projectObjDict.has_key(key) == True:
4858 if self.__projectObjDict.has_key(key) == True:
4858
4859
4859 del self.__projectObjDict[key]
4860 del self.__projectObjDict[key]
4860 del self.__itemTreeDict[key]
4861 del self.__itemTreeDict[key]
4861
4862
4862 else:
4863 else:
4863 puObj = self.__puObjDict[key]
4864 puObj = self.__puObjDict[key]
4864 idProjectParent = puObj.parentId
4865 idProjectParent = puObj.parentId
4865 projectObj = self.__projectObjDict[idProjectParent]
4866 projectObj = self.__projectObjDict[idProjectParent]
4866
4867
4867 del self.__puObjDict[key]
4868 del self.__puObjDict[key]
4868 del self.__itemTreeDict[key]
4869 del self.__itemTreeDict[key]
4869 del projectObj.procUnitConfObjDict[key]
4870 del projectObj.procUnitConfObjDict[key]
4870
4871
4871 for key in projectObj.procUnitConfObjDict.keys():
4872 for key in projectObj.procUnitConfObjDict.keys():
4872 if projectObj.procUnitConfObjDict[key].inputId != puObj.getId():
4873 if projectObj.procUnitConfObjDict[key].inputId != puObj.getId():
4873 continue
4874 continue
4874 del self.__puObjDict[projectObj.procUnitConfObjDict[key].getId()]
4875 del self.__puObjDict[projectObj.procUnitConfObjDict[key].getId()]
4875 del self.__itemTreeDict[projectObj.procUnitConfObjDict[key].getId()]
4876 del self.__itemTreeDict[projectObj.procUnitConfObjDict[key].getId()]
4876 del projectObj.procUnitConfObjDict[key]
4877 del projectObj.procUnitConfObjDict[key]
4877 # print projectObj.procUnitConfObjDict
4878 # print projectObj.procUnitConfObjDict
4878 # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict
4879 # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict
4879
4880
4880 def setInputsProject_View(self):
4881 def setInputsProject_View(self):
4881
4882
4882 self.tabWidgetProject.setEnabled(True)
4883 self.tabWidgetProject.setEnabled(True)
4883 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4884 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4884 self.tabProject.setEnabled(True)
4885 self.tabProject.setEnabled(True)
4885 self.frame_2.setEnabled(False)
4886 self.frame_2.setEnabled(False)
4886 self.proName.clear()
4887 self.proName.clear()
4887 self.proName.setFocus()
4888 self.proName.setFocus()
4888 self.proName.setSelection(0, 0)
4889 self.proName.setSelection(0, 0)
4889 self.proName.setCursorPosition(0)
4890 self.proName.setCursorPosition(0)
4890 self.proDataType.setText('.r')
4891 self.proDataType.setText('.r')
4891 self.proDataPath.clear()
4892 self.proDataPath.clear()
4892 self.proComDataType.clear()
4893 self.proComDataType.clear()
4893 self.proComDataType.addItem("Voltage")
4894 self.proComDataType.addItem("Voltage")
4894 self.proComDataType.addItem("Spectra")
4895 self.proComDataType.addItem("Spectra")
4895 self.proComDataType.addItem("Fits")
4896 self.proComDataType.addItem("Fits")
4896 self.proComDataType.addItem("USRP")
4897 self.proComDataType.addItem("USRP")
4897
4898
4898 self.proComStartDate.clear()
4899 self.proComStartDate.clear()
4899 self.proComEndDate.clear()
4900 self.proComEndDate.clear()
4900
4901
4901 startTime = "00:00:00"
4902 startTime = "00:00:00"
4902 endTime = "23:59:59"
4903 endTime = "23:59:59"
4903 starlist = startTime.split(":")
4904 starlist = startTime.split(":")
4904 endlist = endTime.split(":")
4905 endlist = endTime.split(":")
4905 self.proDelay.setText("60")
4906 self.proDelay.setText("60")
4906 self.proSet.setText("")
4907 self.proSet.setText("")
4907
4908
4908 self.labelSet.show()
4909 self.labelSet.show()
4909 self.proSet.show()
4910 self.proSet.show()
4910
4911
4911 self.labelIPPKm.hide()
4912 self.labelIPPKm.hide()
4912 self.proIPPKm.hide()
4913 self.proIPPKm.hide()
4913
4914
4914 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
4915 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
4915 self.proStartTime.setTime(self.time)
4916 self.proStartTime.setTime(self.time)
4916 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
4917 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
4917 self.proEndTime.setTime(self.time)
4918 self.proEndTime.setTime(self.time)
4918 self.proDescription.clear()
4919 self.proDescription.clear()
4919 self.proOk.setEnabled(False)
4920 self.proOk.setEnabled(False)
4920 # self.console.append("Please, Write a name Project")
4921 # self.console.append("Please, Write a name Project")
4921 # self.console.append("Introduce Project Parameters")DC
4922 # self.console.append("Introduce Project Parameters")DC
4922 # self.console.append("Select data type Voltage( .rawdata) or Spectra(.pdata)")
4923 # self.console.append("Select data type Voltage( .rawdata) or Spectra(.pdata)")
4923
4924
4924 def clearPUWindow(self, datatype):
4925 def clearPUWindow(self, datatype):
4925
4926
4926 projectObjView = self.getSelectedProjectObj()
4927 projectObjView = self.getSelectedProjectObj()
4927
4928
4928 if not projectObjView:
4929 if not projectObjView:
4929 return
4930 return
4930
4931
4931 puObj = self.getSelectedItemObj()
4932 puObj = self.getSelectedItemObj()
4932 inputId = puObj.getInputId()
4933 inputId = puObj.getInputId()
4933 inputPUObj = projectObjView.getProcUnitObj(inputId)
4934 inputPUObj = projectObjView.getProcUnitObj(inputId)
4934
4935
4935 if datatype == 'Voltage':
4936 if datatype == 'Voltage':
4936 self.volOpComChannels.setEnabled(False)
4937 self.volOpComChannels.setEnabled(False)
4937 self.volOpComHeights.setEnabled(False)
4938 self.volOpComHeights.setEnabled(False)
4938 self.volOpFilter.setEnabled(False)
4939 self.volOpFilter.setEnabled(False)
4939 self.volOpComProfile.setEnabled(False)
4940 self.volOpComProfile.setEnabled(False)
4940 self.volOpComCode.setEnabled(False)
4941 self.volOpComCode.setEnabled(False)
4941 self.volOpCohInt.setEnabled(False)
4942 self.volOpCohInt.setEnabled(False)
4942 self.volOpChannel.setEnabled(False)
4943 self.volOpChannel.setEnabled(False)
4943 self.volOpHeights.setEnabled(False)
4944 self.volOpHeights.setEnabled(False)
4944 self.volOpProfile.setEnabled(False)
4945 self.volOpProfile.setEnabled(False)
4945 self.volOpRadarfrequency.setEnabled(False)
4946 self.volOpRadarfrequency.setEnabled(False)
4946 self.volOpCebChannels.setCheckState(0)
4947 self.volOpCebChannels.setCheckState(0)
4947 self.volOpCebRadarfrequency.setCheckState(0)
4948 self.volOpCebRadarfrequency.setCheckState(0)
4948 self.volOpCebHeights.setCheckState(0)
4949 self.volOpCebHeights.setCheckState(0)
4949 self.volOpCebFilter.setCheckState(0)
4950 self.volOpCebFilter.setCheckState(0)
4950 self.volOpCebProfile.setCheckState(0)
4951 self.volOpCebProfile.setCheckState(0)
4951 self.volOpCebDecodification.setCheckState(0)
4952 self.volOpCebDecodification.setCheckState(0)
4952 self.volOpCebCohInt.setCheckState(0)
4953 self.volOpCebCohInt.setCheckState(0)
4953
4954
4954 self.volOpChannel.clear()
4955 self.volOpChannel.clear()
4955 self.volOpHeights.clear()
4956 self.volOpHeights.clear()
4956 self.volOpProfile.clear()
4957 self.volOpProfile.clear()
4957 self.volOpFilter.clear()
4958 self.volOpFilter.clear()
4958 self.volOpCohInt.clear()
4959 self.volOpCohInt.clear()
4959 self.volOpRadarfrequency.clear()
4960 self.volOpRadarfrequency.clear()
4960
4961
4961 if datatype == 'Spectra':
4962 if datatype == 'Spectra':
4962
4963
4963 if inputPUObj.datatype == 'Spectra':
4964 if inputPUObj.datatype == 'Spectra':
4964 self.specOpnFFTpoints.setEnabled(False)
4965 self.specOpnFFTpoints.setEnabled(False)
4965 self.specOpProfiles.setEnabled(False)
4966 self.specOpProfiles.setEnabled(False)
4966 self.specOpippFactor.setEnabled(False)
4967 self.specOpippFactor.setEnabled(False)
4967 else:
4968 else:
4968 self.specOpnFFTpoints.setEnabled(True)
4969 self.specOpnFFTpoints.setEnabled(True)
4969 self.specOpProfiles.setEnabled(True)
4970 self.specOpProfiles.setEnabled(True)
4970 self.specOpippFactor.setEnabled(True)
4971 self.specOpippFactor.setEnabled(True)
4971
4972
4972 self.specOpCebCrossSpectra.setCheckState(0)
4973 self.specOpCebCrossSpectra.setCheckState(0)
4973 self.specOpCebChannel.setCheckState(0)
4974 self.specOpCebChannel.setCheckState(0)
4974 self.specOpCebHeights.setCheckState(0)
4975 self.specOpCebHeights.setCheckState(0)
4975 self.specOpCebIncoherent.setCheckState(0)
4976 self.specOpCebIncoherent.setCheckState(0)
4976 self.specOpCebRemoveDC.setCheckState(0)
4977 self.specOpCebRemoveDC.setCheckState(0)
4977 self.specOpCebRemoveInt.setCheckState(0)
4978 self.specOpCebRemoveInt.setCheckState(0)
4978 self.specOpCebgetNoise.setCheckState(0)
4979 self.specOpCebgetNoise.setCheckState(0)
4979 self.specOpCebRadarfrequency.setCheckState(0)
4980 self.specOpCebRadarfrequency.setCheckState(0)
4980
4981
4981 self.specOpRadarfrequency.setEnabled(False)
4982 self.specOpRadarfrequency.setEnabled(False)
4982 self.specOppairsList.setEnabled(False)
4983 self.specOppairsList.setEnabled(False)
4983 self.specOpChannel.setEnabled(False)
4984 self.specOpChannel.setEnabled(False)
4984 self.specOpHeights.setEnabled(False)
4985 self.specOpHeights.setEnabled(False)
4985 self.specOpIncoherent.setEnabled(False)
4986 self.specOpIncoherent.setEnabled(False)
4986 self.specOpgetNoise.setEnabled(False)
4987 self.specOpgetNoise.setEnabled(False)
4987
4988
4988 self.specOpRadarfrequency.clear()
4989 self.specOpRadarfrequency.clear()
4989 self.specOpnFFTpoints.clear()
4990 self.specOpnFFTpoints.clear()
4990 self.specOpProfiles.clear()
4991 self.specOpProfiles.clear()
4991 self.specOpippFactor.clear
4992 self.specOpippFactor.clear
4992 self.specOppairsList.clear()
4993 self.specOppairsList.clear()
4993 self.specOpChannel.clear()
4994 self.specOpChannel.clear()
4994 self.specOpHeights.clear()
4995 self.specOpHeights.clear()
4995 self.specOpIncoherent.clear()
4996 self.specOpIncoherent.clear()
4996 self.specOpgetNoise.clear()
4997 self.specOpgetNoise.clear()
4997
4998
4998 self.specGraphCebSpectraplot.setCheckState(0)
4999 self.specGraphCebSpectraplot.setCheckState(0)
4999 self.specGraphCebCrossSpectraplot.setCheckState(0)
5000 self.specGraphCebCrossSpectraplot.setCheckState(0)
5000 self.specGraphCebRTIplot.setCheckState(0)
5001 self.specGraphCebRTIplot.setCheckState(0)
5001 self.specGraphCebRTInoise.setCheckState(0)
5002 self.specGraphCebRTInoise.setCheckState(0)
5002 self.specGraphCebCoherencmap.setCheckState(0)
5003 self.specGraphCebCoherencmap.setCheckState(0)
5003 self.specGraphPowerprofile.setCheckState(0)
5004 self.specGraphPowerprofile.setCheckState(0)
5004
5005
5005 self.specGraphSaveSpectra.setCheckState(0)
5006 self.specGraphSaveSpectra.setCheckState(0)
5006 self.specGraphSaveCross.setCheckState(0)
5007 self.specGraphSaveCross.setCheckState(0)
5007 self.specGraphSaveRTIplot.setCheckState(0)
5008 self.specGraphSaveRTIplot.setCheckState(0)
5008 self.specGraphSaveRTInoise.setCheckState(0)
5009 self.specGraphSaveRTInoise.setCheckState(0)
5009 self.specGraphSaveCoherencemap.setCheckState(0)
5010 self.specGraphSaveCoherencemap.setCheckState(0)
5010 self.specGraphSavePowerprofile.setCheckState(0)
5011 self.specGraphSavePowerprofile.setCheckState(0)
5011
5012
5012 self.specGraphftpRTIplot.setCheckState(0)
5013 self.specGraphftpRTIplot.setCheckState(0)
5013 self.specGraphftpRTInoise.setCheckState(0)
5014 self.specGraphftpRTInoise.setCheckState(0)
5014 self.specGraphftpCoherencemap.setCheckState(0)
5015 self.specGraphftpCoherencemap.setCheckState(0)
5015
5016
5016 self.specGraphPath.clear()
5017 self.specGraphPath.clear()
5017 self.specGraphPrefix.clear()
5018 self.specGraphPrefix.clear()
5018
5019
5019 self.specGgraphftpratio.clear()
5020 self.specGgraphftpratio.clear()
5020
5021
5021 self.specGgraphChannelList.clear()
5022 self.specGgraphChannelList.clear()
5022 self.specGgraphFreq.clear()
5023 self.specGgraphFreq.clear()
5023 self.specGgraphHeight.clear()
5024 self.specGgraphHeight.clear()
5024 self.specGgraphDbsrange.clear()
5025 self.specGgraphDbsrange.clear()
5025 self.specGgraphmagnitud.clear()
5026 self.specGgraphmagnitud.clear()
5026 self.specGgraphTminTmax.clear()
5027 self.specGgraphTminTmax.clear()
5027 self.specGgraphTimeRange.clear()
5028 self.specGgraphTimeRange.clear()
5028
5029
5029 if datatype == 'SpectraHeis':
5030 if datatype == 'SpectraHeis':
5030 self.specHeisOpCebIncoherent.setCheckState(0)
5031 self.specHeisOpCebIncoherent.setCheckState(0)
5031 self.specHeisOpIncoherent.setEnabled(False)
5032 self.specHeisOpIncoherent.setEnabled(False)
5032 self.specHeisOpIncoherent.clear()
5033 self.specHeisOpIncoherent.clear()
5033
5034
5034 self.specHeisGraphCebSpectraplot.setCheckState(0)
5035 self.specHeisGraphCebSpectraplot.setCheckState(0)
5035 self.specHeisGraphCebRTIplot.setCheckState(0)
5036 self.specHeisGraphCebRTIplot.setCheckState(0)
5036
5037
5037 self.specHeisGraphSaveSpectra.setCheckState(0)
5038 self.specHeisGraphSaveSpectra.setCheckState(0)
5038 self.specHeisGraphSaveRTIplot.setCheckState(0)
5039 self.specHeisGraphSaveRTIplot.setCheckState(0)
5039
5040
5040 self.specHeisGraphftpSpectra.setCheckState(0)
5041 self.specHeisGraphftpSpectra.setCheckState(0)
5041 self.specHeisGraphftpRTIplot.setCheckState(0)
5042 self.specHeisGraphftpRTIplot.setCheckState(0)
5042
5043
5043 self.specHeisGraphPath.clear()
5044 self.specHeisGraphPath.clear()
5044 self.specHeisGraphPrefix.clear()
5045 self.specHeisGraphPrefix.clear()
5045 self.specHeisGgraphChannelList.clear()
5046 self.specHeisGgraphChannelList.clear()
5046 self.specHeisGgraphXminXmax.clear()
5047 self.specHeisGgraphXminXmax.clear()
5047 self.specHeisGgraphYminYmax.clear()
5048 self.specHeisGgraphYminYmax.clear()
5048 self.specHeisGgraphTminTmax.clear()
5049 self.specHeisGgraphTminTmax.clear()
5049 self.specHeisGgraphTimeRange.clear()
5050 self.specHeisGgraphTimeRange.clear()
5050 self.specHeisGgraphftpratio.clear()
5051 self.specHeisGgraphftpratio.clear()
5051
5052
5052 def showtabPUCreated(self, datatype):
5053 def showtabPUCreated(self, datatype):
5053
5054
5054 if datatype == "Voltage":
5055 if datatype == "Voltage":
5055 self.tabVoltage.setEnabled(True)
5056 self.tabVoltage.setEnabled(True)
5056 self.tabProject.setEnabled(False)
5057 self.tabProject.setEnabled(False)
5057 self.tabSpectra.setEnabled(False)
5058 self.tabSpectra.setEnabled(False)
5058 self.tabCorrelation.setEnabled(False)
5059 self.tabCorrelation.setEnabled(False)
5059 self.tabSpectraHeis.setEnabled(False)
5060 self.tabSpectraHeis.setEnabled(False)
5060 self.tabWidgetProject.setCurrentWidget(self.tabVoltage)
5061 self.tabWidgetProject.setCurrentWidget(self.tabVoltage)
5061
5062
5062 if datatype == "Spectra":
5063 if datatype == "Spectra":
5063 self.tabVoltage.setEnabled(False)
5064 self.tabVoltage.setEnabled(False)
5064 self.tabProject.setEnabled(False)
5065 self.tabProject.setEnabled(False)
5065 self.tabSpectra.setEnabled(True)
5066 self.tabSpectra.setEnabled(True)
5066 self.tabCorrelation.setEnabled(False)
5067 self.tabCorrelation.setEnabled(False)
5067 self.tabSpectraHeis.setEnabled(False)
5068 self.tabSpectraHeis.setEnabled(False)
5068 self.tabWidgetProject.setCurrentWidget(self.tabSpectra)
5069 self.tabWidgetProject.setCurrentWidget(self.tabSpectra)
5069
5070
5070 if datatype == "SpectraHeis":
5071 if datatype == "SpectraHeis":
5071 self.tabVoltage.setEnabled(False)
5072 self.tabVoltage.setEnabled(False)
5072 self.tabProject.setEnabled(False)
5073 self.tabProject.setEnabled(False)
5073 self.tabSpectra.setEnabled(False)
5074 self.tabSpectra.setEnabled(False)
5074 self.tabCorrelation.setEnabled(False)
5075 self.tabCorrelation.setEnabled(False)
5075 self.tabSpectraHeis.setEnabled(True)
5076 self.tabSpectraHeis.setEnabled(True)
5076 self.tabWidgetProject.setCurrentWidget(self.tabSpectraHeis)
5077 self.tabWidgetProject.setCurrentWidget(self.tabSpectraHeis)
5077
5078
5078 def checkInputsProject(self):
5079 def checkInputsProject(self):
5079 """
5080 """
5080 Check Inputs Project:
5081 Check Inputs Project:
5081 - project_name
5082 - project_name
5082 - datatype
5083 - datatype
5083 - ext
5084 - ext
5084 - data_path
5085 - data_path
5085 - readmode
5086 - readmode
5086 - delay
5087 - delay
5087 - set
5088 - set
5088 - walk
5089 - walk
5089 """
5090 """
5090 parms_ok = True
5091 parms_ok = True
5091 project_name = str(self.proName.text())
5092 project_name = str(self.proName.text())
5092 if project_name == '' or project_name == None:
5093 if project_name == '' or project_name == None:
5093 outputstr = "Enter the Project Name"
5094 outputstr = "Enter the Project Name"
5094 self.console.append(outputstr)
5095 self.console.append(outputstr)
5095 parms_ok = False
5096 parms_ok = False
5096 project_name = None
5097 project_name = None
5097
5098
5098 datatype = str(self.proComDataType.currentText())
5099 datatype = str(self.proComDataType.currentText())
5099 if not(datatype in ['Voltage', 'Spectra', 'Fits', 'USRP']):
5100 if not(datatype in ['Voltage', 'Spectra', 'Fits', 'USRP']):
5100 outputstr = 'datatype = %s, this must be either Voltage, Spectra, SpectraHeis or USRP' % datatype
5101 outputstr = 'datatype = %s, this must be either Voltage, Spectra, SpectraHeis or USRP' % datatype
5101 self.console.append(outputstr)
5102 self.console.append(outputstr)
5102 parms_ok = False
5103 parms_ok = False
5103 datatype = None
5104 datatype = None
5104
5105
5105 ext = str(self.proDataType.text())
5106 ext = str(self.proDataType.text())
5106 if not(ext in ['.r', '.pdata', '.fits', '.hdf5']):
5107 if not(ext in ['.r', '.pdata', '.fits', '.hdf5']):
5107 outputstr = "extension files must be .r , .pdata, .fits or .hdf5"
5108 outputstr = "extension files must be .r , .pdata, .fits or .hdf5"
5108 self.console.append(outputstr)
5109 self.console.append(outputstr)
5109 parms_ok = False
5110 parms_ok = False
5110 ext = None
5111 ext = None
5111
5112
5112 data_path = str(self.proDataPath.text())
5113 data_path = str(self.proDataPath.text())
5113
5114
5114 if data_path == '':
5115 if data_path == '':
5115 outputstr = 'Datapath is empty'
5116 outputstr = 'Datapath is empty'
5116 self.console.append(outputstr)
5117 self.console.append(outputstr)
5117 parms_ok = False
5118 parms_ok = False
5118 data_path = None
5119 data_path = None
5119
5120
5120 if data_path != None:
5121 if data_path != None:
5121 if not os.path.isdir(data_path):
5122 if not os.path.isdir(data_path):
5122 outputstr = 'Datapath:%s does not exists' % data_path
5123 outputstr = 'Datapath:%s does not exists' % data_path
5123 self.console.append(outputstr)
5124 self.console.append(outputstr)
5124 parms_ok = False
5125 parms_ok = False
5125 data_path = None
5126 data_path = None
5126
5127
5127 read_mode = str(self.proComReadMode.currentText())
5128 read_mode = str(self.proComReadMode.currentText())
5128 if not(read_mode in ['Online', 'Offline']):
5129 if not(read_mode in ['Online', 'Offline']):
5129 outputstr = 'Read Mode: %s, this must be either Online or Offline' % read_mode
5130 outputstr = 'Read Mode: %s, this must be either Online or Offline' % read_mode
5130 self.console.append(outputstr)
5131 self.console.append(outputstr)
5131 parms_ok = False
5132 parms_ok = False
5132 read_mode = None
5133 read_mode = None
5133
5134
5134 delay = None
5135 delay = None
5135 if read_mode == "Online":
5136 if read_mode == "Online":
5136 parms_ok = False
5137 parms_ok = False
5137 try:
5138 try:
5138 delay = int(str(self.proDelay.text()))
5139 delay = int(str(self.proDelay.text()))
5139 parms_ok = True
5140 parms_ok = True
5140 except:
5141 except:
5141 outputstr = 'Delay: %s, this must be a integer number' % str(self.proDelay.text())
5142 outputstr = 'Delay: %s, this must be a integer number' % str(self.proDelay.text())
5142 self.console.append(outputstr)
5143 self.console.append(outputstr)
5143
5144
5144 try:
5145 try:
5145 set = int(str(self.proSet.text()))
5146 set = int(str(self.proSet.text()))
5146 except:
5147 except:
5147 # outputstr = 'Set: %s, this must be a integer number' % str(self.proName.text())
5148 # outputstr = 'Set: %s, this must be a integer number' % str(self.proName.text())
5148 # self.console.append(outputstr)
5149 # self.console.append(outputstr)
5149 # parms_ok = False
5150 # parms_ok = False
5150 set = None
5151 set = None
5151
5152
5152 walk = int(self.proComWalk.currentIndex())
5153 walk = int(self.proComWalk.currentIndex())
5153 expLabel = str(self.proExpLabel.text())
5154 expLabel = str(self.proExpLabel.text())
5154
5155
5155 return parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set, expLabel
5156 return parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set, expLabel
5156
5157
5157 def checkInputsPUSave(self, datatype):
5158 def checkInputsPUSave(self, datatype):
5158 """
5159 """
5159 Check Inputs Spectra Save:
5160 Check Inputs Spectra Save:
5160 - path
5161 - path
5161 - blocks Per File
5162 - blocks Per File
5162 - sufix
5163 - sufix
5163 - dataformat
5164 - dataformat
5164 """
5165 """
5165 parms_ok = True
5166 parms_ok = True
5166
5167
5167 if datatype == "Voltage":
5168 if datatype == "Voltage":
5168 output_path = str(self.volOutputPath.text())
5169 output_path = str(self.volOutputPath.text())
5169 blocksperfile = str(self.volOutputblocksperfile.text())
5170 blocksperfile = str(self.volOutputblocksperfile.text())
5170 profilesperblock = str(self.volOutputprofilesperblock.text())
5171 profilesperblock = str(self.volOutputprofilesperblock.text())
5171
5172
5172 if datatype == "Spectra":
5173 if datatype == "Spectra":
5173 output_path = str(self.specOutputPath.text())
5174 output_path = str(self.specOutputPath.text())
5174 blocksperfile = str(self.specOutputblocksperfile.text())
5175 blocksperfile = str(self.specOutputblocksperfile.text())
5175 profilesperblock = 0
5176 profilesperblock = 0
5176
5177
5177 if datatype == "SpectraHeis":
5178 if datatype == "SpectraHeis":
5178 output_path = str(self.specHeisOutputPath.text())
5179 output_path = str(self.specHeisOutputPath.text())
5179 blocksperfile = str(self.specHeisOutputblocksperfile.text())
5180 blocksperfile = str(self.specHeisOutputblocksperfile.text())
5180 metada = str(self.specHeisOutputMetada.text())
5181 metada = str(self.specHeisOutputMetada.text())
5181
5182
5182 if output_path == '':
5183 if output_path == '':
5183 outputstr = 'Outputpath is empty'
5184 outputstr = 'Outputpath is empty'
5184 self.console.append(outputstr)
5185 self.console.append(outputstr)
5185 parms_ok = False
5186 parms_ok = False
5186 data_path = None
5187 data_path = None
5187
5188
5188 if output_path != None:
5189 if output_path != None:
5189 if not os.path.exists(output_path):
5190 if not os.path.exists(output_path):
5190 outputstr = 'OutputPath:%s does not exists' % output_path
5191 outputstr = 'OutputPath:%s does not exists' % output_path
5191 self.console.append(outputstr)
5192 self.console.append(outputstr)
5192 parms_ok = False
5193 parms_ok = False
5193 output_path = None
5194 output_path = None
5194
5195
5195
5196
5196 try:
5197 try:
5197 profilesperblock = int(profilesperblock)
5198 profilesperblock = int(profilesperblock)
5198 except:
5199 except:
5199 if datatype == "Voltage":
5200 if datatype == "Voltage":
5200 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.volOutputprofilesperblock.text())
5201 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.volOutputprofilesperblock.text())
5201 self.console.append(outputstr)
5202 self.console.append(outputstr)
5202 parms_ok = False
5203 parms_ok = False
5203 profilesperblock = None
5204 profilesperblock = None
5204
5205
5205 try:
5206 try:
5206 blocksperfile = int(blocksperfile)
5207 blocksperfile = int(blocksperfile)
5207 except:
5208 except:
5208 if datatype == "Voltage":
5209 if datatype == "Voltage":
5209 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.volOutputblocksperfile.text())
5210 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.volOutputblocksperfile.text())
5210 elif datatype == "Spectra":
5211 elif datatype == "Spectra":
5211 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specOutputblocksperfile.text())
5212 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specOutputblocksperfile.text())
5212 elif datatype == "SpectraHeis":
5213 elif datatype == "SpectraHeis":
5213 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specHeisOutputblocksperfile.text())
5214 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specHeisOutputblocksperfile.text())
5214
5215
5215 self.console.append(outputstr)
5216 self.console.append(outputstr)
5216 parms_ok = False
5217 parms_ok = False
5217 blocksperfile = None
5218 blocksperfile = None
5218
5219
5219 if datatype == "SpectraHeis":
5220 if datatype == "SpectraHeis":
5220 if metada == '':
5221 if metada == '':
5221 outputstr = 'Choose metada file'
5222 outputstr = 'Choose metada file'
5222 self.console.append(outputstr)
5223 self.console.append(outputstr)
5223 parms_ok = False
5224 parms_ok = False
5224 if metada != None:
5225 if metada != None:
5225 if not os.path.isfile(metada):
5226 if not os.path.isfile(metada):
5226 outputstr = 'Metadata:%s does not exists' % metada
5227 outputstr = 'Metadata:%s does not exists' % metada
5227 self.console.append(outputstr)
5228 self.console.append(outputstr)
5228 parms_ok = False
5229 parms_ok = False
5229 output_path = None
5230 output_path = None
5230
5231
5231 if datatype == "Voltage":
5232 if datatype == "Voltage":
5232 return parms_ok, output_path, blocksperfile, profilesperblock
5233 return parms_ok, output_path, blocksperfile, profilesperblock
5233
5234
5234
5235
5235 if datatype == "Spectra":
5236 if datatype == "Spectra":
5236 return parms_ok, output_path, blocksperfile, profilesperblock
5237 return parms_ok, output_path, blocksperfile, profilesperblock
5237
5238
5238
5239
5239 if datatype == "SpectraHeis":
5240 if datatype == "SpectraHeis":
5240 return parms_ok, output_path, blocksperfile, metada
5241 return parms_ok, output_path, blocksperfile, metada
5241
5242
5242 def findDatafiles(self, data_path, ext, walk, expLabel=''):
5243 def findDatafiles(self, data_path, ext, walk, expLabel=''):
5243
5244
5244 dateList = []
5245 dateList = []
5245 fileList = []
5246 fileList = []
5246
5247
5247 if ext == ".r":
5248 if ext == ".r":
5248 from schainpy.model.io.jroIO_base import JRODataReader
5249 from schainpy.model.io.jroIO_base import JRODataReader
5249
5250
5250 readerObj = JRODataReader()
5251 readerObj = JRODataReader()
5251 dateList = readerObj.findDatafiles(path=data_path,
5252 dateList = readerObj.findDatafiles(path=data_path,
5252 expLabel=expLabel,
5253 expLabel=expLabel,
5253 ext=ext,
5254 ext=ext,
5254 walk=walk)
5255 walk=walk)
5255
5256
5256 if ext == ".pdata":
5257 if ext == ".pdata":
5257 from schainpy.model.io.jroIO_base import JRODataReader
5258 from schainpy.model.io.jroIO_base import JRODataReader
5258
5259
5259 readerObj = JRODataReader()
5260 readerObj = JRODataReader()
5260 dateList = readerObj.findDatafiles(path=data_path,
5261 dateList = readerObj.findDatafiles(path=data_path,
5261 expLabel=expLabel,
5262 expLabel=expLabel,
5262 ext=ext,
5263 ext=ext,
5263 walk=walk)
5264 walk=walk)
5264
5265
5265 if ext == ".fits":
5266 if ext == ".fits":
5266 from schainpy.model.io.jroIO_base import JRODataReader
5267 from schainpy.model.io.jroIO_base import JRODataReader
5267
5268
5268 readerObj = JRODataReader()
5269 readerObj = JRODataReader()
5269 dateList = readerObj.findDatafiles(path=data_path,
5270 dateList = readerObj.findDatafiles(path=data_path,
5270 expLabel=expLabel,
5271 expLabel=expLabel,
5271 ext=ext,
5272 ext=ext,
5272 walk=walk)
5273 walk=walk)
5273
5274
5274 if ext == ".hdf5":
5275 if ext == ".hdf5":
5275 from schainpy.model.io.jroIO_usrp import USRPReader
5276 from schainpy.model.io.jroIO_usrp import USRPReader
5276
5277
5277 readerObj = USRPReader()
5278 readerObj = USRPReader()
5278 dateList = readerObj.findDatafiles(path=data_path)
5279 dateList = readerObj.findDatafiles(path=data_path)
5279
5280
5280 return dateList
5281 return dateList
5281
5282
5282 def loadDays(self, data_path, ext, walk, expLabel=''):
5283 def loadDays(self, data_path, ext, walk, expLabel=''):
5283 """
5284 """
5284 Method to loads day
5285 Method to loads day
5285 """
5286 """
5286 self.proOk.setEnabled(False)
5287 self.proOk.setEnabled(False)
5287 self.proComStartDate.clear()
5288 self.proComStartDate.clear()
5288 self.proComEndDate.clear()
5289 self.proComEndDate.clear()
5289
5290
5290 self.dateList = []
5291 self.dateList = []
5291
5292
5292 if not os.path.isdir(data_path):
5293 if not os.path.isdir(data_path):
5293 return
5294 return
5294
5295
5295 self.dataPath = data_path
5296 self.dataPath = data_path
5296
5297
5297 dateList = self.findDatafiles(data_path, ext=ext, walk=walk, expLabel=expLabel)
5298 dateList = self.findDatafiles(data_path, ext=ext, walk=walk, expLabel=expLabel)
5298
5299
5299 if not dateList:
5300 if not dateList:
5300 # self.console.clear()
5301 # self.console.clear()
5301 if walk:
5302 if walk:
5302 if expLabel:
5303 if expLabel:
5303 outputstr = "No files (*%s) were found on %s/DOYPATH/%s" % (ext, data_path, expLabel)
5304 outputstr = "No files (*%s) were found on %s/DOYPATH/%s" % (ext, data_path, expLabel)
5304 else:
5305 else:
5305 outputstr = "No files (*%s) were found on %s" % (ext, data_path)
5306 outputstr = "No files (*%s) were found on %s" % (ext, data_path)
5306 else:
5307 else:
5307 outputstr = "No files (*%s) were found on %s" % (ext, data_path)
5308 outputstr = "No files (*%s) were found on %s" % (ext, data_path)
5308
5309
5309 self.console.append(outputstr)
5310 self.console.append(outputstr)
5310 return
5311 return
5311
5312
5312 dateStrList = []
5313 dateStrList = []
5313 for thisDate in dateList:
5314 for thisDate in dateList:
5314 dateStr = thisDate.strftime("%Y/%m/%d")
5315 dateStr = thisDate.strftime("%Y/%m/%d")
5315
5316
5316 self.proComStartDate.addItem(dateStr)
5317 self.proComStartDate.addItem(dateStr)
5317 self.proComEndDate.addItem(dateStr)
5318 self.proComEndDate.addItem(dateStr)
5318 dateStrList.append(dateStr)
5319 dateStrList.append(dateStr)
5319
5320
5320 self.proComStartDate.setCurrentIndex(0)
5321 self.proComStartDate.setCurrentIndex(0)
5321 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1)
5322 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1)
5322
5323
5323 self.dateList = dateStrList
5324 self.dateList = dateStrList
5324 self.proOk.setEnabled(True)
5325 self.proOk.setEnabled(True)
5325
5326
5326 self.console.clear()
5327 self.console.clear()
5327 self.console.append("Successful load")
5328 self.console.append("Successful load")
5328
5329
5329 return self.dateList
5330 return self.dateList
5330
5331
5331 def setWorkSpaceGUI(self, pathWorkSpace=None):
5332 def setWorkSpaceGUI(self, pathWorkSpace=None):
5332
5333
5333 if pathWorkSpace == None:
5334 if pathWorkSpace == None:
5334 home = os.path.expanduser("~")
5335 home = os.path.expanduser("~")
5335 pathWorkSpace = os.path.join(home,'schain_workspace')
5336 pathWorkSpace = os.path.join(home,'schain_workspace')
5336
5337
5337 self.pathWorkSpace = pathWorkSpace
5338 self.pathWorkSpace = pathWorkSpace
5338
5339
5339 """
5340 """
5340 Comandos Usados en Console
5341 Comandos Usados en Console
5341 """
5342 """
5342 def __del__(self):
5343 def __del__(self):
5343 sys.stdout = sys.__stdout__
5344 sys.stdout = sys.__stdout__
5344 sys.stderr = sys.__stderr__
5345 sys.stderr = sys.__stderr__
5345
5346
5346 def normalOutputWritten(self, text):
5347 def normalOutputWritten(self, text):
5347 color_black = QtGui.QColor(0,0,0)
5348 color_black = QtGui.QColor(0,0,0)
5348 self.console.setTextColor(color_black)
5349 self.console.setTextColor(color_black)
5349 self.console.append(text)
5350 self.console.append(text)
5350
5351
5351 def errorOutputWritten(self, text):
5352 def errorOutputWritten(self, text):
5352 color_red = QtGui.QColor(255,0,0)
5353 color_red = QtGui.QColor(255,0,0)
5353 color_black = QtGui.QColor(0,0,0)
5354 color_black = QtGui.QColor(0,0,0)
5354
5355
5355 self.console.setTextColor(color_red)
5356 self.console.setTextColor(color_red)
5356 self.console.append(text)
5357 self.console.append(text)
5357 self.console.setTextColor(color_black)
5358 self.console.setTextColor(color_black)
5358
5359
5359 def setGUIStatus(self):
5360 def setGUIStatus(self):
5360
5361
5361 self.setWindowTitle("ROJ-Signal Chain")
5362 self.setWindowTitle("ROJ-Signal Chain")
5362 self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"adn.jpg") ))
5363 self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"adn.jpg") ))
5363
5364
5364 self.tabWidgetProject.setEnabled(False)
5365 self.tabWidgetProject.setEnabled(False)
5365 self.tabVoltage.setEnabled(False)
5366 self.tabVoltage.setEnabled(False)
5366 self.tabSpectra.setEnabled(False)
5367 self.tabSpectra.setEnabled(False)
5367 self.tabCorrelation.setEnabled(False)
5368 self.tabCorrelation.setEnabled(False)
5368 self.frame_2.setEnabled(False)
5369 self.frame_2.setEnabled(False)
5369
5370
5370 self.actionCreate.setShortcut('Ctrl+N')
5371 self.actionCreate.setShortcut('Ctrl+N')
5371 self.actionOpen.setShortcut('Ctrl+O')
5372 self.actionOpen.setShortcut('Ctrl+O')
5372 self.actionSave.setShortcut('Ctrl+S')
5373 self.actionSave.setShortcut('Ctrl+S')
5373 self.actionClose.setShortcut('Ctrl+X')
5374 self.actionClose.setShortcut('Ctrl+X')
5374
5375
5375 self.actionStart.setShortcut('Ctrl+1')
5376 self.actionStart.setShortcut('Ctrl+1')
5376 self.actionPause.setShortcut('Ctrl+2')
5377 self.actionPause.setShortcut('Ctrl+2')
5377 self.actionStop.setShortcut('Ctrl+3')
5378 self.actionStop.setShortcut('Ctrl+3')
5378
5379
5379 self.actionFTP.setShortcut('Ctrl+F')
5380 self.actionFTP.setShortcut('Ctrl+F')
5380
5381
5381 self.actionStart.setEnabled(False)
5382 self.actionStart.setEnabled(False)
5382 self.actionPause.setEnabled(False)
5383 self.actionPause.setEnabled(False)
5383 self.actionStop.setEnabled(False)
5384 self.actionStop.setEnabled(False)
5384
5385
5385 self.actionStarToolbar.setEnabled(False)
5386 self.actionStarToolbar.setEnabled(False)
5386 self.actionPauseToolbar.setEnabled(False)
5387 self.actionPauseToolbar.setEnabled(False)
5387 self.actionStopToolbar.setEnabled(False)
5388 self.actionStopToolbar.setEnabled(False)
5388
5389
5389 self.proName.clear()
5390 self.proName.clear()
5390 self.proDataPath.setText('')
5391 self.proDataPath.setText('')
5391 self.console.setReadOnly(True)
5392 self.console.setReadOnly(True)
5392 self.console.append("Welcome to Signal Chain\nOpen a project or Create a new one")
5393 self.console.append("Welcome to Signal Chain\nOpen a project or Create a new one")
5393 self.proStartTime.setDisplayFormat("hh:mm:ss")
5394 self.proStartTime.setDisplayFormat("hh:mm:ss")
5394 self.proDataType.setEnabled(False)
5395 self.proDataType.setEnabled(False)
5395 self.time = QtCore.QTime()
5396 self.time = QtCore.QTime()
5396 self.hour = 0
5397 self.hour = 0
5397 self.min = 0
5398 self.min = 0
5398 self.sec = 0
5399 self.sec = 0
5399 self.proEndTime.setDisplayFormat("hh:mm:ss")
5400 self.proEndTime.setDisplayFormat("hh:mm:ss")
5400 startTime = "00:00:00"
5401 startTime = "00:00:00"
5401 endTime = "23:59:59"
5402 endTime = "23:59:59"
5402 starlist = startTime.split(":")
5403 starlist = startTime.split(":")
5403 endlist = endTime.split(":")
5404 endlist = endTime.split(":")
5404 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
5405 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
5405 self.proStartTime.setTime(self.time)
5406 self.proStartTime.setTime(self.time)
5406 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
5407 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
5407 self.proEndTime.setTime(self.time)
5408 self.proEndTime.setTime(self.time)
5408 self.proOk.setEnabled(False)
5409 self.proOk.setEnabled(False)
5409 # set model Project Explorer
5410 # set model Project Explorer
5410 self.projectExplorerModel = QtGui.QStandardItemModel()
5411 self.projectExplorerModel = QtGui.QStandardItemModel()
5411 self.projectExplorerModel.setHorizontalHeaderLabels(("Project Explorer",))
5412 self.projectExplorerModel.setHorizontalHeaderLabels(("Project Explorer",))
5412 layout = QtGui.QVBoxLayout()
5413 layout = QtGui.QVBoxLayout()
5413 layout.addWidget(self.projectExplorerTree)
5414 layout.addWidget(self.projectExplorerTree)
5414 self.projectExplorerTree.setModel(self.projectExplorerModel)
5415 self.projectExplorerTree.setModel(self.projectExplorerModel)
5415 self.projectExplorerTree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
5416 self.projectExplorerTree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
5416 self.projectExplorerTree.customContextMenuRequested.connect(self.on_right_click)
5417 self.projectExplorerTree.customContextMenuRequested.connect(self.on_right_click)
5417 self.projectExplorerTree.clicked.connect(self.on_click)
5418 self.projectExplorerTree.clicked.connect(self.on_click)
5418 self.projectExplorerTree.expandAll()
5419 self.projectExplorerTree.expandAll()
5419 # set model Project Properties
5420 # set model Project Properties
5420
5421
5421 self.propertiesModel = TreeModel()
5422 self.propertiesModel = TreeModel()
5422 self.propertiesModel.initProjectView()
5423 self.propertiesModel.initProjectView()
5423 self.treeProjectProperties.setModel(self.propertiesModel)
5424 self.treeProjectProperties.setModel(self.propertiesModel)
5424 self.treeProjectProperties.expandAll()
5425 self.treeProjectProperties.expandAll()
5425 self.treeProjectProperties.allColumnsShowFocus()
5426 self.treeProjectProperties.allColumnsShowFocus()
5426 self.treeProjectProperties.resizeColumnToContents(1)
5427 self.treeProjectProperties.resizeColumnToContents(1)
5427
5428
5428 # set Project
5429 # set Project
5429 self.proExpLabel.setEnabled(True)
5430 self.proExpLabel.setEnabled(True)
5430 self.proDelay.setEnabled(False)
5431 self.proDelay.setEnabled(False)
5431 self.proSet.setEnabled(True)
5432 self.proSet.setEnabled(True)
5432 self.proDataType.setReadOnly(True)
5433 self.proDataType.setReadOnly(True)
5433
5434
5434 # set Operation Voltage
5435 # set Operation Voltage
5435 self.volOpComChannels.setEnabled(False)
5436 self.volOpComChannels.setEnabled(False)
5436 self.volOpComHeights.setEnabled(False)
5437 self.volOpComHeights.setEnabled(False)
5437 self.volOpFilter.setEnabled(False)
5438 self.volOpFilter.setEnabled(False)
5438 self.volOpComProfile.setEnabled(False)
5439 self.volOpComProfile.setEnabled(False)
5439 self.volOpComCode.setEnabled(False)
5440 self.volOpComCode.setEnabled(False)
5440 self.volOpFlip.setEnabled(False)
5441 self.volOpFlip.setEnabled(False)
5441 self.volOpCohInt.setEnabled(False)
5442 self.volOpCohInt.setEnabled(False)
5442 self.volOpRadarfrequency.setEnabled(False)
5443 self.volOpRadarfrequency.setEnabled(False)
5443
5444
5444 self.volOpChannel.setEnabled(False)
5445 self.volOpChannel.setEnabled(False)
5445 self.volOpHeights.setEnabled(False)
5446 self.volOpHeights.setEnabled(False)
5446 self.volOpProfile.setEnabled(False)
5447 self.volOpProfile.setEnabled(False)
5447 self.volOpComMode.setEnabled(False)
5448 self.volOpComMode.setEnabled(False)
5448
5449
5449 self.volGraphPath.setEnabled(False)
5450 self.volGraphPath.setEnabled(False)
5450 self.volGraphPrefix.setEnabled(False)
5451 self.volGraphPrefix.setEnabled(False)
5451 self.volGraphToolPath.setEnabled(False)
5452 self.volGraphToolPath.setEnabled(False)
5452
5453
5453 # set Graph Voltage
5454 # set Graph Voltage
5454 self.volGraphChannelList.setEnabled(False)
5455 self.volGraphChannelList.setEnabled(False)
5455 self.volGraphfreqrange.setEnabled(False)
5456 self.volGraphfreqrange.setEnabled(False)
5456 self.volGraphHeightrange.setEnabled(False)
5457 self.volGraphHeightrange.setEnabled(False)
5457
5458
5458 # set Operation Spectra
5459 # set Operation Spectra
5459 self.specOpnFFTpoints.setEnabled(False)
5460 self.specOpnFFTpoints.setEnabled(False)
5460 self.specOpProfiles.setEnabled(False)
5461 self.specOpProfiles.setEnabled(False)
5461 self.specOpippFactor.setEnabled(False)
5462 self.specOpippFactor.setEnabled(False)
5462 self.specOppairsList.setEnabled(False)
5463 self.specOppairsList.setEnabled(False)
5463 self.specOpComChannel.setEnabled(False)
5464 self.specOpComChannel.setEnabled(False)
5464 self.specOpComHeights.setEnabled(False)
5465 self.specOpComHeights.setEnabled(False)
5465 self.specOpIncoherent.setEnabled(False)
5466 self.specOpIncoherent.setEnabled(False)
5466 self.specOpgetNoise.setEnabled(False)
5467 self.specOpgetNoise.setEnabled(False)
5467 self.specOpRadarfrequency.setEnabled(False)
5468 self.specOpRadarfrequency.setEnabled(False)
5468
5469
5469
5470
5470 self.specOpChannel.setEnabled(False)
5471 self.specOpChannel.setEnabled(False)
5471 self.specOpHeights.setEnabled(False)
5472 self.specOpHeights.setEnabled(False)
5472 # set Graph Spectra
5473 # set Graph Spectra
5473 self.specGgraphChannelList.setEnabled(False)
5474 self.specGgraphChannelList.setEnabled(False)
5474 self.specGgraphFreq.setEnabled(False)
5475 self.specGgraphFreq.setEnabled(False)
5475 self.specGgraphHeight.setEnabled(False)
5476 self.specGgraphHeight.setEnabled(False)
5476 self.specGgraphDbsrange.setEnabled(False)
5477 self.specGgraphDbsrange.setEnabled(False)
5477 self.specGgraphmagnitud.setEnabled(False)
5478 self.specGgraphmagnitud.setEnabled(False)
5478 self.specGgraphTminTmax.setEnabled(False)
5479 self.specGgraphTminTmax.setEnabled(False)
5479 self.specGgraphTimeRange.setEnabled(False)
5480 self.specGgraphTimeRange.setEnabled(False)
5480 self.specGraphPath.setEnabled(False)
5481 self.specGraphPath.setEnabled(False)
5481 self.specGraphToolPath.setEnabled(False)
5482 self.specGraphToolPath.setEnabled(False)
5482 self.specGraphPrefix.setEnabled(False)
5483 self.specGraphPrefix.setEnabled(False)
5483
5484
5484 self.specGgraphftpratio.setEnabled(False)
5485 self.specGgraphftpratio.setEnabled(False)
5485 # set Operation SpectraHeis
5486 # set Operation SpectraHeis
5486 self.specHeisOpIncoherent.setEnabled(False)
5487 self.specHeisOpIncoherent.setEnabled(False)
5487 self.specHeisOpCobIncInt.setEnabled(False)
5488 self.specHeisOpCobIncInt.setEnabled(False)
5488 # set Graph SpectraHeis
5489 # set Graph SpectraHeis
5489 self.specHeisGgraphChannelList.setEnabled(False)
5490 self.specHeisGgraphChannelList.setEnabled(False)
5490 self.specHeisGgraphXminXmax.setEnabled(False)
5491 self.specHeisGgraphXminXmax.setEnabled(False)
5491 self.specHeisGgraphYminYmax.setEnabled(False)
5492 self.specHeisGgraphYminYmax.setEnabled(False)
5492 self.specHeisGgraphTminTmax.setEnabled(False)
5493 self.specHeisGgraphTminTmax.setEnabled(False)
5493 self.specHeisGgraphTimeRange.setEnabled(False)
5494 self.specHeisGgraphTimeRange.setEnabled(False)
5494 self.specHeisGgraphftpratio.setEnabled(False)
5495 self.specHeisGgraphftpratio.setEnabled(False)
5495 self.specHeisGraphPath.setEnabled(False)
5496 self.specHeisGraphPath.setEnabled(False)
5496 self.specHeisGraphPrefix.setEnabled(False)
5497 self.specHeisGraphPrefix.setEnabled(False)
5497 self.specHeisGraphToolPath.setEnabled(False)
5498 self.specHeisGraphToolPath.setEnabled(False)
5498
5499
5499
5500
5500 # tool tip gui
5501 # tool tip gui
5501 QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
5502 QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
5502 self.projectExplorerTree.setToolTip('Right clik to add Project or Unit Process')
5503 self.projectExplorerTree.setToolTip('Right clik to add Project or Unit Process')
5503 # tool tip gui project
5504 # tool tip gui project
5504 self.proComWalk.setToolTip('<b>On Files</b>:<i>Search file in format .r or pdata</i> <b>On Folders</b>:<i>Search file in a directory DYYYYDOY</i>')
5505 self.proComWalk.setToolTip('<b>On Files</b>:<i>Search file in format .r or pdata</i> <b>On Folders</b>:<i>Search file in a directory DYYYYDOY</i>')
5505 self.proComWalk.setCurrentIndex(0)
5506 self.proComWalk.setCurrentIndex(0)
5506 # tool tip gui volOp
5507 # tool tip gui volOp
5507 self.volOpChannel.setToolTip('Example: 1,2,3,4,5')
5508 self.volOpChannel.setToolTip('Example: 1,2,3,4,5')
5508 self.volOpHeights.setToolTip('Example: 90,180')
5509 self.volOpHeights.setToolTip('Example: 90,180')
5509 self.volOpFilter.setToolTip('Example: 2')
5510 self.volOpFilter.setToolTip('Example: 2')
5510 self.volOpProfile.setToolTip('Example:0,127')
5511 self.volOpProfile.setToolTip('Example:0,127')
5511 self.volOpCohInt.setToolTip('Example: 128')
5512 self.volOpCohInt.setToolTip('Example: 128')
5512 self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3')
5513 self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3')
5513 self.volOpOk.setToolTip('If you have finished, please Ok ')
5514 self.volOpOk.setToolTip('If you have finished, please Ok ')
5514 # tool tip gui volGraph
5515 # tool tip gui volGraph
5515 self.volGraphfreqrange.setToolTip('Height range. Example: 50,100')
5516 self.volGraphfreqrange.setToolTip('Height range. Example: 50,100')
5516 self.volGraphHeightrange.setToolTip('Amplitude. Example: 0,10000')
5517 self.volGraphHeightrange.setToolTip('Amplitude. Example: 0,10000')
5517 # tool tip gui specOp
5518 # tool tip gui specOp
5518 self.specOpnFFTpoints.setToolTip('Example: 128')
5519 self.specOpnFFTpoints.setToolTip('Example: 128')
5519 self.specOpProfiles.setToolTip('Example: 128')
5520 self.specOpProfiles.setToolTip('Example: 128')
5520 self.specOpippFactor.setToolTip('Example:1.0')
5521 self.specOpippFactor.setToolTip('Example:1.0')
5521 self.specOpIncoherent.setToolTip('Example: 10')
5522 self.specOpIncoherent.setToolTip('Example: 10')
5522 self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)')
5523 self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)')
5523
5524
5524 self.specOpChannel.setToolTip('Example: 0,1,2,3')
5525 self.specOpChannel.setToolTip('Example: 0,1,2,3')
5525 self.specOpHeights.setToolTip('Example: 90,180')
5526 self.specOpHeights.setToolTip('Example: 90,180')
5526 self.specOppairsList.setToolTip('Example: (0,1),(2,3)')
5527 self.specOppairsList.setToolTip('Example: (0,1),(2,3)')
5527 # tool tip gui specGraph
5528 # tool tip gui specGraph
5528
5529
5529 self.specGgraphChannelList.setToolTip('Example: 0,3,4')
5530 self.specGgraphChannelList.setToolTip('Example: 0,3,4')
5530 self.specGgraphFreq.setToolTip('Example: -20,20')
5531 self.specGgraphFreq.setToolTip('Example: -20,20')
5531 self.specGgraphHeight.setToolTip('Example: 100,400')
5532 self.specGgraphHeight.setToolTip('Example: 100,400')
5532 self.specGgraphDbsrange.setToolTip('Example: 30,170')
5533 self.specGgraphDbsrange.setToolTip('Example: 30,170')
5533
5534
5534 self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME')
5535 self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME')
5535
5536
5536
5537
5537 self.specHeisOpIncoherent.setToolTip('Example: 10')
5538 self.specHeisOpIncoherent.setToolTip('Example: 10')
5538
5539
5539 self.specHeisGgraphChannelList.setToolTip('Example: 0,2,3')
5540 self.specHeisGgraphChannelList.setToolTip('Example: 0,2,3')
5540 self.specHeisGgraphXminXmax.setToolTip('Example (Hz): -1000, 1000')
5541 self.specHeisGgraphXminXmax.setToolTip('Example (Hz): -1000, 1000')
5541 self.specHeisGgraphYminYmax.setToolTip('Example (dB): 5, 35')
5542 self.specHeisGgraphYminYmax.setToolTip('Example (dB): 5, 35')
5542 self.specHeisGgraphTminTmax.setToolTip('Example (hours): 0, 24')
5543 self.specHeisGgraphTminTmax.setToolTip('Example (hours): 0, 24')
5543 self.specHeisGgraphTimeRange.setToolTip('Example (hours): 8')
5544 self.specHeisGgraphTimeRange.setToolTip('Example (hours): 8')
5544
5545
5545 self.labelSet.show()
5546 self.labelSet.show()
5546 self.proSet.show()
5547 self.proSet.show()
5547
5548
5548 self.labelIPPKm.hide()
5549 self.labelIPPKm.hide()
5549 self.proIPPKm.hide()
5550 self.proIPPKm.hide()
5550
5551
5551 sys.stdout = ShowMeConsole(textWritten=self.normalOutputWritten)
5552 sys.stdout = ShowMeConsole(textWritten=self.normalOutputWritten)
5552 # sys.stderr = ShowMeConsole(textWritten=self.errorOutputWritten)
5553 # sys.stderr = ShowMeConsole(textWritten=self.errorOutputWritten)
5553
5554
5554
5555
5555 class UnitProcessWindow(QMainWindow, Ui_UnitProcess):
5556 class UnitProcessWindow(QMainWindow, Ui_UnitProcess):
5556 """
5557 """
5557 Class documentation goes here.
5558 Class documentation goes here.
5558 """
5559 """
5559 closed = pyqtSignal()
5560 closed = pyqtSignal()
5560 create = False
5561 create = False
5561
5562
5562 def __init__(self, parent=None):
5563 def __init__(self, parent=None):
5563 """
5564 """
5564 Constructor
5565 Constructor
5565 """
5566 """
5566 QMainWindow.__init__(self, parent)
5567 QMainWindow.__init__(self, parent)
5567 self.setupUi(self)
5568 self.setupUi(self)
5568 self.getFromWindow = None
5569 self.getFromWindow = None
5569 self.getfromWindowList = []
5570 self.getfromWindowList = []
5570 self.dataTypeProject = None
5571 self.dataTypeProject = None
5571
5572
5572 self.listUP = None
5573 self.listUP = None
5573
5574
5574 @pyqtSignature("")
5575 @pyqtSignature("")
5575 def on_unitPokbut_clicked(self):
5576 def on_unitPokbut_clicked(self):
5576 """
5577 """
5577 Slot documentation goes here.
5578 Slot documentation goes here.
5578 """
5579 """
5579 self.create = True
5580 self.create = True
5580 self.getFromWindow = self.getfromWindowList[int(self.comboInputBox.currentIndex())]
5581 self.getFromWindow = self.getfromWindowList[int(self.comboInputBox.currentIndex())]
5581 # self.nameofUP= str(self.nameUptxt.text())
5582 # self.nameofUP= str(self.nameUptxt.text())
5582 self.typeofUP = str(self.comboTypeBox.currentText())
5583 self.typeofUP = str(self.comboTypeBox.currentText())
5583 self.close()
5584 self.close()
5584
5585
5585
5586
5586 @pyqtSignature("")
5587 @pyqtSignature("")
5587 def on_unitPcancelbut_clicked(self):
5588 def on_unitPcancelbut_clicked(self):
5588 """
5589 """
5589 Slot documentation goes here.
5590 Slot documentation goes here.
5590 """
5591 """
5591 self.create = False
5592 self.create = False
5592 self.close()
5593 self.close()
5593
5594
5594 def loadTotalList(self):
5595 def loadTotalList(self):
5595 self.comboInputBox.clear()
5596 self.comboInputBox.clear()
5596 for i in self.getfromWindowList:
5597 for i in self.getfromWindowList:
5597
5598
5598 name = i.getElementName()
5599 name = i.getElementName()
5599 if name == 'Project':
5600 if name == 'Project':
5600 id = i.id
5601 id = i.id
5601 name = i.name
5602 name = i.name
5602 if self.dataTypeProject == 'Voltage':
5603 if self.dataTypeProject == 'Voltage':
5603 self.comboTypeBox.clear()
5604 self.comboTypeBox.clear()
5604 self.comboTypeBox.addItem("Voltage")
5605 self.comboTypeBox.addItem("Voltage")
5605
5606
5606 if self.dataTypeProject == 'Spectra':
5607 if self.dataTypeProject == 'Spectra':
5607 self.comboTypeBox.clear()
5608 self.comboTypeBox.clear()
5608 self.comboTypeBox.addItem("Spectra")
5609 self.comboTypeBox.addItem("Spectra")
5609 self.comboTypeBox.addItem("Correlation")
5610 self.comboTypeBox.addItem("Correlation")
5610 if self.dataTypeProject == 'Fits':
5611 if self.dataTypeProject == 'Fits':
5611 self.comboTypeBox.clear()
5612 self.comboTypeBox.clear()
5612 self.comboTypeBox.addItem("SpectraHeis")
5613 self.comboTypeBox.addItem("SpectraHeis")
5613
5614
5614
5615
5615 if name == 'ProcUnit':
5616 if name == 'ProcUnit':
5616 id = int(i.id) - 1
5617 id = int(i.id) - 1
5617 name = i.datatype
5618 name = i.datatype
5618 if name == 'Voltage':
5619 if name == 'Voltage':
5619 self.comboTypeBox.clear()
5620 self.comboTypeBox.clear()
5620 self.comboTypeBox.addItem("Spectra")
5621 self.comboTypeBox.addItem("Spectra")
5621 self.comboTypeBox.addItem("SpectraHeis")
5622 self.comboTypeBox.addItem("SpectraHeis")
5622 self.comboTypeBox.addItem("Correlation")
5623 self.comboTypeBox.addItem("Correlation")
5623 if name == 'Spectra':
5624 if name == 'Spectra':
5624 self.comboTypeBox.clear()
5625 self.comboTypeBox.clear()
5625 self.comboTypeBox.addItem("Spectra")
5626 self.comboTypeBox.addItem("Spectra")
5626 self.comboTypeBox.addItem("SpectraHeis")
5627 self.comboTypeBox.addItem("SpectraHeis")
5627 self.comboTypeBox.addItem("Correlation")
5628 self.comboTypeBox.addItem("Correlation")
5628 if name == 'SpectraHeis':
5629 if name == 'SpectraHeis':
5629 self.comboTypeBox.clear()
5630 self.comboTypeBox.clear()
5630 self.comboTypeBox.addItem("SpectraHeis")
5631 self.comboTypeBox.addItem("SpectraHeis")
5631
5632
5632 self.comboInputBox.addItem(str(name))
5633 self.comboInputBox.addItem(str(name))
5633 # self.comboInputBox.addItem(str(name)+str(id))
5634 # self.comboInputBox.addItem(str(name)+str(id))
5634
5635
5635 def closeEvent(self, event):
5636 def closeEvent(self, event):
5636 self.closed.emit()
5637 self.closed.emit()
5637 event.accept()
5638 event.accept()
5638
5639
5639 class Ftp(QMainWindow, Ui_Ftp):
5640 class Ftp(QMainWindow, Ui_Ftp):
5640 """
5641 """
5641 Class documentation goes here.
5642 Class documentation goes here.
5642 """
5643 """
5643 create = False
5644 create = False
5644 closed = pyqtSignal()
5645 closed = pyqtSignal()
5645 server = None
5646 server = None
5646 remotefolder = None
5647 remotefolder = None
5647 username = None
5648 username = None
5648 password = None
5649 password = None
5649 ftp_wei = None
5650 ftp_wei = None
5650 exp_code = None
5651 exp_code = None
5651 sub_exp_code = None
5652 sub_exp_code = None
5652 plot_pos = None
5653 plot_pos = None
5653
5654
5654 def __init__(self, parent=None):
5655 def __init__(self, parent=None):
5655 """
5656 """
5656 Constructor
5657 Constructor
5657 """
5658 """
5658 QMainWindow.__init__(self, parent)
5659 QMainWindow.__init__(self, parent)
5659 self.setupUi(self)
5660 self.setupUi(self)
5660 self.setGUIStatus()
5661 self.setGUIStatus()
5661
5662
5662 def setGUIStatus(self):
5663 def setGUIStatus(self):
5663 self.setWindowTitle("ROJ-Signal Chain")
5664 self.setWindowTitle("ROJ-Signal Chain")
5664 self.serverFTP.setToolTip('Example: jro-app.igp.gob.pe')
5665 self.serverFTP.setToolTip('Example: jro-app.igp.gob.pe')
5665 self.folderFTP.setToolTip('Example: /home/wmaster/graficos')
5666 self.folderFTP.setToolTip('Example: /home/wmaster/graficos')
5666 self.usernameFTP.setToolTip('Example: myusername')
5667 self.usernameFTP.setToolTip('Example: myusername')
5667 self.passwordFTP.setToolTip('Example: mypass ')
5668 self.passwordFTP.setToolTip('Example: mypass ')
5668 self.weightFTP.setToolTip('Example: 0')
5669 self.weightFTP.setToolTip('Example: 0')
5669 self.expcodeFTP.setToolTip('Example: 0')
5670 self.expcodeFTP.setToolTip('Example: 0')
5670 self.subexpFTP.setToolTip('Example: 0')
5671 self.subexpFTP.setToolTip('Example: 0')
5671 self.plotposFTP.setToolTip('Example: 0')
5672 self.plotposFTP.setToolTip('Example: 0')
5672
5673
5673 def setParmsfromTemporal(self, server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos):
5674 def setParmsfromTemporal(self, server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos):
5674 self.serverFTP.setText(str(server))
5675 self.serverFTP.setText(str(server))
5675 self.folderFTP.setText(str(remotefolder))
5676 self.folderFTP.setText(str(remotefolder))
5676 self.usernameFTP.setText(str(username))
5677 self.usernameFTP.setText(str(username))
5677 self.passwordFTP.setText(str(password))
5678 self.passwordFTP.setText(str(password))
5678 self.weightFTP.setText(str(ftp_wei))
5679 self.weightFTP.setText(str(ftp_wei))
5679 self.expcodeFTP.setText(str(exp_code))
5680 self.expcodeFTP.setText(str(exp_code))
5680 self.subexpFTP.setText(str(sub_exp_code))
5681 self.subexpFTP.setText(str(sub_exp_code))
5681 self.plotposFTP.setText(str(plot_pos))
5682 self.plotposFTP.setText(str(plot_pos))
5682
5683
5683 def getParmsFromFtpWindow(self):
5684 def getParmsFromFtpWindow(self):
5684 """
5685 """
5685 Return Inputs Project:
5686 Return Inputs Project:
5686 - server
5687 - server
5687 - remotefolder
5688 - remotefolder
5688 - username
5689 - username
5689 - password
5690 - password
5690 - ftp_wei
5691 - ftp_wei
5691 - exp_code
5692 - exp_code
5692 - sub_exp_code
5693 - sub_exp_code
5693 - plot_pos
5694 - plot_pos
5694 """
5695 """
5695 name_server_ftp = str(self.serverFTP.text())
5696 name_server_ftp = str(self.serverFTP.text())
5696 if not name_server_ftp:
5697 if not name_server_ftp:
5697 self.console.clear()
5698 self.console.clear()
5698 self.console.append("Please Write a FTP Server")
5699 self.console.append("Please Write a FTP Server")
5699 return 0
5700 return 0
5700
5701
5701 folder_server_ftp = str(self.folderFTP.text())
5702 folder_server_ftp = str(self.folderFTP.text())
5702 if not folder_server_ftp:
5703 if not folder_server_ftp:
5703 self.console.clear()
5704 self.console.clear()
5704 self.console.append("Please Write a Folder")
5705 self.console.append("Please Write a Folder")
5705 return 0
5706 return 0
5706
5707
5707 username_ftp = str(self.usernameFTP.text())
5708 username_ftp = str(self.usernameFTP.text())
5708 if not username_ftp:
5709 if not username_ftp:
5709 self.console.clear()
5710 self.console.clear()
5710 self.console.append("Please Write a User Name")
5711 self.console.append("Please Write a User Name")
5711 return 0
5712 return 0
5712
5713
5713 password_ftp = str(self.passwordFTP.text())
5714 password_ftp = str(self.passwordFTP.text())
5714 if not password_ftp:
5715 if not password_ftp:
5715 self.console.clear()
5716 self.console.clear()
5716 self.console.append("Please Write a passwordFTP")
5717 self.console.append("Please Write a passwordFTP")
5717 return 0
5718 return 0
5718
5719
5719 ftp_wei = str(self.weightFTP.text())
5720 ftp_wei = str(self.weightFTP.text())
5720 if not ftp_wei == "":
5721 if not ftp_wei == "":
5721 try:
5722 try:
5722 ftp_wei = int(self.weightFTP.text())
5723 ftp_wei = int(self.weightFTP.text())
5723 except:
5724 except:
5724 self.console.clear()
5725 self.console.clear()
5725 self.console.append("Please Write a ftp_wei number")
5726 self.console.append("Please Write a ftp_wei number")
5726 return 0
5727 return 0
5727
5728
5728 exp_code = str(self.expcodeFTP.text())
5729 exp_code = str(self.expcodeFTP.text())
5729 if not exp_code == "":
5730 if not exp_code == "":
5730 try:
5731 try:
5731 exp_code = int(self.expcodeFTP.text())
5732 exp_code = int(self.expcodeFTP.text())
5732 except:
5733 except:
5733 self.console.clear()
5734 self.console.clear()
5734 self.console.append("Please Write a exp_code number")
5735 self.console.append("Please Write a exp_code number")
5735 return 0
5736 return 0
5736
5737
5737
5738
5738 sub_exp_code = str(self.subexpFTP.text())
5739 sub_exp_code = str(self.subexpFTP.text())
5739 if not sub_exp_code == "":
5740 if not sub_exp_code == "":
5740 try:
5741 try:
5741 sub_exp_code = int(self.subexpFTP.text())
5742 sub_exp_code = int(self.subexpFTP.text())
5742 except:
5743 except:
5743 self.console.clear()
5744 self.console.clear()
5744 self.console.append("Please Write a sub_exp_code number")
5745 self.console.append("Please Write a sub_exp_code number")
5745 return 0
5746 return 0
5746
5747
5747 plot_pos = str(self.plotposFTP.text())
5748 plot_pos = str(self.plotposFTP.text())
5748 if not plot_pos == "":
5749 if not plot_pos == "":
5749 try:
5750 try:
5750 plot_pos = int(self.plotposFTP.text())
5751 plot_pos = int(self.plotposFTP.text())
5751 except:
5752 except:
5752 self.console.clear()
5753 self.console.clear()
5753 self.console.append("Please Write a plot_pos number")
5754 self.console.append("Please Write a plot_pos number")
5754 return 0
5755 return 0
5755
5756
5756 return name_server_ftp, folder_server_ftp, username_ftp, password_ftp, ftp_wei, exp_code, sub_exp_code, plot_pos
5757 return name_server_ftp, folder_server_ftp, username_ftp, password_ftp, ftp_wei, exp_code, sub_exp_code, plot_pos
5757
5758
5758 @pyqtSignature("")
5759 @pyqtSignature("")
5759 def on_ftpOkButton_clicked(self):
5760 def on_ftpOkButton_clicked(self):
5760 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow()
5761 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow()
5761 self.create = True
5762 self.create = True
5762 self.close()
5763 self.close()
5763
5764
5764 @pyqtSignature("")
5765 @pyqtSignature("")
5765 def on_ftpCancelButton_clicked(self):
5766 def on_ftpCancelButton_clicked(self):
5766 self.create = False
5767 self.create = False
5767 self.close()
5768 self.close()
5768
5769
5769 def closeEvent(self, event):
5770 def closeEvent(self, event):
5770 self.closed.emit()
5771 self.closed.emit()
5771 event.accept()
5772 event.accept()
5772
5773
5773 class ftpBuffer():
5774 class ftpBuffer():
5774
5775
5775 server = None
5776 server = None
5776 remotefolder = None
5777 remotefolder = None
5777 username = None
5778 username = None
5778 password = None
5779 password = None
5779 ftp_wei = None
5780 ftp_wei = None
5780 exp_code = None
5781 exp_code = None
5781 sub_exp_code = None
5782 sub_exp_code = None
5782 plot_pos = None
5783 plot_pos = None
5783 create = False
5784 create = False
5784 withoutconfig = False
5785 withoutconfig = False
5785 createforView = False
5786 createforView = False
5786 localfolder = None
5787 localfolder = None
5787 extension = None
5788 extension = None
5788 period = None
5789 period = None
5789 protocol = None
5790 protocol = None
5790
5791
5791 def __init__(self):
5792 def __init__(self):
5792
5793
5793 self.create = False
5794 self.create = False
5794 self.server = None
5795 self.server = None
5795 self.remotefolder = None
5796 self.remotefolder = None
5796 self.username = None
5797 self.username = None
5797 self.password = None
5798 self.password = None
5798 self.ftp_wei = None
5799 self.ftp_wei = None
5799 self.exp_code = None
5800 self.exp_code = None
5800 self.sub_exp_code = None
5801 self.sub_exp_code = None
5801 self.plot_pos = None
5802 self.plot_pos = None
5802 # self.create = False
5803 # self.create = False
5803 self.localfolder = None
5804 self.localfolder = None
5804 self.extension = None
5805 self.extension = None
5805 self.period = None
5806 self.period = None
5806 self.protocol = None
5807 self.protocol = None
5807
5808
5808 def setwithoutconfiguration(self):
5809 def setwithoutconfiguration(self):
5809
5810
5810 self.create = False
5811 self.create = False
5811 self.server = "jro-app.igp.gob.pe"
5812 self.server = "jro-app.igp.gob.pe"
5812 self.remotefolder = "/home/wmaster/graficos"
5813 self.remotefolder = "/home/wmaster/graficos"
5813 self.username = "wmaster"
5814 self.username = "wmaster"
5814 self.password = "mst2010vhf"
5815 self.password = "mst2010vhf"
5815 self.withoutconfig = True
5816 self.withoutconfig = True
5816 self.localfolder = './'
5817 self.localfolder = './'
5817 self.extension = '.png'
5818 self.extension = '.png'
5818 self.period = 60
5819 self.period = 60
5819 self.protocol = 'ftp'
5820 self.protocol = 'ftp'
5820 self.createforView = True
5821 self.createforView = True
5821
5822
5822 if not self.ftp_wei:
5823 if not self.ftp_wei:
5823 self.ftp_wei = 0
5824 self.ftp_wei = 0
5824
5825
5825 if not self.exp_code:
5826 if not self.exp_code:
5826 self.exp_code = 0
5827 self.exp_code = 0
5827
5828
5828 if not self.sub_exp_code:
5829 if not self.sub_exp_code:
5829 self.sub_exp_code = 0
5830 self.sub_exp_code = 0
5830
5831
5831 if not self.plot_pos:
5832 if not self.plot_pos:
5832 self.plot_pos = 0
5833 self.plot_pos = 0
5833
5834
5834 def save(self, server, remotefolder, username, password, ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, localfolder='./', extension='.png', period=60, protocol='ftp'):
5835 def save(self, server, remotefolder, username, password, ftp_wei=0, exp_code=0, sub_exp_code=0, plot_pos=0, localfolder='./', extension='.png', period=60, protocol='ftp'):
5835
5836
5836 self.server = server
5837 self.server = server
5837 self.remotefolder = remotefolder
5838 self.remotefolder = remotefolder
5838 self.username = username
5839 self.username = username
5839 self.password = password
5840 self.password = password
5840 self.ftp_wei = ftp_wei
5841 self.ftp_wei = ftp_wei
5841 self.exp_code = exp_code
5842 self.exp_code = exp_code
5842 self.sub_exp_code = sub_exp_code
5843 self.sub_exp_code = sub_exp_code
5843 self.plot_pos = plot_pos
5844 self.plot_pos = plot_pos
5844 self.create = True
5845 self.create = True
5845 self.withoutconfig = False
5846 self.withoutconfig = False
5846 self.createforView = True
5847 self.createforView = True
5847 self.localfolder = localfolder
5848 self.localfolder = localfolder
5848 self.extension = extension
5849 self.extension = extension
5849 self.period = period
5850 self.period = period
5850 self.protocol = protocol
5851 self.protocol = protocol
5851
5852
5852 def recover(self):
5853 def recover(self):
5853
5854
5854 return self.server, self.remotefolder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos, self.extension, self.period, self.protocol
5855 return self.server, self.remotefolder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos, self.extension, self.period, self.protocol
5855
5856
5856 class ShowMeConsole(QtCore.QObject):
5857 class ShowMeConsole(QtCore.QObject):
5857
5858
5858 textWritten = QtCore.pyqtSignal(str)
5859 textWritten = QtCore.pyqtSignal(str)
5859
5860
5860 def write(self, text):
5861 def write(self, text):
5861
5862
5862 if text[-1] == "\n":
5863 if text[-1] == "\n":
5863 text = text[:-1]
5864 text = text[:-1]
5864
5865
5865 self.textWritten.emit(str(text))
5866 self.textWritten.emit(str(text))
@@ -1,1596 +1,1596
1 '''
1 '''
2 Created on Jul 2, 2014
2 Created on Jul 2, 2014
3
3
4 @author: roj-idl71
4 @author: roj-idl71
5 '''
5 '''
6 import os
6 import os
7 import sys
7 import sys
8 import glob
8 import glob
9 import time
9 import time
10 import numpy
10 import numpy
11 import fnmatch
11 import fnmatch
12 import time, datetime
12 import time, datetime
13 #import h5py
13 #import h5py
14 import traceback
14 import traceback
15
15
16 try:
16 try:
17 from gevent import sleep
17 from gevent import sleep
18 except:
18 except:
19 from time import sleep
19 from time import sleep
20
20
21 from schainpy.model.data.jroheaderIO import PROCFLAG, BasicHeader, SystemHeader, RadarControllerHeader, ProcessingHeader
21 from schainpy.model.data.jroheaderIO import PROCFLAG, BasicHeader, SystemHeader, RadarControllerHeader, ProcessingHeader
22 from schainpy.model.data.jroheaderIO import get_dtype_index, get_numpy_dtype, get_procflag_dtype, get_dtype_width
22 from schainpy.model.data.jroheaderIO import get_dtype_index, get_numpy_dtype, get_procflag_dtype, get_dtype_width
23
23
24 LOCALTIME = True
24 LOCALTIME = True
25
25
26 def isNumber(cad):
26 def isNumber(cad):
27 """
27 """
28 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
28 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
29
29
30 Excepciones:
30 Excepciones:
31 Si un determinado string no puede ser convertido a numero
31 Si un determinado string no puede ser convertido a numero
32 Input:
32 Input:
33 str, string al cual se le analiza para determinar si convertible a un numero o no
33 str, string al cual se le analiza para determinar si convertible a un numero o no
34
34
35 Return:
35 Return:
36 True : si el string es uno numerico
36 True : si el string es uno numerico
37 False : no es un string numerico
37 False : no es un string numerico
38 """
38 """
39 try:
39 try:
40 float( cad )
40 float( cad )
41 return True
41 return True
42 except:
42 except:
43 return False
43 return False
44
44
45 def isFileInEpoch(filename, startUTSeconds, endUTSeconds):
45 def isFileInEpoch(filename, startUTSeconds, endUTSeconds):
46 """
46 """
47 Esta funcion determina si un archivo de datos se encuentra o no dentro del rango de fecha especificado.
47 Esta funcion determina si un archivo de datos se encuentra o no dentro del rango de fecha especificado.
48
48
49 Inputs:
49 Inputs:
50 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
50 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
51
51
52 startUTSeconds : fecha inicial del rango seleccionado. La fecha esta dada en
52 startUTSeconds : fecha inicial del rango seleccionado. La fecha esta dada en
53 segundos contados desde 01/01/1970.
53 segundos contados desde 01/01/1970.
54 endUTSeconds : fecha final del rango seleccionado. La fecha esta dada en
54 endUTSeconds : fecha final del rango seleccionado. La fecha esta dada en
55 segundos contados desde 01/01/1970.
55 segundos contados desde 01/01/1970.
56
56
57 Return:
57 Return:
58 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
58 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
59 fecha especificado, de lo contrario retorna False.
59 fecha especificado, de lo contrario retorna False.
60
60
61 Excepciones:
61 Excepciones:
62 Si el archivo no existe o no puede ser abierto
62 Si el archivo no existe o no puede ser abierto
63 Si la cabecera no puede ser leida.
63 Si la cabecera no puede ser leida.
64
64
65 """
65 """
66 basicHeaderObj = BasicHeader(LOCALTIME)
66 basicHeaderObj = BasicHeader(LOCALTIME)
67
67
68 try:
68 try:
69 fp = open(filename,'rb')
69 fp = open(filename,'rb')
70 except IOError:
70 except IOError:
71 traceback.print_exc()
71 traceback.print_exc()
72 raise IOError, "The file %s can't be opened" %(filename)
72 raise IOError, "The file %s can't be opened" %(filename)
73
73
74 sts = basicHeaderObj.read(fp)
74 sts = basicHeaderObj.read(fp)
75 fp.close()
75 fp.close()
76
76
77 if not(sts):
77 if not(sts):
78 print "Skipping the file %s because it has not a valid header" %(filename)
78 print "Skipping the file %s because it has not a valid header" %(filename)
79 return 0
79 return 0
80
80
81 if not ((startUTSeconds <= basicHeaderObj.utc) and (endUTSeconds > basicHeaderObj.utc)):
81 if not ((startUTSeconds <= basicHeaderObj.utc) and (endUTSeconds > basicHeaderObj.utc)):
82 return 0
82 return 0
83
83
84 return 1
84 return 1
85
85
86 def isFileInTimeRange(filename, startDate, endDate, startTime, endTime):
86 def isFileInTimeRange(filename, startDate, endDate, startTime, endTime):
87 """
87 """
88 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
88 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
89
89
90 Inputs:
90 Inputs:
91 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
91 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
92
92
93 startDate : fecha inicial del rango seleccionado en formato datetime.date
93 startDate : fecha inicial del rango seleccionado en formato datetime.date
94
94
95 endDate : fecha final del rango seleccionado en formato datetime.date
95 endDate : fecha final del rango seleccionado en formato datetime.date
96
96
97 startTime : tiempo inicial del rango seleccionado en formato datetime.time
97 startTime : tiempo inicial del rango seleccionado en formato datetime.time
98
98
99 endTime : tiempo final del rango seleccionado en formato datetime.time
99 endTime : tiempo final del rango seleccionado en formato datetime.time
100
100
101 Return:
101 Return:
102 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
102 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
103 fecha especificado, de lo contrario retorna False.
103 fecha especificado, de lo contrario retorna False.
104
104
105 Excepciones:
105 Excepciones:
106 Si el archivo no existe o no puede ser abierto
106 Si el archivo no existe o no puede ser abierto
107 Si la cabecera no puede ser leida.
107 Si la cabecera no puede ser leida.
108
108
109 """
109 """
110
110
111
111
112 try:
112 try:
113 fp = open(filename,'rb')
113 fp = open(filename,'rb')
114 except IOError:
114 except IOError:
115 traceback.print_exc()
115 traceback.print_exc()
116 raise IOError, "The file %s can't be opened" %(filename)
116 raise IOError, "The file %s can't be opened" %(filename)
117
117
118 basicHeaderObj = BasicHeader(LOCALTIME)
118 basicHeaderObj = BasicHeader(LOCALTIME)
119 sts = basicHeaderObj.read(fp)
119 sts = basicHeaderObj.read(fp)
120 fp.close()
120 fp.close()
121
121
122 thisDatetime = basicHeaderObj.datatime
122 thisDatetime = basicHeaderObj.datatime
123 thisDate = thisDatetime.date()
123 thisDate = thisDatetime.date()
124 thisTime = thisDatetime.time()
124 thisTime = thisDatetime.time()
125
125
126 if not(sts):
126 if not(sts):
127 print "Skipping the file %s because it has not a valid header" %(filename)
127 print "Skipping the file %s because it has not a valid header" %(filename)
128 return None
128 return None
129
129
130 #General case
130 #General case
131 # o>>>>>>>>>>>>>><<<<<<<<<<<<<<o
131 # o>>>>>>>>>>>>>><<<<<<<<<<<<<<o
132 #-----------o----------------------------o-----------
132 #-----------o----------------------------o-----------
133 # startTime endTime
133 # startTime endTime
134
134
135 if endTime >= startTime:
135 if endTime >= startTime:
136 if (thisTime < startTime) or (thisTime > endTime):
136 if (thisTime < startTime) or (thisTime > endTime):
137 return None
137 return None
138
138
139 return thisDatetime
139 return thisDatetime
140
140
141 #If endTime < startTime then endTime belongs to the next day
141 #If endTime < startTime then endTime belongs to the next day
142
142
143
143
144 #<<<<<<<<<<<o o>>>>>>>>>>>
144 #<<<<<<<<<<<o o>>>>>>>>>>>
145 #-----------o----------------------------o-----------
145 #-----------o----------------------------o-----------
146 # endTime startTime
146 # endTime startTime
147
147
148 if (thisDate == startDate) and (thisTime < startTime):
148 if (thisDate == startDate) and (thisTime < startTime):
149 return None
149 return None
150
150
151 if (thisDate == endDate) and (thisTime > endTime):
151 if (thisDate == endDate) and (thisTime > endTime):
152 return None
152 return None
153
153
154 if (thisTime < startTime) and (thisTime > endTime):
154 if (thisTime < startTime) and (thisTime > endTime):
155 return None
155 return None
156
156
157 return thisDatetime
157 return thisDatetime
158
158
159 def isFolderInDateRange(folder, startDate=None, endDate=None):
159 def isFolderInDateRange(folder, startDate=None, endDate=None):
160 """
160 """
161 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
161 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
162
162
163 Inputs:
163 Inputs:
164 folder : nombre completo del directorio.
164 folder : nombre completo del directorio.
165 Su formato deberia ser "/path_root/?YYYYDDD"
165 Su formato deberia ser "/path_root/?YYYYDDD"
166
166
167 siendo:
167 siendo:
168 YYYY : Anio (ejemplo 2015)
168 YYYY : Anio (ejemplo 2015)
169 DDD : Dia del anio (ejemplo 305)
169 DDD : Dia del anio (ejemplo 305)
170
170
171 startDate : fecha inicial del rango seleccionado en formato datetime.date
171 startDate : fecha inicial del rango seleccionado en formato datetime.date
172
172
173 endDate : fecha final del rango seleccionado en formato datetime.date
173 endDate : fecha final del rango seleccionado en formato datetime.date
174
174
175 Return:
175 Return:
176 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
176 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
177 fecha especificado, de lo contrario retorna False.
177 fecha especificado, de lo contrario retorna False.
178 Excepciones:
178 Excepciones:
179 Si el directorio no tiene el formato adecuado
179 Si el directorio no tiene el formato adecuado
180 """
180 """
181
181
182 basename = os.path.basename(folder)
182 basename = os.path.basename(folder)
183
183
184 if not isRadarFolder(basename):
184 if not isRadarFolder(basename):
185 raise IOError, "The folder %s has not the rigth format" %folder
185 raise IOError, "The folder %s has not the rigth format" %folder
186
186
187 if startDate and endDate:
187 if startDate and endDate:
188 thisDate = getDateFromRadarFolder(basename)
188 thisDate = getDateFromRadarFolder(basename)
189
189
190 if thisDate < startDate:
190 if thisDate < startDate:
191 return 0
191 return 0
192
192
193 if thisDate > endDate:
193 if thisDate > endDate:
194 return 0
194 return 0
195
195
196 return 1
196 return 1
197
197
198 def isFileInDateRange(filename, startDate=None, endDate=None):
198 def isFileInDateRange(filename, startDate=None, endDate=None):
199 """
199 """
200 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
200 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
201
201
202 Inputs:
202 Inputs:
203 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
203 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
204
204
205 Su formato deberia ser "?YYYYDDDsss"
205 Su formato deberia ser "?YYYYDDDsss"
206
206
207 siendo:
207 siendo:
208 YYYY : Anio (ejemplo 2015)
208 YYYY : Anio (ejemplo 2015)
209 DDD : Dia del anio (ejemplo 305)
209 DDD : Dia del anio (ejemplo 305)
210 sss : set
210 sss : set
211
211
212 startDate : fecha inicial del rango seleccionado en formato datetime.date
212 startDate : fecha inicial del rango seleccionado en formato datetime.date
213
213
214 endDate : fecha final del rango seleccionado en formato datetime.date
214 endDate : fecha final del rango seleccionado en formato datetime.date
215
215
216 Return:
216 Return:
217 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
217 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
218 fecha especificado, de lo contrario retorna False.
218 fecha especificado, de lo contrario retorna False.
219 Excepciones:
219 Excepciones:
220 Si el archivo no tiene el formato adecuado
220 Si el archivo no tiene el formato adecuado
221 """
221 """
222
222
223 basename = os.path.basename(filename)
223 basename = os.path.basename(filename)
224
224
225 if not isRadarFile(basename):
225 if not isRadarFile(basename):
226 raise IOError, "The filename %s has not the rigth format" %filename
226 raise IOError, "The filename %s has not the rigth format" %filename
227
227
228 if startDate and endDate:
228 if startDate and endDate:
229 thisDate = getDateFromRadarFile(basename)
229 thisDate = getDateFromRadarFile(basename)
230
230
231 if thisDate < startDate:
231 if thisDate < startDate:
232 return 0
232 return 0
233
233
234 if thisDate > endDate:
234 if thisDate > endDate:
235 return 0
235 return 0
236
236
237 return 1
237 return 1
238
238
239 def getFileFromSet(path, ext, set):
239 def getFileFromSet(path, ext, set):
240 validFilelist = []
240 validFilelist = []
241 fileList = os.listdir(path)
241 fileList = os.listdir(path)
242
242
243 # 0 1234 567 89A BCDE
243 # 0 1234 567 89A BCDE
244 # H YYYY DDD SSS .ext
244 # H YYYY DDD SSS .ext
245
245
246 for thisFile in fileList:
246 for thisFile in fileList:
247 try:
247 try:
248 year = int(thisFile[1:5])
248 year = int(thisFile[1:5])
249 doy = int(thisFile[5:8])
249 doy = int(thisFile[5:8])
250 except:
250 except:
251 continue
251 continue
252
252
253 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
253 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
254 continue
254 continue
255
255
256 validFilelist.append(thisFile)
256 validFilelist.append(thisFile)
257
257
258 myfile = fnmatch.filter(validFilelist,'*%4.4d%3.3d%3.3d*'%(year,doy,set))
258 myfile = fnmatch.filter(validFilelist,'*%4.4d%3.3d%3.3d*'%(year,doy,set))
259
259
260 if len(myfile)!= 0:
260 if len(myfile)!= 0:
261 return myfile[0]
261 return myfile[0]
262 else:
262 else:
263 filename = '*%4.4d%3.3d%3.3d%s'%(year,doy,set,ext.lower())
263 filename = '*%4.4d%3.3d%3.3d%s'%(year,doy,set,ext.lower())
264 print 'the filename %s does not exist'%filename
264 print 'the filename %s does not exist'%filename
265 print '...going to the last file: '
265 print '...going to the last file: '
266
266
267 if validFilelist:
267 if validFilelist:
268 validFilelist = sorted( validFilelist, key=str.lower )
268 validFilelist = sorted( validFilelist, key=str.lower )
269 return validFilelist[-1]
269 return validFilelist[-1]
270
270
271 return None
271 return None
272
272
273 def getlastFileFromPath(path, ext):
273 def getlastFileFromPath(path, ext):
274 """
274 """
275 Depura el fileList dejando solo los que cumplan el formato de "PYYYYDDDSSS.ext"
275 Depura el fileList dejando solo los que cumplan el formato de "PYYYYDDDSSS.ext"
276 al final de la depuracion devuelve el ultimo file de la lista que quedo.
276 al final de la depuracion devuelve el ultimo file de la lista que quedo.
277
277
278 Input:
278 Input:
279 fileList : lista conteniendo todos los files (sin path) que componen una determinada carpeta
279 fileList : lista conteniendo todos los files (sin path) que componen una determinada carpeta
280 ext : extension de los files contenidos en una carpeta
280 ext : extension de los files contenidos en una carpeta
281
281
282 Return:
282 Return:
283 El ultimo file de una determinada carpeta, no se considera el path.
283 El ultimo file de una determinada carpeta, no se considera el path.
284 """
284 """
285 validFilelist = []
285 validFilelist = []
286 fileList = os.listdir(path)
286 fileList = os.listdir(path)
287
287
288 # 0 1234 567 89A BCDE
288 # 0 1234 567 89A BCDE
289 # H YYYY DDD SSS .ext
289 # H YYYY DDD SSS .ext
290
290
291 for thisFile in fileList:
291 for thisFile in fileList:
292
292
293 year = thisFile[1:5]
293 year = thisFile[1:5]
294 if not isNumber(year):
294 if not isNumber(year):
295 continue
295 continue
296
296
297 doy = thisFile[5:8]
297 doy = thisFile[5:8]
298 if not isNumber(doy):
298 if not isNumber(doy):
299 continue
299 continue
300
300
301 year = int(year)
301 year = int(year)
302 doy = int(doy)
302 doy = int(doy)
303
303
304 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
304 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
305 continue
305 continue
306
306
307 validFilelist.append(thisFile)
307 validFilelist.append(thisFile)
308
308
309 if validFilelist:
309 if validFilelist:
310 validFilelist = sorted( validFilelist, key=str.lower )
310 validFilelist = sorted( validFilelist, key=str.lower )
311 return validFilelist[-1]
311 return validFilelist[-1]
312
312
313 return None
313 return None
314
314
315 def checkForRealPath(path, foldercounter, year, doy, set, ext):
315 def checkForRealPath(path, foldercounter, year, doy, set, ext):
316 """
316 """
317 Por ser Linux Case Sensitive entonces checkForRealPath encuentra el nombre correcto de un path,
317 Por ser Linux Case Sensitive entonces checkForRealPath encuentra el nombre correcto de un path,
318 Prueba por varias combinaciones de nombres entre mayusculas y minusculas para determinar
318 Prueba por varias combinaciones de nombres entre mayusculas y minusculas para determinar
319 el path exacto de un determinado file.
319 el path exacto de un determinado file.
320
320
321 Example :
321 Example :
322 nombre correcto del file es .../.../D2009307/P2009307367.ext
322 nombre correcto del file es .../.../D2009307/P2009307367.ext
323
323
324 Entonces la funcion prueba con las siguientes combinaciones
324 Entonces la funcion prueba con las siguientes combinaciones
325 .../.../y2009307367.ext
325 .../.../y2009307367.ext
326 .../.../Y2009307367.ext
326 .../.../Y2009307367.ext
327 .../.../x2009307/y2009307367.ext
327 .../.../x2009307/y2009307367.ext
328 .../.../x2009307/Y2009307367.ext
328 .../.../x2009307/Y2009307367.ext
329 .../.../X2009307/y2009307367.ext
329 .../.../X2009307/y2009307367.ext
330 .../.../X2009307/Y2009307367.ext
330 .../.../X2009307/Y2009307367.ext
331 siendo para este caso, la ultima combinacion de letras, identica al file buscado
331 siendo para este caso, la ultima combinacion de letras, identica al file buscado
332
332
333 Return:
333 Return:
334 Si encuentra la cobinacion adecuada devuelve el path completo y el nombre del file
334 Si encuentra la cobinacion adecuada devuelve el path completo y el nombre del file
335 caso contrario devuelve None como path y el la ultima combinacion de nombre en mayusculas
335 caso contrario devuelve None como path y el la ultima combinacion de nombre en mayusculas
336 para el filename
336 para el filename
337 """
337 """
338 fullfilename = None
338 fullfilename = None
339 find_flag = False
339 find_flag = False
340 filename = None
340 filename = None
341
341
342 prefixDirList = [None,'d','D']
342 prefixDirList = [None,'d','D']
343 if ext.lower() == ".r": #voltage
343 if ext.lower() == ".r": #voltage
344 prefixFileList = ['d','D']
344 prefixFileList = ['d','D']
345 elif ext.lower() == ".pdata": #spectra
345 elif ext.lower() == ".pdata": #spectra
346 prefixFileList = ['p','P']
346 prefixFileList = ['p','P']
347 else:
347 else:
348 return None, filename
348 return None, filename
349
349
350 #barrido por las combinaciones posibles
350 #barrido por las combinaciones posibles
351 for prefixDir in prefixDirList:
351 for prefixDir in prefixDirList:
352 thispath = path
352 thispath = path
353 if prefixDir != None:
353 if prefixDir != None:
354 #formo el nombre del directorio xYYYYDDD (x=d o x=D)
354 #formo el nombre del directorio xYYYYDDD (x=d o x=D)
355 if foldercounter == 0:
355 if foldercounter == 0:
356 thispath = os.path.join(path, "%s%04d%03d" % ( prefixDir, year, doy ))
356 thispath = os.path.join(path, "%s%04d%03d" % ( prefixDir, year, doy ))
357 else:
357 else:
358 thispath = os.path.join(path, "%s%04d%03d_%02d" % ( prefixDir, year, doy , foldercounter))
358 thispath = os.path.join(path, "%s%04d%03d_%02d" % ( prefixDir, year, doy , foldercounter))
359 for prefixFile in prefixFileList: #barrido por las dos combinaciones posibles de "D"
359 for prefixFile in prefixFileList: #barrido por las dos combinaciones posibles de "D"
360 filename = "%s%04d%03d%03d%s" % ( prefixFile, year, doy, set, ext ) #formo el nombre del file xYYYYDDDSSS.ext
360 filename = "%s%04d%03d%03d%s" % ( prefixFile, year, doy, set, ext ) #formo el nombre del file xYYYYDDDSSS.ext
361 fullfilename = os.path.join( thispath, filename ) #formo el path completo
361 fullfilename = os.path.join( thispath, filename ) #formo el path completo
362
362
363 if os.path.exists( fullfilename ): #verifico que exista
363 if os.path.exists( fullfilename ): #verifico que exista
364 find_flag = True
364 find_flag = True
365 break
365 break
366 if find_flag:
366 if find_flag:
367 break
367 break
368
368
369 if not(find_flag):
369 if not(find_flag):
370 return None, filename
370 return None, filename
371
371
372 return fullfilename, filename
372 return fullfilename, filename
373
373
374 def isRadarFolder(folder):
374 def isRadarFolder(folder):
375 try:
375 try:
376 year = int(folder[1:5])
376 year = int(folder[1:5])
377 doy = int(folder[5:8])
377 doy = int(folder[5:8])
378 except:
378 except:
379 return 0
379 return 0
380
380
381 return 1
381 return 1
382
382
383 def isRadarFile(file):
383 def isRadarFile(file):
384 try:
384 try:
385 year = int(file[1:5])
385 year = int(file[1:5])
386 doy = int(file[5:8])
386 doy = int(file[5:8])
387 set = int(file[8:11])
387 set = int(file[8:11])
388 except:
388 except:
389 return 0
389 return 0
390
390
391 return 1
391 return 1
392
392
393 def getDateFromRadarFile(file):
393 def getDateFromRadarFile(file):
394 try:
394 try:
395 year = int(file[1:5])
395 year = int(file[1:5])
396 doy = int(file[5:8])
396 doy = int(file[5:8])
397 set = int(file[8:11])
397 set = int(file[8:11])
398 except:
398 except:
399 return None
399 return None
400
400
401 thisDate = datetime.date(year, 1, 1) + datetime.timedelta(doy-1)
401 thisDate = datetime.date(year, 1, 1) + datetime.timedelta(doy-1)
402 return thisDate
402 return thisDate
403
403
404 def getDateFromRadarFolder(folder):
404 def getDateFromRadarFolder(folder):
405 try:
405 try:
406 year = int(folder[1:5])
406 year = int(folder[1:5])
407 doy = int(folder[5:8])
407 doy = int(folder[5:8])
408 except:
408 except:
409 return None
409 return None
410
410
411 thisDate = datetime.date(year, 1, 1) + datetime.timedelta(doy-1)
411 thisDate = datetime.date(year, 1, 1) + datetime.timedelta(doy-1)
412 return thisDate
412 return thisDate
413
413
414 class JRODataIO:
414 class JRODataIO:
415
415
416 c = 3E8
416 c = 3E8
417
417
418 isConfig = False
418 isConfig = False
419
419
420 basicHeaderObj = None
420 basicHeaderObj = None
421
421
422 systemHeaderObj = None
422 systemHeaderObj = None
423
423
424 radarControllerHeaderObj = None
424 radarControllerHeaderObj = None
425
425
426 processingHeaderObj = None
426 processingHeaderObj = None
427
427
428 online = 0
428 online = 0
429
429
430 dtype = None
430 dtype = None
431
431
432 pathList = []
432 pathList = []
433
433
434 filenameList = []
434 filenameList = []
435
435
436 filename = None
436 filename = None
437
437
438 ext = None
438 ext = None
439
439
440 flagIsNewFile = 1
440 flagIsNewFile = 1
441
441
442 flagDiscontinuousBlock = 0
442 flagDiscontinuousBlock = 0
443
443
444 flagIsNewBlock = 0
444 flagIsNewBlock = 0
445
445
446 fp = None
446 fp = None
447
447
448 firstHeaderSize = 0
448 firstHeaderSize = 0
449
449
450 basicHeaderSize = 24
450 basicHeaderSize = 24
451
451
452 versionFile = 1103
452 versionFile = 1103
453
453
454 fileSize = None
454 fileSize = None
455
455
456 # ippSeconds = None
456 # ippSeconds = None
457
457
458 fileSizeByHeader = None
458 fileSizeByHeader = None
459
459
460 fileIndex = None
460 fileIndex = None
461
461
462 profileIndex = None
462 profileIndex = None
463
463
464 blockIndex = None
464 blockIndex = None
465
465
466 nTotalBlocks = None
466 nTotalBlocks = None
467
467
468 maxTimeStep = 30
468 maxTimeStep = 30
469
469
470 lastUTTime = None
470 lastUTTime = None
471
471
472 datablock = None
472 datablock = None
473
473
474 dataOut = None
474 dataOut = None
475
475
476 blocksize = None
476 blocksize = None
477
477
478 getByBlock = False
478 getByBlock = False
479
479
480 def __init__(self):
480 def __init__(self):
481
481
482 raise ValueError, "Not implemented"
482 raise ValueError, "Not implemented"
483
483
484 def run(self):
484 def run(self):
485
485
486 raise ValueError, "Not implemented"
486 raise ValueError, "Not implemented"
487
487
488 def getDtypeWidth(self):
488 def getDtypeWidth(self):
489
489
490 dtype_index = get_dtype_index(self.dtype)
490 dtype_index = get_dtype_index(self.dtype)
491 dtype_width = get_dtype_width(dtype_index)
491 dtype_width = get_dtype_width(dtype_index)
492
492
493 return dtype_width
493 return dtype_width
494
494
495 class JRODataReader(JRODataIO):
495 class JRODataReader(JRODataIO):
496
496
497 nReadBlocks = 0
497 nReadBlocks = 0
498
498
499 delay = 10 #number of seconds waiting a new file
499 delay = 10 #number of seconds waiting a new file
500
500
501 nTries = 3 #quantity tries
501 nTries = 3 #quantity tries
502
502
503 nFiles = 3 #number of files for searching
503 nFiles = 3 #number of files for searching
504
504
505 path = None
505 path = None
506
506
507 foldercounter = 0
507 foldercounter = 0
508
508
509 flagNoMoreFiles = 0
509 flagNoMoreFiles = 0
510
510
511 datetimeList = []
511 datetimeList = []
512
512
513 __isFirstTimeOnline = 1
513 __isFirstTimeOnline = 1
514
514
515 __printInfo = True
515 __printInfo = True
516
516
517 profileIndex = None
517 profileIndex = None
518
518
519 nTxs = 1
519 nTxs = 1
520
520
521 txIndex = None
521 txIndex = None
522
522
523 def __init__(self):
523 def __init__(self):
524
524
525 """
525 """
526
526
527 """
527 """
528
528
529 # raise NotImplementedError, "This method has not been implemented"
529 # raise NotImplementedError, "This method has not been implemented"
530
530
531
531
532 def createObjByDefault(self):
532 def createObjByDefault(self):
533 """
533 """
534
534
535 """
535 """
536 raise NotImplementedError, "This method has not been implemented"
536 raise NotImplementedError, "This method has not been implemented"
537
537
538 def getBlockDimension(self):
538 def getBlockDimension(self):
539
539
540 raise NotImplementedError, "No implemented"
540 raise NotImplementedError, "No implemented"
541
541
542 def __searchFilesOffLine(self,
542 def __searchFilesOffLine(self,
543 path,
543 path,
544 startDate=None,
544 startDate=None,
545 endDate=None,
545 endDate=None,
546 startTime=datetime.time(0,0,0),
546 startTime=datetime.time(0,0,0),
547 endTime=datetime.time(23,59,59),
547 endTime=datetime.time(23,59,59),
548 set=None,
548 set=None,
549 expLabel='',
549 expLabel='',
550 ext='.r',
550 ext='.r',
551 walk=True):
551 walk=True):
552
552
553 self.filenameList = []
553 self.filenameList = []
554 self.datetimeList = []
554 self.datetimeList = []
555
555
556 pathList = []
556 pathList = []
557
557
558 dateList, pathList = self.findDatafiles(path, startDate, endDate, expLabel, ext, walk, include_path=True)
558 dateList, pathList = self.findDatafiles(path, startDate, endDate, expLabel, ext, walk, include_path=True)
559
559
560 if dateList == []:
560 if dateList == []:
561 print "[Reading] No *%s files in %s from %s to %s)"%(ext, path,
561 print "[Reading] No *%s files in %s from %s to %s)"%(ext, path,
562 datetime.datetime.combine(startDate,startTime).ctime(),
562 datetime.datetime.combine(startDate,startTime).ctime(),
563 datetime.datetime.combine(endDate,endTime).ctime())
563 datetime.datetime.combine(endDate,endTime).ctime())
564
564
565 return None, None
565 return None, None
566
566
567 if len(dateList) > 1:
567 if len(dateList) > 1:
568 print "[Reading] %d days were found in date range: %s - %s" %(len(dateList), startDate, endDate)
568 print "[Reading] %d days were found in date range: %s - %s" %(len(dateList), startDate, endDate)
569 else:
569 else:
570 print "[Reading] data was found for the date %s" %(dateList[0])
570 print "[Reading] data was found for the date %s" %(dateList[0])
571
571
572 filenameList = []
572 filenameList = []
573 datetimeList = []
573 datetimeList = []
574
574
575 for thisPath in pathList:
575 for thisPath in pathList:
576 # thisPath = pathList[pathDict[file]]
576 # thisPath = pathList[pathDict[file]]
577
577
578 fileList = glob.glob1(thisPath, "*%s" %ext)
578 fileList = glob.glob1(thisPath, "*%s" %ext)
579 fileList.sort()
579 fileList.sort()
580
580
581 for file in fileList:
581 for file in fileList:
582
582
583 filename = os.path.join(thisPath,file)
583 filename = os.path.join(thisPath,file)
584
584
585 if not isFileInDateRange(filename, startDate, endDate):
585 if not isFileInDateRange(filename, startDate, endDate):
586 continue
586 continue
587
587
588 thisDatetime = isFileInTimeRange(filename, startDate, endDate, startTime, endTime)
588 thisDatetime = isFileInTimeRange(filename, startDate, endDate, startTime, endTime)
589
589
590 if not(thisDatetime):
590 if not(thisDatetime):
591 continue
591 continue
592
592
593 filenameList.append(filename)
593 filenameList.append(filename)
594 datetimeList.append(thisDatetime)
594 datetimeList.append(thisDatetime)
595
595
596 if not(filenameList):
596 if not(filenameList):
597 print "[Reading] Any file was found int time range %s - %s" %(startTime.ctime(), endTime.ctime())
597 print "[Reading] Any file was found int time range %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
598 return None, None
598 return None, None
599
599
600 print "[Reading] %d file(s) was(were) found in time range: %s - %s" %(len(filenameList), startTime, endTime)
600 print "[Reading] %d file(s) was(were) found in time range: %s - %s" %(len(filenameList), startTime, endTime)
601 print
601 print
602
602
603 for i in range(len(filenameList)):
603 for i in range(len(filenameList)):
604 print "[Reading] %s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
604 print "[Reading] %s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
605
605
606 self.filenameList = filenameList
606 self.filenameList = filenameList
607 self.datetimeList = datetimeList
607 self.datetimeList = datetimeList
608
608
609 return pathList, filenameList
609 return pathList, filenameList
610
610
611 def __searchFilesOnLine(self, path, expLabel = "", ext = None, walk=True, set=None):
611 def __searchFilesOnLine(self, path, expLabel = "", ext = None, walk=True, set=None):
612
612
613 """
613 """
614 Busca el ultimo archivo de la ultima carpeta (determinada o no por startDateTime) y
614 Busca el ultimo archivo de la ultima carpeta (determinada o no por startDateTime) y
615 devuelve el archivo encontrado ademas de otros datos.
615 devuelve el archivo encontrado ademas de otros datos.
616
616
617 Input:
617 Input:
618 path : carpeta donde estan contenidos los files que contiene data
618 path : carpeta donde estan contenidos los files que contiene data
619
619
620 expLabel : Nombre del subexperimento (subfolder)
620 expLabel : Nombre del subexperimento (subfolder)
621
621
622 ext : extension de los files
622 ext : extension de los files
623
623
624 walk : Si es habilitado no realiza busquedas dentro de los ubdirectorios (doypath)
624 walk : Si es habilitado no realiza busquedas dentro de los ubdirectorios (doypath)
625
625
626 Return:
626 Return:
627 directory : eL directorio donde esta el file encontrado
627 directory : eL directorio donde esta el file encontrado
628 filename : el ultimo file de una determinada carpeta
628 filename : el ultimo file de una determinada carpeta
629 year : el anho
629 year : el anho
630 doy : el numero de dia del anho
630 doy : el numero de dia del anho
631 set : el set del archivo
631 set : el set del archivo
632
632
633
633
634 """
634 """
635 dirList = []
635 dirList = []
636
636
637 if not walk:
637 if not walk:
638 fullpath = path
638 fullpath = path
639 foldercounter = 0
639 foldercounter = 0
640 else:
640 else:
641 #Filtra solo los directorios
641 #Filtra solo los directorios
642 for thisPath in os.listdir(path):
642 for thisPath in os.listdir(path):
643 if not os.path.isdir(os.path.join(path,thisPath)):
643 if not os.path.isdir(os.path.join(path,thisPath)):
644 continue
644 continue
645 if not isRadarFolder(thisPath):
645 if not isRadarFolder(thisPath):
646 continue
646 continue
647
647
648 dirList.append(thisPath)
648 dirList.append(thisPath)
649
649
650 if not(dirList):
650 if not(dirList):
651 return None, None, None, None, None, None
651 return None, None, None, None, None, None
652
652
653 dirList = sorted( dirList, key=str.lower )
653 dirList = sorted( dirList, key=str.lower )
654
654
655 doypath = dirList[-1]
655 doypath = dirList[-1]
656 foldercounter = int(doypath.split('_')[1]) if len(doypath.split('_'))>1 else 0
656 foldercounter = int(doypath.split('_')[1]) if len(doypath.split('_'))>1 else 0
657 fullpath = os.path.join(path, doypath, expLabel)
657 fullpath = os.path.join(path, doypath, expLabel)
658
658
659
659
660 print "[Reading] %s folder was found: " %(fullpath )
660 print "[Reading] %s folder was found: " %(fullpath )
661
661
662 if set == None:
662 if set == None:
663 filename = getlastFileFromPath(fullpath, ext)
663 filename = getlastFileFromPath(fullpath, ext)
664 else:
664 else:
665 filename = getFileFromSet(fullpath, ext, set)
665 filename = getFileFromSet(fullpath, ext, set)
666
666
667 if not(filename):
667 if not(filename):
668 return None, None, None, None, None, None
668 return None, None, None, None, None, None
669
669
670 print "[Reading] %s file was found" %(filename)
670 print "[Reading] %s file was found" %(filename)
671
671
672 if not(self.__verifyFile(os.path.join(fullpath, filename))):
672 if not(self.__verifyFile(os.path.join(fullpath, filename))):
673 return None, None, None, None, None, None
673 return None, None, None, None, None, None
674
674
675 year = int( filename[1:5] )
675 year = int( filename[1:5] )
676 doy = int( filename[5:8] )
676 doy = int( filename[5:8] )
677 set = int( filename[8:11] )
677 set = int( filename[8:11] )
678
678
679 return fullpath, foldercounter, filename, year, doy, set
679 return fullpath, foldercounter, filename, year, doy, set
680
680
681 def __setNextFileOffline(self):
681 def __setNextFileOffline(self):
682
682
683 idFile = self.fileIndex
683 idFile = self.fileIndex
684
684
685 while (True):
685 while (True):
686 idFile += 1
686 idFile += 1
687 if not(idFile < len(self.filenameList)):
687 if not(idFile < len(self.filenameList)):
688 self.flagNoMoreFiles = 1
688 self.flagNoMoreFiles = 1
689 # print "[Reading] No more Files"
689 # print "[Reading] No more Files"
690 return 0
690 return 0
691
691
692 filename = self.filenameList[idFile]
692 filename = self.filenameList[idFile]
693
693
694 if not(self.__verifyFile(filename)):
694 if not(self.__verifyFile(filename)):
695 continue
695 continue
696
696
697 fileSize = os.path.getsize(filename)
697 fileSize = os.path.getsize(filename)
698 fp = open(filename,'rb')
698 fp = open(filename,'rb')
699 break
699 break
700
700
701 self.flagIsNewFile = 1
701 self.flagIsNewFile = 1
702 self.fileIndex = idFile
702 self.fileIndex = idFile
703 self.filename = filename
703 self.filename = filename
704 self.fileSize = fileSize
704 self.fileSize = fileSize
705 self.fp = fp
705 self.fp = fp
706
706
707 # print "[Reading] Setting the file: %s"%self.filename
707 # print "[Reading] Setting the file: %s"%self.filename
708
708
709 return 1
709 return 1
710
710
711 def __setNextFileOnline(self):
711 def __setNextFileOnline(self):
712 """
712 """
713 Busca el siguiente file que tenga suficiente data para ser leida, dentro de un folder especifico, si
713 Busca el siguiente file que tenga suficiente data para ser leida, dentro de un folder especifico, si
714 no encuentra un file valido espera un tiempo determinado y luego busca en los posibles n files
714 no encuentra un file valido espera un tiempo determinado y luego busca en los posibles n files
715 siguientes.
715 siguientes.
716
716
717 Affected:
717 Affected:
718 self.flagIsNewFile
718 self.flagIsNewFile
719 self.filename
719 self.filename
720 self.fileSize
720 self.fileSize
721 self.fp
721 self.fp
722 self.set
722 self.set
723 self.flagNoMoreFiles
723 self.flagNoMoreFiles
724
724
725 Return:
725 Return:
726 0 : si luego de una busqueda del siguiente file valido este no pudo ser encontrado
726 0 : si luego de una busqueda del siguiente file valido este no pudo ser encontrado
727 1 : si el file fue abierto con exito y esta listo a ser leido
727 1 : si el file fue abierto con exito y esta listo a ser leido
728
728
729 Excepciones:
729 Excepciones:
730 Si un determinado file no puede ser abierto
730 Si un determinado file no puede ser abierto
731 """
731 """
732 nFiles = 0
732 nFiles = 0
733 fileOk_flag = False
733 fileOk_flag = False
734 firstTime_flag = True
734 firstTime_flag = True
735
735
736 self.set += 1
736 self.set += 1
737
737
738 if self.set > 999:
738 if self.set > 999:
739 self.set = 0
739 self.set = 0
740 self.foldercounter += 1
740 self.foldercounter += 1
741
741
742 #busca el 1er file disponible
742 #busca el 1er file disponible
743 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
743 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
744 if fullfilename:
744 if fullfilename:
745 if self.__verifyFile(fullfilename, False):
745 if self.__verifyFile(fullfilename, False):
746 fileOk_flag = True
746 fileOk_flag = True
747
747
748 #si no encuentra un file entonces espera y vuelve a buscar
748 #si no encuentra un file entonces espera y vuelve a buscar
749 if not(fileOk_flag):
749 if not(fileOk_flag):
750 for nFiles in range(self.nFiles+1): #busco en los siguientes self.nFiles+1 files posibles
750 for nFiles in range(self.nFiles+1): #busco en los siguientes self.nFiles+1 files posibles
751
751
752 if firstTime_flag: #si es la 1era vez entonces hace el for self.nTries veces
752 if firstTime_flag: #si es la 1era vez entonces hace el for self.nTries veces
753 tries = self.nTries
753 tries = self.nTries
754 else:
754 else:
755 tries = 1 #si no es la 1era vez entonces solo lo hace una vez
755 tries = 1 #si no es la 1era vez entonces solo lo hace una vez
756
756
757 for nTries in range( tries ):
757 for nTries in range( tries ):
758 if firstTime_flag:
758 if firstTime_flag:
759 print "\t[Reading] Waiting %0.2f sec for the file \"%s\" , try %03d ..." % ( self.delay, filename, nTries+1 )
759 print "\t[Reading] Waiting %0.2f sec for the file \"%s\" , try %03d ..." % ( self.delay, filename, nTries+1 )
760 sleep( self.delay )
760 sleep( self.delay )
761 else:
761 else:
762 print "\t[Reading] Searching the next \"%s%04d%03d%03d%s\" file ..." % (self.optchar, self.year, self.doy, self.set, self.ext)
762 print "\t[Reading] Searching the next \"%s%04d%03d%03d%s\" file ..." % (self.optchar, self.year, self.doy, self.set, self.ext)
763
763
764 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
764 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
765 if fullfilename:
765 if fullfilename:
766 if self.__verifyFile(fullfilename):
766 if self.__verifyFile(fullfilename):
767 fileOk_flag = True
767 fileOk_flag = True
768 break
768 break
769
769
770 if fileOk_flag:
770 if fileOk_flag:
771 break
771 break
772
772
773 firstTime_flag = False
773 firstTime_flag = False
774
774
775 print "\t[Reading] Skipping the file \"%s\" due to this file doesn't exist" % filename
775 print "\t[Reading] Skipping the file \"%s\" due to this file doesn't exist" % filename
776 self.set += 1
776 self.set += 1
777
777
778 if nFiles == (self.nFiles-1): #si no encuentro el file buscado cambio de carpeta y busco en la siguiente carpeta
778 if nFiles == (self.nFiles-1): #si no encuentro el file buscado cambio de carpeta y busco en la siguiente carpeta
779 self.set = 0
779 self.set = 0
780 self.doy += 1
780 self.doy += 1
781 self.foldercounter = 0
781 self.foldercounter = 0
782
782
783 if fileOk_flag:
783 if fileOk_flag:
784 self.fileSize = os.path.getsize( fullfilename )
784 self.fileSize = os.path.getsize( fullfilename )
785 self.filename = fullfilename
785 self.filename = fullfilename
786 self.flagIsNewFile = 1
786 self.flagIsNewFile = 1
787 if self.fp != None: self.fp.close()
787 if self.fp != None: self.fp.close()
788 self.fp = open(fullfilename, 'rb')
788 self.fp = open(fullfilename, 'rb')
789 self.flagNoMoreFiles = 0
789 self.flagNoMoreFiles = 0
790 # print '[Reading] Setting the file: %s' % fullfilename
790 # print '[Reading] Setting the file: %s' % fullfilename
791 else:
791 else:
792 self.fileSize = 0
792 self.fileSize = 0
793 self.filename = None
793 self.filename = None
794 self.flagIsNewFile = 0
794 self.flagIsNewFile = 0
795 self.fp = None
795 self.fp = None
796 self.flagNoMoreFiles = 1
796 self.flagNoMoreFiles = 1
797 # print '[Reading] No more files to read'
797 # print '[Reading] No more files to read'
798
798
799 return fileOk_flag
799 return fileOk_flag
800
800
801 def setNextFile(self):
801 def setNextFile(self):
802 if self.fp != None:
802 if self.fp != None:
803 self.fp.close()
803 self.fp.close()
804
804
805 if self.online:
805 if self.online:
806 newFile = self.__setNextFileOnline()
806 newFile = self.__setNextFileOnline()
807 else:
807 else:
808 newFile = self.__setNextFileOffline()
808 newFile = self.__setNextFileOffline()
809
809
810 if not(newFile):
810 if not(newFile):
811 print '[Reading] No more files to read'
811 print '[Reading] No more files to read'
812 return 0
812 return 0
813
813
814 print '[Reading] Setting the file: %s' % self.filename
814 print '[Reading] Setting the file: %s' % self.filename
815
815
816 self.__readFirstHeader()
816 self.__readFirstHeader()
817 self.nReadBlocks = 0
817 self.nReadBlocks = 0
818 return 1
818 return 1
819
819
820 def __waitNewBlock(self):
820 def __waitNewBlock(self):
821 """
821 """
822 Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
822 Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
823
823
824 Si el modo de lectura es OffLine siempre retorn 0
824 Si el modo de lectura es OffLine siempre retorn 0
825 """
825 """
826 if not self.online:
826 if not self.online:
827 return 0
827 return 0
828
828
829 if (self.nReadBlocks >= self.processingHeaderObj.dataBlocksPerFile):
829 if (self.nReadBlocks >= self.processingHeaderObj.dataBlocksPerFile):
830 return 0
830 return 0
831
831
832 currentPointer = self.fp.tell()
832 currentPointer = self.fp.tell()
833
833
834 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
834 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
835
835
836 for nTries in range( self.nTries ):
836 for nTries in range( self.nTries ):
837
837
838 self.fp.close()
838 self.fp.close()
839 self.fp = open( self.filename, 'rb' )
839 self.fp = open( self.filename, 'rb' )
840 self.fp.seek( currentPointer )
840 self.fp.seek( currentPointer )
841
841
842 self.fileSize = os.path.getsize( self.filename )
842 self.fileSize = os.path.getsize( self.filename )
843 currentSize = self.fileSize - currentPointer
843 currentSize = self.fileSize - currentPointer
844
844
845 if ( currentSize >= neededSize ):
845 if ( currentSize >= neededSize ):
846 self.basicHeaderObj.read(self.fp)
846 self.basicHeaderObj.read(self.fp)
847 return 1
847 return 1
848
848
849 if self.fileSize == self.fileSizeByHeader:
849 if self.fileSize == self.fileSizeByHeader:
850 # self.flagEoF = True
850 # self.flagEoF = True
851 return 0
851 return 0
852
852
853 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
853 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
854 sleep( self.delay )
854 sleep( self.delay )
855
855
856
856
857 return 0
857 return 0
858
858
859 def waitDataBlock(self,pointer_location):
859 def waitDataBlock(self,pointer_location):
860
860
861 currentPointer = pointer_location
861 currentPointer = pointer_location
862
862
863 neededSize = self.processingHeaderObj.blockSize #+ self.basicHeaderSize
863 neededSize = self.processingHeaderObj.blockSize #+ self.basicHeaderSize
864
864
865 for nTries in range( self.nTries ):
865 for nTries in range( self.nTries ):
866 self.fp.close()
866 self.fp.close()
867 self.fp = open( self.filename, 'rb' )
867 self.fp = open( self.filename, 'rb' )
868 self.fp.seek( currentPointer )
868 self.fp.seek( currentPointer )
869
869
870 self.fileSize = os.path.getsize( self.filename )
870 self.fileSize = os.path.getsize( self.filename )
871 currentSize = self.fileSize - currentPointer
871 currentSize = self.fileSize - currentPointer
872
872
873 if ( currentSize >= neededSize ):
873 if ( currentSize >= neededSize ):
874 return 1
874 return 1
875
875
876 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
876 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
877 sleep( self.delay )
877 sleep( self.delay )
878
878
879 return 0
879 return 0
880
880
881 def __jumpToLastBlock(self):
881 def __jumpToLastBlock(self):
882
882
883 if not(self.__isFirstTimeOnline):
883 if not(self.__isFirstTimeOnline):
884 return
884 return
885
885
886 csize = self.fileSize - self.fp.tell()
886 csize = self.fileSize - self.fp.tell()
887 blocksize = self.processingHeaderObj.blockSize
887 blocksize = self.processingHeaderObj.blockSize
888
888
889 #salta el primer bloque de datos
889 #salta el primer bloque de datos
890 if csize > self.processingHeaderObj.blockSize:
890 if csize > self.processingHeaderObj.blockSize:
891 self.fp.seek(self.fp.tell() + blocksize)
891 self.fp.seek(self.fp.tell() + blocksize)
892 else:
892 else:
893 return
893 return
894
894
895 csize = self.fileSize - self.fp.tell()
895 csize = self.fileSize - self.fp.tell()
896 neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
896 neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
897 while True:
897 while True:
898
898
899 if self.fp.tell()<self.fileSize:
899 if self.fp.tell()<self.fileSize:
900 self.fp.seek(self.fp.tell() + neededsize)
900 self.fp.seek(self.fp.tell() + neededsize)
901 else:
901 else:
902 self.fp.seek(self.fp.tell() - neededsize)
902 self.fp.seek(self.fp.tell() - neededsize)
903 break
903 break
904
904
905 # csize = self.fileSize - self.fp.tell()
905 # csize = self.fileSize - self.fp.tell()
906 # neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
906 # neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
907 # factor = int(csize/neededsize)
907 # factor = int(csize/neededsize)
908 # if factor > 0:
908 # if factor > 0:
909 # self.fp.seek(self.fp.tell() + factor*neededsize)
909 # self.fp.seek(self.fp.tell() + factor*neededsize)
910
910
911 self.flagIsNewFile = 0
911 self.flagIsNewFile = 0
912 self.__isFirstTimeOnline = 0
912 self.__isFirstTimeOnline = 0
913
913
914 def __setNewBlock(self):
914 def __setNewBlock(self):
915
915
916 if self.fp == None:
916 if self.fp == None:
917 return 0
917 return 0
918
918
919 if self.online:
919 if self.online:
920 self.__jumpToLastBlock()
920 self.__jumpToLastBlock()
921
921
922 if self.flagIsNewFile:
922 if self.flagIsNewFile:
923 return 1
923 return 1
924
924
925 self.lastUTTime = self.basicHeaderObj.utc
925 self.lastUTTime = self.basicHeaderObj.utc
926 currentSize = self.fileSize - self.fp.tell()
926 currentSize = self.fileSize - self.fp.tell()
927 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
927 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
928
928
929 if (currentSize >= neededSize):
929 if (currentSize >= neededSize):
930 self.basicHeaderObj.read(self.fp)
930 self.basicHeaderObj.read(self.fp)
931 return 1
931 return 1
932
932
933 if self.__waitNewBlock():
933 if self.__waitNewBlock():
934 return 1
934 return 1
935
935
936 if not(self.setNextFile()):
936 if not(self.setNextFile()):
937 return 0
937 return 0
938
938
939 deltaTime = self.basicHeaderObj.utc - self.lastUTTime #
939 deltaTime = self.basicHeaderObj.utc - self.lastUTTime #
940
940
941 self.flagDiscontinuousBlock = 0
941 self.flagDiscontinuousBlock = 0
942
942
943 if deltaTime > self.maxTimeStep:
943 if deltaTime > self.maxTimeStep:
944 self.flagDiscontinuousBlock = 1
944 self.flagDiscontinuousBlock = 1
945
945
946 return 1
946 return 1
947
947
948 def readNextBlock(self):
948 def readNextBlock(self):
949
949
950 if not(self.__setNewBlock()):
950 if not(self.__setNewBlock()):
951 return 0
951 return 0
952
952
953 if not(self.readBlock()):
953 if not(self.readBlock()):
954 return 0
954 return 0
955
955
956 self.getBasicHeader()
956 self.getBasicHeader()
957
957
958 print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks,
958 print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks,
959 self.processingHeaderObj.dataBlocksPerFile,
959 self.processingHeaderObj.dataBlocksPerFile,
960 self.dataOut.datatime.ctime())
960 self.dataOut.datatime.ctime())
961 return 1
961 return 1
962
962
963 def __readFirstHeader(self):
963 def __readFirstHeader(self):
964
964
965 self.basicHeaderObj.read(self.fp)
965 self.basicHeaderObj.read(self.fp)
966 self.systemHeaderObj.read(self.fp)
966 self.systemHeaderObj.read(self.fp)
967 self.radarControllerHeaderObj.read(self.fp)
967 self.radarControllerHeaderObj.read(self.fp)
968 self.processingHeaderObj.read(self.fp)
968 self.processingHeaderObj.read(self.fp)
969
969
970 self.firstHeaderSize = self.basicHeaderObj.size
970 self.firstHeaderSize = self.basicHeaderObj.size
971
971
972 datatype = int(numpy.log2((self.processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
972 datatype = int(numpy.log2((self.processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
973 if datatype == 0:
973 if datatype == 0:
974 datatype_str = numpy.dtype([('real','<i1'),('imag','<i1')])
974 datatype_str = numpy.dtype([('real','<i1'),('imag','<i1')])
975 elif datatype == 1:
975 elif datatype == 1:
976 datatype_str = numpy.dtype([('real','<i2'),('imag','<i2')])
976 datatype_str = numpy.dtype([('real','<i2'),('imag','<i2')])
977 elif datatype == 2:
977 elif datatype == 2:
978 datatype_str = numpy.dtype([('real','<i4'),('imag','<i4')])
978 datatype_str = numpy.dtype([('real','<i4'),('imag','<i4')])
979 elif datatype == 3:
979 elif datatype == 3:
980 datatype_str = numpy.dtype([('real','<i8'),('imag','<i8')])
980 datatype_str = numpy.dtype([('real','<i8'),('imag','<i8')])
981 elif datatype == 4:
981 elif datatype == 4:
982 datatype_str = numpy.dtype([('real','<f4'),('imag','<f4')])
982 datatype_str = numpy.dtype([('real','<f4'),('imag','<f4')])
983 elif datatype == 5:
983 elif datatype == 5:
984 datatype_str = numpy.dtype([('real','<f8'),('imag','<f8')])
984 datatype_str = numpy.dtype([('real','<f8'),('imag','<f8')])
985 else:
985 else:
986 raise ValueError, 'Data type was not defined'
986 raise ValueError, 'Data type was not defined'
987
987
988 self.dtype = datatype_str
988 self.dtype = datatype_str
989 #self.ippSeconds = 2 * 1000 * self.radarControllerHeaderObj.ipp / self.c
989 #self.ippSeconds = 2 * 1000 * self.radarControllerHeaderObj.ipp / self.c
990 self.fileSizeByHeader = self.processingHeaderObj.dataBlocksPerFile * self.processingHeaderObj.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.processingHeaderObj.dataBlocksPerFile - 1)
990 self.fileSizeByHeader = self.processingHeaderObj.dataBlocksPerFile * self.processingHeaderObj.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.processingHeaderObj.dataBlocksPerFile - 1)
991 # self.dataOut.channelList = numpy.arange(self.systemHeaderObj.numChannels)
991 # self.dataOut.channelList = numpy.arange(self.systemHeaderObj.numChannels)
992 # self.dataOut.channelIndexList = numpy.arange(self.systemHeaderObj.numChannels)
992 # self.dataOut.channelIndexList = numpy.arange(self.systemHeaderObj.numChannels)
993 self.getBlockDimension()
993 self.getBlockDimension()
994
994
995 def __verifyFile(self, filename, msgFlag=True):
995 def __verifyFile(self, filename, msgFlag=True):
996 msg = None
996 msg = None
997 try:
997 try:
998 fp = open(filename, 'rb')
998 fp = open(filename, 'rb')
999 currentPosition = fp.tell()
999 currentPosition = fp.tell()
1000 except IOError:
1000 except IOError:
1001 traceback.print_exc()
1001 traceback.print_exc()
1002 if msgFlag:
1002 if msgFlag:
1003 print "[Reading] The file %s can't be opened" % (filename)
1003 print "[Reading] The file %s can't be opened" % (filename)
1004 return False
1004 return False
1005
1005
1006 neededSize = self.processingHeaderObj.blockSize + self.firstHeaderSize
1006 neededSize = self.processingHeaderObj.blockSize + self.firstHeaderSize
1007
1007
1008 if neededSize == 0:
1008 if neededSize == 0:
1009 basicHeaderObj = BasicHeader(LOCALTIME)
1009 basicHeaderObj = BasicHeader(LOCALTIME)
1010 systemHeaderObj = SystemHeader()
1010 systemHeaderObj = SystemHeader()
1011 radarControllerHeaderObj = RadarControllerHeader()
1011 radarControllerHeaderObj = RadarControllerHeader()
1012 processingHeaderObj = ProcessingHeader()
1012 processingHeaderObj = ProcessingHeader()
1013
1013
1014 try:
1014 try:
1015 if not( basicHeaderObj.read(fp) ): raise IOError
1015 if not( basicHeaderObj.read(fp) ): raise IOError
1016 if not( systemHeaderObj.read(fp) ): raise IOError
1016 if not( systemHeaderObj.read(fp) ): raise IOError
1017 if not( radarControllerHeaderObj.read(fp) ): raise IOError
1017 if not( radarControllerHeaderObj.read(fp) ): raise IOError
1018 if not( processingHeaderObj.read(fp) ): raise IOError
1018 if not( processingHeaderObj.read(fp) ): raise IOError
1019 # data_type = int(numpy.log2((processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
1019 # data_type = int(numpy.log2((processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
1020
1020
1021 neededSize = processingHeaderObj.blockSize + basicHeaderObj.size
1021 neededSize = processingHeaderObj.blockSize + basicHeaderObj.size
1022
1022
1023 except IOError:
1023 except IOError:
1024 traceback.print_exc()
1024 traceback.print_exc()
1025 sys.exit(0)
1025 sys.exit(0)
1026
1026
1027 if msgFlag:
1027 if msgFlag:
1028 print "[Reading] The file %s is empty or it hasn't enough data" % filename
1028 print "[Reading] The file %s is empty or it hasn't enough data" % filename
1029
1029
1030 fp.close()
1030 fp.close()
1031 return False
1031 return False
1032 else:
1032 else:
1033 msg = "[Reading] Skipping the file %s due to it hasn't enough data" %filename
1033 msg = "[Reading] Skipping the file %s due to it hasn't enough data" %filename
1034
1034
1035 fp.close()
1035 fp.close()
1036 fileSize = os.path.getsize(filename)
1036 fileSize = os.path.getsize(filename)
1037 currentSize = fileSize - currentPosition
1037 currentSize = fileSize - currentPosition
1038 if currentSize < neededSize:
1038 if currentSize < neededSize:
1039 if msgFlag and (msg != None):
1039 if msgFlag and (msg != None):
1040 print msg #print"\tSkipping the file %s due to it hasn't enough data" %filename
1040 print msg #print"\tSkipping the file %s due to it hasn't enough data" %filename
1041 return False
1041 return False
1042
1042
1043 return True
1043 return True
1044
1044
1045 def findDatafiles(self, path, startDate=None, endDate=None, expLabel='', ext='.r', walk=True, include_path=False):
1045 def findDatafiles(self, path, startDate=None, endDate=None, expLabel='', ext='.r', walk=True, include_path=False):
1046
1046
1047 dateList = []
1047 dateList = []
1048 pathList = []
1048 pathList = []
1049
1049
1050 multi_path = path.split(',')
1050 multi_path = path.split(',')
1051
1051
1052 if not walk:
1052 if not walk:
1053
1053
1054 for single_path in multi_path:
1054 for single_path in multi_path:
1055
1055
1056 if not os.path.isdir(single_path):
1056 if not os.path.isdir(single_path):
1057 continue
1057 continue
1058
1058
1059 fileList = glob.glob1(single_path, "*"+ext)
1059 fileList = glob.glob1(single_path, "*"+ext)
1060
1060
1061 for thisFile in fileList:
1061 for thisFile in fileList:
1062
1062
1063 if not os.path.isfile(os.path.join(single_path, thisFile)):
1063 if not os.path.isfile(os.path.join(single_path, thisFile)):
1064 continue
1064 continue
1065
1065
1066 if not isRadarFile(thisFile):
1066 if not isRadarFile(thisFile):
1067 continue
1067 continue
1068
1068
1069 if not isFileInDateRange(thisFile, startDate, endDate):
1069 if not isFileInDateRange(thisFile, startDate, endDate):
1070 continue
1070 continue
1071
1071
1072 thisDate = getDateFromRadarFile(thisFile)
1072 thisDate = getDateFromRadarFile(thisFile)
1073
1073
1074 if thisDate in dateList:
1074 if thisDate in dateList:
1075 continue
1075 continue
1076
1076
1077 dateList.append(thisDate)
1077 dateList.append(thisDate)
1078 pathList.append(single_path)
1078 pathList.append(single_path)
1079
1079
1080 else:
1080 else:
1081 for single_path in multi_path:
1081 for single_path in multi_path:
1082
1082
1083 if not os.path.isdir(single_path):
1083 if not os.path.isdir(single_path):
1084 continue
1084 continue
1085
1085
1086 dirList = []
1086 dirList = []
1087
1087
1088 for thisPath in os.listdir(single_path):
1088 for thisPath in os.listdir(single_path):
1089
1089
1090 if not os.path.isdir(os.path.join(single_path,thisPath)):
1090 if not os.path.isdir(os.path.join(single_path,thisPath)):
1091 continue
1091 continue
1092
1092
1093 if not isRadarFolder(thisPath):
1093 if not isRadarFolder(thisPath):
1094 continue
1094 continue
1095
1095
1096 if not isFolderInDateRange(thisPath, startDate, endDate):
1096 if not isFolderInDateRange(thisPath, startDate, endDate):
1097 continue
1097 continue
1098
1098
1099 dirList.append(thisPath)
1099 dirList.append(thisPath)
1100
1100
1101 if not dirList:
1101 if not dirList:
1102 continue
1102 continue
1103
1103
1104 for thisDir in dirList:
1104 for thisDir in dirList:
1105
1105
1106 datapath = os.path.join(single_path, thisDir, expLabel)
1106 datapath = os.path.join(single_path, thisDir, expLabel)
1107 fileList = glob.glob1(datapath, "*"+ext)
1107 fileList = glob.glob1(datapath, "*"+ext)
1108
1108
1109 if len(fileList) < 1:
1109 if len(fileList) < 1:
1110 continue
1110 continue
1111
1111
1112 thisDate = getDateFromRadarFolder(thisDir)
1112 thisDate = getDateFromRadarFolder(thisDir)
1113
1113
1114 pathList.append(datapath)
1114 pathList.append(datapath)
1115 dateList.append(thisDate)
1115 dateList.append(thisDate)
1116
1116
1117 dateList.sort()
1117 dateList.sort()
1118
1118
1119 if include_path:
1119 if include_path:
1120 return dateList, pathList
1120 return dateList, pathList
1121
1121
1122 return dateList
1122 return dateList
1123
1123
1124 def setup(self,
1124 def setup(self,
1125 path=None,
1125 path=None,
1126 startDate=None,
1126 startDate=None,
1127 endDate=None,
1127 endDate=None,
1128 startTime=datetime.time(0,0,0),
1128 startTime=datetime.time(0,0,0),
1129 endTime=datetime.time(23,59,59),
1129 endTime=datetime.time(23,59,59),
1130 set=None,
1130 set=None,
1131 expLabel = "",
1131 expLabel = "",
1132 ext = None,
1132 ext = None,
1133 online = False,
1133 online = False,
1134 delay = 60,
1134 delay = 60,
1135 walk = True,
1135 walk = True,
1136 getblock = False,
1136 getblock = False,
1137 nTxs = 1):
1137 nTxs = 1):
1138
1138
1139 if path == None:
1139 if path == None:
1140 raise ValueError, "[Reading] The path is not valid"
1140 raise ValueError, "[Reading] The path is not valid"
1141
1141
1142 if ext == None:
1142 if ext == None:
1143 ext = self.ext
1143 ext = self.ext
1144
1144
1145 if online:
1145 if online:
1146 print "[Reading] Searching files in online mode..."
1146 print "[Reading] Searching files in online mode..."
1147
1147
1148 for nTries in range( self.nTries ):
1148 for nTries in range( self.nTries ):
1149 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set)
1149 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set)
1150
1150
1151 if fullpath:
1151 if fullpath:
1152 break
1152 break
1153
1153
1154 print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
1154 print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
1155 sleep( self.delay )
1155 sleep( self.delay )
1156
1156
1157 if not(fullpath):
1157 if not(fullpath):
1158 print "[Reading] There 'isn't any valid file in %s" % path
1158 print "[Reading] There 'isn't any valid file in %s" % path
1159 return None
1159 return None
1160
1160
1161 self.year = year
1161 self.year = year
1162 self.doy = doy
1162 self.doy = doy
1163 self.set = set - 1
1163 self.set = set - 1
1164 self.path = path
1164 self.path = path
1165 self.foldercounter = foldercounter
1165 self.foldercounter = foldercounter
1166 last_set = None
1166 last_set = None
1167
1167
1168 else:
1168 else:
1169 print "[Reading] Searching files in offline mode ..."
1169 print "[Reading] Searching files in offline mode ..."
1170 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
1170 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
1171 startTime=startTime, endTime=endTime,
1171 startTime=startTime, endTime=endTime,
1172 set=set, expLabel=expLabel, ext=ext,
1172 set=set, expLabel=expLabel, ext=ext,
1173 walk=walk)
1173 walk=walk)
1174
1174
1175 if not(pathList):
1175 if not(pathList):
1176 # print "[Reading] No *%s files in %s (%s - %s)"%(ext, path,
1176 # print "[Reading] No *%s files in %s (%s - %s)"%(ext, path,
1177 # datetime.datetime.combine(startDate,startTime).ctime(),
1177 # datetime.datetime.combine(startDate,startTime).ctime(),
1178 # datetime.datetime.combine(endDate,endTime).ctime())
1178 # datetime.datetime.combine(endDate,endTime).ctime())
1179 #
1179 #
1180 sys.exit(-1)
1180 sys.exit(-1)
1181
1181
1182
1182
1183 self.fileIndex = -1
1183 self.fileIndex = -1
1184 self.pathList = pathList
1184 self.pathList = pathList
1185 self.filenameList = filenameList
1185 self.filenameList = filenameList
1186 file_name = os.path.basename(filenameList[-1])
1186 file_name = os.path.basename(filenameList[-1])
1187 basename, ext = os.path.splitext(file_name)
1187 basename, ext = os.path.splitext(file_name)
1188 last_set = int(basename[-3:])
1188 last_set = int(basename[-3:])
1189
1189
1190 self.online = online
1190 self.online = online
1191 self.delay = delay
1191 self.delay = delay
1192 ext = ext.lower()
1192 ext = ext.lower()
1193 self.ext = ext
1193 self.ext = ext
1194 self.getByBlock = getblock
1194 self.getByBlock = getblock
1195 self.nTxs = int(nTxs)
1195 self.nTxs = int(nTxs)
1196
1196
1197 if not(self.setNextFile()):
1197 if not(self.setNextFile()):
1198 if (startDate!=None) and (endDate!=None):
1198 if (startDate!=None) and (endDate!=None):
1199 print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
1199 print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
1200 elif startDate != None:
1200 elif startDate != None:
1201 print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
1201 print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
1202 else:
1202 else:
1203 print "[Reading] No files"
1203 print "[Reading] No files"
1204
1204
1205 sys.exit(-1)
1205 sys.exit(-1)
1206
1206
1207 # self.getBasicHeader()
1207 # self.getBasicHeader()
1208
1208
1209 if last_set != None:
1209 if last_set != None:
1210 self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock
1210 self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock
1211 return
1211 return
1212
1212
1213 def getBasicHeader(self):
1213 def getBasicHeader(self):
1214
1214
1215 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000. + self.profileIndex * self.radarControllerHeaderObj.ippSeconds
1215 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000. + self.profileIndex * self.radarControllerHeaderObj.ippSeconds
1216
1216
1217 self.dataOut.flagDiscontinuousBlock = self.flagDiscontinuousBlock
1217 self.dataOut.flagDiscontinuousBlock = self.flagDiscontinuousBlock
1218
1218
1219 self.dataOut.timeZone = self.basicHeaderObj.timeZone
1219 self.dataOut.timeZone = self.basicHeaderObj.timeZone
1220
1220
1221 self.dataOut.dstFlag = self.basicHeaderObj.dstFlag
1221 self.dataOut.dstFlag = self.basicHeaderObj.dstFlag
1222
1222
1223 self.dataOut.errorCount = self.basicHeaderObj.errorCount
1223 self.dataOut.errorCount = self.basicHeaderObj.errorCount
1224
1224
1225 self.dataOut.useLocalTime = self.basicHeaderObj.useLocalTime
1225 self.dataOut.useLocalTime = self.basicHeaderObj.useLocalTime
1226
1226
1227 self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds/self.nTxs
1227 self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds/self.nTxs
1228
1228
1229 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs
1229 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs
1230
1230
1231
1231
1232 def getFirstHeader(self):
1232 def getFirstHeader(self):
1233
1233
1234 raise ValueError, "This method has not been implemented"
1234 raise ValueError, "This method has not been implemented"
1235
1235
1236 def getData(self):
1236 def getData(self):
1237
1237
1238 raise ValueError, "This method has not been implemented"
1238 raise ValueError, "This method has not been implemented"
1239
1239
1240 def hasNotDataInBuffer(self):
1240 def hasNotDataInBuffer(self):
1241
1241
1242 raise ValueError, "This method has not been implemented"
1242 raise ValueError, "This method has not been implemented"
1243
1243
1244 def readBlock(self):
1244 def readBlock(self):
1245
1245
1246 raise ValueError, "This method has not been implemented"
1246 raise ValueError, "This method has not been implemented"
1247
1247
1248 def isEndProcess(self):
1248 def isEndProcess(self):
1249
1249
1250 return self.flagNoMoreFiles
1250 return self.flagNoMoreFiles
1251
1251
1252 def printReadBlocks(self):
1252 def printReadBlocks(self):
1253
1253
1254 print "[Reading] Number of read blocks per file %04d" %self.nReadBlocks
1254 print "[Reading] Number of read blocks per file %04d" %self.nReadBlocks
1255
1255
1256 def printTotalBlocks(self):
1256 def printTotalBlocks(self):
1257
1257
1258 print "[Reading] Number of read blocks %04d" %self.nTotalBlocks
1258 print "[Reading] Number of read blocks %04d" %self.nTotalBlocks
1259
1259
1260 def printNumberOfBlock(self):
1260 def printNumberOfBlock(self):
1261
1261
1262 if self.flagIsNewBlock:
1262 if self.flagIsNewBlock:
1263 print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks,
1263 print "[Reading] Block No. %d/%d -> %s" %(self.nReadBlocks,
1264 self.processingHeaderObj.dataBlocksPerFile,
1264 self.processingHeaderObj.dataBlocksPerFile,
1265 self.dataOut.datatime.ctime())
1265 self.dataOut.datatime.ctime())
1266
1266
1267 def printInfo(self):
1267 def printInfo(self):
1268
1268
1269 if self.__printInfo == False:
1269 if self.__printInfo == False:
1270 return
1270 return
1271
1271
1272 self.basicHeaderObj.printInfo()
1272 self.basicHeaderObj.printInfo()
1273 self.systemHeaderObj.printInfo()
1273 self.systemHeaderObj.printInfo()
1274 self.radarControllerHeaderObj.printInfo()
1274 self.radarControllerHeaderObj.printInfo()
1275 self.processingHeaderObj.printInfo()
1275 self.processingHeaderObj.printInfo()
1276
1276
1277 self.__printInfo = False
1277 self.__printInfo = False
1278
1278
1279
1279
1280 def run(self, **kwargs):
1280 def run(self, **kwargs):
1281
1281
1282 if not(self.isConfig):
1282 if not(self.isConfig):
1283
1283
1284 # self.dataOut = dataOut
1284 # self.dataOut = dataOut
1285 self.setup(**kwargs)
1285 self.setup(**kwargs)
1286 self.isConfig = True
1286 self.isConfig = True
1287
1287
1288 self.getData()
1288 self.getData()
1289
1289
1290 class JRODataWriter(JRODataIO):
1290 class JRODataWriter(JRODataIO):
1291
1291
1292 """
1292 """
1293 Esta clase permite escribir datos a archivos procesados (.r o ,pdata). La escritura
1293 Esta clase permite escribir datos a archivos procesados (.r o ,pdata). La escritura
1294 de los datos siempre se realiza por bloques.
1294 de los datos siempre se realiza por bloques.
1295 """
1295 """
1296
1296
1297 blockIndex = 0
1297 blockIndex = 0
1298
1298
1299 path = None
1299 path = None
1300
1300
1301 setFile = None
1301 setFile = None
1302
1302
1303 profilesPerBlock = None
1303 profilesPerBlock = None
1304
1304
1305 blocksPerFile = None
1305 blocksPerFile = None
1306
1306
1307 nWriteBlocks = 0
1307 nWriteBlocks = 0
1308
1308
1309 fileDate = None
1309 fileDate = None
1310
1310
1311 def __init__(self, dataOut=None):
1311 def __init__(self, dataOut=None):
1312 raise ValueError, "Not implemented"
1312 raise ValueError, "Not implemented"
1313
1313
1314
1314
1315 def hasAllDataInBuffer(self):
1315 def hasAllDataInBuffer(self):
1316 raise ValueError, "Not implemented"
1316 raise ValueError, "Not implemented"
1317
1317
1318
1318
1319 def setBlockDimension(self):
1319 def setBlockDimension(self):
1320 raise ValueError, "Not implemented"
1320 raise ValueError, "Not implemented"
1321
1321
1322
1322
1323 def writeBlock(self):
1323 def writeBlock(self):
1324 raise ValueError, "No implemented"
1324 raise ValueError, "No implemented"
1325
1325
1326
1326
1327 def putData(self):
1327 def putData(self):
1328 raise ValueError, "No implemented"
1328 raise ValueError, "No implemented"
1329
1329
1330
1330
1331 def getProcessFlags(self):
1331 def getProcessFlags(self):
1332
1332
1333 processFlags = 0
1333 processFlags = 0
1334
1334
1335 dtype_index = get_dtype_index(self.dtype)
1335 dtype_index = get_dtype_index(self.dtype)
1336 procflag_dtype = get_procflag_dtype(dtype_index)
1336 procflag_dtype = get_procflag_dtype(dtype_index)
1337
1337
1338 processFlags += procflag_dtype
1338 processFlags += procflag_dtype
1339
1339
1340 if self.dataOut.flagDecodeData:
1340 if self.dataOut.flagDecodeData:
1341 processFlags += PROCFLAG.DECODE_DATA
1341 processFlags += PROCFLAG.DECODE_DATA
1342
1342
1343 if self.dataOut.flagDeflipData:
1343 if self.dataOut.flagDeflipData:
1344 processFlags += PROCFLAG.DEFLIP_DATA
1344 processFlags += PROCFLAG.DEFLIP_DATA
1345
1345
1346 if self.dataOut.code is not None:
1346 if self.dataOut.code is not None:
1347 processFlags += PROCFLAG.DEFINE_PROCESS_CODE
1347 processFlags += PROCFLAG.DEFINE_PROCESS_CODE
1348
1348
1349 if self.dataOut.nCohInt > 1:
1349 if self.dataOut.nCohInt > 1:
1350 processFlags += PROCFLAG.COHERENT_INTEGRATION
1350 processFlags += PROCFLAG.COHERENT_INTEGRATION
1351
1351
1352 if self.dataOut.type == "Spectra":
1352 if self.dataOut.type == "Spectra":
1353 if self.dataOut.nIncohInt > 1:
1353 if self.dataOut.nIncohInt > 1:
1354 processFlags += PROCFLAG.INCOHERENT_INTEGRATION
1354 processFlags += PROCFLAG.INCOHERENT_INTEGRATION
1355
1355
1356 if self.dataOut.data_dc is not None:
1356 if self.dataOut.data_dc is not None:
1357 processFlags += PROCFLAG.SAVE_CHANNELS_DC
1357 processFlags += PROCFLAG.SAVE_CHANNELS_DC
1358
1358
1359 if self.dataOut.flagShiftFFT:
1359 if self.dataOut.flagShiftFFT:
1360 processFlags += PROCFLAG.SHIFT_FFT_DATA
1360 processFlags += PROCFLAG.SHIFT_FFT_DATA
1361
1361
1362 return processFlags
1362 return processFlags
1363
1363
1364 def setBasicHeader(self):
1364 def setBasicHeader(self):
1365
1365
1366 self.basicHeaderObj.size = self.basicHeaderSize #bytes
1366 self.basicHeaderObj.size = self.basicHeaderSize #bytes
1367 self.basicHeaderObj.version = self.versionFile
1367 self.basicHeaderObj.version = self.versionFile
1368 self.basicHeaderObj.dataBlock = self.nTotalBlocks
1368 self.basicHeaderObj.dataBlock = self.nTotalBlocks
1369
1369
1370 utc = numpy.floor(self.dataOut.utctime)
1370 utc = numpy.floor(self.dataOut.utctime)
1371 milisecond = (self.dataOut.utctime - utc)* 1000.0
1371 milisecond = (self.dataOut.utctime - utc)* 1000.0
1372
1372
1373 self.basicHeaderObj.utc = utc
1373 self.basicHeaderObj.utc = utc
1374 self.basicHeaderObj.miliSecond = milisecond
1374 self.basicHeaderObj.miliSecond = milisecond
1375 self.basicHeaderObj.timeZone = self.dataOut.timeZone
1375 self.basicHeaderObj.timeZone = self.dataOut.timeZone
1376 self.basicHeaderObj.dstFlag = self.dataOut.dstFlag
1376 self.basicHeaderObj.dstFlag = self.dataOut.dstFlag
1377 self.basicHeaderObj.errorCount = self.dataOut.errorCount
1377 self.basicHeaderObj.errorCount = self.dataOut.errorCount
1378
1378
1379 def setFirstHeader(self):
1379 def setFirstHeader(self):
1380 """
1380 """
1381 Obtiene una copia del First Header
1381 Obtiene una copia del First Header
1382
1382
1383 Affected:
1383 Affected:
1384
1384
1385 self.basicHeaderObj
1385 self.basicHeaderObj
1386 self.systemHeaderObj
1386 self.systemHeaderObj
1387 self.radarControllerHeaderObj
1387 self.radarControllerHeaderObj
1388 self.processingHeaderObj self.
1388 self.processingHeaderObj self.
1389
1389
1390 Return:
1390 Return:
1391 None
1391 None
1392 """
1392 """
1393
1393
1394 raise ValueError, "No implemented"
1394 raise ValueError, "No implemented"
1395
1395
1396 def __writeFirstHeader(self):
1396 def __writeFirstHeader(self):
1397 """
1397 """
1398 Escribe el primer header del file es decir el Basic header y el Long header (SystemHeader, RadarControllerHeader, ProcessingHeader)
1398 Escribe el primer header del file es decir el Basic header y el Long header (SystemHeader, RadarControllerHeader, ProcessingHeader)
1399
1399
1400 Affected:
1400 Affected:
1401 __dataType
1401 __dataType
1402
1402
1403 Return:
1403 Return:
1404 None
1404 None
1405 """
1405 """
1406
1406
1407 # CALCULAR PARAMETROS
1407 # CALCULAR PARAMETROS
1408
1408
1409 sizeLongHeader = self.systemHeaderObj.size + self.radarControllerHeaderObj.size + self.processingHeaderObj.size
1409 sizeLongHeader = self.systemHeaderObj.size + self.radarControllerHeaderObj.size + self.processingHeaderObj.size
1410 self.basicHeaderObj.size = self.basicHeaderSize + sizeLongHeader
1410 self.basicHeaderObj.size = self.basicHeaderSize + sizeLongHeader
1411
1411
1412 self.basicHeaderObj.write(self.fp)
1412 self.basicHeaderObj.write(self.fp)
1413 self.systemHeaderObj.write(self.fp)
1413 self.systemHeaderObj.write(self.fp)
1414 self.radarControllerHeaderObj.write(self.fp)
1414 self.radarControllerHeaderObj.write(self.fp)
1415 self.processingHeaderObj.write(self.fp)
1415 self.processingHeaderObj.write(self.fp)
1416
1416
1417 def __setNewBlock(self):
1417 def __setNewBlock(self):
1418 """
1418 """
1419 Si es un nuevo file escribe el First Header caso contrario escribe solo el Basic Header
1419 Si es un nuevo file escribe el First Header caso contrario escribe solo el Basic Header
1420
1420
1421 Return:
1421 Return:
1422 0 : si no pudo escribir nada
1422 0 : si no pudo escribir nada
1423 1 : Si escribio el Basic el First Header
1423 1 : Si escribio el Basic el First Header
1424 """
1424 """
1425 if self.fp == None:
1425 if self.fp == None:
1426 self.setNextFile()
1426 self.setNextFile()
1427
1427
1428 if self.flagIsNewFile:
1428 if self.flagIsNewFile:
1429 return 1
1429 return 1
1430
1430
1431 if self.blockIndex < self.processingHeaderObj.dataBlocksPerFile:
1431 if self.blockIndex < self.processingHeaderObj.dataBlocksPerFile:
1432 self.basicHeaderObj.write(self.fp)
1432 self.basicHeaderObj.write(self.fp)
1433 return 1
1433 return 1
1434
1434
1435 if not( self.setNextFile() ):
1435 if not( self.setNextFile() ):
1436 return 0
1436 return 0
1437
1437
1438 return 1
1438 return 1
1439
1439
1440
1440
1441 def writeNextBlock(self):
1441 def writeNextBlock(self):
1442 """
1442 """
1443 Selecciona el bloque siguiente de datos y los escribe en un file
1443 Selecciona el bloque siguiente de datos y los escribe en un file
1444
1444
1445 Return:
1445 Return:
1446 0 : Si no hizo pudo escribir el bloque de datos
1446 0 : Si no hizo pudo escribir el bloque de datos
1447 1 : Si no pudo escribir el bloque de datos
1447 1 : Si no pudo escribir el bloque de datos
1448 """
1448 """
1449 if not( self.__setNewBlock() ):
1449 if not( self.__setNewBlock() ):
1450 return 0
1450 return 0
1451
1451
1452 self.writeBlock()
1452 self.writeBlock()
1453
1453
1454 print "[Writing] Block No. %d/%d" %(self.blockIndex,
1454 print "[Writing] Block No. %d/%d" %(self.blockIndex,
1455 self.processingHeaderObj.dataBlocksPerFile)
1455 self.processingHeaderObj.dataBlocksPerFile)
1456
1456
1457 return 1
1457 return 1
1458
1458
1459 def setNextFile(self):
1459 def setNextFile(self):
1460 """
1460 """
1461 Determina el siguiente file que sera escrito
1461 Determina el siguiente file que sera escrito
1462
1462
1463 Affected:
1463 Affected:
1464 self.filename
1464 self.filename
1465 self.subfolder
1465 self.subfolder
1466 self.fp
1466 self.fp
1467 self.setFile
1467 self.setFile
1468 self.flagIsNewFile
1468 self.flagIsNewFile
1469
1469
1470 Return:
1470 Return:
1471 0 : Si el archivo no puede ser escrito
1471 0 : Si el archivo no puede ser escrito
1472 1 : Si el archivo esta listo para ser escrito
1472 1 : Si el archivo esta listo para ser escrito
1473 """
1473 """
1474 ext = self.ext
1474 ext = self.ext
1475 path = self.path
1475 path = self.path
1476
1476
1477 if self.fp != None:
1477 if self.fp != None:
1478 self.fp.close()
1478 self.fp.close()
1479
1479
1480 timeTuple = time.localtime( self.dataOut.utctime)
1480 timeTuple = time.localtime( self.dataOut.utctime)
1481 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
1481 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
1482
1482
1483 fullpath = os.path.join( path, subfolder )
1483 fullpath = os.path.join( path, subfolder )
1484 setFile = self.setFile
1484 setFile = self.setFile
1485
1485
1486 if not( os.path.exists(fullpath) ):
1486 if not( os.path.exists(fullpath) ):
1487 os.mkdir(fullpath)
1487 os.mkdir(fullpath)
1488 setFile = -1 #inicializo mi contador de seteo
1488 setFile = -1 #inicializo mi contador de seteo
1489 else:
1489 else:
1490 filesList = os.listdir( fullpath )
1490 filesList = os.listdir( fullpath )
1491 if len( filesList ) > 0:
1491 if len( filesList ) > 0:
1492 filesList = sorted( filesList, key=str.lower )
1492 filesList = sorted( filesList, key=str.lower )
1493 filen = filesList[-1]
1493 filen = filesList[-1]
1494 # el filename debera tener el siguiente formato
1494 # el filename debera tener el siguiente formato
1495 # 0 1234 567 89A BCDE (hex)
1495 # 0 1234 567 89A BCDE (hex)
1496 # x YYYY DDD SSS .ext
1496 # x YYYY DDD SSS .ext
1497 if isNumber( filen[8:11] ):
1497 if isNumber( filen[8:11] ):
1498 setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
1498 setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
1499 else:
1499 else:
1500 setFile = -1
1500 setFile = -1
1501 else:
1501 else:
1502 setFile = -1 #inicializo mi contador de seteo
1502 setFile = -1 #inicializo mi contador de seteo
1503
1503
1504 setFile += 1
1504 setFile += 1
1505
1505
1506 #If this is a new day it resets some values
1506 #If this is a new day it resets some values
1507 if self.dataOut.datatime.date() > self.fileDate:
1507 if self.dataOut.datatime.date() > self.fileDate:
1508 setFile = 0
1508 setFile = 0
1509 self.nTotalBlocks = 0
1509 self.nTotalBlocks = 0
1510
1510
1511 filen = '%s%4.4d%3.3d%3.3d%s' % (self.optchar, timeTuple.tm_year, timeTuple.tm_yday, setFile, ext )
1511 filen = '%s%4.4d%3.3d%3.3d%s' % (self.optchar, timeTuple.tm_year, timeTuple.tm_yday, setFile, ext )
1512
1512
1513 filename = os.path.join( path, subfolder, filen )
1513 filename = os.path.join( path, subfolder, filen )
1514
1514
1515 fp = open( filename,'wb' )
1515 fp = open( filename,'wb' )
1516
1516
1517 self.blockIndex = 0
1517 self.blockIndex = 0
1518
1518
1519 #guardando atributos
1519 #guardando atributos
1520 self.filename = filename
1520 self.filename = filename
1521 self.subfolder = subfolder
1521 self.subfolder = subfolder
1522 self.fp = fp
1522 self.fp = fp
1523 self.setFile = setFile
1523 self.setFile = setFile
1524 self.flagIsNewFile = 1
1524 self.flagIsNewFile = 1
1525 self.fileDate = self.dataOut.datatime.date()
1525 self.fileDate = self.dataOut.datatime.date()
1526
1526
1527 self.setFirstHeader()
1527 self.setFirstHeader()
1528
1528
1529 print '[Writing] Opening file: %s'%self.filename
1529 print '[Writing] Opening file: %s'%self.filename
1530
1530
1531 self.__writeFirstHeader()
1531 self.__writeFirstHeader()
1532
1532
1533 return 1
1533 return 1
1534
1534
1535 def setup(self, dataOut, path, blocksPerFile, profilesPerBlock=64, set=None, ext=None, datatype=4):
1535 def setup(self, dataOut, path, blocksPerFile, profilesPerBlock=64, set=None, ext=None, datatype=4):
1536 """
1536 """
1537 Setea el tipo de formato en la cual sera guardada la data y escribe el First Header
1537 Setea el tipo de formato en la cual sera guardada la data y escribe el First Header
1538
1538
1539 Inputs:
1539 Inputs:
1540 path : directory where data will be saved
1540 path : directory where data will be saved
1541 profilesPerBlock : number of profiles per block
1541 profilesPerBlock : number of profiles per block
1542 set : initial file set
1542 set : initial file set
1543 datatype : An integer number that defines data type:
1543 datatype : An integer number that defines data type:
1544 0 : int8 (1 byte)
1544 0 : int8 (1 byte)
1545 1 : int16 (2 bytes)
1545 1 : int16 (2 bytes)
1546 2 : int32 (4 bytes)
1546 2 : int32 (4 bytes)
1547 3 : int64 (8 bytes)
1547 3 : int64 (8 bytes)
1548 4 : float32 (4 bytes)
1548 4 : float32 (4 bytes)
1549 5 : double64 (8 bytes)
1549 5 : double64 (8 bytes)
1550
1550
1551 Return:
1551 Return:
1552 0 : Si no realizo un buen seteo
1552 0 : Si no realizo un buen seteo
1553 1 : Si realizo un buen seteo
1553 1 : Si realizo un buen seteo
1554 """
1554 """
1555
1555
1556 if ext == None:
1556 if ext == None:
1557 ext = self.ext
1557 ext = self.ext
1558
1558
1559 self.ext = ext.lower()
1559 self.ext = ext.lower()
1560
1560
1561 self.path = path
1561 self.path = path
1562
1562
1563 if set is None:
1563 if set is None:
1564 self.setFile = -1
1564 self.setFile = -1
1565 else:
1565 else:
1566 self.setFile = set - 1
1566 self.setFile = set - 1
1567
1567
1568 self.blocksPerFile = blocksPerFile
1568 self.blocksPerFile = blocksPerFile
1569
1569
1570 self.profilesPerBlock = profilesPerBlock
1570 self.profilesPerBlock = profilesPerBlock
1571
1571
1572 self.dataOut = dataOut
1572 self.dataOut = dataOut
1573 self.fileDate = self.dataOut.datatime.date()
1573 self.fileDate = self.dataOut.datatime.date()
1574 #By default
1574 #By default
1575 self.dtype = self.dataOut.dtype
1575 self.dtype = self.dataOut.dtype
1576
1576
1577 if datatype is not None:
1577 if datatype is not None:
1578 self.dtype = get_numpy_dtype(datatype)
1578 self.dtype = get_numpy_dtype(datatype)
1579
1579
1580 if not(self.setNextFile()):
1580 if not(self.setNextFile()):
1581 print "[Writing] There isn't a next file"
1581 print "[Writing] There isn't a next file"
1582 return 0
1582 return 0
1583
1583
1584 self.setBlockDimension()
1584 self.setBlockDimension()
1585
1585
1586 return 1
1586 return 1
1587
1587
1588 def run(self, dataOut, **kwargs):
1588 def run(self, dataOut, **kwargs):
1589
1589
1590 if not(self.isConfig):
1590 if not(self.isConfig):
1591
1591
1592 self.setup(dataOut, **kwargs)
1592 self.setup(dataOut, **kwargs)
1593 self.isConfig = True
1593 self.isConfig = True
1594
1594
1595 self.putData()
1595 self.putData()
1596
1596
@@ -1,1065 +1,1069
1 import numpy
1 import numpy
2
2
3 from jroproc_base import ProcessingUnit, Operation
3 from jroproc_base import ProcessingUnit, Operation
4 from schainpy.model.data.jrodata import Voltage
4 from schainpy.model.data.jrodata import Voltage
5
5
6 class VoltageProc(ProcessingUnit):
6 class VoltageProc(ProcessingUnit):
7
7
8
8
9 def __init__(self):
9 def __init__(self):
10
10
11 ProcessingUnit.__init__(self)
11 ProcessingUnit.__init__(self)
12
12
13 # self.objectDict = {}
13 # self.objectDict = {}
14 self.dataOut = Voltage()
14 self.dataOut = Voltage()
15 self.flip = 1
15 self.flip = 1
16
16
17 def run(self):
17 def run(self):
18 if self.dataIn.type == 'AMISR':
18 if self.dataIn.type == 'AMISR':
19 self.__updateObjFromAmisrInput()
19 self.__updateObjFromAmisrInput()
20
20
21 if self.dataIn.type == 'Voltage':
21 if self.dataIn.type == 'Voltage':
22 self.dataOut.copy(self.dataIn)
22 self.dataOut.copy(self.dataIn)
23
23
24 # self.dataOut.copy(self.dataIn)
24 # self.dataOut.copy(self.dataIn)
25
25
26 def __updateObjFromAmisrInput(self):
26 def __updateObjFromAmisrInput(self):
27
27
28 self.dataOut.timeZone = self.dataIn.timeZone
28 self.dataOut.timeZone = self.dataIn.timeZone
29 self.dataOut.dstFlag = self.dataIn.dstFlag
29 self.dataOut.dstFlag = self.dataIn.dstFlag
30 self.dataOut.errorCount = self.dataIn.errorCount
30 self.dataOut.errorCount = self.dataIn.errorCount
31 self.dataOut.useLocalTime = self.dataIn.useLocalTime
31 self.dataOut.useLocalTime = self.dataIn.useLocalTime
32
32
33 self.dataOut.flagNoData = self.dataIn.flagNoData
33 self.dataOut.flagNoData = self.dataIn.flagNoData
34 self.dataOut.data = self.dataIn.data
34 self.dataOut.data = self.dataIn.data
35 self.dataOut.utctime = self.dataIn.utctime
35 self.dataOut.utctime = self.dataIn.utctime
36 self.dataOut.channelList = self.dataIn.channelList
36 self.dataOut.channelList = self.dataIn.channelList
37 # self.dataOut.timeInterval = self.dataIn.timeInterval
37 # self.dataOut.timeInterval = self.dataIn.timeInterval
38 self.dataOut.heightList = self.dataIn.heightList
38 self.dataOut.heightList = self.dataIn.heightList
39 self.dataOut.nProfiles = self.dataIn.nProfiles
39 self.dataOut.nProfiles = self.dataIn.nProfiles
40
40
41 self.dataOut.nCohInt = self.dataIn.nCohInt
41 self.dataOut.nCohInt = self.dataIn.nCohInt
42 self.dataOut.ippSeconds = self.dataIn.ippSeconds
42 self.dataOut.ippSeconds = self.dataIn.ippSeconds
43 self.dataOut.frequency = self.dataIn.frequency
43 self.dataOut.frequency = self.dataIn.frequency
44
44
45 self.dataOut.azimuth = self.dataIn.azimuth
45 self.dataOut.azimuth = self.dataIn.azimuth
46 self.dataOut.zenith = self.dataIn.zenith
46 self.dataOut.zenith = self.dataIn.zenith
47
47
48 self.dataOut.beam.codeList = self.dataIn.beam.codeList
48 self.dataOut.beam.codeList = self.dataIn.beam.codeList
49 self.dataOut.beam.azimuthList = self.dataIn.beam.azimuthList
49 self.dataOut.beam.azimuthList = self.dataIn.beam.azimuthList
50 self.dataOut.beam.zenithList = self.dataIn.beam.zenithList
50 self.dataOut.beam.zenithList = self.dataIn.beam.zenithList
51 #
51 #
52 # pass#
52 # pass#
53 #
53 #
54 # def init(self):
54 # def init(self):
55 #
55 #
56 #
56 #
57 # if self.dataIn.type == 'AMISR':
57 # if self.dataIn.type == 'AMISR':
58 # self.__updateObjFromAmisrInput()
58 # self.__updateObjFromAmisrInput()
59 #
59 #
60 # if self.dataIn.type == 'Voltage':
60 # if self.dataIn.type == 'Voltage':
61 # self.dataOut.copy(self.dataIn)
61 # self.dataOut.copy(self.dataIn)
62 # # No necesita copiar en cada init() los atributos de dataIn
62 # # No necesita copiar en cada init() los atributos de dataIn
63 # # la copia deberia hacerse por cada nuevo bloque de datos
63 # # la copia deberia hacerse por cada nuevo bloque de datos
64
64
65 def selectChannels(self, channelList):
65 def selectChannels(self, channelList):
66
66
67 channelIndexList = []
67 channelIndexList = []
68
68
69 for channel in channelList:
69 for channel in channelList:
70 if channel not in self.dataOut.channelList:
70 if channel not in self.dataOut.channelList:
71 raise ValueError, "Channel %d is not in %s" %(channel, str(self.dataOut.channelList))
71 raise ValueError, "Channel %d is not in %s" %(channel, str(self.dataOut.channelList))
72
72
73 index = self.dataOut.channelList.index(channel)
73 index = self.dataOut.channelList.index(channel)
74 channelIndexList.append(index)
74 channelIndexList.append(index)
75
75
76 self.selectChannelsByIndex(channelIndexList)
76 self.selectChannelsByIndex(channelIndexList)
77
77
78 def selectChannelsByIndex(self, channelIndexList):
78 def selectChannelsByIndex(self, channelIndexList):
79 """
79 """
80 Selecciona un bloque de datos en base a canales segun el channelIndexList
80 Selecciona un bloque de datos en base a canales segun el channelIndexList
81
81
82 Input:
82 Input:
83 channelIndexList : lista sencilla de canales a seleccionar por ej. [2,3,7]
83 channelIndexList : lista sencilla de canales a seleccionar por ej. [2,3,7]
84
84
85 Affected:
85 Affected:
86 self.dataOut.data
86 self.dataOut.data
87 self.dataOut.channelIndexList
87 self.dataOut.channelIndexList
88 self.dataOut.nChannels
88 self.dataOut.nChannels
89 self.dataOut.m_ProcessingHeader.totalSpectra
89 self.dataOut.m_ProcessingHeader.totalSpectra
90 self.dataOut.systemHeaderObj.numChannels
90 self.dataOut.systemHeaderObj.numChannels
91 self.dataOut.m_ProcessingHeader.blockSize
91 self.dataOut.m_ProcessingHeader.blockSize
92
92
93 Return:
93 Return:
94 None
94 None
95 """
95 """
96
96
97 for channelIndex in channelIndexList:
97 for channelIndex in channelIndexList:
98 if channelIndex not in self.dataOut.channelIndexList:
98 if channelIndex not in self.dataOut.channelIndexList:
99 print channelIndexList
99 print channelIndexList
100 raise ValueError, "The value %d in channelIndexList is not valid" %channelIndex
100 raise ValueError, "The value %d in channelIndexList is not valid" %channelIndex
101
101
102 # nChannels = len(channelIndexList)
102 # nChannels = len(channelIndexList)
103 if self.dataOut.flagDataAsBlock:
103 if self.dataOut.flagDataAsBlock:
104 """
104 """
105 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
105 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
106 """
106 """
107 data = self.dataOut.data[channelIndexList,:,:]
107 data = self.dataOut.data[channelIndexList,:,:]
108 else:
108 else:
109 data = self.dataOut.data[channelIndexList,:]
109 data = self.dataOut.data[channelIndexList,:]
110
110
111 self.dataOut.data = data
111 self.dataOut.data = data
112 self.dataOut.channelList = [self.dataOut.channelList[i] for i in channelIndexList]
112 self.dataOut.channelList = [self.dataOut.channelList[i] for i in channelIndexList]
113 # self.dataOut.nChannels = nChannels
113 # self.dataOut.nChannels = nChannels
114
114
115 return 1
115 return 1
116
116
117 def selectHeights(self, minHei=None, maxHei=None):
117 def selectHeights(self, minHei=None, maxHei=None):
118 """
118 """
119 Selecciona un bloque de datos en base a un grupo de valores de alturas segun el rango
119 Selecciona un bloque de datos en base a un grupo de valores de alturas segun el rango
120 minHei <= height <= maxHei
120 minHei <= height <= maxHei
121
121
122 Input:
122 Input:
123 minHei : valor minimo de altura a considerar
123 minHei : valor minimo de altura a considerar
124 maxHei : valor maximo de altura a considerar
124 maxHei : valor maximo de altura a considerar
125
125
126 Affected:
126 Affected:
127 Indirectamente son cambiados varios valores a travez del metodo selectHeightsByIndex
127 Indirectamente son cambiados varios valores a travez del metodo selectHeightsByIndex
128
128
129 Return:
129 Return:
130 1 si el metodo se ejecuto con exito caso contrario devuelve 0
130 1 si el metodo se ejecuto con exito caso contrario devuelve 0
131 """
131 """
132
132
133 if minHei == None:
133 if minHei == None:
134 minHei = self.dataOut.heightList[0]
134 minHei = self.dataOut.heightList[0]
135
135
136 if maxHei == None:
136 if maxHei == None:
137 maxHei = self.dataOut.heightList[-1]
137 maxHei = self.dataOut.heightList[-1]
138
138
139 if (minHei < self.dataOut.heightList[0]):
139 if (minHei < self.dataOut.heightList[0]):
140 minHei = self.dataOut.heightList[0]
140 minHei = self.dataOut.heightList[0]
141 # raise ValueError, "height range [%d,%d] is not valid. Data height range is [%d, %d]" % (minHei,
141 # raise ValueError, "height range [%d,%d] is not valid. Data height range is [%d, %d]" % (minHei,
142 # maxHei,
142 # maxHei,
143 # self.dataOut.heightList[0],
143 # self.dataOut.heightList[0],
144 # self.dataOut.heightList[-1])
144 # self.dataOut.heightList[-1])
145
145
146 if (maxHei > self.dataOut.heightList[-1]):
146 if (maxHei > self.dataOut.heightList[-1]):
147 maxHei = self.dataOut.heightList[-1]
147 maxHei = self.dataOut.heightList[-1]
148 # raise ValueError, "some value in (%d,%d) is not valid" % (minHei, maxHei)
148 # raise ValueError, "some value in (%d,%d) is not valid" % (minHei, maxHei)
149
149
150 minIndex = 0
150 minIndex = 0
151 maxIndex = 0
151 maxIndex = 0
152 heights = self.dataOut.heightList
152 heights = self.dataOut.heightList
153
153
154 inda = numpy.where(heights >= minHei)
154 inda = numpy.where(heights >= minHei)
155 indb = numpy.where(heights <= maxHei)
155 indb = numpy.where(heights <= maxHei)
156
156
157 try:
157 try:
158 minIndex = inda[0][0]
158 minIndex = inda[0][0]
159 except:
159 except:
160 minIndex = 0
160 minIndex = 0
161
161
162 try:
162 try:
163 maxIndex = indb[0][-1]
163 maxIndex = indb[0][-1]
164 except:
164 except:
165 maxIndex = len(heights)
165 maxIndex = len(heights)
166
166
167 self.selectHeightsByIndex(minIndex, maxIndex)
167 self.selectHeightsByIndex(minIndex, maxIndex)
168
168
169 return 1
169 return 1
170
170
171
171
172 def selectHeightsByIndex(self, minIndex, maxIndex):
172 def selectHeightsByIndex(self, minIndex, maxIndex):
173 """
173 """
174 Selecciona un bloque de datos en base a un grupo indices de alturas segun el rango
174 Selecciona un bloque de datos en base a un grupo indices de alturas segun el rango
175 minIndex <= index <= maxIndex
175 minIndex <= index <= maxIndex
176
176
177 Input:
177 Input:
178 minIndex : valor de indice minimo de altura a considerar
178 minIndex : valor de indice minimo de altura a considerar
179 maxIndex : valor de indice maximo de altura a considerar
179 maxIndex : valor de indice maximo de altura a considerar
180
180
181 Affected:
181 Affected:
182 self.dataOut.data
182 self.dataOut.data
183 self.dataOut.heightList
183 self.dataOut.heightList
184
184
185 Return:
185 Return:
186 1 si el metodo se ejecuto con exito caso contrario devuelve 0
186 1 si el metodo se ejecuto con exito caso contrario devuelve 0
187 """
187 """
188
188
189 if (minIndex < 0) or (minIndex > maxIndex):
189 if (minIndex < 0) or (minIndex > maxIndex):
190 raise ValueError, "some value in (%d,%d) is not valid" % (minIndex, maxIndex)
190 raise ValueError, "some value in (%d,%d) is not valid" % (minIndex, maxIndex)
191
191
192 if (maxIndex >= self.dataOut.nHeights):
192 if (maxIndex >= self.dataOut.nHeights):
193 maxIndex = self.dataOut.nHeights
193 maxIndex = self.dataOut.nHeights
194 # raise ValueError, "some value in (%d,%d) is not valid" % (minIndex, maxIndex)
194 # raise ValueError, "some value in (%d,%d) is not valid" % (minIndex, maxIndex)
195
195
196 # nHeights = maxIndex - minIndex + 1
196 # nHeights = maxIndex - minIndex + 1
197
197
198 #voltage
198 #voltage
199 if self.dataOut.flagDataAsBlock:
199 if self.dataOut.flagDataAsBlock:
200 """
200 """
201 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
201 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
202 """
202 """
203 data = self.dataOut.data[:,minIndex:maxIndex,:]
203 data = self.dataOut.data[:,minIndex:maxIndex,:]
204 else:
204 else:
205 data = self.dataOut.data[:,minIndex:maxIndex]
205 data = self.dataOut.data[:,minIndex:maxIndex]
206
206
207 # firstHeight = self.dataOut.heightList[minIndex]
207 # firstHeight = self.dataOut.heightList[minIndex]
208
208
209 self.dataOut.data = data
209 self.dataOut.data = data
210 self.dataOut.heightList = self.dataOut.heightList[minIndex:maxIndex]
210 self.dataOut.heightList = self.dataOut.heightList[minIndex:maxIndex]
211
211
212 if self.dataOut.nHeights <= 1:
212 if self.dataOut.nHeights <= 1:
213 raise ValueError, "selectHeights: Too few heights. Current number of heights is %d" %(self.dataOut.nHeights)
213 raise ValueError, "selectHeights: Too few heights. Current number of heights is %d" %(self.dataOut.nHeights)
214
214
215 return 1
215 return 1
216
216
217
217
218 def filterByHeights(self, window):
218 def filterByHeights(self, window):
219
219
220 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
220 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
221
221
222 if window == None:
222 if window == None:
223 window = (self.dataOut.radarControllerHeaderObj.txA/self.dataOut.radarControllerHeaderObj.nBaud) / deltaHeight
223 window = (self.dataOut.radarControllerHeaderObj.txA/self.dataOut.radarControllerHeaderObj.nBaud) / deltaHeight
224
224
225 newdelta = deltaHeight * window
225 newdelta = deltaHeight * window
226 r = self.dataOut.nHeights % window
226 r = self.dataOut.nHeights % window
227 newheights = (self.dataOut.nHeights-r)/window
227 newheights = (self.dataOut.nHeights-r)/window
228
228
229 if newheights <= 1:
229 if newheights <= 1:
230 raise ValueError, "filterByHeights: Too few heights. Current number of heights is %d and window is %d" %(self.dataOut.nHeights, window)
230 raise ValueError, "filterByHeights: Too few heights. Current number of heights is %d and window is %d" %(self.dataOut.nHeights, window)
231
231
232 if self.dataOut.flagDataAsBlock:
232 if self.dataOut.flagDataAsBlock:
233 """
233 """
234 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
234 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
235 """
235 """
236 buffer = self.dataOut.data[:, :, 0:self.dataOut.nHeights-r]
236 buffer = self.dataOut.data[:, :, 0:self.dataOut.nHeights-r]
237 buffer = buffer.reshape(self.dataOut.nChannels,self.dataOut.nProfiles,self.dataOut.nHeights/window,window)
237 buffer = buffer.reshape(self.dataOut.nChannels,self.dataOut.nProfiles,self.dataOut.nHeights/window,window)
238 buffer = numpy.sum(buffer,3)
238 buffer = numpy.sum(buffer,3)
239
239
240 else:
240 else:
241 buffer = self.dataOut.data[:,0:self.dataOut.nHeights-r]
241 buffer = self.dataOut.data[:,0:self.dataOut.nHeights-r]
242 buffer = buffer.reshape(self.dataOut.nChannels,self.dataOut.nHeights/window,window)
242 buffer = buffer.reshape(self.dataOut.nChannels,self.dataOut.nHeights/window,window)
243 buffer = numpy.sum(buffer,2)
243 buffer = numpy.sum(buffer,2)
244
244
245 self.dataOut.data = buffer
245 self.dataOut.data = buffer
246 self.dataOut.heightList = self.dataOut.heightList[0] + numpy.arange( newheights )*newdelta
246 self.dataOut.heightList = self.dataOut.heightList[0] + numpy.arange( newheights )*newdelta
247 self.dataOut.windowOfFilter = window
247 self.dataOut.windowOfFilter = window
248
248
249 def setH0(self, h0, deltaHeight = None):
249 def setH0(self, h0, deltaHeight = None):
250
250
251 if not deltaHeight:
251 if not deltaHeight:
252 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
252 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
253
253
254 nHeights = self.dataOut.nHeights
254 nHeights = self.dataOut.nHeights
255
255
256 newHeiRange = h0 + numpy.arange(nHeights)*deltaHeight
256 newHeiRange = h0 + numpy.arange(nHeights)*deltaHeight
257
257
258 self.dataOut.heightList = newHeiRange
258 self.dataOut.heightList = newHeiRange
259
259
260 def deFlip(self, channelList = []):
260 def deFlip(self, channelList = []):
261
261
262 data = self.dataOut.data.copy()
262 data = self.dataOut.data.copy()
263
263
264 if self.dataOut.flagDataAsBlock:
264 if self.dataOut.flagDataAsBlock:
265 flip = self.flip
265 flip = self.flip
266 profileList = range(self.dataOut.nProfiles)
266 profileList = range(self.dataOut.nProfiles)
267
267
268 if not channelList:
268 if not channelList:
269 for thisProfile in profileList:
269 for thisProfile in profileList:
270 data[:,thisProfile,:] = data[:,thisProfile,:]*flip
270 data[:,thisProfile,:] = data[:,thisProfile,:]*flip
271 flip *= -1.0
271 flip *= -1.0
272 else:
272 else:
273 for thisChannel in channelList:
273 for thisChannel in channelList:
274 if thisChannel not in self.dataOut.channelList:
274 if thisChannel not in self.dataOut.channelList:
275 continue
275 continue
276
276
277 for thisProfile in profileList:
277 for thisProfile in profileList:
278 data[thisChannel,thisProfile,:] = data[thisChannel,thisProfile,:]*flip
278 data[thisChannel,thisProfile,:] = data[thisChannel,thisProfile,:]*flip
279 flip *= -1.0
279 flip *= -1.0
280
280
281 self.flip = flip
281 self.flip = flip
282
282
283 else:
283 else:
284 if not channelList:
284 if not channelList:
285 data[:,:] = data[:,:]*self.flip
285 data[:,:] = data[:,:]*self.flip
286 else:
286 else:
287 for thisChannel in channelList:
287 for thisChannel in channelList:
288 if thisChannel not in self.dataOut.channelList:
288 if thisChannel not in self.dataOut.channelList:
289 continue
289 continue
290
290
291 data[thisChannel,:] = data[thisChannel,:]*self.flip
291 data[thisChannel,:] = data[thisChannel,:]*self.flip
292
292
293 self.flip *= -1.
293 self.flip *= -1.
294
294
295 self.dataOut.data = data
295 self.dataOut.data = data
296
296
297 def setRadarFrequency(self, frequency=None):
297 def setRadarFrequency(self, frequency=None):
298
298
299 if frequency != None:
299 if frequency != None:
300 self.dataOut.frequency = frequency
300 self.dataOut.frequency = frequency
301
301
302 return 1
302 return 1
303
303
304 class CohInt(Operation):
304 class CohInt(Operation):
305
305
306 isConfig = False
306 isConfig = False
307
307
308 __profIndex = 0
308 __profIndex = 0
309 __withOverapping = False
309 __withOverapping = False
310
310
311 __byTime = False
311 __byTime = False
312 __initime = None
312 __initime = None
313 __lastdatatime = None
313 __lastdatatime = None
314 __integrationtime = None
314 __integrationtime = None
315
315
316 __buffer = None
316 __buffer = None
317
317
318 __dataReady = False
318 __dataReady = False
319
319
320 n = None
320 n = None
321
321
322
322
323 def __init__(self):
323 def __init__(self):
324
324
325 Operation.__init__(self)
325 Operation.__init__(self)
326
326
327 # self.isConfig = False
327 # self.isConfig = False
328
328
329 def setup(self, n=None, timeInterval=None, overlapping=False, byblock=False):
329 def setup(self, n=None, timeInterval=None, overlapping=False, byblock=False):
330 """
330 """
331 Set the parameters of the integration class.
331 Set the parameters of the integration class.
332
332
333 Inputs:
333 Inputs:
334
334
335 n : Number of coherent integrations
335 n : Number of coherent integrations
336 timeInterval : Time of integration. If the parameter "n" is selected this one does not work
336 timeInterval : Time of integration. If the parameter "n" is selected this one does not work
337 overlapping :
337 overlapping :
338
338
339 """
339 """
340
340
341 self.__initime = None
341 self.__initime = None
342 self.__lastdatatime = 0
342 self.__lastdatatime = 0
343 self.__buffer = None
343 self.__buffer = None
344 self.__dataReady = False
344 self.__dataReady = False
345 self.byblock = byblock
345 self.byblock = byblock
346
346
347 if n == None and timeInterval == None:
347 if n == None and timeInterval == None:
348 raise ValueError, "n or timeInterval should be specified ..."
348 raise ValueError, "n or timeInterval should be specified ..."
349
349
350 if n != None:
350 if n != None:
351 self.n = n
351 self.n = n
352 self.__byTime = False
352 self.__byTime = False
353 else:
353 else:
354 self.__integrationtime = timeInterval #* 60. #if (type(timeInterval)!=integer) -> change this line
354 self.__integrationtime = timeInterval #* 60. #if (type(timeInterval)!=integer) -> change this line
355 self.n = 9999
355 self.n = 9999
356 self.__byTime = True
356 self.__byTime = True
357
357
358 if overlapping:
358 if overlapping:
359 self.__withOverapping = True
359 self.__withOverapping = True
360 self.__buffer = None
360 self.__buffer = None
361 else:
361 else:
362 self.__withOverapping = False
362 self.__withOverapping = False
363 self.__buffer = 0
363 self.__buffer = 0
364
364
365 self.__profIndex = 0
365 self.__profIndex = 0
366
366
367 def putData(self, data):
367 def putData(self, data):
368
368
369 """
369 """
370 Add a profile to the __buffer and increase in one the __profileIndex
370 Add a profile to the __buffer and increase in one the __profileIndex
371
371
372 """
372 """
373
373
374 if not self.__withOverapping:
374 if not self.__withOverapping:
375 self.__buffer += data.copy()
375 self.__buffer += data.copy()
376 self.__profIndex += 1
376 self.__profIndex += 1
377 return
377 return
378
378
379 #Overlapping data
379 #Overlapping data
380 nChannels, nHeis = data.shape
380 nChannels, nHeis = data.shape
381 data = numpy.reshape(data, (1, nChannels, nHeis))
381 data = numpy.reshape(data, (1, nChannels, nHeis))
382
382
383 #If the buffer is empty then it takes the data value
383 #If the buffer is empty then it takes the data value
384 if self.__buffer is None:
384 if self.__buffer is None:
385 self.__buffer = data
385 self.__buffer = data
386 self.__profIndex += 1
386 self.__profIndex += 1
387 return
387 return
388
388
389 #If the buffer length is lower than n then stakcing the data value
389 #If the buffer length is lower than n then stakcing the data value
390 if self.__profIndex < self.n:
390 if self.__profIndex < self.n:
391 self.__buffer = numpy.vstack((self.__buffer, data))
391 self.__buffer = numpy.vstack((self.__buffer, data))
392 self.__profIndex += 1
392 self.__profIndex += 1
393 return
393 return
394
394
395 #If the buffer length is equal to n then replacing the last buffer value with the data value
395 #If the buffer length is equal to n then replacing the last buffer value with the data value
396 self.__buffer = numpy.roll(self.__buffer, -1, axis=0)
396 self.__buffer = numpy.roll(self.__buffer, -1, axis=0)
397 self.__buffer[self.n-1] = data
397 self.__buffer[self.n-1] = data
398 self.__profIndex = self.n
398 self.__profIndex = self.n
399 return
399 return
400
400
401
401
402 def pushData(self):
402 def pushData(self):
403 """
403 """
404 Return the sum of the last profiles and the profiles used in the sum.
404 Return the sum of the last profiles and the profiles used in the sum.
405
405
406 Affected:
406 Affected:
407
407
408 self.__profileIndex
408 self.__profileIndex
409
409
410 """
410 """
411
411
412 if not self.__withOverapping:
412 if not self.__withOverapping:
413 data = self.__buffer
413 data = self.__buffer
414 n = self.__profIndex
414 n = self.__profIndex
415
415
416 self.__buffer = 0
416 self.__buffer = 0
417 self.__profIndex = 0
417 self.__profIndex = 0
418
418
419 return data, n
419 return data, n
420
420
421 #Integration with Overlapping
421 #Integration with Overlapping
422 data = numpy.sum(self.__buffer, axis=0)
422 data = numpy.sum(self.__buffer, axis=0)
423 n = self.__profIndex
423 n = self.__profIndex
424
424
425 return data, n
425 return data, n
426
426
427 def byProfiles(self, data):
427 def byProfiles(self, data):
428
428
429 self.__dataReady = False
429 self.__dataReady = False
430 avgdata = None
430 avgdata = None
431 # n = None
431 # n = None
432
432
433 self.putData(data)
433 self.putData(data)
434
434
435 if self.__profIndex == self.n:
435 if self.__profIndex == self.n:
436
436
437 avgdata, n = self.pushData()
437 avgdata, n = self.pushData()
438 self.__dataReady = True
438 self.__dataReady = True
439
439
440 return avgdata
440 return avgdata
441
441
442 def byTime(self, data, datatime):
442 def byTime(self, data, datatime):
443
443
444 self.__dataReady = False
444 self.__dataReady = False
445 avgdata = None
445 avgdata = None
446 n = None
446 n = None
447
447
448 self.putData(data)
448 self.putData(data)
449
449
450 if (datatime - self.__initime) >= self.__integrationtime:
450 if (datatime - self.__initime) >= self.__integrationtime:
451 avgdata, n = self.pushData()
451 avgdata, n = self.pushData()
452 self.n = n
452 self.n = n
453 self.__dataReady = True
453 self.__dataReady = True
454
454
455 return avgdata
455 return avgdata
456
456
457 def integrate(self, data, datatime=None):
457 def integrate(self, data, datatime=None):
458
458
459 if self.__initime == None:
459 if self.__initime == None:
460 self.__initime = datatime
460 self.__initime = datatime
461
461
462 if self.__byTime:
462 if self.__byTime:
463 avgdata = self.byTime(data, datatime)
463 avgdata = self.byTime(data, datatime)
464 else:
464 else:
465 avgdata = self.byProfiles(data)
465 avgdata = self.byProfiles(data)
466
466
467
467
468 self.__lastdatatime = datatime
468 self.__lastdatatime = datatime
469
469
470 if avgdata is None:
470 if avgdata is None:
471 return None, None
471 return None, None
472
472
473 avgdatatime = self.__initime
473 avgdatatime = self.__initime
474
474
475 deltatime = datatime -self.__lastdatatime
475 deltatime = datatime -self.__lastdatatime
476
476
477 if not self.__withOverapping:
477 if not self.__withOverapping:
478 self.__initime = datatime
478 self.__initime = datatime
479 else:
479 else:
480 self.__initime += deltatime
480 self.__initime += deltatime
481
481
482 return avgdata, avgdatatime
482 return avgdata, avgdatatime
483
483
484 def integrateByBlock(self, dataOut):
484 def integrateByBlock(self, dataOut):
485
485
486 times = int(dataOut.data.shape[1]/self.n)
486 times = int(dataOut.data.shape[1]/self.n)
487 avgdata = numpy.zeros((dataOut.nChannels, times, dataOut.nHeights), dtype=numpy.complex)
487 avgdata = numpy.zeros((dataOut.nChannels, times, dataOut.nHeights), dtype=numpy.complex)
488
488
489 id_min = 0
489 id_min = 0
490 id_max = self.n
490 id_max = self.n
491
491
492 for i in range(times):
492 for i in range(times):
493 junk = dataOut.data[:,id_min:id_max,:]
493 junk = dataOut.data[:,id_min:id_max,:]
494 avgdata[:,i,:] = junk.sum(axis=1)
494 avgdata[:,i,:] = junk.sum(axis=1)
495 id_min += self.n
495 id_min += self.n
496 id_max += self.n
496 id_max += self.n
497
497
498 timeInterval = dataOut.ippSeconds*self.n
498 timeInterval = dataOut.ippSeconds*self.n
499 avgdatatime = (times - 1) * timeInterval + dataOut.utctime
499 avgdatatime = (times - 1) * timeInterval + dataOut.utctime
500 self.__dataReady = True
500 self.__dataReady = True
501 return avgdata, avgdatatime
501 return avgdata, avgdatatime
502
502
503 def run(self, dataOut, **kwargs):
503 def run(self, dataOut, **kwargs):
504
504
505 if not self.isConfig:
505 if not self.isConfig:
506 self.setup(**kwargs)
506 self.setup(**kwargs)
507 self.isConfig = True
507 self.isConfig = True
508
508
509 if dataOut.flagDataAsBlock:
509 if dataOut.flagDataAsBlock:
510 """
510 """
511 Si la data es leida por bloques, dimension = [nChannels, nProfiles, nHeis]
511 Si la data es leida por bloques, dimension = [nChannels, nProfiles, nHeis]
512 """
512 """
513 avgdata, avgdatatime = self.integrateByBlock(dataOut)
513 avgdata, avgdatatime = self.integrateByBlock(dataOut)
514 else:
514 else:
515 avgdata, avgdatatime = self.integrate(dataOut.data, dataOut.utctime)
515 avgdata, avgdatatime = self.integrate(dataOut.data, dataOut.utctime)
516
516
517 # dataOut.timeInterval *= n
517 # dataOut.timeInterval *= n
518 dataOut.flagNoData = True
518 dataOut.flagNoData = True
519
519
520 if self.__dataReady:
520 if self.__dataReady:
521 dataOut.data = avgdata
521 dataOut.data = avgdata
522 dataOut.nCohInt *= self.n
522 dataOut.nCohInt *= self.n
523 dataOut.utctime = avgdatatime
523 dataOut.utctime = avgdatatime
524 # dataOut.timeInterval = dataOut.ippSeconds * dataOut.nCohInt
524 # dataOut.timeInterval = dataOut.ippSeconds * dataOut.nCohInt
525 dataOut.flagNoData = False
525 dataOut.flagNoData = False
526
526
527 class Decoder(Operation):
527 class Decoder(Operation):
528
528
529 isConfig = False
529 isConfig = False
530 __profIndex = 0
530 __profIndex = 0
531
531
532 code = None
532 code = None
533
533
534 nCode = None
534 nCode = None
535 nBaud = None
535 nBaud = None
536
536
537
537
538 def __init__(self):
538 def __init__(self):
539
539
540 Operation.__init__(self)
540 Operation.__init__(self)
541
541
542 self.times = None
542 self.times = None
543 self.osamp = None
543 self.osamp = None
544 # self.__setValues = False
544 # self.__setValues = False
545 self.isConfig = False
545 self.isConfig = False
546
546
547 def setup(self, code, osamp, dataOut):
547 def setup(self, code, osamp, dataOut):
548
548
549 self.__profIndex = 0
549 self.__profIndex = 0
550
550
551 self.code = code
551 self.code = code
552
552
553 self.nCode = len(code)
553 self.nCode = len(code)
554 self.nBaud = len(code[0])
554 self.nBaud = len(code[0])
555
555
556 if (osamp != None) and (osamp >1):
556 if (osamp != None) and (osamp >1):
557 self.osamp = osamp
557 self.osamp = osamp
558 self.code = numpy.repeat(code, repeats=self.osamp, axis=1)
558 self.code = numpy.repeat(code, repeats=self.osamp, axis=1)
559 self.nBaud = self.nBaud*self.osamp
559 self.nBaud = self.nBaud*self.osamp
560
560
561 self.__nChannels = dataOut.nChannels
561 self.__nChannels = dataOut.nChannels
562 self.__nProfiles = dataOut.nProfiles
562 self.__nProfiles = dataOut.nProfiles
563 self.__nHeis = dataOut.nHeights
563 self.__nHeis = dataOut.nHeights
564
564
565 if self.__nHeis < self.nBaud:
566 print 'IOError: Number of heights (%d) should be greater than number of bauds (%d)' %(self.__nHeis, self.nBaud)
567 raise IOError, 'Number of heights (%d) should be greater than number of bauds (%d)' %(self.__nHeis, self.nBaud)
568
565 if dataOut.flagDataAsBlock:
569 if dataOut.flagDataAsBlock:
566
570
567 self.ndatadec = self.__nHeis #- self.nBaud + 1
571 self.ndatadec = self.__nHeis #- self.nBaud + 1
568
572
569 self.datadecTime = numpy.zeros((self.__nChannels, self.__nProfiles, self.ndatadec), dtype=numpy.complex)
573 self.datadecTime = numpy.zeros((self.__nChannels, self.__nProfiles, self.ndatadec), dtype=numpy.complex)
570
574
571 else:
575 else:
572
576
573 __codeBuffer = numpy.zeros((self.nCode, self.__nHeis), dtype=numpy.complex)
577 __codeBuffer = numpy.zeros((self.nCode, self.__nHeis), dtype=numpy.complex)
574
578
575 __codeBuffer[:,0:self.nBaud] = self.code
579 __codeBuffer[:,0:self.nBaud] = self.code
576
580
577 self.fft_code = numpy.conj(numpy.fft.fft(__codeBuffer, axis=1))
581 self.fft_code = numpy.conj(numpy.fft.fft(__codeBuffer, axis=1))
578
582
579 self.ndatadec = self.__nHeis #- self.nBaud + 1
583 self.ndatadec = self.__nHeis #- self.nBaud + 1
580
584
581 self.datadecTime = numpy.zeros((self.__nChannels, self.ndatadec), dtype=numpy.complex)
585 self.datadecTime = numpy.zeros((self.__nChannels, self.ndatadec), dtype=numpy.complex)
582
586
583 def convolutionInFreq(self, data):
587 def convolutionInFreq(self, data):
584
588
585 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
589 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
586
590
587 fft_data = numpy.fft.fft(data, axis=1)
591 fft_data = numpy.fft.fft(data, axis=1)
588
592
589 conv = fft_data*fft_code
593 conv = fft_data*fft_code
590
594
591 data = numpy.fft.ifft(conv,axis=1)
595 data = numpy.fft.ifft(conv,axis=1)
592
596
593 datadec = data#[:,:]
597 datadec = data#[:,:]
594
598
595 return datadec
599 return datadec
596
600
597 def convolutionInFreqOpt(self, data):
601 def convolutionInFreqOpt(self, data):
598
602
599 raise NotImplementedError
603 raise NotImplementedError
600
604
601 # fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
605 # fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
602 #
606 #
603 # data = cfunctions.decoder(fft_code, data)
607 # data = cfunctions.decoder(fft_code, data)
604 #
608 #
605 # datadec = data#[:,:]
609 # datadec = data#[:,:]
606 #
610 #
607 # return datadec
611 # return datadec
608
612
609 def convolutionInTime(self, data):
613 def convolutionInTime(self, data):
610
614
611 code = self.code[self.__profIndex]
615 code = self.code[self.__profIndex]
612
616
613 for i in range(self.__nChannels):
617 for i in range(self.__nChannels):
614 self.datadecTime[i,:] = numpy.correlate(data[i,:], code, mode='full')[self.nBaud-1:]
618 self.datadecTime[i,:] = numpy.correlate(data[i,:], code, mode='full')[self.nBaud-1:]
615
619
616 return self.datadecTime
620 return self.datadecTime
617
621
618 def convolutionByBlockInTime(self, data):
622 def convolutionByBlockInTime(self, data):
619
623
620 repetitions = self.__nProfiles / self.nCode
624 repetitions = self.__nProfiles / self.nCode
621
625
622 junk = numpy.lib.stride_tricks.as_strided(self.code, (repetitions, self.code.size), (0, self.code.itemsize))
626 junk = numpy.lib.stride_tricks.as_strided(self.code, (repetitions, self.code.size), (0, self.code.itemsize))
623 junk = junk.flatten()
627 junk = junk.flatten()
624 code_block = numpy.reshape(junk, (self.nCode*repetitions, self.nBaud))
628 code_block = numpy.reshape(junk, (self.nCode*repetitions, self.nBaud))
625
629
626 for i in range(self.__nChannels):
630 for i in range(self.__nChannels):
627 for j in range(self.__nProfiles):
631 for j in range(self.__nProfiles):
628 self.datadecTime[i,j,:] = numpy.correlate(data[i,j,:], code_block[j,:], mode='same')
632 self.datadecTime[i,j,:] = numpy.correlate(data[i,j,:], code_block[j,:], mode='same')
629
633
630 return self.datadecTime
634 return self.datadecTime
631
635
632 def run(self, dataOut, code=None, nCode=None, nBaud=None, mode = 0, osamp=None, times=None):
636 def run(self, dataOut, code=None, nCode=None, nBaud=None, mode = 0, osamp=None, times=None):
633
637
634 if dataOut.flagDecodeData:
638 if dataOut.flagDecodeData:
635 print "This data is already decoded, recoding again ..."
639 print "This data is already decoded, recoding again ..."
636
640
637 if not self.isConfig:
641 if not self.isConfig:
638
642
639 if code is None:
643 if code is None:
640 code = dataOut.code
644 code = dataOut.code
641 else:
645 else:
642 code = numpy.array(code).reshape(nCode,nBaud)
646 code = numpy.array(code).reshape(nCode,nBaud)
643
647
644 self.setup(code, osamp, dataOut)
648 self.setup(code, osamp, dataOut)
645
649
646 self.isConfig = True
650 self.isConfig = True
647
651
648 if self.code is None:
652 if self.code is None:
649 print "Fail decoding: Code is not defined."
653 print "Fail decoding: Code is not defined."
650 return
654 return
651
655
652 if dataOut.flagDataAsBlock:
656 if dataOut.flagDataAsBlock:
653 """
657 """
654 Decoding when data have been read as block,
658 Decoding when data have been read as block,
655 """
659 """
656 datadec = self.convolutionByBlockInTime(dataOut.data)
660 datadec = self.convolutionByBlockInTime(dataOut.data)
657
661
658 else:
662 else:
659 """
663 """
660 Decoding when data have been read profile by profile
664 Decoding when data have been read profile by profile
661 """
665 """
662 if mode == 0:
666 if mode == 0:
663 datadec = self.convolutionInTime(dataOut.data)
667 datadec = self.convolutionInTime(dataOut.data)
664
668
665 if mode == 1:
669 if mode == 1:
666 datadec = self.convolutionInFreq(dataOut.data)
670 datadec = self.convolutionInFreq(dataOut.data)
667
671
668 if mode == 2:
672 if mode == 2:
669 datadec = self.convolutionInFreqOpt(dataOut.data)
673 datadec = self.convolutionInFreqOpt(dataOut.data)
670
674
671 dataOut.code = self.code
675 dataOut.code = self.code
672 dataOut.nCode = self.nCode
676 dataOut.nCode = self.nCode
673 dataOut.nBaud = self.nBaud
677 dataOut.nBaud = self.nBaud
674
678
675 dataOut.data = datadec
679 dataOut.data = datadec
676
680
677 dataOut.heightList = dataOut.heightList[0:self.ndatadec]
681 dataOut.heightList = dataOut.heightList[0:self.ndatadec]
678
682
679 dataOut.flagDecodeData = True #asumo q la data esta decodificada
683 dataOut.flagDecodeData = True #asumo q la data esta decodificada
680
684
681 if self.__profIndex == self.nCode-1:
685 if self.__profIndex == self.nCode-1:
682 self.__profIndex = 0
686 self.__profIndex = 0
683 return 1
687 return 1
684
688
685 self.__profIndex += 1
689 self.__profIndex += 1
686
690
687 return 1
691 return 1
688 # dataOut.flagDeflipData = True #asumo q la data no esta sin flip
692 # dataOut.flagDeflipData = True #asumo q la data no esta sin flip
689
693
690
694
691 class ProfileConcat(Operation):
695 class ProfileConcat(Operation):
692
696
693 isConfig = False
697 isConfig = False
694 buffer = None
698 buffer = None
695
699
696 def __init__(self):
700 def __init__(self):
697
701
698 Operation.__init__(self)
702 Operation.__init__(self)
699 self.profileIndex = 0
703 self.profileIndex = 0
700
704
701 def reset(self):
705 def reset(self):
702 self.buffer = numpy.zeros_like(self.buffer)
706 self.buffer = numpy.zeros_like(self.buffer)
703 self.start_index = 0
707 self.start_index = 0
704 self.times = 1
708 self.times = 1
705
709
706 def setup(self, data, m, n=1):
710 def setup(self, data, m, n=1):
707 self.buffer = numpy.zeros((data.shape[0],data.shape[1]*m),dtype=type(data[0,0]))
711 self.buffer = numpy.zeros((data.shape[0],data.shape[1]*m),dtype=type(data[0,0]))
708 self.nHeights = data.nHeights
712 self.nHeights = data.nHeights
709 self.start_index = 0
713 self.start_index = 0
710 self.times = 1
714 self.times = 1
711
715
712 def concat(self, data):
716 def concat(self, data):
713
717
714 self.buffer[:,self.start_index:self.profiles*self.times] = data.copy()
718 self.buffer[:,self.start_index:self.profiles*self.times] = data.copy()
715 self.start_index = self.start_index + self.nHeights
719 self.start_index = self.start_index + self.nHeights
716
720
717 def run(self, dataOut, m):
721 def run(self, dataOut, m):
718
722
719 dataOut.flagNoData = True
723 dataOut.flagNoData = True
720
724
721 if not self.isConfig:
725 if not self.isConfig:
722 self.setup(dataOut.data, m, 1)
726 self.setup(dataOut.data, m, 1)
723 self.isConfig = True
727 self.isConfig = True
724
728
725 if dataOut.flagDataAsBlock:
729 if dataOut.flagDataAsBlock:
726
730
727 raise ValueError, "ProfileConcat can only be used when voltage have been read profile by profile, getBlock = False"
731 raise ValueError, "ProfileConcat can only be used when voltage have been read profile by profile, getBlock = False"
728
732
729 else:
733 else:
730 self.concat(dataOut.data)
734 self.concat(dataOut.data)
731 self.times += 1
735 self.times += 1
732 if self.times > m:
736 if self.times > m:
733 dataOut.data = self.buffer
737 dataOut.data = self.buffer
734 self.reset()
738 self.reset()
735 dataOut.flagNoData = False
739 dataOut.flagNoData = False
736 # se deben actualizar mas propiedades del header y del objeto dataOut, por ejemplo, las alturas
740 # se deben actualizar mas propiedades del header y del objeto dataOut, por ejemplo, las alturas
737 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
741 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
738 xf = dataOut.heightList[0] + dataOut.nHeights * deltaHeight * m
742 xf = dataOut.heightList[0] + dataOut.nHeights * deltaHeight * m
739 dataOut.heightList = numpy.arange(dataOut.heightList[0], xf, deltaHeight)
743 dataOut.heightList = numpy.arange(dataOut.heightList[0], xf, deltaHeight)
740 dataOut.ippSeconds *= m
744 dataOut.ippSeconds *= m
741
745
742 class ProfileSelector(Operation):
746 class ProfileSelector(Operation):
743
747
744 profileIndex = None
748 profileIndex = None
745 # Tamanho total de los perfiles
749 # Tamanho total de los perfiles
746 nProfiles = None
750 nProfiles = None
747
751
748 def __init__(self):
752 def __init__(self):
749
753
750 Operation.__init__(self)
754 Operation.__init__(self)
751 self.profileIndex = 0
755 self.profileIndex = 0
752
756
753 def incIndex(self):
757 def incIndex(self):
754
758
755 self.profileIndex += 1
759 self.profileIndex += 1
756
760
757 if self.profileIndex >= self.nProfiles:
761 if self.profileIndex >= self.nProfiles:
758 self.profileIndex = 0
762 self.profileIndex = 0
759
763
760 def isThisProfileInRange(self, profileIndex, minIndex, maxIndex):
764 def isThisProfileInRange(self, profileIndex, minIndex, maxIndex):
761
765
762 if profileIndex < minIndex:
766 if profileIndex < minIndex:
763 return False
767 return False
764
768
765 if profileIndex > maxIndex:
769 if profileIndex > maxIndex:
766 return False
770 return False
767
771
768 return True
772 return True
769
773
770 def isThisProfileInList(self, profileIndex, profileList):
774 def isThisProfileInList(self, profileIndex, profileList):
771
775
772 if profileIndex not in profileList:
776 if profileIndex not in profileList:
773 return False
777 return False
774
778
775 return True
779 return True
776
780
777 def run(self, dataOut, profileList=None, profileRangeList=None, beam=None, byblock=False, rangeList = None, nProfiles=None):
781 def run(self, dataOut, profileList=None, profileRangeList=None, beam=None, byblock=False, rangeList = None, nProfiles=None):
778
782
779 """
783 """
780 ProfileSelector:
784 ProfileSelector:
781
785
782 Inputs:
786 Inputs:
783 profileList : Index of profiles selected. Example: profileList = (0,1,2,7,8)
787 profileList : Index of profiles selected. Example: profileList = (0,1,2,7,8)
784
788
785 profileRangeList : Minimum and maximum profile indexes. Example: profileRangeList = (4, 30)
789 profileRangeList : Minimum and maximum profile indexes. Example: profileRangeList = (4, 30)
786
790
787 rangeList : List of profile ranges. Example: rangeList = ((4, 30), (32, 64), (128, 256))
791 rangeList : List of profile ranges. Example: rangeList = ((4, 30), (32, 64), (128, 256))
788
792
789 """
793 """
790
794
791 dataOut.flagNoData = True
795 dataOut.flagNoData = True
792
796
793 if nProfiles:
797 if nProfiles:
794 self.nProfiles = dataOut.nProfiles
798 self.nProfiles = dataOut.nProfiles
795 else:
799 else:
796 self.nProfiles = nProfiles
800 self.nProfiles = nProfiles
797
801
798 if dataOut.flagDataAsBlock:
802 if dataOut.flagDataAsBlock:
799 """
803 """
800 data dimension = [nChannels, nProfiles, nHeis]
804 data dimension = [nChannels, nProfiles, nHeis]
801 """
805 """
802 if profileList != None:
806 if profileList != None:
803 dataOut.data = dataOut.data[:,profileList,:]
807 dataOut.data = dataOut.data[:,profileList,:]
804 dataOut.nProfiles = len(profileList)
808 dataOut.nProfiles = len(profileList)
805 dataOut.profileIndex = dataOut.nProfiles - 1
809 dataOut.profileIndex = dataOut.nProfiles - 1
806
810
807 if profileRangeList != None:
811 if profileRangeList != None:
808 minIndex = profileRangeList[0]
812 minIndex = profileRangeList[0]
809 maxIndex = profileRangeList[1]
813 maxIndex = profileRangeList[1]
810
814
811 dataOut.data = dataOut.data[:,minIndex:maxIndex+1,:]
815 dataOut.data = dataOut.data[:,minIndex:maxIndex+1,:]
812 dataOut.nProfiles = maxIndex - minIndex + 1
816 dataOut.nProfiles = maxIndex - minIndex + 1
813 dataOut.profileIndex = dataOut.nProfiles - 1
817 dataOut.profileIndex = dataOut.nProfiles - 1
814
818
815 if rangeList != None:
819 if rangeList != None:
816 raise ValueError, "Profile Selector: Not implemented for rangeList yet"
820 raise ValueError, "Profile Selector: Not implemented for rangeList yet"
817
821
818 dataOut.flagNoData = False
822 dataOut.flagNoData = False
819
823
820 return True
824 return True
821
825
822 else:
826 else:
823 """
827 """
824 data dimension = [nChannels, nHeis]
828 data dimension = [nChannels, nHeis]
825
829
826 """
830 """
827 if profileList != None:
831 if profileList != None:
828
832
829 dataOut.nProfiles = len(profileList)
833 dataOut.nProfiles = len(profileList)
830
834
831 if self.isThisProfileInList(dataOut.profileIndex, profileList):
835 if self.isThisProfileInList(dataOut.profileIndex, profileList):
832 dataOut.flagNoData = False
836 dataOut.flagNoData = False
833 dataOut.profileIndex = self.profileIndex
837 dataOut.profileIndex = self.profileIndex
834
838
835 self.incIndex()
839 self.incIndex()
836 return True
840 return True
837
841
838
842
839 if profileRangeList != None:
843 if profileRangeList != None:
840
844
841 minIndex = profileRangeList[0]
845 minIndex = profileRangeList[0]
842 maxIndex = profileRangeList[1]
846 maxIndex = profileRangeList[1]
843
847
844 dataOut.nProfiles = maxIndex - minIndex + 1
848 dataOut.nProfiles = maxIndex - minIndex + 1
845
849
846 if self.isThisProfileInRange(dataOut.profileIndex, minIndex, maxIndex):
850 if self.isThisProfileInRange(dataOut.profileIndex, minIndex, maxIndex):
847 dataOut.flagNoData = False
851 dataOut.flagNoData = False
848 dataOut.profileIndex = self.profileIndex
852 dataOut.profileIndex = self.profileIndex
849
853
850 self.incIndex()
854 self.incIndex()
851 return True
855 return True
852
856
853 if rangeList != None:
857 if rangeList != None:
854
858
855 nProfiles = 0
859 nProfiles = 0
856
860
857 for thisRange in rangeList:
861 for thisRange in rangeList:
858 minIndex = thisRange[0]
862 minIndex = thisRange[0]
859 maxIndex = thisRange[1]
863 maxIndex = thisRange[1]
860
864
861 nProfiles += maxIndex - minIndex + 1
865 nProfiles += maxIndex - minIndex + 1
862
866
863 dataOut.nProfiles = nProfiles
867 dataOut.nProfiles = nProfiles
864
868
865 for thisRange in rangeList:
869 for thisRange in rangeList:
866
870
867 minIndex = thisRange[0]
871 minIndex = thisRange[0]
868 maxIndex = thisRange[1]
872 maxIndex = thisRange[1]
869
873
870 if self.isThisProfileInRange(dataOut.profileIndex, minIndex, maxIndex):
874 if self.isThisProfileInRange(dataOut.profileIndex, minIndex, maxIndex):
871
875
872 # print "profileIndex = ", dataOut.profileIndex
876 # print "profileIndex = ", dataOut.profileIndex
873
877
874 dataOut.flagNoData = False
878 dataOut.flagNoData = False
875 dataOut.profileIndex = self.profileIndex
879 dataOut.profileIndex = self.profileIndex
876
880
877 self.incIndex()
881 self.incIndex()
878 break
882 break
879 return True
883 return True
880
884
881
885
882 if beam != None: #beam is only for AMISR data
886 if beam != None: #beam is only for AMISR data
883 if self.isThisProfileInList(dataOut.profileIndex, dataOut.beamRangeDict[beam]):
887 if self.isThisProfileInList(dataOut.profileIndex, dataOut.beamRangeDict[beam]):
884 dataOut.flagNoData = False
888 dataOut.flagNoData = False
885 dataOut.profileIndex = self.profileIndex
889 dataOut.profileIndex = self.profileIndex
886
890
887 self.incIndex()
891 self.incIndex()
888 return 1
892 return 1
889
893
890 raise ValueError, "ProfileSelector needs profileList, profileRangeList or rangeList parameter"
894 raise ValueError, "ProfileSelector needs profileList, profileRangeList or rangeList parameter"
891
895
892 return 0
896 return 0
893
897
894
898
895
899
896 class Reshaper(Operation):
900 class Reshaper(Operation):
897
901
898 def __init__(self):
902 def __init__(self):
899
903
900 Operation.__init__(self)
904 Operation.__init__(self)
901 self.updateNewHeights = True
905 self.updateNewHeights = True
902
906
903 def run(self, dataOut, shape):
907 def run(self, dataOut, shape):
904
908
905 if not dataOut.flagDataAsBlock:
909 if not dataOut.flagDataAsBlock:
906 raise ValueError, "Reshaper can only be used when voltage have been read as Block, getBlock = True"
910 raise ValueError, "Reshaper can only be used when voltage have been read as Block, getBlock = True"
907
911
908 if len(shape) != 3:
912 if len(shape) != 3:
909 raise ValueError, "shape len should be equal to 3, (nChannels, nProfiles, nHeis)"
913 raise ValueError, "shape len should be equal to 3, (nChannels, nProfiles, nHeis)"
910
914
911 shape_tuple = tuple(shape)
915 shape_tuple = tuple(shape)
912 dataOut.data = numpy.reshape(dataOut.data, shape_tuple)
916 dataOut.data = numpy.reshape(dataOut.data, shape_tuple)
913 dataOut.flagNoData = False
917 dataOut.flagNoData = False
914
918
915 if self.updateNewHeights:
919 if self.updateNewHeights:
916
920
917 old_nheights = dataOut.nHeights
921 old_nheights = dataOut.nHeights
918 new_nheights = dataOut.data.shape[2]
922 new_nheights = dataOut.data.shape[2]
919 factor = 1.0*new_nheights / old_nheights
923 factor = 1.0*new_nheights / old_nheights
920
924
921 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
925 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
922
926
923 xf = dataOut.heightList[0] + dataOut.nHeights * deltaHeight * factor
927 xf = dataOut.heightList[0] + dataOut.nHeights * deltaHeight * factor
924
928
925 dataOut.heightList = numpy.arange(dataOut.heightList[0], xf, deltaHeight)
929 dataOut.heightList = numpy.arange(dataOut.heightList[0], xf, deltaHeight)
926
930
927 dataOut.nProfiles = dataOut.data.shape[1]
931 dataOut.nProfiles = dataOut.data.shape[1]
928
932
929 dataOut.ippSeconds *= factor
933 dataOut.ippSeconds *= factor
930 #
934 #
931 # import collections
935 # import collections
932 # from scipy.stats import mode
936 # from scipy.stats import mode
933 #
937 #
934 # class Synchronize(Operation):
938 # class Synchronize(Operation):
935 #
939 #
936 # isConfig = False
940 # isConfig = False
937 # __profIndex = 0
941 # __profIndex = 0
938 #
942 #
939 # def __init__(self):
943 # def __init__(self):
940 #
944 #
941 # Operation.__init__(self)
945 # Operation.__init__(self)
942 # # self.isConfig = False
946 # # self.isConfig = False
943 # self.__powBuffer = None
947 # self.__powBuffer = None
944 # self.__startIndex = 0
948 # self.__startIndex = 0
945 # self.__pulseFound = False
949 # self.__pulseFound = False
946 #
950 #
947 # def __findTxPulse(self, dataOut, channel=0, pulse_with = None):
951 # def __findTxPulse(self, dataOut, channel=0, pulse_with = None):
948 #
952 #
949 # #Read data
953 # #Read data
950 #
954 #
951 # powerdB = dataOut.getPower(channel = channel)
955 # powerdB = dataOut.getPower(channel = channel)
952 # noisedB = dataOut.getNoise(channel = channel)[0]
956 # noisedB = dataOut.getNoise(channel = channel)[0]
953 #
957 #
954 # self.__powBuffer.extend(powerdB.flatten())
958 # self.__powBuffer.extend(powerdB.flatten())
955 #
959 #
956 # dataArray = numpy.array(self.__powBuffer)
960 # dataArray = numpy.array(self.__powBuffer)
957 #
961 #
958 # filteredPower = numpy.correlate(dataArray, dataArray[0:self.__nSamples], "same")
962 # filteredPower = numpy.correlate(dataArray, dataArray[0:self.__nSamples], "same")
959 #
963 #
960 # maxValue = numpy.nanmax(filteredPower)
964 # maxValue = numpy.nanmax(filteredPower)
961 #
965 #
962 # if maxValue < noisedB + 10:
966 # if maxValue < noisedB + 10:
963 # #No se encuentra ningun pulso de transmision
967 # #No se encuentra ningun pulso de transmision
964 # return None
968 # return None
965 #
969 #
966 # maxValuesIndex = numpy.where(filteredPower > maxValue - 0.1*abs(maxValue))[0]
970 # maxValuesIndex = numpy.where(filteredPower > maxValue - 0.1*abs(maxValue))[0]
967 #
971 #
968 # if len(maxValuesIndex) < 2:
972 # if len(maxValuesIndex) < 2:
969 # #Solo se encontro un solo pulso de transmision de un baudio, esperando por el siguiente TX
973 # #Solo se encontro un solo pulso de transmision de un baudio, esperando por el siguiente TX
970 # return None
974 # return None
971 #
975 #
972 # phasedMaxValuesIndex = maxValuesIndex - self.__nSamples
976 # phasedMaxValuesIndex = maxValuesIndex - self.__nSamples
973 #
977 #
974 # #Seleccionar solo valores con un espaciamiento de nSamples
978 # #Seleccionar solo valores con un espaciamiento de nSamples
975 # pulseIndex = numpy.intersect1d(maxValuesIndex, phasedMaxValuesIndex)
979 # pulseIndex = numpy.intersect1d(maxValuesIndex, phasedMaxValuesIndex)
976 #
980 #
977 # if len(pulseIndex) < 2:
981 # if len(pulseIndex) < 2:
978 # #Solo se encontro un pulso de transmision con ancho mayor a 1
982 # #Solo se encontro un pulso de transmision con ancho mayor a 1
979 # return None
983 # return None
980 #
984 #
981 # spacing = pulseIndex[1:] - pulseIndex[:-1]
985 # spacing = pulseIndex[1:] - pulseIndex[:-1]
982 #
986 #
983 # #remover senales que se distancien menos de 10 unidades o muestras
987 # #remover senales que se distancien menos de 10 unidades o muestras
984 # #(No deberian existir IPP menor a 10 unidades)
988 # #(No deberian existir IPP menor a 10 unidades)
985 #
989 #
986 # realIndex = numpy.where(spacing > 10 )[0]
990 # realIndex = numpy.where(spacing > 10 )[0]
987 #
991 #
988 # if len(realIndex) < 2:
992 # if len(realIndex) < 2:
989 # #Solo se encontro un pulso de transmision con ancho mayor a 1
993 # #Solo se encontro un pulso de transmision con ancho mayor a 1
990 # return None
994 # return None
991 #
995 #
992 # #Eliminar pulsos anchos (deja solo la diferencia entre IPPs)
996 # #Eliminar pulsos anchos (deja solo la diferencia entre IPPs)
993 # realPulseIndex = pulseIndex[realIndex]
997 # realPulseIndex = pulseIndex[realIndex]
994 #
998 #
995 # period = mode(realPulseIndex[1:] - realPulseIndex[:-1])[0][0]
999 # period = mode(realPulseIndex[1:] - realPulseIndex[:-1])[0][0]
996 #
1000 #
997 # print "IPP = %d samples" %period
1001 # print "IPP = %d samples" %period
998 #
1002 #
999 # self.__newNSamples = dataOut.nHeights #int(period)
1003 # self.__newNSamples = dataOut.nHeights #int(period)
1000 # self.__startIndex = int(realPulseIndex[0])
1004 # self.__startIndex = int(realPulseIndex[0])
1001 #
1005 #
1002 # return 1
1006 # return 1
1003 #
1007 #
1004 #
1008 #
1005 # def setup(self, nSamples, nChannels, buffer_size = 4):
1009 # def setup(self, nSamples, nChannels, buffer_size = 4):
1006 #
1010 #
1007 # self.__powBuffer = collections.deque(numpy.zeros( buffer_size*nSamples,dtype=numpy.float),
1011 # self.__powBuffer = collections.deque(numpy.zeros( buffer_size*nSamples,dtype=numpy.float),
1008 # maxlen = buffer_size*nSamples)
1012 # maxlen = buffer_size*nSamples)
1009 #
1013 #
1010 # bufferList = []
1014 # bufferList = []
1011 #
1015 #
1012 # for i in range(nChannels):
1016 # for i in range(nChannels):
1013 # bufferByChannel = collections.deque(numpy.zeros( buffer_size*nSamples, dtype=numpy.complex) + numpy.NAN,
1017 # bufferByChannel = collections.deque(numpy.zeros( buffer_size*nSamples, dtype=numpy.complex) + numpy.NAN,
1014 # maxlen = buffer_size*nSamples)
1018 # maxlen = buffer_size*nSamples)
1015 #
1019 #
1016 # bufferList.append(bufferByChannel)
1020 # bufferList.append(bufferByChannel)
1017 #
1021 #
1018 # self.__nSamples = nSamples
1022 # self.__nSamples = nSamples
1019 # self.__nChannels = nChannels
1023 # self.__nChannels = nChannels
1020 # self.__bufferList = bufferList
1024 # self.__bufferList = bufferList
1021 #
1025 #
1022 # def run(self, dataOut, channel = 0):
1026 # def run(self, dataOut, channel = 0):
1023 #
1027 #
1024 # if not self.isConfig:
1028 # if not self.isConfig:
1025 # nSamples = dataOut.nHeights
1029 # nSamples = dataOut.nHeights
1026 # nChannels = dataOut.nChannels
1030 # nChannels = dataOut.nChannels
1027 # self.setup(nSamples, nChannels)
1031 # self.setup(nSamples, nChannels)
1028 # self.isConfig = True
1032 # self.isConfig = True
1029 #
1033 #
1030 # #Append new data to internal buffer
1034 # #Append new data to internal buffer
1031 # for thisChannel in range(self.__nChannels):
1035 # for thisChannel in range(self.__nChannels):
1032 # bufferByChannel = self.__bufferList[thisChannel]
1036 # bufferByChannel = self.__bufferList[thisChannel]
1033 # bufferByChannel.extend(dataOut.data[thisChannel])
1037 # bufferByChannel.extend(dataOut.data[thisChannel])
1034 #
1038 #
1035 # if self.__pulseFound:
1039 # if self.__pulseFound:
1036 # self.__startIndex -= self.__nSamples
1040 # self.__startIndex -= self.__nSamples
1037 #
1041 #
1038 # #Finding Tx Pulse
1042 # #Finding Tx Pulse
1039 # if not self.__pulseFound:
1043 # if not self.__pulseFound:
1040 # indexFound = self.__findTxPulse(dataOut, channel)
1044 # indexFound = self.__findTxPulse(dataOut, channel)
1041 #
1045 #
1042 # if indexFound == None:
1046 # if indexFound == None:
1043 # dataOut.flagNoData = True
1047 # dataOut.flagNoData = True
1044 # return
1048 # return
1045 #
1049 #
1046 # self.__arrayBuffer = numpy.zeros((self.__nChannels, self.__newNSamples), dtype = numpy.complex)
1050 # self.__arrayBuffer = numpy.zeros((self.__nChannels, self.__newNSamples), dtype = numpy.complex)
1047 # self.__pulseFound = True
1051 # self.__pulseFound = True
1048 # self.__startIndex = indexFound
1052 # self.__startIndex = indexFound
1049 #
1053 #
1050 # #If pulse was found ...
1054 # #If pulse was found ...
1051 # for thisChannel in range(self.__nChannels):
1055 # for thisChannel in range(self.__nChannels):
1052 # bufferByChannel = self.__bufferList[thisChannel]
1056 # bufferByChannel = self.__bufferList[thisChannel]
1053 # #print self.__startIndex
1057 # #print self.__startIndex
1054 # x = numpy.array(bufferByChannel)
1058 # x = numpy.array(bufferByChannel)
1055 # self.__arrayBuffer[thisChannel] = x[self.__startIndex:self.__startIndex+self.__newNSamples]
1059 # self.__arrayBuffer[thisChannel] = x[self.__startIndex:self.__startIndex+self.__newNSamples]
1056 #
1060 #
1057 # deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
1061 # deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
1058 # dataOut.heightList = numpy.arange(self.__newNSamples)*deltaHeight
1062 # dataOut.heightList = numpy.arange(self.__newNSamples)*deltaHeight
1059 # # dataOut.ippSeconds = (self.__newNSamples / deltaHeight)/1e6
1063 # # dataOut.ippSeconds = (self.__newNSamples / deltaHeight)/1e6
1060 #
1064 #
1061 # dataOut.data = self.__arrayBuffer
1065 # dataOut.data = self.__arrayBuffer
1062 #
1066 #
1063 # self.__startIndex += self.__newNSamples
1067 # self.__startIndex += self.__newNSamples
1064 #
1068 #
1065 # return No newline at end of file
1069 # return
General Comments 0
You need to be logged in to leave comments. Login now