##// END OF EJS Templates
-USRP Reader was added to Signal Chain GUI...
Miguel Valdez -
r589:341989823444
parent child
Show More
@@ -0,0 +1,87
1 """
2 Classes to save parameters from Windows.
3
4 -Project window
5 -Voltage window
6 -Spectra window
7 -SpectraHeis window
8 -Correlation window
9
10 """
11
12 class ProjectParms():
13
14 parmsOk = False
15 project_name = None
16 datatype = None
17 ext = None
18 dpath = None
19 startDate = None
20 endDate = None
21 startTime = None
22 endTime = None
23 online = None
24 delay = None
25 walk = None
26 expLabel = None
27 set = None
28 ippKm = None
29
30 def __init__(self):
31
32 self.parmsOk = True
33 self.expLabel = ''
34 self.set = None
35 self.ippKm = None
36 self.walk = None
37 self.delay = None
38
39 def getDatatypeIndex(self):
40
41 indexDatatype = None
42
43 if self.datatype.lower() == 'voltage':
44 indexDatatype = 0
45 if self.datatype.lower() == 'spectra':
46 indexDatatype = 1
47 if self.datatype.lower() == 'fits':
48 indexDatatype = 2
49 if self.datatype.lower() == 'usrp':
50 indexDatatype = 3
51
52 return indexDatatype
53
54 def getExt(self):
55
56 ext = None
57
58 if self.datatype.lower() == 'voltage':
59 ext = '.r'
60 if self.datatype.lower() == 'spectra':
61 ext = '.pdata'
62 if self.datatype.lower() == 'fits':
63 ext = '.fits'
64 if self.datatype.lower() == 'usrp':
65 ext = '.hdf5'
66
67 return ext
68
69 def set(self, project_name, datatype, ext, dpath, online,
70 startDate=None, endDate=None, startTime=None, endTime=None,
71 delay=None, walk=None, set=None, ippKm=None, parmsOk=True):
72
73 project_name = project_name
74 datatype = datatype
75 ext = ext
76 dpath = dpath
77 startDate = startDate
78 endDate = endDate
79 startTime = startTime
80 endTime = endTime
81 online = online
82 delay = delay
83 walk = walk
84 set = set
85 ippKm = ippKm
86
87 self.parmsOk = parmsOk No newline at end of file
@@ -0,0 +1,211
1 # -*- coding: utf-8 -*-
2 """
3 This module contains every model class to create, modify and show a property tree on a GUI.
4 """
5
6 from PyQt4 import QtCore
7 import itertools
8
9 HORIZONTAL_HEADERS = ("Property","Value " )
10
11 HORIZONTAL = ("RAMA :",)
12
13 class PropertyBuffer():
14
15 def __init__(self):
16
17 self.clear()
18
19 def clear(self):
20
21 self.headerList = []
22 self.parmList = []
23 self.valueList = []
24
25 def append(self, header, parm, value):
26
27 self.headerList.append(header)
28 self.parmList.append(parm)
29 self.valueList.append(value)
30
31 return
32
33 def get(self):
34
35 return self.headerList, self.parmList, self.valueList
36
37 def getPropertyModel(self):
38
39 propertiesModel = TreeModel()
40 propertiesModel.showProperties(self.headerList, self.parmList, self.valueList)
41
42 return propertiesModel
43
44
45 class TreeModel(QtCore.QAbstractItemModel):
46 '''
47 a model to display a few names, ordered by encabezado
48
49 '''
50 def __init__(self ,parent=None):
51 super(TreeModel, self).__init__(parent)
52 self.people = []
53
54 def initProjectView(self):
55 """
56 Reemplazo del mΓ©todo showtree
57 """
58 HORIZONTAL_HEADERS = ("Property","Value " )
59 HORIZONTAL = ("RAMA :",)
60 self.rootItem = TreeItem(None, "ALL", None)
61 self.parents = {0 : self.rootItem}
62 self.__setupModelData()
63
64 def initPUVoltageView(self):
65 HORIZONTAL_HEADERS = ("Operation"," Parameter Value " )
66 HORIZONTAL = ("RAMA :",)
67 self.rootItem = TreeItem(None, "ALL", None)
68 self.parents = {0 : self.rootItem}
69 self.__setupModelData()
70
71 def showProperties(self,headerList, parmList, valueList):
72 """
73 set2Obje
74 """
75 for header, parameter, value in itertools.izip(headerList, parmList, valueList):
76 person = person_class(header, parameter, value)
77 self.people.append(person)
78
79 self.rootItem = TreeItem(None, "ALL", None)
80 self.parents = {0 : self.rootItem}
81 self.__setupModelData()
82
83 def columnCount(self, parent=None):
84 if parent and parent.isValid():
85 return parent.internalPointer().columnCount()
86 else:
87 return len(HORIZONTAL_HEADERS)
88
89 def data(self, index, role):
90 if not index.isValid():
91 return QtCore.QVariant()
92
93 item = index.internalPointer()
94 if role == QtCore.Qt.DisplayRole:
95 return item.data(index.column())
96 if role == QtCore.Qt.UserRole:
97 if item:
98 return item.person
99
100 return QtCore.QVariant()
101
102 def index(self, row, column, parent):
103 if not self.hasIndex(row, column, parent):
104 return QtCore.QModelIndex()
105
106 if not parent.isValid():
107 parentItem = self.rootItem
108 else:
109 parentItem = parent.internalPointer()
110
111 childItem = parentItem.child(row)
112 if childItem:
113 return self.createIndex(row, column, childItem)
114 else:
115 return QtCore.QModelIndex()
116
117 def parent(self, index):
118 if not index.isValid():
119 return QtCore.QModelIndex()
120
121 childItem = index.internalPointer()
122 if not childItem:
123 return QtCore.QModelIndex()
124
125 parentItem = childItem.parent()
126
127 if parentItem == self.rootItem:
128 return QtCore.QModelIndex()
129
130 return self.createIndex(parentItem.row(), 0, parentItem)
131
132 def rowCount(self, parent=QtCore.QModelIndex()):
133 if parent.column() > 0:
134 return 0
135 if not parent.isValid():
136 p_Item = self.rootItem
137 else:
138 p_Item = parent.internalPointer()
139 return p_Item.childCount()
140
141 def __setupModelData(self):
142 for person in self.people:
143 if person.value:
144 encabezado = person.header
145
146 if not self.parents.has_key(encabezado):
147 newparent = TreeItem(None, encabezado, self.rootItem)
148 self.rootItem.appendChild(newparent)
149
150 self.parents[encabezado] = newparent
151
152 parentItem = self.parents[encabezado]
153 newItem = TreeItem(person, "", parentItem)
154 parentItem.appendChild(newItem)
155
156 class person_class(object):
157 '''
158 a trivial custom data object
159 '''
160 def __init__(self, header, parameter, value):
161 self.header = header
162 self.parameter = parameter
163 self.value = value
164
165 def __repr__(self):
166 return "PERSON - %s %s"% (self.parameter, self.header)
167
168 class TreeItem(object):
169 '''
170 a python object used to return row/column data, and keep note of
171 it's parents and/or children
172 '''
173 def __init__(self, person, header, parentItem):
174 self.person = person
175 self.parentItem = parentItem
176 self.header = header
177 self.childItems = []
178
179 def appendChild(self, item):
180 self.childItems.append(item)
181
182 def child(self, row):
183 return self.childItems[row]
184
185 def childCount(self):
186 return len(self.childItems)
187
188 def columnCount(self):
189 return 2
190
191 def data(self, column):
192 if self.person == None:
193 if column == 0:
194 return QtCore.QVariant(self.header)
195 if column == 1:
196 return QtCore.QVariant("")
197 else:
198 if column == 0:
199 return QtCore.QVariant(self.person.parameter)
200 if column == 1:
201 return QtCore.QVariant(self.person.value)
202 return QtCore.QVariant()
203
204 def parent(self):
205 return self.parentItem
206
207 def row(self):
208 if self.parentItem:
209 return self.parentItem.childItems.index(self)
210 return 0
211 No newline at end of file
@@ -1,1061 +1,1088
1 '''
1 '''
2 Created on September , 2012
2 Created on September , 2012
3 @author:
3 @author:
4 '''
4 '''
5 from xml.etree.ElementTree import Element, SubElement
5 from xml.etree.ElementTree import Element, SubElement
6 from xml.etree import ElementTree as ET
6 from xml.etree import ElementTree as ET
7 from xml.dom import minidom
7 from xml.dom import minidom
8
8
9 #import datetime
9 #import datetime
10 from model import *
10 from model import *
11
11
12 try:
12 try:
13 from gevent import sleep
13 from gevent import sleep
14 except:
14 except:
15 from time import sleep
15 from time import sleep
16
16
17 import ast
17 import ast
18
18
19 def prettify(elem):
19 def prettify(elem):
20 """Return a pretty-printed XML string for the Element.
20 """Return a pretty-printed XML string for the Element.
21 """
21 """
22 rough_string = ET.tostring(elem, 'utf-8')
22 rough_string = ET.tostring(elem, 'utf-8')
23 reparsed = minidom.parseString(rough_string)
23 reparsed = minidom.parseString(rough_string)
24 return reparsed.toprettyxml(indent=" ")
24 return reparsed.toprettyxml(indent=" ")
25
25
26 class ParameterConf():
26 class ParameterConf():
27
27
28 id = None
28 id = None
29 name = None
29 name = None
30 value = None
30 value = None
31 format = None
31 format = None
32
32
33 __formated_value = None
33 __formated_value = None
34
34
35 ELEMENTNAME = 'Parameter'
35 ELEMENTNAME = 'Parameter'
36
36
37 def __init__(self):
37 def __init__(self):
38
38
39 self.format = 'str'
39 self.format = 'str'
40
40
41 def getElementName(self):
41 def getElementName(self):
42
42
43 return self.ELEMENTNAME
43 return self.ELEMENTNAME
44
44
45 def getValue(self):
45 def getValue(self):
46
46
47 if self.__formated_value != None:
47 if self.__formated_value != None:
48
48
49 return self.__formated_value
49 return self.__formated_value
50
50
51 value = self.value
51 value = self.value
52
52
53 if self.format == 'bool':
53 if self.format == 'bool':
54 value = int(value)
54 value = int(value)
55
55
56 if self.format == 'list':
56 if self.format == 'list':
57 strList = value.split(',')
57 strList = value.split(',')
58
58
59 self.__formated_value = strList
59 self.__formated_value = strList
60
60
61 return self.__formated_value
61 return self.__formated_value
62
62
63 if self.format == 'intlist':
63 if self.format == 'intlist':
64 """
64 """
65 Example:
65 Example:
66 value = (0,1,2)
66 value = (0,1,2)
67 """
67 """
68 value = value.replace('(', '')
68 value = value.replace('(', '')
69 value = value.replace(')', '')
69 value = value.replace(')', '')
70
70
71 value = value.replace('[', '')
71 value = value.replace('[', '')
72 value = value.replace(']', '')
72 value = value.replace(']', '')
73
73
74 strList = value.split(',')
74 strList = value.split(',')
75 intList = [int(x) for x in strList]
75 intList = [int(x) for x in strList]
76
76
77 self.__formated_value = intList
77 self.__formated_value = intList
78
78
79 return self.__formated_value
79 return self.__formated_value
80
80
81 if self.format == 'floatlist':
81 if self.format == 'floatlist':
82 """
82 """
83 Example:
83 Example:
84 value = (0.5, 1.4, 2.7)
84 value = (0.5, 1.4, 2.7)
85 """
85 """
86
86
87 value = value.replace('(', '')
87 value = value.replace('(', '')
88 value = value.replace(')', '')
88 value = value.replace(')', '')
89
89
90 value = value.replace('[', '')
90 value = value.replace('[', '')
91 value = value.replace(']', '')
91 value = value.replace(']', '')
92
92
93 strList = value.split(',')
93 strList = value.split(',')
94 floatList = [float(x) for x in strList]
94 floatList = [float(x) for x in strList]
95
95
96 self.__formated_value = floatList
96 self.__formated_value = floatList
97
97
98 return self.__formated_value
98 return self.__formated_value
99
99
100 if self.format == 'date':
100 if self.format == 'date':
101 strList = value.split('/')
101 strList = value.split('/')
102 intList = [int(x) for x in strList]
102 intList = [int(x) for x in strList]
103 date = datetime.date(intList[0], intList[1], intList[2])
103 date = datetime.date(intList[0], intList[1], intList[2])
104
104
105 self.__formated_value = date
105 self.__formated_value = date
106
106
107 return self.__formated_value
107 return self.__formated_value
108
108
109 if self.format == 'time':
109 if self.format == 'time':
110 strList = value.split(':')
110 strList = value.split(':')
111 intList = [int(x) for x in strList]
111 intList = [int(x) for x in strList]
112 time = datetime.time(intList[0], intList[1], intList[2])
112 time = datetime.time(intList[0], intList[1], intList[2])
113
113
114 self.__formated_value = time
114 self.__formated_value = time
115
115
116 return self.__formated_value
116 return self.__formated_value
117
117
118 if self.format == 'pairslist':
118 if self.format == 'pairslist':
119 """
119 """
120 Example:
120 Example:
121 value = (0,1),(1,2)
121 value = (0,1),(1,2)
122 """
122 """
123
123
124 value = value.replace('(', '')
124 value = value.replace('(', '')
125 value = value.replace(')', '')
125 value = value.replace(')', '')
126
126
127 value = value.replace('[', '')
127 value = value.replace('[', '')
128 value = value.replace(']', '')
128 value = value.replace(']', '')
129
129
130 strList = value.split(',')
130 strList = value.split(',')
131 intList = [int(item) for item in strList]
131 intList = [int(item) for item in strList]
132 pairList = []
132 pairList = []
133 for i in range(len(intList)/2):
133 for i in range(len(intList)/2):
134 pairList.append((intList[i*2], intList[i*2 + 1]))
134 pairList.append((intList[i*2], intList[i*2 + 1]))
135
135
136 self.__formated_value = pairList
136 self.__formated_value = pairList
137
137
138 return self.__formated_value
138 return self.__formated_value
139
139
140 if self.format == 'multilist':
140 if self.format == 'multilist':
141 """
141 """
142 Example:
142 Example:
143 value = (0,1,2),(3,4,5)
143 value = (0,1,2),(3,4,5)
144 """
144 """
145 multiList = ast.literal_eval(value)
145 multiList = ast.literal_eval(value)
146
146
147 self.__formated_value = multiList
147 self.__formated_value = multiList
148
148
149 return self.__formated_value
149 return self.__formated_value
150
150
151 format_func = eval(self.format)
151 format_func = eval(self.format)
152
152
153 self.__formated_value = format_func(value)
153 self.__formated_value = format_func(value)
154
154
155 return self.__formated_value
155 return self.__formated_value
156
156
157 def setup(self, id, name, value, format='str'):
157 def setup(self, id, name, value, format='str'):
158
158
159 self.id = id
159 self.id = id
160 self.name = name
160 self.name = name
161 self.value = str(value)
161 self.value = str(value)
162 self.format = str.lower(format)
162 self.format = str.lower(format)
163
163
164 def update(self, name, value, format='str'):
164 def update(self, name, value, format='str'):
165
165
166 self.name = name
166 self.name = name
167 self.value = str(value)
167 self.value = str(value)
168 self.format = format
168 self.format = format
169
169
170 def makeXml(self, opElement):
170 def makeXml(self, opElement):
171
171
172 parmElement = SubElement(opElement, self.ELEMENTNAME)
172 parmElement = SubElement(opElement, self.ELEMENTNAME)
173 parmElement.set('id', str(self.id))
173 parmElement.set('id', str(self.id))
174 parmElement.set('name', self.name)
174 parmElement.set('name', self.name)
175 parmElement.set('value', self.value)
175 parmElement.set('value', self.value)
176 parmElement.set('format', self.format)
176 parmElement.set('format', self.format)
177
177
178 def readXml(self, parmElement):
178 def readXml(self, parmElement):
179
179
180 self.id = parmElement.get('id')
180 self.id = parmElement.get('id')
181 self.name = parmElement.get('name')
181 self.name = parmElement.get('name')
182 self.value = parmElement.get('value')
182 self.value = parmElement.get('value')
183 self.format = str.lower(parmElement.get('format'))
183 self.format = str.lower(parmElement.get('format'))
184
184
185 #Compatible with old signal chain version
185 #Compatible with old signal chain version
186 if self.format == 'int' and self.name == 'idfigure':
186 if self.format == 'int' and self.name == 'idfigure':
187 self.name = 'id'
187 self.name = 'id'
188
188
189 def printattr(self):
189 def printattr(self):
190
190
191 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
191 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
192
192
193 class OperationConf():
193 class OperationConf():
194
194
195 id = None
195 id = None
196 name = None
196 name = None
197 priority = None
197 priority = None
198 type = None
198 type = None
199
199
200 parmConfObjList = []
200 parmConfObjList = []
201
201
202 ELEMENTNAME = 'Operation'
202 ELEMENTNAME = 'Operation'
203
203
204 def __init__(self):
204 def __init__(self):
205
205
206 self.id = 0
206 self.id = '0'
207 self.name = None
207 self.name = None
208 self.priority = None
208 self.priority = None
209 self.type = 'self'
209 self.type = 'self'
210
210
211
211
212 def __getNewId(self):
212 def __getNewId(self):
213
213
214 return int(self.id)*10 + len(self.parmConfObjList) + 1
214 return int(self.id)*10 + len(self.parmConfObjList) + 1
215
215
216 def getElementName(self):
216 def getElementName(self):
217
217
218 return self.ELEMENTNAME
218 return self.ELEMENTNAME
219
219
220 def getParameterObjList(self):
220 def getParameterObjList(self):
221
221
222 return self.parmConfObjList
222 return self.parmConfObjList
223
223
224 def getParameterObj(self, parameterName):
224 def getParameterObj(self, parameterName):
225
225
226 for parmConfObj in self.parmConfObjList:
226 for parmConfObj in self.parmConfObjList:
227
227
228 if parmConfObj.name != parameterName:
228 if parmConfObj.name != parameterName:
229 continue
229 continue
230
230
231 return parmConfObj
231 return parmConfObj
232
232
233 return None
233 return None
234
234
235 def getParameterObjfromValue(self,parameterValue):
235 def getParameterObjfromValue(self,parameterValue):
236 for parmConfObj in self.parmConfObjList:
236 for parmConfObj in self.parmConfObjList:
237
237
238 if parmConfObj.getValue() != parameterValue:
238 if parmConfObj.getValue() != parameterValue:
239 continue
239 continue
240
240
241 return parmConfObj.getValue()
241 return parmConfObj.getValue()
242
242
243 return None
243 return None
244
244
245 def getParameterValue(self, parameterName):
245 def getParameterValue(self, parameterName):
246
246
247 parameterObj = self.getParameterObj(parameterName)
247 parameterObj = self.getParameterObj(parameterName)
248 value = parameterObj.getValue()
248 value = parameterObj.getValue()
249
249
250 return value
250 return value
251
251
252 def setup(self, id, name, priority, type):
252 def setup(self, id, name, priority, type):
253
253
254 self.id = id
254 self.id = id
255 self.name = name
255 self.name = name
256 self.type = type
256 self.type = type
257 self.priority = priority
257 self.priority = priority
258
258
259 self.parmConfObjList = []
259 self.parmConfObjList = []
260
260
261 def removeParameters(self):
261 def removeParameters(self):
262
262
263 for obj in self.parmConfObjList:
263 for obj in self.parmConfObjList:
264 del obj
264 del obj
265
265
266 self.parmConfObjList = []
266 self.parmConfObjList = []
267
267
268 def addParameter(self, name, value, format='str'):
268 def addParameter(self, name, value, format='str'):
269
269
270 id = self.__getNewId()
270 id = self.__getNewId()
271
271
272 parmConfObj = ParameterConf()
272 parmConfObj = ParameterConf()
273 parmConfObj.setup(id, name, value, format)
273 parmConfObj.setup(id, name, value, format)
274
274
275 self.parmConfObjList.append(parmConfObj)
275 self.parmConfObjList.append(parmConfObj)
276
276
277 return parmConfObj
277 return parmConfObj
278
278
279 def changeParameter(self, name, value, format='str'):
279 def changeParameter(self, name, value, format='str'):
280
280
281 parmConfObj = self.getParameterObj(name)
281 parmConfObj = self.getParameterObj(name)
282 parmConfObj.update(name, value, format)
282 parmConfObj.update(name, value, format)
283
283
284 return parmConfObj
284 return parmConfObj
285
285
286 def makeXml(self, upElement):
286 def makeXml(self, upElement):
287
287
288 opElement = SubElement(upElement, self.ELEMENTNAME)
288 opElement = SubElement(upElement, self.ELEMENTNAME)
289 opElement.set('id', str(self.id))
289 opElement.set('id', str(self.id))
290 opElement.set('name', self.name)
290 opElement.set('name', self.name)
291 opElement.set('type', self.type)
291 opElement.set('type', self.type)
292 opElement.set('priority', str(self.priority))
292 opElement.set('priority', str(self.priority))
293
293
294 for parmConfObj in self.parmConfObjList:
294 for parmConfObj in self.parmConfObjList:
295 parmConfObj.makeXml(opElement)
295 parmConfObj.makeXml(opElement)
296
296
297 def readXml(self, opElement):
297 def readXml(self, opElement):
298
298
299 self.id = opElement.get('id')
299 self.id = opElement.get('id')
300 self.name = opElement.get('name')
300 self.name = opElement.get('name')
301 self.type = opElement.get('type')
301 self.type = opElement.get('type')
302 self.priority = opElement.get('priority')
302 self.priority = opElement.get('priority')
303
303
304 #Compatible with old signal chain version
304 #Compatible with old signal chain version
305 #Use of 'run' method instead 'init'
305 #Use of 'run' method instead 'init'
306 if self.type == 'self' and self.name == 'init':
306 if self.type == 'self' and self.name == 'init':
307 self.name = 'run'
307 self.name = 'run'
308
308
309 self.parmConfObjList = []
309 self.parmConfObjList = []
310
310
311 parmElementList = opElement.getiterator(ParameterConf().getElementName())
311 parmElementList = opElement.getiterator(ParameterConf().getElementName())
312
312
313 for parmElement in parmElementList:
313 for parmElement in parmElementList:
314 parmConfObj = ParameterConf()
314 parmConfObj = ParameterConf()
315 parmConfObj.readXml(parmElement)
315 parmConfObj.readXml(parmElement)
316
316
317 #Compatible with old signal chain version
317 #Compatible with old signal chain version
318 #If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
318 #If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
319 if self.type != 'self' and self.name == 'Plot':
319 if self.type != 'self' and self.name == 'Plot':
320 if parmConfObj.format == 'str' and parmConfObj.name == 'type':
320 if parmConfObj.format == 'str' and parmConfObj.name == 'type':
321 self.name = parmConfObj.value
321 self.name = parmConfObj.value
322 continue
322 continue
323
323
324 self.parmConfObjList.append(parmConfObj)
324 self.parmConfObjList.append(parmConfObj)
325
325
326 def printattr(self):
326 def printattr(self):
327
327
328 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
328 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
329 self.id,
329 self.id,
330 self.name,
330 self.name,
331 self.type,
331 self.type,
332 self.priority)
332 self.priority)
333
333
334 for parmConfObj in self.parmConfObjList:
334 for parmConfObj in self.parmConfObjList:
335 parmConfObj.printattr()
335 parmConfObj.printattr()
336
336
337 def createObject(self):
337 def createObject(self):
338
338
339 if self.type == 'self':
339 if self.type == 'self':
340 raise ValueError, "This operation type cannot be created"
340 raise ValueError, "This operation type cannot be created"
341
341
342 if self.type == 'external' or self.type == 'other':
342 if self.type == 'external' or self.type == 'other':
343 className = eval(self.name)
343 className = eval(self.name)
344 opObj = className()
344 opObj = className()
345
345
346 return opObj
346 return opObj
347
347
348 class ProcUnitConf():
348 class ProcUnitConf():
349
349
350 id = None
350 id = None
351 name = None
351 name = None
352 datatype = None
352 datatype = None
353 inputId = None
353 inputId = None
354 parentId = None
354 parentId = None
355
355
356 opConfObjList = []
356 opConfObjList = []
357
357
358 procUnitObj = None
358 procUnitObj = None
359 opObjList = []
359 opObjList = []
360
360
361 ELEMENTNAME = 'ProcUnit'
361 ELEMENTNAME = 'ProcUnit'
362
362
363 def __init__(self):
363 def __init__(self):
364
364
365 self.id = None
365 self.id = None
366 self.datatype = None
366 self.datatype = None
367 self.name = None
367 self.name = None
368 self.inputId = None
368 self.inputId = None
369
369
370 self.opConfObjList = []
370 self.opConfObjList = []
371
371
372 self.procUnitObj = None
372 self.procUnitObj = None
373 self.opObjDict = {}
373 self.opObjDict = {}
374
374
375 def __getPriority(self):
375 def __getPriority(self):
376
376
377 return len(self.opConfObjList)+1
377 return len(self.opConfObjList)+1
378
378
379 def __getNewId(self):
379 def __getNewId(self):
380
380
381 return int(self.id)*10 + len(self.opConfObjList) + 1
381 return int(self.id)*10 + len(self.opConfObjList) + 1
382
382
383 def getElementName(self):
383 def getElementName(self):
384
384
385 return self.ELEMENTNAME
385 return self.ELEMENTNAME
386
386
387 def getId(self):
387 def getId(self):
388
388
389 return str(self.id)
389 return self.id
390
390
391 def getInputId(self):
391 def getInputId(self):
392
392
393 return str(self.inputId)
393 return self.inputId
394
394
395 def getOperationObjList(self):
395 def getOperationObjList(self):
396
396
397 return self.opConfObjList
397 return self.opConfObjList
398
398
399 def getOperationObj(self, name=None):
399 def getOperationObj(self, name=None):
400
400
401 for opConfObj in self.opConfObjList:
401 for opConfObj in self.opConfObjList:
402
402
403 if opConfObj.name != name:
403 if opConfObj.name != name:
404 continue
404 continue
405
405
406 return opConfObj
406 return opConfObj
407
407
408 return None
408 return None
409
409
410 def getOpObjfromParamValue(self,value=None):
410 def getOpObjfromParamValue(self,value=None):
411
411
412 for opConfObj in self.opConfObjList:
412 for opConfObj in self.opConfObjList:
413 if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
413 if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
414 continue
414 continue
415 return opConfObj
415 return opConfObj
416 return None
416 return None
417
417
418 def getProcUnitObj(self):
418 def getProcUnitObj(self):
419
419
420 return self.procUnitObj
420 return self.procUnitObj
421
421
422 def setup(self, id, name, datatype, inputId, parentId=None):
422 def setup(self, id, name, datatype, inputId, parentId=None):
423
423
424 self.id = id
424 self.id = id
425 self.name = name
425 self.name = name
426 self.datatype = datatype
426 self.datatype = datatype
427 self.inputId = inputId
427 self.inputId = inputId
428 self.parentId = parentId
428 self.parentId = parentId
429
429
430 self.opConfObjList = []
430 self.opConfObjList = []
431
431
432 self.addOperation(name='run', optype='self')
432 self.addOperation(name='run', optype='self')
433
433
434 def removeOperations(self):
434 def removeOperations(self):
435
435
436 for obj in self.opConfObjList:
436 for obj in self.opConfObjList:
437 del obj
437 del obj
438
438
439 self.opConfObjList = []
439 self.opConfObjList = []
440 self.addOperation(name='run')
440 self.addOperation(name='run')
441
441
442 def addParameter(self, **kwargs):
442 def addParameter(self, **kwargs):
443 '''
443 '''
444 Add parameters to "run" operation
444 Add parameters to "run" operation
445 '''
445 '''
446 opObj = self.opConfObjList[0]
446 opObj = self.opConfObjList[0]
447
447
448 opObj.addParameter(**kwargs)
448 opObj.addParameter(**kwargs)
449
449
450 return opObj
450 return opObj
451
451
452 def addOperation(self, name, optype='self'):
452 def addOperation(self, name, optype='self'):
453
453
454 id = self.__getNewId()
454 id = self.__getNewId()
455 priority = self.__getPriority()
455 priority = self.__getPriority()
456
456
457 opConfObj = OperationConf()
457 opConfObj = OperationConf()
458 opConfObj.setup(id, name=name, priority=priority, type=optype)
458 opConfObj.setup(id, name=name, priority=priority, type=optype)
459
459
460 self.opConfObjList.append(opConfObj)
460 self.opConfObjList.append(opConfObj)
461
461
462 return opConfObj
462 return opConfObj
463
463
464 def makeXml(self, procUnitElement):
464 def makeXml(self, procUnitElement):
465
465
466 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
466 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
467 upElement.set('id', str(self.id))
467 upElement.set('id', str(self.id))
468 upElement.set('name', self.name)
468 upElement.set('name', self.name)
469 upElement.set('datatype', self.datatype)
469 upElement.set('datatype', self.datatype)
470 upElement.set('inputId', str(self.inputId))
470 upElement.set('inputId', str(self.inputId))
471
471
472 for opConfObj in self.opConfObjList:
472 for opConfObj in self.opConfObjList:
473 opConfObj.makeXml(upElement)
473 opConfObj.makeXml(upElement)
474
474
475 def readXml(self, upElement):
475 def readXml(self, upElement):
476
476
477 self.id = upElement.get('id')
477 self.id = upElement.get('id')
478 self.name = upElement.get('name')
478 self.name = upElement.get('name')
479 self.datatype = upElement.get('datatype')
479 self.datatype = upElement.get('datatype')
480 self.inputId = upElement.get('inputId')
480 self.inputId = upElement.get('inputId')
481
481
482 if self.inputId == 'None':
483 self.inputId = '0'
484
482 self.opConfObjList = []
485 self.opConfObjList = []
483
486
484 opElementList = upElement.getiterator(OperationConf().getElementName())
487 opElementList = upElement.getiterator(OperationConf().getElementName())
485
488
486 for opElement in opElementList:
489 for opElement in opElementList:
487 opConfObj = OperationConf()
490 opConfObj = OperationConf()
488 opConfObj.readXml(opElement)
491 opConfObj.readXml(opElement)
489 self.opConfObjList.append(opConfObj)
492 self.opConfObjList.append(opConfObj)
490
493
491 def printattr(self):
494 def printattr(self):
492
495
493 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
496 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
494 self.id,
497 self.id,
495 self.name,
498 self.name,
496 self.datatype,
499 self.datatype,
497 self.inputId)
500 self.inputId)
498
501
499 for opConfObj in self.opConfObjList:
502 for opConfObj in self.opConfObjList:
500 opConfObj.printattr()
503 opConfObj.printattr()
501
504
502 def createObjects(self):
505 def createObjects(self):
503
506
504 className = eval(self.name)
507 className = eval(self.name)
505 procUnitObj = className()
508 procUnitObj = className()
506
509
507 for opConfObj in self.opConfObjList:
510 for opConfObj in self.opConfObjList:
508
511
509 if opConfObj.type == 'self':
512 if opConfObj.type == 'self':
510 continue
513 continue
511
514
512 opObj = opConfObj.createObject()
515 opObj = opConfObj.createObject()
513
516
514 self.opObjDict[opConfObj.id] = opObj
517 self.opObjDict[opConfObj.id] = opObj
515 procUnitObj.addOperation(opObj, opConfObj.id)
518 procUnitObj.addOperation(opObj, opConfObj.id)
516
519
517 self.procUnitObj = procUnitObj
520 self.procUnitObj = procUnitObj
518
521
519 return procUnitObj
522 return procUnitObj
520
523
521 def run(self):
524 def run(self):
522
525
523 finalSts = False
526 finalSts = False
524
527
525 for opConfObj in self.opConfObjList:
528 for opConfObj in self.opConfObjList:
526
529
527 kwargs = {}
530 kwargs = {}
528 for parmConfObj in opConfObj.getParameterObjList():
531 for parmConfObj in opConfObj.getParameterObjList():
529 if opConfObj.name == 'run' and parmConfObj.name == 'datatype':
532 if opConfObj.name == 'run' and parmConfObj.name == 'datatype':
530 continue
533 continue
531
534
532 kwargs[parmConfObj.name] = parmConfObj.getValue()
535 kwargs[parmConfObj.name] = parmConfObj.getValue()
533
536
534 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
537 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
535 sts = self.procUnitObj.call(opType = opConfObj.type,
538 sts = self.procUnitObj.call(opType = opConfObj.type,
536 opName = opConfObj.name,
539 opName = opConfObj.name,
537 opId = opConfObj.id,
540 opId = opConfObj.id,
538 **kwargs)
541 **kwargs)
539 finalSts = finalSts or sts
542 finalSts = finalSts or sts
540
543
541 return finalSts
544 return finalSts
542
545
543 def close(self):
546 def close(self):
544
547
545 for opConfObj in self.opConfObjList:
548 for opConfObj in self.opConfObjList:
546 if opConfObj.type == 'self':
549 if opConfObj.type == 'self':
547 continue
550 continue
548
551
549 opObj = self.procUnitObj.getOperationObj(opConfObj.id)
552 opObj = self.procUnitObj.getOperationObj(opConfObj.id)
550 opObj.close()
553 opObj.close()
551
554
552 self.procUnitObj.close()
555 self.procUnitObj.close()
553
556
554 return
557 return
555
558
556 class ReadUnitConf(ProcUnitConf):
559 class ReadUnitConf(ProcUnitConf):
557
560
558 path = None
561 path = None
559 startDate = None
562 startDate = None
560 endDate = None
563 endDate = None
561 startTime = None
564 startTime = None
562 endTime = None
565 endTime = None
563
566
564 ELEMENTNAME = 'ReadUnit'
567 ELEMENTNAME = 'ReadUnit'
565
568
566 def __init__(self):
569 def __init__(self):
567
570
568 self.id = None
571 self.id = None
569 self.datatype = None
572 self.datatype = None
570 self.name = None
573 self.name = None
571 self.inputId = 0
574 self.inputId = None
575
576 self.parentId = None
572
577
573 self.opConfObjList = []
578 self.opConfObjList = []
574 self.opObjList = []
579 self.opObjList = []
575
580
576 def getElementName(self):
581 def getElementName(self):
577
582
578 return self.ELEMENTNAME
583 return self.ELEMENTNAME
579
584
580 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs):
585 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs):
581
586
582 self.id = id
587 self.id = id
583 self.name = name
588 self.name = name
584 self.datatype = datatype
589 self.datatype = datatype
585
590
586 self.path = path
591 self.path = path
587 self.startDate = startDate
592 self.startDate = startDate
588 self.endDate = endDate
593 self.endDate = endDate
589 self.startTime = startTime
594 self.startTime = startTime
590 self.endTime = endTime
595 self.endTime = endTime
591
596
597 self.inputId = '0'
598 self.parentId = parentId
599
592 self.addRunOperation(**kwargs)
600 self.addRunOperation(**kwargs)
593
601
594 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, **kwargs):
602 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
603
604 if name==None:
605 if 'Reader' in datatype:
606 name = datatype
607 else:
608 name = '%sReader' %(datatype)
595
609
610 if datatype==None:
611 datatype = name.replace('Reader','')
612
596 self.datatype = datatype
613 self.datatype = datatype
614 self.name = name
597 self.path = path
615 self.path = path
598 self.startDate = startDate
616 self.startDate = startDate
599 self.endDate = endDate
617 self.endDate = endDate
600 self.startTime = startTime
618 self.startTime = startTime
601 self.endTime = endTime
619 self.endTime = endTime
602
620
621 self.inputId = None
622 self.parentId = parentId
623
603 self.updateRunOperation(**kwargs)
624 self.updateRunOperation(**kwargs)
604
625
605 def addRunOperation(self, **kwargs):
626 def addRunOperation(self, **kwargs):
606
627
607 opObj = self.addOperation(name = 'run', optype = 'self')
628 opObj = self.addOperation(name = 'run', optype = 'self')
608
629
609 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
630 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
610 opObj.addParameter(name='path' , value=self.path, format='str')
631 opObj.addParameter(name='path' , value=self.path, format='str')
611 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
632 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
612 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
633 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
613 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
634 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
614 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
635 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
615
636
616 for key, value in kwargs.items():
637 for key, value in kwargs.items():
617 opObj.addParameter(name=key, value=value, format=type(value).__name__)
638 opObj.addParameter(name=key, value=value, format=type(value).__name__)
618
639
619 return opObj
640 return opObj
620
641
621 def updateRunOperation(self, **kwargs):
642 def updateRunOperation(self, **kwargs):
622
643
623 opObj = self.getOperationObj(name = 'run')
644 opObj = self.getOperationObj(name = 'run')
624 opObj.removeParameters()
645 opObj.removeParameters()
625
646
626 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
647 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
627 opObj.addParameter(name='path' , value=self.path, format='str')
648 opObj.addParameter(name='path' , value=self.path, format='str')
628 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
649 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
629 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
650 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
630 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
651 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
631 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
652 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
632
653
633 for key, value in kwargs.items():
654 for key, value in kwargs.items():
634 opObj.addParameter(name=key, value=value, format=type(value).__name__)
655 opObj.addParameter(name=key, value=value, format=type(value).__name__)
635
656
636 return opObj
657 return opObj
637
658
638 class Project():
659 class Project():
639
660
640 id = None
661 id = None
641 name = None
662 name = None
642 description = None
663 description = None
643 # readUnitConfObjList = None
664 # readUnitConfObjList = None
644 procUnitConfObjDict = None
665 procUnitConfObjDict = None
645
666
646 ELEMENTNAME = 'Project'
667 ELEMENTNAME = 'Project'
647
668
648 def __init__(self, control=None, dataq=None):
669 def __init__(self, control=None, dataq=None):
649
670
650 self.id = None
671 self.id = None
651 self.name = None
672 self.name = None
652 self.description = None
673 self.description = None
653
674
654 self.procUnitConfObjDict = {}
675 self.procUnitConfObjDict = {}
655
676
656 #global data_q
677 #global data_q
657 #data_q = dataq
678 #data_q = dataq
658
679
659 if control==None:
680 if control==None:
660 control = {}
681 control = {}
661 control['stop'] = False
682 control['stop'] = False
662 control['pause'] = False
683 control['pause'] = False
663
684
664 self.control = control
685 self.control = control
665
686
666 def __getNewId(self):
687 def __getNewId(self):
667
688
668 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
689 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
669
690
670 return str(id)
691 return str(id)
671
692
672 def getElementName(self):
693 def getElementName(self):
673
694
674 return self.ELEMENTNAME
695 return self.ELEMENTNAME
675
696
676 def getId(self):
697 def getId(self):
677
698
678 return self.id
699 return self.id
679
700
680 def setup(self, id, name, description):
701 def setup(self, id, name, description):
681
702
682 self.id = id
703 self.id = id
683 self.name = name
704 self.name = name
684 self.description = description
705 self.description = description
685
706
686 def update(self, name, description):
707 def update(self, name, description):
687
708
688 self.name = name
709 self.name = name
689 self.description = description
710 self.description = description
690
711
691 def addReadUnit(self, datatype=None, name=None, **kwargs):
712 def addReadUnit(self, datatype=None, name=None, **kwargs):
692
713
693 #Compatible with old signal chain version
714 #Compatible with old signal chain version
694 if datatype==None and name==None:
715 if datatype==None and name==None:
695 raise ValueError, "datatype or name should be defined"
716 raise ValueError, "datatype or name should be defined"
696
717
697 if name==None:
718 if name==None:
698 if 'Reader' in datatype:
719 if 'Reader' in datatype:
699 name = datatype
720 name = datatype
700 else:
721 else:
701 name = '%sReader' %(datatype)
722 name = '%sReader' %(datatype)
702
723
703 if datatype==None:
724 if datatype==None:
704 datatype = name.replace('Reader','')
725 datatype = name.replace('Reader','')
705
726
706 id = self.__getNewId()
727 idReadUnit = self.__getNewId()
707
728
708 readUnitConfObj = ReadUnitConf()
729 readUnitConfObj = ReadUnitConf()
709 readUnitConfObj.setup(id, name, datatype, parentId=self.id, **kwargs)
730 readUnitConfObj.setup(idReadUnit, name, datatype, parentId=self.id, **kwargs)
710
731
711 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
732 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
712
733
713 return readUnitConfObj
734 return readUnitConfObj
714
735
715 def addProcUnit(self, inputId=0, datatype=None, name=None):
736 def addProcUnit(self, inputId='0', datatype=None, name=None):
716
737
717 #Compatible with old signal chain version
738 #Compatible with old signal chain version
718 if datatype==None and name==None:
739 if datatype==None and name==None:
719 raise ValueError, "datatype or name should be defined"
740 raise ValueError, "datatype or name should be defined"
720
741
721 if name==None:
742 if name==None:
722 if 'Proc' in datatype:
743 if 'Proc' in datatype:
723 name = datatype
744 name = datatype
724 else:
745 else:
725 name = '%sProc' %(datatype)
746 name = '%sProc' %(datatype)
726
747
727 if datatype==None:
748 if datatype==None:
728 datatype = name.replace('Proc','')
749 datatype = name.replace('Proc','')
729
750
730 id = self.__getNewId()
751 idProcUnit = self.__getNewId()
731
752
732 procUnitConfObj = ProcUnitConf()
753 procUnitConfObj = ProcUnitConf()
733 procUnitConfObj.setup(id, name, datatype, inputId, parentId=self.id)
754 procUnitConfObj.setup(idProcUnit, name, datatype, inputId, parentId=self.id)
734
755
735 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
756 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
736
757
737 return procUnitConfObj
758 return procUnitConfObj
738
759
739 def removeProcUnit(self, id):
760 def removeProcUnit(self, id):
740
761
741 if id in self.procUnitConfObjDict.keys():
762 if id in self.procUnitConfObjDict.keys():
742 self.procUnitConfObjDict.pop(id)
763 self.procUnitConfObjDict.pop(id)
743
764
744 def getReadUnitId(self):
765 def getReadUnitId(self):
745
766
746 readUnitConfObj = self.getReadUnitObj()
767 readUnitConfObj = self.getReadUnitObj()
747
768
748 return readUnitConfObj.id
769 return readUnitConfObj.id
749
770
750 def getReadUnitObj(self):
771 def getReadUnitObj(self):
751
772
752 for obj in self.procUnitConfObjDict.values():
773 for obj in self.procUnitConfObjDict.values():
753 if obj.getElementName() == "ReadUnit":
774 if obj.getElementName() == "ReadUnit":
754 return obj
775 return obj
755
776
756 return None
777 return None
757
778
758 def getProcUnitObj(self, id):
779 def getProcUnitObj(self, id):
759
780
760 return self.procUnitConfObjDict[id]
781 return self.procUnitConfObjDict[id]
761
782
762 def getProcUnitObjByName(self, name):
783 def getProcUnitObjByName(self, name):
763
784
764 for obj in self.procUnitConfObjDict.values():
785 for obj in self.procUnitConfObjDict.values():
765 if obj.name == name:
786 if obj.name == name:
766 return obj
787 return obj
767
788
768 return None
789 return None
769
790
770 def makeXml(self):
791 def makeXml(self):
771
792
772 projectElement = Element('Project')
793 projectElement = Element('Project')
773 projectElement.set('id', str(self.id))
794 projectElement.set('id', str(self.id))
774 projectElement.set('name', self.name)
795 projectElement.set('name', self.name)
775 projectElement.set('description', self.description)
796 projectElement.set('description', self.description)
776
797
777 # for readUnitConfObj in self.readUnitConfObjList:
798 # for readUnitConfObj in self.readUnitConfObjList:
778 # readUnitConfObj.makeXml(projectElement)
799 # readUnitConfObj.makeXml(projectElement)
779
800
780 for procUnitConfObj in self.procUnitConfObjDict.values():
801 for procUnitConfObj in self.procUnitConfObjDict.values():
781 procUnitConfObj.makeXml(projectElement)
802 procUnitConfObj.makeXml(projectElement)
782
803
783 self.projectElement = projectElement
804 self.projectElement = projectElement
784
805
785 def writeXml(self, filename):
806 def writeXml(self, filename):
786
807
787 self.makeXml()
808 self.makeXml()
788
809
789 #print prettify(self.projectElement)
810 #print prettify(self.projectElement)
790
811
791 ElementTree(self.projectElement).write(filename, method='xml')
812 ElementTree(self.projectElement).write(filename, method='xml')
792
813
793 def readXml(self, filename):
814 def readXml(self, filename):
794
815
795 #tree = ET.parse(filename)
816 #tree = ET.parse(filename)
796 self.projectElement = None
817 self.projectElement = None
797 # self.readUnitConfObjList = []
818 # self.readUnitConfObjList = []
798 self.procUnitConfObjDict = {}
819 self.procUnitConfObjDict = {}
799
820
800 self.projectElement = ElementTree().parse(filename)
821 self.projectElement = ElementTree().parse(filename)
801
822
802 self.project = self.projectElement.tag
823 self.project = self.projectElement.tag
803
824
804 self.id = self.projectElement.get('id')
825 self.id = self.projectElement.get('id')
805 self.name = self.projectElement.get('name')
826 self.name = self.projectElement.get('name')
806 self.description = self.projectElement.get('description')
827 self.description = self.projectElement.get('description')
807
828
808 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
829 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
809
830
810 for readUnitElement in readUnitElementList:
831 for readUnitElement in readUnitElementList:
811 readUnitConfObj = ReadUnitConf()
832 readUnitConfObj = ReadUnitConf()
812 readUnitConfObj.readXml(readUnitElement)
833 readUnitConfObj.readXml(readUnitElement)
813
834
835 if readUnitConfObj.parentId == None:
836 readUnitConfObj.parentId = self.id
837
814 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
838 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
815
839
816 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
840 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
817
841
818 for procUnitElement in procUnitElementList:
842 for procUnitElement in procUnitElementList:
819 procUnitConfObj = ProcUnitConf()
843 procUnitConfObj = ProcUnitConf()
820 procUnitConfObj.readXml(procUnitElement)
844 procUnitConfObj.readXml(procUnitElement)
821
845
846 if procUnitConfObj.parentId == None:
847 procUnitConfObj.parentId = self.id
848
822 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
849 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
823
850
824 def printattr(self):
851 def printattr(self):
825
852
826 print "Project[%s]: name = %s, description = %s" %(self.id,
853 print "Project[%s]: name = %s, description = %s" %(self.id,
827 self.name,
854 self.name,
828 self.description)
855 self.description)
829
856
830 # for readUnitConfObj in self.readUnitConfObjList:
857 # for readUnitConfObj in self.readUnitConfObjList:
831 # readUnitConfObj.printattr()
858 # readUnitConfObj.printattr()
832
859
833 for procUnitConfObj in self.procUnitConfObjDict.values():
860 for procUnitConfObj in self.procUnitConfObjDict.values():
834 procUnitConfObj.printattr()
861 procUnitConfObj.printattr()
835
862
836 def createObjects(self):
863 def createObjects(self):
837
864
838 # for readUnitConfObj in self.readUnitConfObjList:
865 # for readUnitConfObj in self.readUnitConfObjList:
839 # readUnitConfObj.createObjects()
866 # readUnitConfObj.createObjects()
840
867
841 for procUnitConfObj in self.procUnitConfObjDict.values():
868 for procUnitConfObj in self.procUnitConfObjDict.values():
842 procUnitConfObj.createObjects()
869 procUnitConfObj.createObjects()
843
870
844 def __connect(self, objIN, thisObj):
871 def __connect(self, objIN, thisObj):
845
872
846 thisObj.setInput(objIN.getOutputObj())
873 thisObj.setInput(objIN.getOutputObj())
847
874
848 def connectObjects(self):
875 def connectObjects(self):
849
876
850 for thisPUConfObj in self.procUnitConfObjDict.values():
877 for thisPUConfObj in self.procUnitConfObjDict.values():
851
878
852 inputId = thisPUConfObj.getInputId()
879 inputId = thisPUConfObj.getInputId()
853
880
854 if int(inputId) == 0:
881 if int(inputId) == 0:
855 continue
882 continue
856
883
857 #Get input object
884 #Get input object
858 puConfINObj = self.procUnitConfObjDict[inputId]
885 puConfINObj = self.procUnitConfObjDict[inputId]
859 puObjIN = puConfINObj.getProcUnitObj()
886 puObjIN = puConfINObj.getProcUnitObj()
860
887
861 #Get current object
888 #Get current object
862 thisPUObj = thisPUConfObj.getProcUnitObj()
889 thisPUObj = thisPUConfObj.getProcUnitObj()
863
890
864 self.__connect(puObjIN, thisPUObj)
891 self.__connect(puObjIN, thisPUObj)
865
892
866 def run(self):
893 def run(self):
867
894
868 # for readUnitConfObj in self.readUnitConfObjList:
895 # for readUnitConfObj in self.readUnitConfObjList:
869 # readUnitConfObj.run()
896 # readUnitConfObj.run()
870 print
897 print
871 print "*"*40
898 print "*"*40
872 print " Starting SIGNAL CHAIN PROCESSING "
899 print " Starting SIGNAL CHAIN PROCESSING "
873 print "*"*40
900 print "*"*40
874 print
901 print
875
902
876 keyList = self.procUnitConfObjDict.keys()
903 keyList = self.procUnitConfObjDict.keys()
877 keyList.sort()
904 keyList.sort()
878
905
879 while(True):
906 while(True):
880
907
881 finalSts = False
908 finalSts = False
882
909
883 for procKey in keyList:
910 for procKey in keyList:
884 # print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
911 # print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
885
912
886 procUnitConfObj = self.procUnitConfObjDict[procKey]
913 procUnitConfObj = self.procUnitConfObjDict[procKey]
887 sts = procUnitConfObj.run()
914 sts = procUnitConfObj.run()
888 finalSts = finalSts or sts
915 finalSts = finalSts or sts
889
916
890 #If every process unit finished so end process
917 #If every process unit finished so end process
891 if not(finalSts):
918 if not(finalSts):
892 print "Every process unit have finished"
919 print "Every process unit have finished"
893 break
920 break
894
921
895 if self.control['pause']:
922 if self.control['pause']:
896 print "Process suspended"
923 print "Process suspended"
897
924
898 while True:
925 while True:
899 sleep(0.1)
926 sleep(0.1)
900
927
901 if not self.control['pause']:
928 if not self.control['pause']:
902 break
929 break
903
930
904 if self.control['stop']:
931 if self.control['stop']:
905 break
932 break
906 print "Process reinitialized"
933 print "Process reinitialized"
907
934
908 if self.control['stop']:
935 if self.control['stop']:
909 print "Process stopped"
936 print "Process stopped"
910 break
937 break
911
938
912 #Closing every process
939 #Closing every process
913 for procKey in keyList:
940 for procKey in keyList:
914 procUnitConfObj = self.procUnitConfObjDict[procKey]
941 procUnitConfObj = self.procUnitConfObjDict[procKey]
915 procUnitConfObj.close()
942 procUnitConfObj.close()
916
943
917 print "Process finished"
944 print "Process finished"
918
945
919 def start(self, filename):
946 def start(self, filename):
920
947
921 self.writeXml(filename)
948 self.writeXml(filename)
922 self.readXml(filename)
949 self.readXml(filename)
923
950
924 self.createObjects()
951 self.createObjects()
925 self.connectObjects()
952 self.connectObjects()
926 self.run()
953 self.run()
927
954
928 if __name__ == '__main__':
955 if __name__ == '__main__':
929
956
930 desc = "Segundo Test"
957 desc = "Segundo Test"
931 filename = "schain.xml"
958 filename = "schain.xml"
932
959
933 controllerObj = Project()
960 controllerObj = Project()
934
961
935 controllerObj.setup(id = '191', name='test01', description=desc)
962 controllerObj.setup(id = '191', name='test01', description=desc)
936
963
937 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
964 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
938 path='data/rawdata/',
965 path='data/rawdata/',
939 startDate='2011/01/01',
966 startDate='2011/01/01',
940 endDate='2012/12/31',
967 endDate='2012/12/31',
941 startTime='00:00:00',
968 startTime='00:00:00',
942 endTime='23:59:59',
969 endTime='23:59:59',
943 online=1,
970 online=1,
944 walk=1)
971 walk=1)
945
972
946 # opObj00 = readUnitConfObj.addOperation(name='printInfo')
973 # opObj00 = readUnitConfObj.addOperation(name='printInfo')
947
974
948 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
975 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
949
976
950 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
977 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
951 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
978 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
952
979
953 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
980 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
954 opObj10.addParameter(name='minHei', value='90', format='float')
981 opObj10.addParameter(name='minHei', value='90', format='float')
955 opObj10.addParameter(name='maxHei', value='180', format='float')
982 opObj10.addParameter(name='maxHei', value='180', format='float')
956
983
957 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='external')
984 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='external')
958 opObj12.addParameter(name='n', value='10', format='int')
985 opObj12.addParameter(name='n', value='10', format='int')
959
986
960 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
987 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
961 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
988 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
962 # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='')
989 # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='')
963
990
964
991
965 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
992 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
966 opObj11.addParameter(name='idfigure', value='1', format='int')
993 opObj11.addParameter(name='idfigure', value='1', format='int')
967 opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str')
994 opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str')
968 opObj11.addParameter(name='zmin', value='40', format='int')
995 opObj11.addParameter(name='zmin', value='40', format='int')
969 opObj11.addParameter(name='zmax', value='90', format='int')
996 opObj11.addParameter(name='zmax', value='90', format='int')
970 opObj11.addParameter(name='showprofile', value='1', format='int')
997 opObj11.addParameter(name='showprofile', value='1', format='int')
971
998
972 # opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='external')
999 # opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='external')
973 # opObj11.addParameter(name='idfigure', value='2', format='int')
1000 # opObj11.addParameter(name='idfigure', value='2', format='int')
974 # opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str')
1001 # opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str')
975 # opObj11.addParameter(name='zmin', value='40', format='int')
1002 # opObj11.addParameter(name='zmin', value='40', format='int')
976 # opObj11.addParameter(name='zmax', value='90', format='int')
1003 # opObj11.addParameter(name='zmax', value='90', format='int')
977
1004
978
1005
979 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Voltage', inputId=procUnitConfObj0.getId())
1006 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Voltage', inputId=procUnitConfObj0.getId())
980 #
1007 #
981 # opObj12 = procUnitConfObj2.addOperation(name='CohInt', optype='external')
1008 # opObj12 = procUnitConfObj2.addOperation(name='CohInt', optype='external')
982 # opObj12.addParameter(name='n', value='2', format='int')
1009 # opObj12.addParameter(name='n', value='2', format='int')
983 # opObj12.addParameter(name='overlapping', value='1', format='int')
1010 # opObj12.addParameter(name='overlapping', value='1', format='int')
984 #
1011 #
985 # procUnitConfObj3 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj2.getId())
1012 # procUnitConfObj3 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj2.getId())
986 # procUnitConfObj3.addParameter(name='nFFTPoints', value='32', format='int')
1013 # procUnitConfObj3.addParameter(name='nFFTPoints', value='32', format='int')
987 #
1014 #
988 # opObj11 = procUnitConfObj3.addOperation(name='SpectraPlot', optype='external')
1015 # opObj11 = procUnitConfObj3.addOperation(name='SpectraPlot', optype='external')
989 # opObj11.addParameter(name='idfigure', value='2', format='int')
1016 # opObj11.addParameter(name='idfigure', value='2', format='int')
990 # opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str')
1017 # opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str')
991 # opObj11.addParameter(name='zmin', value='40', format='int')
1018 # opObj11.addParameter(name='zmin', value='40', format='int')
992 # opObj11.addParameter(name='zmax', value='90', format='int')
1019 # opObj11.addParameter(name='zmax', value='90', format='int')
993 # opObj11.addParameter(name='showprofile', value='1', format='int')
1020 # opObj11.addParameter(name='showprofile', value='1', format='int')
994
1021
995 # opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='external')
1022 # opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='external')
996 # opObj11.addParameter(name='idfigure', value='10', format='int')
1023 # opObj11.addParameter(name='idfigure', value='10', format='int')
997 # opObj11.addParameter(name='wintitle', value='RTI', format='str')
1024 # opObj11.addParameter(name='wintitle', value='RTI', format='str')
998 ## opObj11.addParameter(name='xmin', value='21', format='float')
1025 ## opObj11.addParameter(name='xmin', value='21', format='float')
999 ## opObj11.addParameter(name='xmax', value='22', format='float')
1026 ## opObj11.addParameter(name='xmax', value='22', format='float')
1000 # opObj11.addParameter(name='zmin', value='40', format='int')
1027 # opObj11.addParameter(name='zmin', value='40', format='int')
1001 # opObj11.addParameter(name='zmax', value='90', format='int')
1028 # opObj11.addParameter(name='zmax', value='90', format='int')
1002 # opObj11.addParameter(name='showprofile', value='1', format='int')
1029 # opObj11.addParameter(name='showprofile', value='1', format='int')
1003 # opObj11.addParameter(name='timerange', value=str(60), format='int')
1030 # opObj11.addParameter(name='timerange', value=str(60), format='int')
1004
1031
1005 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1032 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1006 # opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist')
1033 # opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist')
1007 #
1034 #
1008 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1035 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1009 # opObj12.addParameter(name='n', value='2', format='int')
1036 # opObj12.addParameter(name='n', value='2', format='int')
1010 #
1037 #
1011 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1038 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1012 # opObj11.addParameter(name='idfigure', value='2', format='int')
1039 # opObj11.addParameter(name='idfigure', value='2', format='int')
1013 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1040 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1014 # opObj11.addParameter(name='zmin', value='70', format='int')
1041 # opObj11.addParameter(name='zmin', value='70', format='int')
1015 # opObj11.addParameter(name='zmax', value='90', format='int')
1042 # opObj11.addParameter(name='zmax', value='90', format='int')
1016 #
1043 #
1017 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1044 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1018 # opObj10.addParameter(name='channelList', value='2,6', format='intlist')
1045 # opObj10.addParameter(name='channelList', value='2,6', format='intlist')
1019 #
1046 #
1020 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1047 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1021 # opObj12.addParameter(name='n', value='2', format='int')
1048 # opObj12.addParameter(name='n', value='2', format='int')
1022 #
1049 #
1023 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1050 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1024 # opObj11.addParameter(name='idfigure', value='3', format='int')
1051 # opObj11.addParameter(name='idfigure', value='3', format='int')
1025 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1052 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1026 # opObj11.addParameter(name='zmin', value='70', format='int')
1053 # opObj11.addParameter(name='zmin', value='70', format='int')
1027 # opObj11.addParameter(name='zmax', value='90', format='int')
1054 # opObj11.addParameter(name='zmax', value='90', format='int')
1028
1055
1029
1056
1030 # opObj12 = procUnitConfObj1.addOperation(name='decoder')
1057 # opObj12 = procUnitConfObj1.addOperation(name='decoder')
1031 # opObj12.addParameter(name='ncode', value='2', format='int')
1058 # opObj12.addParameter(name='ncode', value='2', format='int')
1032 # opObj12.addParameter(name='nbauds', value='8', format='int')
1059 # opObj12.addParameter(name='nbauds', value='8', format='int')
1033 # opObj12.addParameter(name='code0', value='001110011', format='int')
1060 # opObj12.addParameter(name='code0', value='001110011', format='int')
1034 # opObj12.addParameter(name='code1', value='001110011', format='int')
1061 # opObj12.addParameter(name='code1', value='001110011', format='int')
1035
1062
1036
1063
1037
1064
1038 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId())
1065 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId())
1039 #
1066 #
1040 # opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='external')
1067 # opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='external')
1041 # opObj21.addParameter(name='n', value='2', format='int')
1068 # opObj21.addParameter(name='n', value='2', format='int')
1042 #
1069 #
1043 # opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='external')
1070 # opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='external')
1044 # opObj11.addParameter(name='idfigure', value='4', format='int')
1071 # opObj11.addParameter(name='idfigure', value='4', format='int')
1045 # opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str')
1072 # opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str')
1046 # opObj11.addParameter(name='zmin', value='70', format='int')
1073 # opObj11.addParameter(name='zmin', value='70', format='int')
1047 # opObj11.addParameter(name='zmax', value='90', format='int')
1074 # opObj11.addParameter(name='zmax', value='90', format='int')
1048
1075
1049 print "Escribiendo el archivo XML"
1076 print "Escribiendo el archivo XML"
1050
1077
1051 controllerObj.writeXml(filename)
1078 controllerObj.writeXml(filename)
1052
1079
1053 print "Leyendo el archivo XML"
1080 print "Leyendo el archivo XML"
1054 controllerObj.readXml(filename)
1081 controllerObj.readXml(filename)
1055 #controllerObj.printattr()
1082 #controllerObj.printattr()
1056
1083
1057 controllerObj.createObjects()
1084 controllerObj.createObjects()
1058 controllerObj.connectObjects()
1085 controllerObj.connectObjects()
1059 controllerObj.run()
1086 controllerObj.run()
1060
1087
1061 No newline at end of file
1088
This diff has been collapsed as it changes many lines, (1094 lines changed) Show them Hide them
@@ -1,6665 +1,7053
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 Queue
10 import Queue
11
12 from collections import OrderedDict
13 from os.path import expanduser
14 from time import sleep
15
10 from PyQt4.QtGui import QMainWindow
16 from PyQt4.QtGui import QMainWindow
11 from PyQt4.QtCore import pyqtSignature
17 from PyQt4.QtCore import pyqtSignature
12 from PyQt4.QtCore import pyqtSignal
18 from PyQt4.QtCore import pyqtSignal
13 from PyQt4 import QtCore
19 from PyQt4 import QtCore
14 from PyQt4 import QtGui
20 from PyQt4 import QtGui
15
21
16 from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess
22 from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess
17 from schainpy.gui.viewer.ui_ftp import Ui_Ftp
23 from schainpy.gui.viewer.ui_ftp import Ui_Ftp
18 from schainpy.gui.viewer.ui_mainwindow import Ui_BasicWindow
24 from schainpy.gui.viewer.ui_mainwindow import Ui_BasicWindow
19 from schainpy.controller import Project
25 from schainpy.controller import Project
20
26
21 from modelProperties import treeModel
27 from propertiesViewModel import TreeModel, PropertyBuffer
22 from collections import OrderedDict
28 from parametersModel import ProjectParms
23 from os.path import expanduser
24 #from CodeWarrior.Standard_Suite import file
25 from comm import *
26
29
27 try:
28 from gevent import sleep
29 except:
30 from time import sleep
31
32 from schainpy.gui.figures import tools
30 from schainpy.gui.figures import tools
33 import numpy
31 from schainpy.gui.viewcontroller.comm import ControllerThread
34
32
35 FIGURES_PATH = tools.get_path()
33 FIGURES_PATH = tools.get_path()
36
34
37 def isRadarFile(file):
35 def isRadarFile(file):
38 try:
36 try:
39 year = int(file[1:5])
37 year = int(file[1:5])
40 doy = int(file[5:8])
38 doy = int(file[5:8])
41 set = int(file[8:11])
39 set = int(file[8:11])
42 except:
40 except:
43 return 0
41 return 0
44
42
45 return 1
43 return 1
46
44
47 def isRadarPath(path):
45 def isRadarPath(path):
48 try:
46 try:
49 year = int(path[1:5])
47 year = int(path[1:5])
50 doy = int(path[5:8])
48 doy = int(path[5:8])
51 except:
49 except:
52 return 0
50 return 0
53
51
54 return 1
52 return 1
55
53
56 class BasicWindow(QMainWindow, Ui_BasicWindow):
54 class BasicWindow(QMainWindow, Ui_BasicWindow):
57 """
55 """
58 """
56 """
59 def __init__(self, parent=None):
57 def __init__(self, parent=None):
60 """
58 """
61
59
62 """
60 """
63 QMainWindow.__init__(self, parent)
61 QMainWindow.__init__(self, parent)
64 self.setupUi(self)
62 self.setupUi(self)
65 self.__puObjDict = {}
63 self.__puObjDict = {}
66 self.__itemTreeDict = {}
64 self.__itemTreeDict = {}
67 self.readUnitConfObjList = []
65 self.readUnitConfObjList = []
68 self.operObjList = []
66 self.operObjList = []
69 self.projecObjView = None
67 self.projecObjView = None
70 self.idProject = 0
68 self.idProject = 0
71 # self.idImag = 0
69 # self.idImag = 0
72
70
73 self.idImagscope = 0
71 self.idImagscope = 0
74 self.idImagspectra = 0
72 self.idImagspectra = 0
75 self.idImagcross = 0
73 self.idImagcross = 0
76 self.idImagrti = 0
74 self.idImagrti = 0
77 self.idImagcoherence = 0
75 self.idImagcoherence = 0
78 self.idImagpower = 0
76 self.idImagpower = 0
79 self.idImagrtinoise = 0
77 self.idImagrtinoise = 0
80 self.idImagspectraHeis = 0
78 self.idImagspectraHeis = 0
81 self.idImagrtiHeis = 0
79 self.idImagrtiHeis = 0
82
80
83 self.online = 0
81 self.online = 0
84 self.walk = 0
82 self.walk = 0
85 self.create = False
83 self.create = False
86 self.selectedItemTree = None
84 self.selectedItemTree = None
87 self.commCtrlPThread = None
85 self.controllerObj = None
86 # self.commCtrlPThread = None
88 # self.create_figure()
87 # self.create_figure()
89 self.temporalFTP = ftpBuffer()
88 self.temporalFTP = ftpBuffer()
90 self.projectProperCaracteristica = []
89 self.projectProperCaracteristica = []
91 self.projectProperPrincipal = []
90 self.projectProperPrincipal = []
92 self.projectProperDescripcion = []
91 self.projectProperDescripcion = []
93 self.volProperCaracteristica = []
92 self.volProperCaracteristica = []
94 self.volProperPrincipal = []
93 self.volProperPrincipal = []
95 self.volProperDescripcion = []
94 self.volProperDescripcion = []
96 self.specProperCaracteristica = []
95 self.specProperCaracteristica = []
97 self.specProperPrincipal = []
96 self.specProperPrincipal = []
98 self.specProperDescripcion = []
97 self.specProperDescripcion = []
99
98
100 self.specHeisProperCaracteristica = []
99 self.specHeisProperCaracteristica = []
101 self.specHeisProperPrincipal = []
100 self.specHeisProperPrincipal = []
102 self.specHeisProperDescripcion = []
101 self.specHeisProperDescripcion = []
103
102
104 # self.pathWorkSpace = './'
103 # self.pathWorkSpace = './'
105
104
106 self.__projectObjDict = {}
105 self.__projectObjDict = {}
107 self.__operationObjDict = {}
106 self.__operationObjDict = {}
108
107
109 self.__ftpProcUnitAdded = False
108 self.__ftpProcUnitAdded = False
110 self.__ftpProcUnitId = None
109 self.__ftpProcUnitId = None
111 self.__initialized = False
110 self.__initialized = False
112
111
113 self.create_comm()
112 # self.create_comm()
114 self.create_updating_timer()
113 self.create_updating_timer()
115 self.setParameter()
114 self.setParameter()
116
115
117 @pyqtSignature("")
116 @pyqtSignature("")
118 def on_actionOpen_triggered(self):
117 def on_actionOpen_triggered(self):
119 """
118 """
120 Slot documentation goes here.
119 Slot documentation goes here.
121 """
120 """
122 self.openProject()
121 self.openProject()
123
122
124 @pyqtSignature("")
123 @pyqtSignature("")
125 def on_actionCreate_triggered(self):
124 def on_actionCreate_triggered(self):
126 """
125 """
127 Slot documentation goes here.
126 Slot documentation goes here.
128 """
127 """
129 self.setInputsProject_View()
128 self.setInputsProject_View()
130 self.create = True
129 self.create = True
131
130
132 @pyqtSignature("")
131 @pyqtSignature("")
133 def on_actionSave_triggered(self):
132 def on_actionSave_triggered(self):
134 """
133 """
135 Slot documentation goes here.
134 Slot documentation goes here.
136 """
135 """
137 self.saveProject()
136 self.saveProject()
138
137
139 @pyqtSignature("")
138 @pyqtSignature("")
140 def on_actionClose_triggered(self):
139 def on_actionClose_triggered(self):
141 """
140 """
142 Slot documentation goes here.
141 Slot documentation goes here.
143 """
142 """
144 self.close()
143 self.close()
145
144
146 @pyqtSignature("")
145 @pyqtSignature("")
147 def on_actionStart_triggered(self):
146 def on_actionStart_triggered(self):
148 """
147 """
149 """
148 """
150 self.playProject()
149 self.playProject()
151
150
152 @pyqtSignature("")
151 @pyqtSignature("")
153 def on_actionPause_triggered(self):
152 def on_actionPause_triggered(self):
154 """
153 """
155 """
154 """
156 self.pauseProject()
155 self.pauseProject()
157
156
158 @pyqtSignature("")
157 @pyqtSignature("")
159 def on_actionStop_triggered(self):
158 def on_actionStop_triggered(self):
160 """
159 """
161 """
160 """
162 self.stopProject()
161 self.stopProject()
163
162
164 @pyqtSignature("")
163 @pyqtSignature("")
165 def on_actionFTP_triggered(self):
164 def on_actionFTP_triggered(self):
166 """
165 """
167 """
166 """
168 self.configFTPWindowObj = Ftp(self)
167 self.configFTPWindowObj = Ftp(self)
169 # if self.temporalFTP.create:
168 # if self.temporalFTP.create:
170 if self.temporalFTP.createforView:
169 if self.temporalFTP.createforView:
171 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
170 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
172 self.configFTPWindowObj.setParmsfromTemporal(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
171 self.configFTPWindowObj.setParmsfromTemporal(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
173 self.configFTPWindowObj.show()
172 self.configFTPWindowObj.show()
174 self.configFTPWindowObj.closed.connect(self.createFTPConfig)
173 self.configFTPWindowObj.closed.connect(self.createFTPConfig)
175
174
176 def createFTPConfig(self):
175 def createFTPConfig(self):
177 self.console.clear()
176 self.console.clear()
178 if not self.configFTPWindowObj.create:
177 if not self.configFTPWindowObj.create:
179 self.console.append("There is no FTP configuration")
178 self.console.append("There is no FTP configuration")
180 return
179 return
181 self.console.append("Push Ok in Spectra view to Add FTP Configuration")
180 self.console.append("Push Ok in Spectra view to Add FTP Configuration")
182 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.configFTPWindowObj.getParmsFromFtpWindow()
181 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.configFTPWindowObj.getParmsFromFtpWindow()
183 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
182 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
184
183
185 @pyqtSignature("")
184 @pyqtSignature("")
186 def on_actionOpenToolbar_triggered(self):
185 def on_actionOpenToolbar_triggered(self):
187 """
186 """
188 Slot documentation goes here.
187 Slot documentation goes here.
189 """
188 """
190 self.openProject()
189 self.openProject()
191
190
192 @pyqtSignature("")
191 @pyqtSignature("")
193 def on_actionCreateToolbar_triggered(self):
192 def on_actionCreateToolbar_triggered(self):
194 """
193 """
195 Slot documentation goes here.
194 Slot documentation goes here.
196 """
195 """
197 self.setInputsProject_View()
196 self.setInputsProject_View()
198 self.create = True
197 self.create = True
199
198
200 @pyqtSignature("")
199 @pyqtSignature("")
201 def on_actionAddPU_triggered(self):
200 def on_actionAddPU_triggered(self):
202 if len(self.__projectObjDict) == 0:
201 if len(self.__projectObjDict) == 0:
203 outputstr = "First Create a Project then add Processing Unit"
202 outputstr = "First Create a Project then add Processing Unit"
204 self.console.clear()
203 self.console.clear()
205 self.console.append(outputstr)
204 self.console.append(outputstr)
206 return 0
205 return 0
207 else:
206 else:
208 self.addPUWindow()
207 self.addPUWindow()
209 self.console.clear()
208 self.console.clear()
210 self.console.append("Please, Choose the type of Processing Unit")
209 self.console.append("Please, Choose the type of Processing Unit")
211 self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
210 self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
212 self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
211 self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
213 self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
212 self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
214
213
215
214
216 @pyqtSignature("")
215 @pyqtSignature("")
217 def on_actionSaveToolbar_triggered(self):
216 def on_actionSaveToolbar_triggered(self):
218 """
217 """
219 Slot documentation goes here.
218 Slot documentation goes here.
220 """
219 """
221 self.saveProject()
220 self.saveProject()
222
221
223 @pyqtSignature("")
222 @pyqtSignature("")
224 def on_actionStarToolbar_triggered(self):
223 def on_actionStarToolbar_triggered(self):
225 """
224 """
226 Slot documentation goes here.
225 Slot documentation goes here.
227 """
226 """
228 self.playProject()
227 self.playProject()
229
228
230 @pyqtSignature("")
229 @pyqtSignature("")
231 def on_actionPauseToolbar_triggered(self):
230 def on_actionPauseToolbar_triggered(self):
232
231
233 self.pauseProject()
232 self.pauseProject()
234
233
235 @pyqtSignature("")
234 @pyqtSignature("")
236 def on_actionStopToolbar_triggered(self):
235 def on_actionStopToolbar_triggered(self):
237 """
236 """
238 Slot documentation goes here.
237 Slot documentation goes here.
239 """
238 """
240 self.stopProject()
239 self.stopProject()
241
240
242 @pyqtSignature("int")
241 @pyqtSignature("int")
243 def on_proComReadMode_activated(self, index):
242 def on_proComReadMode_activated(self, index):
244 """
243 """
245 SELECCION DEL MODO DE LECTURA ON=1, OFF=0
244 SELECCION DEL MODO DE LECTURA ON=1, OFF=0
246 """
245 """
247 if index == 0:
246 if index == 0:
248 self.online = 0
247 self.online = 0
249 self.proDelay.setText("0")
248 self.proDelay.setText("0")
250 self.proSet.setText("0")
249 self.proSet.setText("0")
251 self.proSet.setEnabled(False)
250 self.proSet.setEnabled(False)
252 self.proDelay.setEnabled(False)
251 self.proDelay.setEnabled(False)
253 elif index == 1:
252 elif index == 1:
254 self.online = 1
253 self.online = 1
255 self.proSet.setText(" ")
254 self.proSet.setText(" ")
256 self.proDelay.setText("5")
255 self.proDelay.setText("5")
257 self.proSet.setEnabled(True)
256 self.proSet.setEnabled(True)
258 self.proDelay.setEnabled(True)
257 self.proDelay.setEnabled(True)
259
258
260 @pyqtSignature("int")
259 @pyqtSignature("int")
261 def on_proComDataType_activated(self, index):
260 def on_proComDataType_activated(self, index):
262 """
261 """
263 Voltage or Spectra
262 Voltage or Spectra
264 """
263 """
265 if index == 0:
264 if index == 0:
266 self.datatype = '.r'
265 extension = '.r'
267 elif index == 1:
266 elif index == 1:
268 self.datatype = '.pdata'
267 extension = '.pdata'
269 elif index == 2:
268 elif index == 2:
270 self.datatype = '.fits'
269 extension = '.fits'
271
270 elif index == 3:
272 self.proDataType.setText(self.datatype)
271 extension = '.hdf5'
272
273 self.proDataType.setText(extension)
273 self.console.clear()
274 self.console.clear()
274
275
275 @pyqtSignature("int")
276 @pyqtSignature("int")
276 def on_proComWalk_activated(self, index):
277 def on_proComWalk_activated(self, index):
277 """
278 """
278
279
279 """
280 """
280 if index == 0:
281 if index == 0:
281 self.walk = 0
282 self.walk = 0
282 elif index == 1:
283 elif index == 1:
283 self.walk = 1
284 self.walk = 1
284
285
285 @pyqtSignature("")
286 @pyqtSignature("")
286 def on_proToolPath_clicked(self):
287 def on_proToolPath_clicked(self):
287 """
288 """
288 Choose your path
289 Choose your path
289 """
290 """
290 self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
291 self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
291 self.proDataPath.setText(self.dataPath)
292 self.proDataPath.setText(self.dataPath)
292
293
293 self.proComStartDate.clear()
294 self.proComStartDate.clear()
294 self.proComEndDate.clear()
295 self.proComEndDate.clear()
295
296
296 if not os.path.exists(self.dataPath):
297 if not os.path.exists(self.dataPath):
297 self.proOk.setEnabled(False)
298 self.proOk.setEnabled(False)
298 self.console.clear()
299 self.console.clear()
299 self.console.append("Write a correct a path")
300 self.console.append("Write a correct a path")
300 return
301 return
301 self.console.clear()
302 self.console.clear()
302 self.console.append("Select the read mode")
303 self.console.append("Select the read mode")
303
304
304
305
305 @pyqtSignature("")
306 @pyqtSignature("")
306 def on_proLoadButton_clicked(self):
307 def on_proLoadButton_clicked(self):
308
307 self.console.clear()
309 self.console.clear()
308 parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk , set = self.checkInputsProject()
310
309 if read_mode == "Offline":
311 parameter_list = self.checkInputsProject()
310 if parms_ok:
312
311 self.proComStartDate.clear()
313 if not parameter_list[0]:
312 self.proComEndDate.clear()
313 self.loadDays(data_path, ext, walk)
314 self.proComStartDate.setEnabled(True)
315 self.proComEndDate.setEnabled(True)
316 self.proStartTime.setEnabled(True)
317 self.proEndTime.setEnabled(True)
318 self.frame_2.setEnabled(True)
319 return
314 return
315
316 parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set = parameter_list
317
318 if read_mode == "Offline":
319 self.proComStartDate.clear()
320 self.proComEndDate.clear()
321 self.proComStartDate.setEnabled(True)
322 self.proComEndDate.setEnabled(True)
323 self.proStartTime.setEnabled(True)
324 self.proEndTime.setEnabled(True)
325 self.frame_2.setEnabled(True)
326
320 if read_mode == "Online":
327 if read_mode == "Online":
321 if parms_ok:
328 self.proComStartDate.addItem("2000/01/30")
322 self.proComStartDate.addItem("2010/01/30")
329 self.proComEndDate.addItem("2016/12/31")
323 self.proComEndDate.addItem("2013/12/30")
330 self.proComStartDate.setEnabled(False)
324 self.loadDays(data_path, ext, walk)
331 self.proComEndDate.setEnabled(False)
325 self.proComStartDate.setEnabled(False)
332 self.proStartTime.setEnabled(False)
326 self.proComEndDate.setEnabled(False)
333 self.proEndTime.setEnabled(False)
327 self.proStartTime.setEnabled(False)
334 self.frame_2.setEnabled(True)
328 self.proEndTime.setEnabled(False)
335
329 self.frame_2.setEnabled(True)
336 self.loadDays(data_path, ext, walk)
330
337
331 @pyqtSignature("int")
338 @pyqtSignature("int")
332 def on_proComStartDate_activated(self, index):
339 def on_proComStartDate_activated(self, index):
333 """
340 """
334 SELECCION DEL RANGO DE FECHAS -START DATE
341 SELECCION DEL RANGO DE FECHAS -START DATE
335 """
342 """
336 stopIndex = self.proComEndDate.count() - self.proComEndDate.currentIndex()
343 stopIndex = self.proComEndDate.count() - self.proComEndDate.currentIndex()
337 self.proComEndDate.clear()
344 self.proComEndDate.clear()
338 for i in self.dateList[index:]:
345 for i in self.dateList[index:]:
339 self.proComEndDate.addItem(i)
346 self.proComEndDate.addItem(i)
340 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - stopIndex)
347 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - stopIndex)
341
348
342 @pyqtSignature("int")
349 @pyqtSignature("int")
343 def on_proComEndDate_activated(self, index):
350 def on_proComEndDate_activated(self, index):
344 """
351 """
345 SELECCION DEL RANGO DE FECHAS-END DATE
352 SELECCION DEL RANGO DE FECHAS-END DATE
346 """
353 """
347 startIndex = self.proComStartDate.currentIndex()
354 startIndex = self.proComStartDate.currentIndex()
348 stopIndex = self.proComEndDate.count() - index
355 stopIndex = self.proComEndDate.count() - index
349 self.proComStartDate.clear()
356 self.proComStartDate.clear()
350 for i in self.dateList[:len(self.dateList) - stopIndex + 1]:
357 for i in self.dateList[:len(self.dateList) - stopIndex + 1]:
351 self.proComStartDate.addItem(i)
358 self.proComStartDate.addItem(i)
352 self.proComStartDate.setCurrentIndex(startIndex)
359 self.proComStartDate.setCurrentIndex(startIndex)
353
360
354 @pyqtSignature("")
361 @pyqtSignature("")
355 def on_proOk_clicked(self):
362 def on_proOk_clicked(self):
356 """
363 """
357 AΓ±ade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml.
364 AΓ±ade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml.
358 Prepara la configuraciΓ³n del diΓ‘grama del Arbol del treeView numero 2
365 Prepara la configuraciΓ³n del diΓ‘grama del Arbol del treeView numero 2
359 """
366 """
360 if self.create:
367 if self.create:
361 self.idProject += 1
368 self.idProject += 1
362 projectId = self.idProject
369 projectId = self.idProject
363 projectObjView = self.createProjectView(projectId)
370 projectObjView = self.createProjectView(projectId)
364 readUnitObj = self.createReadUnitView(projectObjView)
371 readUnitObj = self.createReadUnitView(projectObjView)
365 self.addProject2ProjectExplorer(id=projectId, name=projectObjView.name)
372 self.addProject2ProjectExplorer(id=projectId, name=projectObjView.name)
366 else:
373 else:
367 projectObjView = self.updateProjectView()
374 projectObjView = self.updateProjectView()
368 projectId = projectObjView.getId()
375 projectId = projectObjView.getId()
369 idReadUnit = projectObjView.getReadUnitId()
376 idReadUnit = projectObjView.getReadUnitId()
370 readUnitObj = self.updateReadUnitView(projectObjView, idReadUnit)
377 readUnitObj = self.updateReadUnitView(projectObjView, idReadUnit)
371
378
372 self.__itemTreeDict[projectId].setText(projectObjView.name)
379 self.__itemTreeDict[projectId].setText(projectObjView.name)
373 # Project Properties
380 # Project Properties
374 self.showProjectProperties(projectObjView)
381 self.refreshProjectProperties(projectObjView)
375 # Disable tabProject after finish the creation
382 # Disable tabProject after finish the creation
376 self.tabProject.setEnabled(True)
383 self.tabProject.setEnabled(True)
377
384
378 @pyqtSignature("")
385 @pyqtSignature("")
379 def on_proClear_clicked(self):
386 def on_proClear_clicked(self):
380 self.setInputsProject_View()
387 self.setInputsProject_View()
381 projectObj = self.getSelectedProjectObj()
388 projectObj = self.getSelectedProjectObj()
382
389
383 @pyqtSignature("int")
390 @pyqtSignature("int")
384 def on_volOpCebChannels_stateChanged(self, p0):
391 def on_volOpCebChannels_stateChanged(self, p0):
385 """
392 """
386 Check Box habilita operaciones de SelecciοΏ½n de Canales
393 Check Box habilita operaciones de SelecciοΏ½n de Canales
387 """
394 """
388 if p0 == 2:
395 if p0 == 2:
389 self.volOpComChannels.setEnabled(True)
396 self.volOpComChannels.setEnabled(True)
390 self.volOpChannel.setEnabled(True)
397 self.volOpChannel.setEnabled(True)
391
398
392 if p0 == 0:
399 if p0 == 0:
393 self.volOpComChannels.setEnabled(False)
400 self.volOpComChannels.setEnabled(False)
394 self.volOpChannel.setEnabled(False)
401 self.volOpChannel.setEnabled(False)
395 self.volOpChannel.clear()
402 self.volOpChannel.clear()
396
403
397 @pyqtSignature("int")
404 @pyqtSignature("int")
398 def on_volOpCebHeights_stateChanged(self, p0):
405 def on_volOpCebHeights_stateChanged(self, p0):
399 """
406 """
400 Check Box habilita operaciones de SelecciοΏ½n de Alturas
407 Check Box habilita operaciones de SelecciοΏ½n de Alturas
401 """
408 """
402 if p0 == 2:
409 if p0 == 2:
403 self.volOpHeights.setEnabled(True)
410 self.volOpHeights.setEnabled(True)
404 self.volOpComHeights.setEnabled(True)
411 self.volOpComHeights.setEnabled(True)
405
412
406 if p0 == 0:
413 if p0 == 0:
407 self.volOpHeights.setEnabled(False)
414 self.volOpHeights.setEnabled(False)
408 self.volOpHeights.clear()
415 self.volOpHeights.clear()
409 self.volOpComHeights.setEnabled(False)
416 self.volOpComHeights.setEnabled(False)
410
417
411 @pyqtSignature("int")
418 @pyqtSignature("int")
412 def on_volOpCebFilter_stateChanged(self, p0):
419 def on_volOpCebFilter_stateChanged(self, p0):
413 """
420 """
414 Name='Decoder', optype='other'
421 Name='Decoder', optype='other'
415 """
422 """
416 if p0 == 2:
423 if p0 == 2:
417 self.volOpFilter.setEnabled(True)
424 self.volOpFilter.setEnabled(True)
418
425
419 if p0 == 0:
426 if p0 == 0:
420 self.volOpFilter.setEnabled(False)
427 self.volOpFilter.setEnabled(False)
421 self.volOpFilter.clear()
428 self.volOpFilter.clear()
422
429
423 @pyqtSignature("int")
430 @pyqtSignature("int")
424 def on_volOpCebProfile_stateChanged(self, p0):
431 def on_volOpCebProfile_stateChanged(self, p0):
425 """
432 """
426 Check Box habilita ingreso del rango de Perfiles
433 Check Box habilita ingreso del rango de Perfiles
427 """
434 """
428 if p0 == 2:
435 if p0 == 2:
429 self.volOpComProfile.setEnabled(True)
436 self.volOpComProfile.setEnabled(True)
430 self.volOpProfile.setEnabled(True)
437 self.volOpProfile.setEnabled(True)
431
438
432 if p0 == 0:
439 if p0 == 0:
433 self.volOpComProfile.setEnabled(False)
440 self.volOpComProfile.setEnabled(False)
434 self.volOpProfile.setEnabled(False)
441 self.volOpProfile.setEnabled(False)
435 self.volOpProfile.clear()
442 self.volOpProfile.clear()
436
443
437 @pyqtSignature("int")
444 @pyqtSignature("int")
438 def on_volOpCebDecodification_stateChanged(self, p0):
445 def on_volOpCebDecodification_stateChanged(self, p0):
439 """
446 """
440 Check Box habilita
447 Check Box habilita
441 """
448 """
442 if p0 == 2:
449 if p0 == 2:
443 self.volOpComCode.setEnabled(True)
450 self.volOpComCode.setEnabled(True)
444 self.volOpComMode.setEnabled(True)
451 self.volOpComMode.setEnabled(True)
445 if p0 == 0:
452 if p0 == 0:
446 self.volOpComCode.setEnabled(False)
453 self.volOpComCode.setEnabled(False)
447 self.volOpComMode.setEnabled(False)
454 self.volOpComMode.setEnabled(False)
448
455
449 @pyqtSignature("int")
456 @pyqtSignature("int")
450 def on_volOpCebFlip_stateChanged(self, p0):
457 def on_volOpCebFlip_stateChanged(self, p0):
451 """
458 """
452 Check Box habilita ingresode del numero de Integraciones a realizar
459 Check Box habilita ingresode del numero de Integraciones a realizar
453 """
460 """
454 if p0 == 2:
461 if p0 == 2:
455 self.volOpFlip.setEnabled(True)
462 self.volOpFlip.setEnabled(True)
456 if p0 == 0:
463 if p0 == 0:
457 self.volOpFlip.setEnabled(False)
464 self.volOpFlip.setEnabled(False)
458 self.volOpFlip.clear()
465 self.volOpFlip.clear()
459
466
460 @pyqtSignature("int")
467 @pyqtSignature("int")
461 def on_volOpCebCohInt_stateChanged(self, p0):
468 def on_volOpCebCohInt_stateChanged(self, p0):
462 """
469 """
463 Check Box habilita ingresode del numero de Integraciones a realizar
470 Check Box habilita ingresode del numero de Integraciones a realizar
464 """
471 """
465 if p0 == 2:
472 if p0 == 2:
466 self.volOpCohInt.setEnabled(True)
473 self.volOpCohInt.setEnabled(True)
467 if p0 == 0:
474 if p0 == 0:
468 self.volOpCohInt.setEnabled(False)
475 self.volOpCohInt.setEnabled(False)
469 self.volOpCohInt.clear()
476 self.volOpCohInt.clear()
470
477
471 @pyqtSignature("int")
478 @pyqtSignature("int")
472 def on_volOpCebRadarfrequency_stateChanged(self, p0):
479 def on_volOpCebRadarfrequency_stateChanged(self, p0):
473 """
480 """
474 Check Box habilita ingresode del numero de Integraciones a realizar
481 Check Box habilita ingresode del numero de Integraciones a realizar
475 """
482 """
476 if p0 == 2:
483 if p0 == 2:
477 self.volOpRadarfrequency.setEnabled(True)
484 self.volOpRadarfrequency.setEnabled(True)
478 if p0 == 0:
485 if p0 == 0:
479 self.volOpRadarfrequency.clear()
486 self.volOpRadarfrequency.clear()
480 self.volOpRadarfrequency.setEnabled(False)
487 self.volOpRadarfrequency.setEnabled(False)
481
488
482 @pyqtSignature("")
489 @pyqtSignature("")
483 def on_volOutputToolPath_clicked(self):
490 def on_volOutputToolPath_clicked(self):
484 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
491 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
485 self.volOutputPath.setText(dirOutPath)
492 self.volOutputPath.setText(dirOutPath)
486
493
487 @pyqtSignature("")
494 @pyqtSignature("")
488 def on_specOutputToolPath_clicked(self):
495 def on_specOutputToolPath_clicked(self):
489 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
496 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
490 self.specOutputPath.setText(dirOutPath)
497 self.specOutputPath.setText(dirOutPath)
491
498
492 @pyqtSignature("")
499 @pyqtSignature("")
493 def on_specHeisOutputToolPath_clicked(self):
500 def on_specHeisOutputToolPath_clicked(self):
494 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
501 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
495 self.specHeisOutputPath.setText(dirOutPath)
502 self.specHeisOutputPath.setText(dirOutPath)
496
503
497 @pyqtSignature("")
504 @pyqtSignature("")
498 def on_specHeisOutputMetadaToolPath_clicked(self):
505 def on_specHeisOutputMetadaToolPath_clicked(self):
499 home = expanduser("~")
506
500 self.dir = os.path.join(home, 'schain_workspace')
507 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
501 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.dir, self.tr("Text Files (*.xml)")))
502 self.specHeisOutputMetada.setText(filename)
508 self.specHeisOutputMetada.setText(filename)
503
509
504 @pyqtSignature("")
510 @pyqtSignature("")
505 def on_volOpOk_clicked(self):
511 def on_volOpOk_clicked(self):
506 """
512 """
507 BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES AοΏ½ADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO
513 BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES AοΏ½ADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO
508 PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML
514 PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML
509 """
515 """
510
516
511 checkPath = False
517 checkPath = False
512
518
513 self.actionSaveToolbar.setEnabled(False)
519 self.actionSaveToolbar.setEnabled(False)
514 self.actionStarToolbar.setEnabled(False)
520 self.actionStarToolbar.setEnabled(False)
515
521
516 puObj = self.getSelectedPUObj()
522 puObj = self.getSelectedItemObj()
517 puObj.removeOperations()
523 puObj.removeOperations()
518
524
519 if self.volOpCebRadarfrequency.isChecked():
525 if self.volOpCebRadarfrequency.isChecked():
520 value = self.volOpRadarfrequency.text()
526 value = str(self.volOpRadarfrequency.text())
521 format = 'float'
527 format = 'float'
522 name_operation = 'setRadarFrequency'
528 name_operation = 'setRadarFrequency'
523 name_parameter = 'frequency'
529 name_parameter = 'frequency'
524 if not value == "":
530 if not value == "":
525 try:
531 try:
526 radarfreq = float(self.volOpRadarfrequency.text())
532 radarfreq = float(self.volOpRadarfrequency.text())
527 except:
533 except:
528 self.console.clear()
534 self.console.clear()
529 self.console.append("Write the parameter Radar Frequency type float")
535 self.console.append("Write the parameter Radar Frequency type float")
530 return 0
536 return 0
531 opObj = puObj.addOperation(name=name_operation)
537 opObj = puObj.addOperation(name=name_operation)
532 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
538 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
533
534
535
539
536 if self.volOpCebChannels.isChecked():
540 if self.volOpCebChannels.isChecked():
537 value = str(self.volOpChannel.text())
541 value = str(self.volOpChannel.text())
538
542
539 if value == "":
543 if value == "":
540 print "Please fill channel list"
544 print "Please fill channel list"
541 return 0
545 return 0
542
546
543 format = 'intlist'
547 format = 'intlist'
544 if self.volOpComChannels.currentIndex() == 0:
548 if self.volOpComChannels.currentIndex() == 0:
545 name_operation = "selectChannels"
549 name_operation = "selectChannels"
546 name_parameter = 'channelList'
550 name_parameter = 'channelList'
547 else:
551 else:
548 name_operation = "selectChannelsByIndex"
552 name_operation = "selectChannelsByIndex"
549 name_parameter = 'channelIndexList'
553 name_parameter = 'channelIndexList'
550
554
551 opObj = puObj.addOperation(name=name_operation)
555 opObj = puObj.addOperation(name=name_operation)
552 opObj.addParameter(name=name_parameter, value=value, format=format)
556 opObj.addParameter(name=name_parameter, value=value, format=format)
553
557
554 if self.volOpCebHeights.isChecked():
558 if self.volOpCebHeights.isChecked():
555 value = str(self.volOpHeights.text())
559 value = str(self.volOpHeights.text())
556
560
557 if value == "":
561 if value == "":
558 print "Please fill height range"
562 print "Please fill height range"
559 return 0
563 return 0
560
564
561 valueList = value.split(',')
565 valueList = value.split(',')
562 format = 'float'
566 format = 'float'
563 if self.volOpComHeights.currentIndex() == 0:
567 if self.volOpComHeights.currentIndex() == 0:
564 name_operation = 'selectHeights'
568 name_operation = 'selectHeights'
565 name_parameter1 = 'minHei'
569 name_parameter1 = 'minHei'
566 name_parameter2 = 'maxHei'
570 name_parameter2 = 'maxHei'
567 else:
571 else:
568 name_operation = 'selectHeightsByIndex'
572 name_operation = 'selectHeightsByIndex'
569 name_parameter1 = 'minIndex'
573 name_parameter1 = 'minIndex'
570 name_parameter2 = 'maxIndex'
574 name_parameter2 = 'maxIndex'
571
575
572 opObj = puObj.addOperation(name=name_operation)
576 opObj = puObj.addOperation(name=name_operation)
573 opObj.addParameter(name=name_parameter1, value=valueList[0], format=format)
577 opObj.addParameter(name=name_parameter1, value=valueList[0], format=format)
574 opObj.addParameter(name=name_parameter2, value=valueList[1], format=format)
578 opObj.addParameter(name=name_parameter2, value=valueList[1], format=format)
575
579
576 if self.volOpCebFilter.isChecked():
580 if self.volOpCebFilter.isChecked():
577 value = str(self.volOpFilter.text())
581 value = str(self.volOpFilter.text())
578 if value == "":
582 if value == "":
579 print "Please fill filter value"
583 print "Please fill filter value"
580 return 0
584 return 0
581
585
582 format = 'int'
586 format = 'int'
583 name_operation = 'filterByHeights'
587 name_operation = 'filterByHeights'
584 name_parameter = 'window'
588 name_parameter = 'window'
585 opObj = puObj.addOperation(name=name_operation)
589 opObj = puObj.addOperation(name=name_operation)
586 opObj.addParameter(name=name_parameter, value=value, format=format)
590 opObj.addParameter(name=name_parameter, value=value, format=format)
587
591
588 if self.volOpCebProfile.isChecked():
592 if self.volOpCebProfile.isChecked():
589 value = str(self.volOpProfile.text())
593 value = str(self.volOpProfile.text())
590
594
591 if value == "":
595 if value == "":
592 print "Please fill profile value"
596 print "Please fill profile value"
593 return 0
597 return 0
594
598
595 format = 'intlist'
599 format = 'intlist'
596 optype = 'other'
600 optype = 'other'
597 name_operation = 'ProfileSelector'
601 name_operation = 'ProfileSelector'
598 if self.volOpComProfile.currentIndex() == 0:
602 if self.volOpComProfile.currentIndex() == 0:
599 name_parameter = 'profileList'
603 name_parameter = 'profileList'
600 else:
604 else:
601 name_parameter = 'profileRangeList'
605 name_parameter = 'profileRangeList'
602 opObj = puObj.addOperation(name='ProfileSelector', optype='other')
606 opObj = puObj.addOperation(name='ProfileSelector', optype='other')
603 opObj.addParameter(name=name_parameter, value=value, format=format)
607 opObj.addParameter(name=name_parameter, value=value, format=format)
604
608
605 if self.volOpCebDecodification.isChecked():
609 if self.volOpCebDecodification.isChecked():
606 name_operation = 'Decoder'
610 name_operation = 'Decoder'
607 optype = 'other'
611 optype = 'other'
608 format1 = 'floatlist'
612 format1 = 'floatlist'
609 format2 = 'int'
613 format2 = 'int'
610 format3 = 'int'
614 format3 = 'int'
611 format4 = 'int'
615 format4 = 'int'
612 name_parameter1 = 'code'
616 name_parameter1 = 'code'
613 name_parameter2 = 'nCode'
617 name_parameter2 = 'nCode'
614 name_parameter3 = 'nBaud'
618 name_parameter3 = 'nBaud'
615 name_parameter4 = 'mode'
619 name_parameter4 = 'mode'
616
620
617 if self.volOpComCode.currentIndex() == 0:
621 if self.volOpComCode.currentIndex() == 0:
618 value1 = '1,1,-1'
622 value1 = '1,1,-1'
619 value2 = '1'
623 value2 = '1'
620 value3 = '3'
624 value3 = '3'
621 if self.volOpComCode.currentIndex() == 1:
625 if self.volOpComCode.currentIndex() == 1:
622 value1 = '1,1,-1,1'
626 value1 = '1,1,-1,1'
623 value2 = '1'
627 value2 = '1'
624 value3 = '4'
628 value3 = '4'
625 if self.volOpComCode.currentIndex() == 2:
629 if self.volOpComCode.currentIndex() == 2:
626 value1 = '1,1,1,-1,1'
630 value1 = '1,1,1,-1,1'
627 value2 = '1'
631 value2 = '1'
628 value3 = '5'
632 value3 = '5'
629 if self.volOpComCode.currentIndex() == 3:
633 if self.volOpComCode.currentIndex() == 3:
630 value1 = '1,1,1,-1,-1,1,-1'
634 value1 = '1,1,1,-1,-1,1,-1'
631 value2 = '1'
635 value2 = '1'
632 value3 = '7'
636 value3 = '7'
633 if self.volOpComCode.currentIndex() == 4:
637 if self.volOpComCode.currentIndex() == 4:
634 value1 = '1,1,1,-1,-1,-1,1,-1,-1,1,-1'
638 value1 = '1,1,1,-1,-1,-1,1,-1,-1,1,-1'
635 value2 = '1'
639 value2 = '1'
636 value3 = '11'
640 value3 = '11'
637 if self.volOpComCode.currentIndex() == 5:
641 if self.volOpComCode.currentIndex() == 5:
638 value1 = '1,1,1,1,1,-1,-1,1,1,-1,1,-1,1'
642 value1 = '1,1,1,1,1,-1,-1,1,1,-1,1,-1,1'
639 value2 = '1'
643 value2 = '1'
640 value3 = '13'
644 value3 = '13'
641 if self.volOpComCode.currentIndex() == 6:
645 if self.volOpComCode.currentIndex() == 6:
642 value1 = '1,1,-1,-1,-1,1'
646 value1 = '1,1,-1,-1,-1,1'
643 value2 = '2'
647 value2 = '2'
644 value3 = '3'
648 value3 = '3'
645 if self.volOpComCode.currentIndex() == 7:
649 if self.volOpComCode.currentIndex() == 7:
646 value1 = '1,1,-1,1,-1,-1,1,-1'
650 value1 = '1,1,-1,1,-1,-1,1,-1'
647 value2 = '2'
651 value2 = '2'
648 value3 = '4'
652 value3 = '4'
649 if self.volOpComCode.currentIndex() == 8:
653 if self.volOpComCode.currentIndex() == 8:
650 value1 = '1,1,1,-1,1,-1,-1,-1,1,-1'
654 value1 = '1,1,1,-1,1,-1,-1,-1,1,-1'
651 value2 = '2'
655 value2 = '2'
652 value3 = '5'
656 value3 = '5'
653 if self.volOpComCode.currentIndex() == 9:
657 if self.volOpComCode.currentIndex() == 9:
654 value1 = '1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1'
658 value1 = '1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1'
655 value2 = '2'
659 value2 = '2'
656 value3 = '7'
660 value3 = '7'
657 if self.volOpComCode.currentIndex() == 10:
661 if self.volOpComCode.currentIndex() == 10:
658 value1 = '1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1 ,-1 ,-1 ,1 ,1,1,-1 ,1 ,1 ,-1 ,1'
662 value1 = '1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1 ,-1 ,-1 ,1 ,1,1,-1 ,1 ,1 ,-1 ,1'
659 value2 = '2'
663 value2 = '2'
660 value3 = '11'
664 value3 = '11'
661 if self.volOpComCode.currentIndex() == 11:
665 if self.volOpComCode.currentIndex() == 11:
662 value1 = '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 value1 = '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'
663 value2 = '2'
667 value2 = '2'
664 value3 = '13'
668 value3 = '13'
665 if self.volOpComMode.currentIndex() == 0:
669 if self.volOpComMode.currentIndex() == 0:
666 value4 = '0'
670 value4 = '0'
667 if self.volOpComMode.currentIndex() == 1:
671 if self.volOpComMode.currentIndex() == 1:
668 value4 = '1'
672 value4 = '1'
669 if self.volOpComMode.currentIndex() == 2:
673 if self.volOpComMode.currentIndex() == 2:
670 value4 = '2'
674 value4 = '2'
671 opObj = puObj.addOperation(name=name_operation, optype='other')
675 opObj = puObj.addOperation(name=name_operation, optype='other')
672 if self.volOpComCode.currentIndex() == 12:
676 if self.volOpComCode.currentIndex() == 12:
673 pass
677 pass
674 else:
678 else:
675 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
679 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
676 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
680 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
677 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
681 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
678 opObj.addParameter(name=name_parameter4, value=value4, format=format4)
682 opObj.addParameter(name=name_parameter4, value=value4, format=format4)
679
683
680 if self.volOpCebFlip.isChecked():
684 if self.volOpCebFlip.isChecked():
681 name_operation = 'deFlip'
685 name_operation = 'deFlip'
682 optype = 'self'
686 optype = 'self'
683 value = self.volOpFlip.text()
687 value = str(self.volOpFlip.text())
684 name_parameter = 'channelList'
688 name_parameter = 'channelList'
685 format = 'intlist'
689 format = 'intlist'
686
690
687 opObj = puObj.addOperation(name=name_operation, optype=optype)
691 opObj = puObj.addOperation(name=name_operation, optype=optype)
688 opObj.addParameter(name=name_parameter, value=value, format=format)
692 if value:
693 opObj.addParameter(name=name_parameter, value=value, format=format)
689
694
690 if self.volOpCebCohInt.isChecked():
695 if self.volOpCebCohInt.isChecked():
691 name_operation = 'CohInt'
696 name_operation = 'CohInt'
692 optype = 'other'
697 optype = 'other'
693 value = self.volOpCohInt.text()
698 value = str(self.volOpCohInt.text())
694 name_parameter = 'n'
699 name_parameter = 'n'
695 format = 'float'
700 format = 'float'
696
701
697 opObj = puObj.addOperation(name=name_operation, optype=optype)
702 opObj = puObj.addOperation(name=name_operation, optype=optype)
698 opObj.addParameter(name=name_parameter, value=value, format=format)
703 opObj.addParameter(name=name_parameter, value=value, format=format)
699
704
700 if self.volGraphCebshow.isChecked():
705 if self.volGraphCebshow.isChecked():
701 name_operation = 'Scope'
706 name_operation = 'Scope'
702 optype = 'other'
707 optype = 'other'
703 name_parameter = 'type'
708 name_parameter = 'type'
704 value = 'Scope'
709 value = 'Scope'
705 if self.idImagscope == 0:
710 if self.idImagscope == 0:
706 self.idImagscope = 100
711 self.idImagscope = 100
707 else:
712 else:
708 self.idImagscope = self.idImagscope + 1
713 self.idImagscope = self.idImagscope + 1
709
714
710 name_parameter1 = 'id'
715 name_parameter1 = 'id'
711 value1 = int(self.idImagscope)
716 value1 = int(self.idImagscope)
712 format1 = 'int'
717 format1 = 'int'
713 format = 'str'
718 format = 'str'
714
719
715 opObj = puObj.addOperation(name=name_operation, optype=optype)
720 opObj = puObj.addOperation(name=name_operation, optype=optype)
716 # opObj.addParameter(name=name_parameter, value=value, format=format)
721 # opObj.addParameter(name=name_parameter, value=value, format=format)
717 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
722 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
718
723
719 channelList = self.volGraphChannelList.text()
724 channelList = str(self.volGraphChannelList.text())
720 xvalue = self.volGraphfreqrange.text()
725 xvalue = str(self.volGraphfreqrange.text())
721 yvalue = self.volGraphHeightrange.text()
726 yvalue = str(self.volGraphHeightrange.text())
722
727
723 if self.volGraphChannelList.isModified():
728 if self.volGraphChannelList.isModified():
724 try:
729 try:
725 value = str(channelList)
730 value = str(channelList)
726 except:
731 except:
727 return 0
732 return 0
728 opObj.addParameter(name='channelList', value=value, format='intlist')
733 opObj.addParameter(name='channelList', value=value, format='intlist')
729
734
730 if not xvalue == "":
735 if not xvalue == "":
731 xvalueList = xvalue.split(',')
736 xvalueList = xvalue.split(',')
732 try:
737 try:
733 value0 = int(xvalueList[0])
738 value0 = int(xvalueList[0])
734 value1 = int(xvalueList[1])
739 value1 = int(xvalueList[1])
735 except:
740 except:
736 return 0
741 return 0
737 opObj.addParameter(name='xmin', value=value0, format='int')
742 opObj.addParameter(name='xmin', value=value0, format='int')
738 opObj.addParameter(name='xmax', value=value1, format='int')
743 opObj.addParameter(name='xmax', value=value1, format='int')
739
744
740
745
741 if not yvalue == "":
746 if not yvalue == "":
742 yvalueList = yvalue.split(",")
747 yvalueList = yvalue.split(",")
743 try:
748 try:
744 value = yvalueList[0]
749 value = yvalueList[0]
745 value = yvalueList[1]
750 value = yvalueList[1]
746 except:
751 except:
747 return 0
752 return 0
748 opObj.addParameter(name='ymin', value=yvalueList[0], format='int')
753 opObj.addParameter(name='ymin', value=yvalueList[0], format='int')
749 opObj.addParameter(name='ymax', value=yvalueList[1], format='int')
754 opObj.addParameter(name='ymax', value=yvalueList[1], format='int')
750
755
751 if self.volGraphCebSave.isChecked():
756 if self.volGraphCebSave.isChecked():
752 checkPath = True
757 checkPath = True
753 opObj.addParameter(name='save', value='1', format='int')
758 opObj.addParameter(name='save', value='1', format='int')
754 opObj.addParameter(name='figpath', value=self.volGraphPath.text(), format='str')
759 opObj.addParameter(name='figpath', value=self.volGraphPath.text(), format='str')
755 value = self.volGraphPrefix.text()
760 value = str(self.volGraphPrefix.text())
756 if not value == "":
761 if not value == "":
757 try:
762 try:
758 value = str(self.volGraphPrefix.text())
763 value = str(self.volGraphPrefix.text())
759 except:
764 except:
760 self.console.clear()
765 self.console.clear()
761 self.console.append("Please Write prefix")
766 self.console.append("Please Write prefix")
762 return 0
767 return 0
763 opObj.addParameter(name='figfile', value=self.volGraphPrefix.text(), format='str')
768 opObj.addParameter(name='figfile', value=self.volGraphPrefix.text(), format='str')
764
769
765 localfolder = None
770 localfolder = None
766 if checkPath:
771 if checkPath:
767 localfolder = str(self.specGraphPath.text())
772 localfolder = str(self.specGraphPath.text())
768 if localfolder == '':
773 if localfolder == '':
769 self.console.clear()
774 self.console.clear()
770 self.console.append("Graphic path should be defined")
775 self.console.append("Graphic path should be defined")
771 return 0
776 return 0
772
777
773 # if something happend
778 # if something happend
774 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Voltage')
779 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Voltage')
775 if parms_ok:
780 if parms_ok:
776 name_operation = 'VoltageWriter'
781 name_operation = 'VoltageWriter'
777 optype = 'other'
782 optype = 'other'
778 name_parameter1 = 'path'
783 name_parameter1 = 'path'
779 name_parameter2 = 'blocksPerFile'
784 name_parameter2 = 'blocksPerFile'
780 name_parameter3 = 'profilesPerBlock'
785 name_parameter3 = 'profilesPerBlock'
781 value1 = output_path
786 value1 = output_path
782 value2 = blocksperfile
787 value2 = blocksperfile
783 value3 = profilesperblock
788 value3 = profilesperblock
784 format = "int"
789 format = "int"
785 opObj = puObj.addOperation(name=name_operation, optype=optype)
790 opObj = puObj.addOperation(name=name_operation, optype=optype)
786 opObj.addParameter(name=name_parameter1, value=value1)
791 opObj.addParameter(name=name_parameter1, value=value1)
787 opObj.addParameter(name=name_parameter2, value=value2, format=format)
792 opObj.addParameter(name=name_parameter2, value=value2, format=format)
788 opObj.addParameter(name=name_parameter3, value=value3, format=format)
793 opObj.addParameter(name=name_parameter3, value=value3, format=format)
789
794
790 #---------NEW VOLTAGE PROPERTIES
795 #---------NEW VOLTAGE PROPERTIES
791 self.showPUVoltageProperties(puObj)
796 self.refreshPUProperties(puObj)
792
797
793 self.console.clear()
798 self.console.clear()
794 self.console.append("If you want to save your project")
799 self.console.append("If you want to save your project")
795 self.console.append("click on your project name in the Tree Project Explorer")
800 self.console.append("click on your project name in the Tree Project Explorer")
796
801
797 self.actionSaveToolbar.setEnabled(True)
802 self.actionSaveToolbar.setEnabled(True)
798 self.actionStarToolbar.setEnabled(True)
803 self.actionStarToolbar.setEnabled(True)
799
804
800 return 1
805 return 1
801
806
802 """
807 """
803 Voltage Graph
808 Voltage Graph
804 """
809 """
805 @pyqtSignature("int")
810 @pyqtSignature("int")
806 def on_volGraphCebSave_stateChanged(self, p0):
811 def on_volGraphCebSave_stateChanged(self, p0):
807 """
812 """
808 Check Box habilita ingresode del numero de Integraciones a realizar
813 Check Box habilita ingresode del numero de Integraciones a realizar
809 """
814 """
810 if p0 == 2:
815 if p0 == 2:
811 self.volGraphPath.setEnabled(True)
816 self.volGraphPath.setEnabled(True)
812 self.volGraphPrefix.setEnabled(True)
817 self.volGraphPrefix.setEnabled(True)
813 self.volGraphToolPath.setEnabled(True)
818 self.volGraphToolPath.setEnabled(True)
814
819
815 if p0 == 0:
820 if p0 == 0:
816 self.volGraphPath.setEnabled(False)
821 self.volGraphPath.setEnabled(False)
817 self.volGraphPrefix.setEnabled(False)
822 self.volGraphPrefix.setEnabled(False)
818 self.volGraphToolPath.setEnabled(False)
823 self.volGraphToolPath.setEnabled(False)
819
824
820 @pyqtSignature("")
825 @pyqtSignature("")
821 def on_volGraphToolPath_clicked(self):
826 def on_volGraphToolPath_clicked(self):
822 """
827 """
823 Donde se guardan los DATOS
828 Donde se guardan los DATOS
824 """
829 """
825 self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
830 self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
826 self.volGraphPath.setText(self.dataPath)
831 self.volGraphPath.setText(self.dataPath)
827
832
828 # if not os.path.exists(self.dataPath):
833 # if not os.path.exists(self.dataPath):
829 # self.volGraphOk.setEnabled(False)
834 # self.volGraphOk.setEnabled(False)
830 # return
835 # return
831
836
832 @pyqtSignature("int")
837 @pyqtSignature("int")
833 def on_volGraphCebshow_stateChanged(self, p0):
838 def on_volGraphCebshow_stateChanged(self, p0):
834 """
839 """
835 Check Box habilita ingresode del numero de Integraciones a realizar
840 Check Box habilita ingresode del numero de Integraciones a realizar
836 """
841 """
837 if p0 == 0:
842 if p0 == 0:
838
843
839 self.volGraphChannelList.setEnabled(False)
844 self.volGraphChannelList.setEnabled(False)
840 self.volGraphfreqrange.setEnabled(False)
845 self.volGraphfreqrange.setEnabled(False)
841 self.volGraphHeightrange.setEnabled(False)
846 self.volGraphHeightrange.setEnabled(False)
842 if p0 == 2:
847 if p0 == 2:
843
848
844 self.volGraphChannelList.setEnabled(True)
849 self.volGraphChannelList.setEnabled(True)
845 self.volGraphfreqrange.setEnabled(True)
850 self.volGraphfreqrange.setEnabled(True)
846 self.volGraphHeightrange.setEnabled(True)
851 self.volGraphHeightrange.setEnabled(True)
847
852
848 """
853 """
849 Spectra operation
854 Spectra operation
850 """
855 """
851 @pyqtSignature("int")
856 @pyqtSignature("int")
852 def on_specOpCebRadarfrequency_stateChanged(self, p0):
857 def on_specOpCebRadarfrequency_stateChanged(self, p0):
853 """
858 """
854 Check Box habilita ingresode del numero de Integraciones a realizar
859 Check Box habilita ingresode del numero de Integraciones a realizar
855 """
860 """
856 if p0 == 2:
861 if p0 == 2:
857 self.specOpRadarfrequency.setEnabled(True)
862 self.specOpRadarfrequency.setEnabled(True)
858 if p0 == 0:
863 if p0 == 0:
859 self.specOpRadarfrequency.clear()
864 self.specOpRadarfrequency.clear()
860 self.specOpRadarfrequency.setEnabled(False)
865 self.specOpRadarfrequency.setEnabled(False)
861
866
862
867
863 @pyqtSignature("int")
868 @pyqtSignature("int")
864 def on_specOpCebCrossSpectra_stateChanged(self, p0):
869 def on_specOpCebCrossSpectra_stateChanged(self, p0):
865 """
870 """
866 Habilita la opcion de aοΏ½adir el parοΏ½metro CrossSpectra a la Unidad de Procesamiento .
871 Habilita la opcion de aοΏ½adir el parοΏ½metro CrossSpectra a la Unidad de Procesamiento .
867 """
872 """
868 if p0 == 2:
873 if p0 == 2:
869 # self.specOpnFFTpoints.setEnabled(True)
874 # self.specOpnFFTpoints.setEnabled(True)
870 self.specOppairsList.setEnabled(True)
875 self.specOppairsList.setEnabled(True)
871 if p0 == 0:
876 if p0 == 0:
872 # self.specOpnFFTpoints.setEnabled(False)
877 # self.specOpnFFTpoints.setEnabled(False)
873 self.specOppairsList.setEnabled(False)
878 self.specOppairsList.setEnabled(False)
874
879
875 @pyqtSignature("int")
880 @pyqtSignature("int")
876 def on_specOpCebChannel_stateChanged(self, p0):
881 def on_specOpCebChannel_stateChanged(self, p0):
877 """
882 """
878 Habilita la opcion de aοΏ½adir el parοΏ½metro numero de Canales a la Unidad de Procesamiento .
883 Habilita la opcion de aοΏ½adir el parοΏ½metro numero de Canales a la Unidad de Procesamiento .
879 """
884 """
880 if p0 == 2:
885 if p0 == 2:
881 self.specOpChannel.setEnabled(True)
886 self.specOpChannel.setEnabled(True)
882 self.specOpComChannel.setEnabled(True)
887 self.specOpComChannel.setEnabled(True)
883 if p0 == 0:
888 if p0 == 0:
884 self.specOpChannel.setEnabled(False)
889 self.specOpChannel.setEnabled(False)
885 self.specOpComChannel.setEnabled(False)
890 self.specOpComChannel.setEnabled(False)
886
891
887 @pyqtSignature("int")
892 @pyqtSignature("int")
888 def on_specOpCebHeights_stateChanged(self, p0):
893 def on_specOpCebHeights_stateChanged(self, p0):
889 """
894 """
890 Habilita la opcion de aοΏ½adir el parοΏ½metro de alturas a la Unidad de Procesamiento .
895 Habilita la opcion de aοΏ½adir el parοΏ½metro de alturas a la Unidad de Procesamiento .
891 """
896 """
892 if p0 == 2:
897 if p0 == 2:
893 self.specOpComHeights.setEnabled(True)
898 self.specOpComHeights.setEnabled(True)
894 self.specOpHeights.setEnabled(True)
899 self.specOpHeights.setEnabled(True)
895 if p0 == 0:
900 if p0 == 0:
896 self.specOpComHeights.setEnabled(False)
901 self.specOpComHeights.setEnabled(False)
897 self.specOpHeights.setEnabled(False)
902 self.specOpHeights.setEnabled(False)
898
903
899
904
900 @pyqtSignature("int")
905 @pyqtSignature("int")
901 def on_specOpCebIncoherent_stateChanged(self, p0):
906 def on_specOpCebIncoherent_stateChanged(self, p0):
902 """
907 """
903 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
908 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
904 """
909 """
905 if p0 == 2:
910 if p0 == 2:
906 self.specOpIncoherent.setEnabled(True)
911 self.specOpIncoherent.setEnabled(True)
907 if p0 == 0:
912 if p0 == 0:
908 self.specOpIncoherent.setEnabled(False)
913 self.specOpIncoherent.setEnabled(False)
909
914
910 @pyqtSignature("int")
915 @pyqtSignature("int")
911 def on_specOpCebRemoveDC_stateChanged(self, p0):
916 def on_specOpCebRemoveDC_stateChanged(self, p0):
912 """
917 """
913 Habilita la opcion de aοΏ½adir el parοΏ½metro remover DC a la Unidad de Procesamiento .
918 Habilita la opcion de aοΏ½adir el parοΏ½metro remover DC a la Unidad de Procesamiento .
914 """
919 """
915 if p0 == 2:
920 if p0 == 2:
916 self.specOpComRemoveDC.setEnabled(True)
921 self.specOpComRemoveDC.setEnabled(True)
917 if p0 == 0:
922 if p0 == 0:
918 self.specOpComRemoveDC.setEnabled(False)
923 self.specOpComRemoveDC.setEnabled(False)
919
924
920 @pyqtSignature("int")
925 @pyqtSignature("int")
921 def on_specOpCebgetNoise_stateChanged(self, p0):
926 def on_specOpCebgetNoise_stateChanged(self, p0):
922 """
927 """
923 Habilita la opcion de aοΏ½adir la estimacion de ruido a la Unidad de Procesamiento .
928 Habilita la opcion de aοΏ½adir la estimacion de ruido a la Unidad de Procesamiento .
924 """
929 """
925 if p0 == 2:
930 if p0 == 2:
926 self.specOpgetNoise.setEnabled(True)
931 self.specOpgetNoise.setEnabled(True)
927
932
928 if p0 == 0:
933 if p0 == 0:
929 self.specOpgetNoise.setEnabled(False)
934 self.specOpgetNoise.setEnabled(False)
930
935
931 def refreshID(self, puObj):
936 def refreshID(self, puObj):
932 opObj = puObj.getOperationObj(name='Scope')
937 opObj = puObj.getOperationObj(name='Scope')
933 # opObj = puObj.getOpObjfromParamValue(value="Scope")
938 # opObj = puObj.getOpObjfromParamValue(value="Scope")
934 if opObj == None:
939 if opObj == None:
935 pass
940 pass
936 else:
941 else:
937 name_parameter1 = 'id'
942 name_parameter1 = 'id'
938 format1 = 'int'
943 format1 = 'int'
939 if self.idImagscope == 0:
944 if self.idImagscope == 0:
940 self.idImagscope = 100
945 self.idImagscope = 100
941 else:
946 else:
942 self.idImagscope = self.idImagscope + 1
947 self.idImagscope = self.idImagscope + 1
943 value1 = int(self.idImagscope)
948 value1 = int(self.idImagscope)
944 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
949 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
945
950
946 opObj = puObj.getOperationObj(name='SpectraPlot')
951 opObj = puObj.getOperationObj(name='SpectraPlot')
947 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
952 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
948 if opObj == None:
953 if opObj == None:
949 pass
954 pass
950 else:
955 else:
951 name_parameter1 = 'id'
956 name_parameter1 = 'id'
952 format1 = 'int'
957 format1 = 'int'
953 if self.idImagspectra == 0:
958 if self.idImagspectra == 0:
954 self.idImagspectra = 200
959 self.idImagspectra = 200
955 else:
960 else:
956 self.idImagspectra = self.idImagspectra + 1
961 self.idImagspectra = self.idImagspectra + 1
957 value1 = int(self.idImagspectra)
962 value1 = int(self.idImagspectra)
958 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
963 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
959
964
960 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
965 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
961 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
966 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
962 if opObj == None:
967 if opObj == None:
963 pass
968 pass
964 else:
969 else:
965 name_parameter1 = 'id'
970 name_parameter1 = 'id'
966 format1 = 'int'
971 format1 = 'int'
967 if self.idImagcross == 0:
972 if self.idImagcross == 0:
968 self.idImagcross = 300
973 self.idImagcross = 300
969 else:
974 else:
970 self.idImagcross = self.idImagcross + 1
975 self.idImagcross = self.idImagcross + 1
971 value1 = int(self.idImagcross)
976 value1 = int(self.idImagcross)
972 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
977 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
973
978
974 opObj = puObj.getOperationObj(name='RTIPlot')
979 opObj = puObj.getOperationObj(name='RTIPlot')
975 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
980 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
976 if opObj == None:
981 if opObj == None:
977 pass
982 pass
978 else:
983 else:
979 name_parameter1 = 'id'
984 name_parameter1 = 'id'
980 format1 = 'int'
985 format1 = 'int'
981 if self.idImagrti == 0:
986 if self.idImagrti == 0:
982 self.idImagrti = 400
987 self.idImagrti = 400
983 else:
988 else:
984 self.idImagrti = self.idImagrti + 1
989 self.idImagrti = self.idImagrti + 1
985 value1 = int(self.idImagrti)
990 value1 = int(self.idImagrti)
986 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
991 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
987
992
988 opObj = puObj.getOperationObj(name='CoherenceMap')
993 opObj = puObj.getOperationObj(name='CoherenceMap')
989 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
994 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
990 if opObj == None:
995 if opObj == None:
991 pass
996 pass
992 else:
997 else:
993 name_parameter1 = 'id'
998 name_parameter1 = 'id'
994 format1 = 'int'
999 format1 = 'int'
995 if self.idImagcoherence == 0:
1000 if self.idImagcoherence == 0:
996 self.idImagcoherence = 500
1001 self.idImagcoherence = 500
997 else:
1002 else:
998 self.idImagcoherence = self.idImagcoherence + 1
1003 self.idImagcoherence = self.idImagcoherence + 1
999 value1 = int(self.idImagcoherence)
1004 value1 = int(self.idImagcoherence)
1000 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1005 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1001
1006
1002 opObj = puObj.getOperationObj(name='PowerProfilePlot')
1007 opObj = puObj.getOperationObj(name='PowerProfilePlot')
1003 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
1008 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
1004 if opObj == None:
1009 if opObj == None:
1005 pass
1010 pass
1006 else:
1011 else:
1007 name_parameter1 = 'id'
1012 name_parameter1 = 'id'
1008 format1 = 'int'
1013 format1 = 'int'
1009 if self.idImagpower == 0:
1014 if self.idImagpower == 0:
1010 self.idImagpower = 600
1015 self.idImagpower = 600
1011 else:
1016 else:
1012 self.idImagpower = self.idImagpower + 1
1017 self.idImagpower = self.idImagpower + 1
1013 value1 = int(self.idImagpower)
1018 value1 = int(self.idImagpower)
1014 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1019 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1015
1020
1016 opObj = puObj.getOperationObj(name='Noise')
1021 opObj = puObj.getOperationObj(name='Noise')
1017 # opObj = puObj.getOpObjfromParamValue(value="Noise")
1022 # opObj = puObj.getOpObjfromParamValue(value="Noise")
1018 if opObj == None:
1023 if opObj == None:
1019 pass
1024 pass
1020 else:
1025 else:
1021 name_parameter1 = 'id'
1026 name_parameter1 = 'id'
1022 format1 = 'int'
1027 format1 = 'int'
1023 if self.idImagrtinoise == 0:
1028 if self.idImagrtinoise == 0:
1024 self.idImagrtinoise = 700
1029 self.idImagrtinoise = 700
1025 else:
1030 else:
1026 self.idImagrtinoise = self.idImagrtinoise + 1
1031 self.idImagrtinoise = self.idImagrtinoise + 1
1027 value1 = int(self.idImagrtinoise)
1032 value1 = int(self.idImagrtinoise)
1028 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1033 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1029
1034
1030 opObj = puObj.getOperationObj(name='SpectraHeisScope')
1035 opObj = puObj.getOperationObj(name='SpectraHeisScope')
1031 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
1036 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
1032 if opObj == None:
1037 if opObj == None:
1033 pass
1038 pass
1034 else:
1039 else:
1035 name_parameter1 = 'id'
1040 name_parameter1 = 'id'
1036 format1 = 'int'
1041 format1 = 'int'
1037 if self.idImagspectraHeis == 0:
1042 if self.idImagspectraHeis == 0:
1038 self.idImagspectraHeis = 800
1043 self.idImagspectraHeis = 800
1039 else:
1044 else:
1040 self.idImagspectraHeis = self.idImagspectraHeis + 1
1045 self.idImagspectraHeis = self.idImagspectraHeis + 1
1041 value1 = int(self.idImagspectraHeis)
1046 value1 = int(self.idImagspectraHeis)
1042 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1047 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1043
1048
1044 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
1049 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
1045 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
1050 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
1046 if opObj == None:
1051 if opObj == None:
1047 pass
1052 pass
1048 else:
1053 else:
1049 name_parameter1 = 'id'
1054 name_parameter1 = 'id'
1050 format1 = 'int'
1055 format1 = 'int'
1051 if self.idImagrtiHeis == 0:
1056 if self.idImagrtiHeis == 0:
1052 self.idImagrtiHeis = 900
1057 self.idImagrtiHeis = 900
1053 else:
1058 else:
1054 self.idImagrtiHeis = self.idImagrtiHeis + 1
1059 self.idImagrtiHeis = self.idImagrtiHeis + 1
1055 value1 = int(self.idImagrtiHeis)
1060 value1 = int(self.idImagrtiHeis)
1056 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1061 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1057
1062
1058 @pyqtSignature("")
1063 @pyqtSignature("")
1059 def on_specOpOk_clicked(self):
1064 def on_specOpOk_clicked(self):
1060 """
1065 """
1061 AΓ‘ADE OPERACION SPECTRA
1066 AΓ‘ADE OPERACION SPECTRA
1062 """
1067 """
1063
1068
1064 addFTP = False
1069 addFTP = False
1065 checkPath = False
1070 checkPath = False
1066
1071
1067 self.actionSaveToolbar.setEnabled(False)
1072 self.actionSaveToolbar.setEnabled(False)
1068 self.actionStarToolbar.setEnabled(False)
1073 self.actionStarToolbar.setEnabled(False)
1069
1074
1070 puObj = self.getSelectedPUObj()
1075 projectObj = self.getSelectedProjectObj()
1076 puObj = self.getSelectedItemObj()
1077
1071 puObj.removeOperations()
1078 puObj.removeOperations()
1072
1079
1073 if self.specOpCebRadarfrequency.isChecked():
1080 if self.specOpCebRadarfrequency.isChecked():
1074 value = self.specOpRadarfrequency.text()
1081 value = self.specOpRadarfrequency.text()
1075 format = 'float'
1082 format = 'float'
1076 name_operation = 'setRadarFrequency'
1083 name_operation = 'setRadarFrequency'
1077 name_parameter = 'frequency'
1084 name_parameter = 'frequency'
1078 if not value == "":
1085 if not value == "":
1079 try:
1086 try:
1080 radarfreq = float(self.specOpRadarfrequency.text())
1087 radarfreq = float(self.specOpRadarfrequency.text())
1081 except:
1088 except:
1082 self.console.clear()
1089 self.console.clear()
1083 self.console.append("Write the parameter Radar Frequency type float")
1090 self.console.append("Write the parameter Radar Frequency type float")
1084 return 0
1091 return 0
1085 opObj = puObj.addOperation(name=name_operation)
1092 opObj = puObj.addOperation(name=name_operation)
1086 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
1093 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
1087
1094
1088
1095 inputId = puObj.getInputId()
1089 if self.proComDataType.currentText() == 'Voltage':
1096 inputPuObj = projectObj.getProcUnitObj(inputId)
1090 name_parameter = 'nFFTPoints'
1097
1091 value = self.specOpnFFTpoints.text()
1098 if inputPuObj.datatype == 'Voltage' or inputPuObj.datatype == 'USRP':
1092 name_parameter1 = 'nProfiles'
1099
1093 value1 = self.specOpProfiles.text()
1094 name_parameter2 = 'ippFactor'
1095 value2 = self.specOpippFactor.text()
1096 format = 'int'
1097 try:
1100 try:
1098 value = int(self.specOpnFFTpoints.text())
1101 value = int(self.specOpnFFTpoints.text())
1102 puObj.addParameter(name='nFFTPoints', value=value, format='int')
1099 except:
1103 except:
1100 self.console.clear()
1104 self.console.clear()
1101 self.console.append("Please Write the number of FFT")
1105 self.console.append("Please write the number of FFT")
1102 return 0
1106 return 0
1103 puObj.addParameter(name=name_parameter, value=value, format=format)
1107
1104 if not value1 == "":
1108 try:
1105 try:
1109 value1 = int(self.specOpProfiles.text())
1106 value1 = int(self.specOpProfiles.text())
1110 puObj.addParameter(name='nProfiles', value=value1, format='int')
1107 except:
1111 except:
1108 self.console.clear()
1112 self.console.append("Please Write the number of Profiles")
1109 self.console.append("Please Write the number of Profiles")
1113
1110 return 0
1114 try:
1111 puObj.addParameter(name=name_parameter1, value=value1, format=format)
1115 value2 = int(self.specOpippFactor.text())
1112 if not value2 == "":
1116 puObj.addParameter(name='ippFactor' , value=value2 , format='int')
1113 try:
1117 except:
1114 value2 = int(self.specOpippFactor.text())
1118 self.console.append("Please Write the Number of IppFactor")
1115 except:
1119
1116 self.console.clear()
1117 self.console.append("Please Write the Number of IppFactor")
1118 puObj.addParameter(name=name_parameter2 , value=value2 , format=format)
1119
1120
1120 if self.specOpCebCrossSpectra.isChecked():
1121 if self.specOpCebCrossSpectra.isChecked():
1121 name_parameter = 'pairsList'
1122 name_parameter = 'pairsList'
1122 format = 'pairslist'
1123 format = 'pairslist'
1123 value2 = self.specOppairsList.text()
1124 value2 = self.specOppairsList.text()
1124 puObj.addParameter(name=name_parameter, value=value2, format=format)
1125 puObj.addParameter(name=name_parameter, value=value2, format=format)
1125
1126
1126 if self.specOpCebHeights.isChecked():
1127 if self.specOpCebHeights.isChecked():
1127 value = str(self.specOpHeights.text())
1128 value = str(self.specOpHeights.text())
1128
1129
1129 if value == "":
1130 if value == "":
1130 print "Please fill height range"
1131 print "Please fill height range"
1131 return 0
1132 return 0
1132
1133
1133 valueList = value.split(',')
1134 valueList = value.split(',')
1134 format = 'float'
1135 format = 'float'
1135 value0 = valueList[0]
1136 value0 = valueList[0]
1136 value1 = valueList[1]
1137 value1 = valueList[1]
1137
1138
1138 if self.specOpComHeights.currentIndex() == 0:
1139 if self.specOpComHeights.currentIndex() == 0:
1139 name_operation = 'selectHeights'
1140 name_operation = 'selectHeights'
1140 name_parameter1 = 'minHei'
1141 name_parameter1 = 'minHei'
1141 name_parameter2 = 'maxHei'
1142 name_parameter2 = 'maxHei'
1142 else:
1143 else:
1143 name_operation = 'selectHeightsByIndex'
1144 name_operation = 'selectHeightsByIndex'
1144 name_parameter1 = 'minIndex'
1145 name_parameter1 = 'minIndex'
1145 name_parameter2 = 'maxIndex'
1146 name_parameter2 = 'maxIndex'
1146 opObj = puObj.addOperation(name=name_operation)
1147 opObj = puObj.addOperation(name=name_operation)
1147 opObj.addParameter(name=name_parameter1, value=value0, format=format)
1148 opObj.addParameter(name=name_parameter1, value=value0, format=format)
1148 opObj.addParameter(name=name_parameter2, value=value1, format=format)
1149 opObj.addParameter(name=name_parameter2, value=value1, format=format)
1149
1150
1150 if self.specOpCebChannel.isChecked():
1151 if self.specOpCebChannel.isChecked():
1151 value = str(self.specOpChannel.text())
1152 value = str(self.specOpChannel.text())
1152
1153
1153 if value == "":
1154 if value == "":
1154 print "Please fill channel list"
1155 print "Please fill channel list"
1155 return 0
1156 return 0
1156
1157
1157 format = 'intlist'
1158 format = 'intlist'
1158 if self.specOpComChannel.currentIndex() == 0:
1159 if self.specOpComChannel.currentIndex() == 0:
1159 name_operation = "selectChannels"
1160 name_operation = "selectChannels"
1160 name_parameter = 'channelList'
1161 name_parameter = 'channelList'
1161 else:
1162 else:
1162 name_operation = "selectChannelsByIndex"
1163 name_operation = "selectChannelsByIndex"
1163 name_parameter = 'channelIndexList'
1164 name_parameter = 'channelIndexList'
1164 opObj = puObj.addOperation(name=name_operation)
1165 opObj = puObj.addOperation(name=name_operation)
1165 opObj.addParameter(name=name_parameter, value=value, format=format)
1166 opObj.addParameter(name=name_parameter, value=value, format=format)
1166
1167
1167 if self.specOpCebIncoherent.isChecked():
1168 if self.specOpCebIncoherent.isChecked():
1168 value = str(self.specOpIncoherent.text())
1169 value = str(self.specOpIncoherent.text())
1169
1170
1170 if value == "":
1171 if value == "":
1171 print "Please fill Incoherent integration value"
1172 print "Please fill Incoherent integration value"
1172 return 0
1173 return 0
1173
1174
1174 name_operation = 'IncohInt'
1175 name_operation = 'IncohInt'
1175 optype = 'other'
1176 optype = 'other'
1176 if self.specOpCobIncInt.currentIndex() == 0:
1177 if self.specOpCobIncInt.currentIndex() == 0:
1177 name_parameter = 'timeInterval'
1178 name_parameter = 'timeInterval'
1178 format = 'float'
1179 format = 'float'
1179 else:
1180 else:
1180 name_parameter = 'n'
1181 name_parameter = 'n'
1181 format = 'float'
1182 format = 'float'
1182
1183
1183 opObj = puObj.addOperation(name=name_operation, optype=optype)
1184 opObj = puObj.addOperation(name=name_operation, optype=optype)
1184 opObj.addParameter(name=name_parameter, value=value, format=format)
1185 opObj.addParameter(name=name_parameter, value=value, format=format)
1185
1186
1186 if self.specOpCebRemoveDC.isChecked():
1187 if self.specOpCebRemoveDC.isChecked():
1187 name_operation = 'removeDC'
1188 name_operation = 'removeDC'
1188 name_parameter = 'mode'
1189 name_parameter = 'mode'
1189 format = 'int'
1190 format = 'int'
1190 if self.specOpComRemoveDC.currentIndex() == 0:
1191 if self.specOpComRemoveDC.currentIndex() == 0:
1191 value = 1
1192 value = 1
1192 else:
1193 else:
1193 value = 2
1194 value = 2
1194 opObj = puObj.addOperation(name=name_operation)
1195 opObj = puObj.addOperation(name=name_operation)
1195 opObj.addParameter(name=name_parameter, value=value, format=format)
1196 opObj.addParameter(name=name_parameter, value=value, format=format)
1196
1197
1197 if self.specOpCebRemoveInt.isChecked():
1198 if self.specOpCebRemoveInt.isChecked():
1198 name_operation = 'removeInterference'
1199 name_operation = 'removeInterference'
1199 opObj = puObj.addOperation(name=name_operation)
1200 opObj = puObj.addOperation(name=name_operation)
1200
1201
1201
1202
1202 if self.specOpCebgetNoise.isChecked():
1203 if self.specOpCebgetNoise.isChecked():
1203 value = self.specOpgetNoise.text()
1204 value = self.specOpgetNoise.text()
1204 valueList = value.split(',')
1205 valueList = value.split(',')
1205 format = 'float'
1206 format = 'float'
1206 name_operation = "getNoise"
1207 name_operation = "getNoise"
1207 opObj = puObj.addOperation(name=name_operation)
1208 opObj = puObj.addOperation(name=name_operation)
1208
1209
1209 if not value == '':
1210 if not value == '':
1210 valueList = value.split(',')
1211 valueList = value.split(',')
1211 length = len(valueList)
1212 length = len(valueList)
1212 if length == 1:
1213 if length == 1:
1213 try:
1214 try:
1214 value1 = float(valueList[0])
1215 value1 = float(valueList[0])
1215 except:
1216 except:
1216 self.console.clear()
1217 self.console.clear()
1217 self.console.append("Please Write correct parameter Get Noise")
1218 self.console.append("Please Write correct parameter Get Noise")
1218 return 0
1219 return 0
1219 name1 = 'minHei'
1220 name1 = 'minHei'
1220 opObj.addParameter(name=name1, value=value1, format=format)
1221 opObj.addParameter(name=name1, value=value1, format=format)
1221 elif length == 2:
1222 elif length == 2:
1222 try:
1223 try:
1223 value1 = float(valueList[0])
1224 value1 = float(valueList[0])
1224 value2 = float(valueList[1])
1225 value2 = float(valueList[1])
1225 except:
1226 except:
1226 self.console.clear()
1227 self.console.clear()
1227 self.console.append("Please Write corrects parameter Get Noise")
1228 self.console.append("Please Write corrects parameter Get Noise")
1228 return 0
1229 return 0
1229 name1 = 'minHei'
1230 name1 = 'minHei'
1230 name2 = 'maxHei'
1231 name2 = 'maxHei'
1231 opObj.addParameter(name=name1, value=value1, format=format)
1232 opObj.addParameter(name=name1, value=value1, format=format)
1232 opObj.addParameter(name=name2, value=value2, format=format)
1233 opObj.addParameter(name=name2, value=value2, format=format)
1233
1234
1234 elif length == 3:
1235 elif length == 3:
1235 try:
1236 try:
1236 value1 = float(valueList[0])
1237 value1 = float(valueList[0])
1237 value2 = float(valueList[1])
1238 value2 = float(valueList[1])
1238 value3 = float(valueList[2])
1239 value3 = float(valueList[2])
1239 except:
1240 except:
1240 self.console.clear()
1241 self.console.clear()
1241 self.console.append("Please Write corrects parameter Get Noise")
1242 self.console.append("Please Write corrects parameter Get Noise")
1242 return 0
1243 return 0
1243 name1 = 'minHei'
1244 name1 = 'minHei'
1244 name2 = 'maxHei'
1245 name2 = 'maxHei'
1245 name3 = 'minVel'
1246 name3 = 'minVel'
1246 opObj.addParameter(name=name1, value=value1, format=format)
1247 opObj.addParameter(name=name1, value=value1, format=format)
1247 opObj.addParameter(name=name2, value=value2, format=format)
1248 opObj.addParameter(name=name2, value=value2, format=format)
1248 opObj.addParameter(name=name3, value=value3, format=format)
1249 opObj.addParameter(name=name3, value=value3, format=format)
1249
1250
1250 elif length == 4:
1251 elif length == 4:
1251 try:
1252 try:
1252 value1 = float(valueList[0])
1253 value1 = float(valueList[0])
1253 value2 = float(valueList[1])
1254 value2 = float(valueList[1])
1254 value3 = float(valueList[2])
1255 value3 = float(valueList[2])
1255 value4 = float(valueList[3])
1256 value4 = float(valueList[3])
1256 except:
1257 except:
1257 self.console.clear()
1258 self.console.clear()
1258 self.console.append("Please Write corrects parameter Get Noise")
1259 self.console.append("Please Write corrects parameter Get Noise")
1259 return 0
1260 return 0
1260 name1 = 'minHei'
1261 name1 = 'minHei'
1261 name2 = 'maxHei'
1262 name2 = 'maxHei'
1262 name3 = 'minVel'
1263 name3 = 'minVel'
1263 name4 = 'maxVel'
1264 name4 = 'maxVel'
1264 opObj.addParameter(name=name1, value=value1, format=format)
1265 opObj.addParameter(name=name1, value=value1, format=format)
1265 opObj.addParameter(name=name2, value=value2, format=format)
1266 opObj.addParameter(name=name2, value=value2, format=format)
1266 opObj.addParameter(name=name3, value=value3, format=format)
1267 opObj.addParameter(name=name3, value=value3, format=format)
1267 opObj.addParameter(name=name4, value=value4, format=format)
1268 opObj.addParameter(name=name4, value=value4, format=format)
1268
1269
1269 elif length > 4:
1270 elif length > 4:
1270 self.console.clear()
1271 self.console.clear()
1271 self.console.append("Get Noise Operation only accepts 4 parameters")
1272 self.console.append("Get Noise Operation only accepts 4 parameters")
1272 return 0
1273 return 0
1273
1274
1274 #-----Spectra Plot-----
1275 #-----Spectra Plot-----
1275 if self.specGraphCebSpectraplot.isChecked():
1276 if self.specGraphCebSpectraplot.isChecked():
1276 name_operation = 'SpectraPlot'
1277 name_operation = 'SpectraPlot'
1277 optype = 'other'
1278 optype = 'other'
1278 name_parameter = 'type'
1279 name_parameter = 'type'
1279 value = 'SpectraPlot'
1280 value = 'SpectraPlot'
1280 format = 'str'
1281 format = 'str'
1281 if self.idImagspectra == 0:
1282 if self.idImagspectra == 0:
1282 self.idImagspectra = 200
1283 self.idImagspectra = 200
1283 else:
1284 else:
1284 self.idImagspectra = self.idImagspectra + 1
1285 self.idImagspectra = self.idImagspectra + 1
1285 name_parameter1 = 'id'
1286 name_parameter1 = 'id'
1286 value1 = int(self.idImagspectra)
1287 value1 = int(self.idImagspectra)
1287 format1 = 'int'
1288 format1 = 'int'
1288
1289
1289 format = 'str'
1290 format = 'str'
1290
1291
1291 channelList = self.specGgraphChannelList.text()
1292 channelList = self.specGgraphChannelList.text()
1292 xvalue = self.specGgraphFreq.text()
1293 xvalue = self.specGgraphFreq.text()
1293 yvalue = self.specGgraphHeight.text()
1294 yvalue = self.specGgraphHeight.text()
1294 zvalue = self.specGgraphDbsrange.text()
1295 zvalue = self.specGgraphDbsrange.text()
1295 opObj = puObj.addOperation(name=name_operation, optype=optype)
1296 opObj = puObj.addOperation(name=name_operation, optype=optype)
1296 # opObj.addParameter(name=name_parameter, value=value, format=format)
1297 # opObj.addParameter(name=name_parameter, value=value, format=format)
1297 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1298 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1298
1299
1299 if not channelList == '':
1300 if not channelList == '':
1300 name_parameter = 'channelList'
1301 name_parameter = 'channelList'
1301 format = 'intlist'
1302 format = 'intlist'
1302 opObj.addParameter(name=name_parameter, value=channelList, format=format)
1303 opObj.addParameter(name=name_parameter, value=channelList, format=format)
1303
1304
1304 if not xvalue == '':
1305 if not xvalue == '':
1305 xvalueList = xvalue.split(',')
1306 xvalueList = xvalue.split(',')
1306 try:
1307 try:
1307 value1 = float(xvalueList[0])
1308 value1 = float(xvalueList[0])
1308 value2 = float(xvalueList[1])
1309 value2 = float(xvalueList[1])
1309 except:
1310 except:
1310 self.console.clear()
1311 self.console.clear()
1311 self.console.append("Please Write corrects parameter freq")
1312 self.console.append("Please Write corrects parameter freq")
1312 return 0
1313 return 0
1313 name1 = 'xmin'
1314 name1 = 'xmin'
1314 name2 = 'xmax'
1315 name2 = 'xmax'
1315 format = 'float'
1316 format = 'float'
1316 opObj.addParameter(name=name1, value=value1, format=format)
1317 opObj.addParameter(name=name1, value=value1, format=format)
1317 opObj.addParameter(name=name2, value=value2, format=format)
1318 opObj.addParameter(name=name2, value=value2, format=format)
1318 #------specGgraphHeight---
1319 #------specGgraphHeight---
1319 if not yvalue == '':
1320 if not yvalue == '':
1320 yvalueList = yvalue.split(",")
1321 yvalueList = yvalue.split(",")
1321 try:
1322 try:
1322 value1 = float(yvalueList[0])
1323 value1 = float(yvalueList[0])
1323 value2 = float(yvalueList[1])
1324 value2 = float(yvalueList[1])
1324 except:
1325 except:
1325 self.console.clear()
1326 self.console.clear()
1326 self.console.append("Please Write corrects parameter Height")
1327 self.console.append("Please Write corrects parameter Height")
1327 return 0
1328 return 0
1328 name1 = 'ymin'
1329 name1 = 'ymin'
1329 name2 = 'ymax'
1330 name2 = 'ymax'
1330 format = 'float'
1331 format = 'float'
1331 opObj.addParameter(name=name1, value=value1, format=format)
1332 opObj.addParameter(name=name1, value=value1, format=format)
1332 opObj.addParameter(name=name2, value=value2, format=format)
1333 opObj.addParameter(name=name2, value=value2, format=format)
1333
1334
1334 if not zvalue == '':
1335 if not zvalue == '':
1335 zvalueList = zvalue.split(",")
1336 zvalueList = zvalue.split(",")
1336 try:
1337 try:
1337 value = float(zvalueList[0])
1338 value = float(zvalueList[0])
1338 value = float(zvalueList[1])
1339 value = float(zvalueList[1])
1339 except:
1340 except:
1340 self.console.clear()
1341 self.console.clear()
1341 self.console.append("Please Write corrects parameter Dbsrange")
1342 self.console.append("Please Write corrects parameter Dbsrange")
1342 return 0
1343 return 0
1343 format = 'float'
1344 format = 'float'
1344 opObj.addParameter(name='zmin', value=zvalueList[0], format=format)
1345 opObj.addParameter(name='zmin', value=zvalueList[0], format=format)
1345 opObj.addParameter(name='zmax', value=zvalueList[1], format=format)
1346 opObj.addParameter(name='zmax', value=zvalueList[1], format=format)
1346
1347
1347 if self.specGraphSaveSpectra.isChecked():
1348 if self.specGraphSaveSpectra.isChecked():
1348 checkPath = True
1349 checkPath = True
1349 name_parameter1 = 'save'
1350 name_parameter1 = 'save'
1350 name_parameter2 = 'figpath'
1351 name_parameter2 = 'figpath'
1351 name_parameter3 = 'figfile'
1352 name_parameter3 = 'figfile'
1352 value1 = '1'
1353 value1 = '1'
1353 value2 = self.specGraphPath.text()
1354 value2 = self.specGraphPath.text()
1354 value3 = self.specGraphPrefix.text()
1355 value3 = self.specGraphPrefix.text()
1355 format1 = 'bool'
1356 format1 = 'bool'
1356 format2 = 'str'
1357 format2 = 'str'
1357 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
1358 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
1358 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
1359 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
1359 opObj.addParameter(name=name_parameter3, value=value3, format=format2)
1360 opObj.addParameter(name=name_parameter3, value=value3, format=format2)
1360
1361
1361 # opObj.addParameter(name='wr_period', value='5',format='int')
1362 # opObj.addParameter(name='wr_period', value='5',format='int')
1362
1363
1363 if self.specGraphftpSpectra.isChecked():
1364 if self.specGraphftpSpectra.isChecked():
1364 opObj.addParameter(name='ftp', value='1', format='int')
1365 opObj.addParameter(name='ftp', value='1', format='int')
1365 self.addFTPConf2Operation(puObj, opObj)
1366 self.addFTPConf2Operation(puObj, opObj)
1366 addFTP = True
1367 addFTP = True
1367
1368
1368 if self.specGraphCebCrossSpectraplot.isChecked():
1369 if self.specGraphCebCrossSpectraplot.isChecked():
1369 name_operation = 'CrossSpectraPlot'
1370 name_operation = 'CrossSpectraPlot'
1370 optype = 'other'
1371 optype = 'other'
1371 opObj = puObj.addOperation(name=name_operation, optype=optype)
1372 opObj = puObj.addOperation(name=name_operation, optype=optype)
1372 # opObj.addParameter(name='type', value="CrossSpectraPlot", format='str')
1373 # opObj.addParameter(name='type', value="CrossSpectraPlot", format='str')
1373 opObj.addParameter(name='power_cmap', value='jet', format='str')
1374 opObj.addParameter(name='power_cmap', value='jet', format='str')
1374 opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1375 opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1375 opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1376 opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1376
1377
1377 if self.idImagcross == 0:
1378 if self.idImagcross == 0:
1378 self.idImagcross = 300
1379 self.idImagcross = 300
1379 else:
1380 else:
1380 self.idImagcross = self.idImagcross + 1
1381 self.idImagcross = self.idImagcross + 1
1381 value1 = int(self.idImagcross)
1382 value1 = int(self.idImagcross)
1382 channelList = self.specGgraphChannelList.text()
1383 channelList = self.specGgraphChannelList.text()
1383 xvalue = self.specGgraphFreq.text()
1384 xvalue = self.specGgraphFreq.text()
1384 yvalue = self.specGgraphHeight.text()
1385 yvalue = self.specGgraphHeight.text()
1385 zvalue = self.specGgraphDbsrange.text()
1386 zvalue = self.specGgraphDbsrange.text()
1386
1387
1387 opObj.addParameter(name='id', value=value1, format='int')
1388 opObj.addParameter(name='id', value=value1, format='int')
1388
1389
1389 if self.specGgraphChannelList.isModified():
1390 if self.specGgraphChannelList.isModified():
1390 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1391 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1391
1392
1392 if not xvalue == '':
1393 if not xvalue == '':
1393 xvalueList = xvalue.split(',')
1394 xvalueList = xvalue.split(',')
1394 try:
1395 try:
1395 value = float(xvalueList[0])
1396 value = float(xvalueList[0])
1396 value = float(xvalueList[1])
1397 value = float(xvalueList[1])
1397 except:
1398 except:
1398 return 0
1399 return 0
1399 format = 'float'
1400 format = 'float'
1400 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1401 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1401 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1402 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1402
1403
1403 if not yvalue == '':
1404 if not yvalue == '':
1404 yvalueList = yvalue.split(",")
1405 yvalueList = yvalue.split(",")
1405 try:
1406 try:
1406 value = float(yvalueList[0])
1407 value = float(yvalueList[0])
1407 value = float(yvalueList[1])
1408 value = float(yvalueList[1])
1408 except:
1409 except:
1409 return 0
1410 return 0
1410 format = 'float'
1411 format = 'float'
1411 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1412 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1412 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1413 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1413
1414
1414
1415
1415 if not zvalue == '':
1416 if not zvalue == '':
1416 zvalueList = zvalue.split(",")
1417 zvalueList = zvalue.split(",")
1417 try:
1418 try:
1418 value = float(zvalueList[0])
1419 value = float(zvalueList[0])
1419 value = float(zvalueList[1])
1420 value = float(zvalueList[1])
1420 except:
1421 except:
1421 return 0
1422 return 0
1422 opObj.addParameter(name='zmin', value=zvalueList[0], format='float')
1423 opObj.addParameter(name='zmin', value=zvalueList[0], format='float')
1423 opObj.addParameter(name='zmax', value=zvalueList[1], format='float')
1424 opObj.addParameter(name='zmax', value=zvalueList[1], format='float')
1424
1425
1425 if self.specGraphSaveCross.isChecked():
1426 if self.specGraphSaveCross.isChecked():
1426 checkPath = True
1427 checkPath = True
1427 opObj.addParameter(name='save', value='1', format='bool')
1428 opObj.addParameter(name='save', value='1', format='bool')
1428 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1429 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1429 value = self.specGraphPrefix.text()
1430 value = self.specGraphPrefix.text()
1430 if not value == "":
1431 if not value == "":
1431 try:
1432 try:
1432 value = str(self.specGraphPrefix.text())
1433 value = str(self.specGraphPrefix.text())
1433 except:
1434 except:
1434 self.console.clear()
1435 self.console.clear()
1435 self.console.append("Please Write prefix")
1436 self.console.append("Please Write prefix")
1436 return 0
1437 return 0
1437 opObj.addParameter(name='figfile', value=value, format='str')
1438 opObj.addParameter(name='figfile', value=value, format='str')
1438 # opObj.addParameter(name='figfile', value=self.specGraphPrefix.text(), format='str')
1439 # opObj.addParameter(name='figfile', value=self.specGraphPrefix.text(), format='str')
1439 if self.specGraphftpCross.isChecked():
1440 if self.specGraphftpCross.isChecked():
1440 opObj.addParameter(name='ftp', value='1', format='int')
1441 opObj.addParameter(name='ftp', value='1', format='int')
1441 self.addFTPConf2Operation(puObj, opObj)
1442 self.addFTPConf2Operation(puObj, opObj)
1442 addFTP = True
1443 addFTP = True
1443
1444
1444 if self.specGraphCebRTIplot.isChecked():
1445 if self.specGraphCebRTIplot.isChecked():
1445 name_operation = 'RTIPlot'
1446 name_operation = 'RTIPlot'
1446 optype = 'other'
1447 optype = 'other'
1447 name_parameter = 'type'
1448 name_parameter = 'type'
1448 value = 'RTIPlot'
1449 value = 'RTIPlot'
1449 format = 'str'
1450 format = 'str'
1450
1451
1451 if self.idImagrti == 0:
1452 if self.idImagrti == 0:
1452 self.idImagrti = 400
1453 self.idImagrti = 400
1453 else:
1454 else:
1454 self.idImagrti = self.idImagrti + 1
1455 self.idImagrti = self.idImagrti + 1
1455
1456
1456 name_parameter1 = 'id'
1457 name_parameter1 = 'id'
1457 value1 = int(self.idImagrti)
1458 value1 = int(self.idImagrti)
1458 format1 = 'int'
1459 format1 = 'int'
1459
1460
1460 format = 'str'
1461 format = 'str'
1461
1462
1462 opObj = puObj.addOperation(name=name_operation, optype=optype)
1463 opObj = puObj.addOperation(name=name_operation, optype=optype)
1463 # opObj.addParameter(name=name_parameter, value=value, format=format)
1464 # opObj.addParameter(name=name_parameter, value=value, format=format)
1464 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1465 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1465
1466
1466 channelList = self.specGgraphChannelList.text()
1467 channelList = self.specGgraphChannelList.text()
1467 xvalue = self.specGgraphTminTmax.text()
1468 xvalue = self.specGgraphTminTmax.text()
1468 yvalue = self.specGgraphHeight.text()
1469 yvalue = self.specGgraphHeight.text()
1469 zvalue = self.specGgraphDbsrange.text()
1470 zvalue = self.specGgraphDbsrange.text()
1470 timerange = self.specGgraphTimeRange.text()
1471 timerange = self.specGgraphTimeRange.text()
1471
1472
1472 if not channelList == '':
1473 if not channelList == '':
1473 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1474 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1474
1475
1475 if not xvalue == '':
1476 if not xvalue == '':
1476 xvalueList = xvalue.split(',')
1477 xvalueList = xvalue.split(',')
1477 try:
1478 try:
1478 value = float(xvalueList[0])
1479 value = float(xvalueList[0])
1479 value = float(xvalueList[1])
1480 value = float(xvalueList[1])
1480 except:
1481 except:
1481 return 0
1482 return 0
1482 format = 'float'
1483 format = 'float'
1483 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1484 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1484 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1485 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1485
1486
1486 if not timerange == '':
1487 if not timerange == '':
1487 format = 'int'
1488 format = 'int'
1488 try:
1489 try:
1489 timerange = int(timerange)
1490 timerange = int(timerange)
1490 except:
1491 except:
1491 return 0
1492 return 0
1492 opObj.addParameter(name='timerange', value=timerange, format=format)
1493 opObj.addParameter(name='timerange', value=timerange, format=format)
1493
1494
1494
1495
1495 if not yvalue == '':
1496 if not yvalue == '':
1496 yvalueList = yvalue.split(",")
1497 yvalueList = yvalue.split(",")
1497 try:
1498 try:
1498 value = float(yvalueList[0])
1499 value = float(yvalueList[0])
1499 value = float(yvalueList[1])
1500 value = float(yvalueList[1])
1500 except:
1501 except:
1501 return 0
1502 return 0
1502 format = 'float'
1503 format = 'float'
1503 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1504 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1504 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1505 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1505
1506
1506 if not zvalue == '':
1507 if not zvalue == '':
1507 zvalueList = zvalue.split(",")
1508 zvalueList = zvalue.split(",")
1508 try:
1509 try:
1509 value = float(zvalueList[0])
1510 value = float(zvalueList[0])
1510 value = float(zvalueList[1])
1511 value = float(zvalueList[1])
1511 except:
1512 except:
1512 return 0
1513 return 0
1513 format = 'float'
1514 format = 'float'
1514 opObj.addParameter(name='zmin', value=zvalueList[0], format=format)
1515 opObj.addParameter(name='zmin', value=zvalueList[0], format=format)
1515 opObj.addParameter(name='zmax', value=zvalueList[1], format=format)
1516 opObj.addParameter(name='zmax', value=zvalueList[1], format=format)
1516
1517
1517 if self.specGraphSaveRTIplot.isChecked():
1518 if self.specGraphSaveRTIplot.isChecked():
1518 checkPath = True
1519 checkPath = True
1519 opObj.addParameter(name='save', value='1', format='bool')
1520 opObj.addParameter(name='save', value='1', format='bool')
1520 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1521 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1521 value = self.specGraphPrefix.text()
1522 value = self.specGraphPrefix.text()
1522 if not value == "":
1523 if not value == "":
1523 try:
1524 try:
1524 value = str(self.specGraphPrefix.text())
1525 value = str(self.specGraphPrefix.text())
1525 except:
1526 except:
1526 self.console.clear()
1527 self.console.clear()
1527 self.console.append("Please Write prefix")
1528 self.console.append("Please Write prefix")
1528 return 0
1529 return 0
1529 opObj.addParameter(name='figfile', value=value, format='str')
1530 opObj.addParameter(name='figfile', value=value, format='str')
1530
1531
1531 # test_ftp
1532 # test_ftp
1532 if self.specGraphftpRTIplot.isChecked():
1533 if self.specGraphftpRTIplot.isChecked():
1533 opObj.addParameter(name='ftp', value='1', format='int')
1534 opObj.addParameter(name='ftp', value='1', format='int')
1534 self.addFTPConf2Operation(puObj, opObj)
1535 self.addFTPConf2Operation(puObj, opObj)
1535 addFTP = True
1536 addFTP = True
1536
1537
1537 if self.specGraphCebCoherencmap.isChecked():
1538 if self.specGraphCebCoherencmap.isChecked():
1538 name_operation = 'CoherenceMap'
1539 name_operation = 'CoherenceMap'
1539 optype = 'other'
1540 optype = 'other'
1540 name_parameter = 'type'
1541 name_parameter = 'type'
1541 value = 'CoherenceMap'
1542 value = 'CoherenceMap'
1542 format = 'str'
1543 format = 'str'
1543 if self.idImagcoherence == 0:
1544 if self.idImagcoherence == 0:
1544 self.idImagcoherence = 500
1545 self.idImagcoherence = 500
1545 else:
1546 else:
1546 self.idImagcoherence = self.idImagcoherence + 1
1547 self.idImagcoherence = self.idImagcoherence + 1
1547
1548
1548 name_parameter1 = 'id'
1549 name_parameter1 = 'id'
1549 value1 = int(self.idImagcoherence)
1550 value1 = int(self.idImagcoherence)
1550 format1 = 'int'
1551 format1 = 'int'
1551
1552
1552 opObj = puObj.addOperation(name=name_operation, optype=optype)
1553 opObj = puObj.addOperation(name=name_operation, optype=optype)
1553 # opObj.addParameter(name=name_parameter, value=value, format=format)
1554 # opObj.addParameter(name=name_parameter, value=value, format=format)
1554 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1555 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1555 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1556 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1556 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1557 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1557
1558
1558 channelList = self.specGgraphChannelList.text()
1559 channelList = self.specGgraphChannelList.text()
1559 if not channelList == '':
1560 if not channelList == '':
1560 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1561 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1561
1562
1562 timerange = self.specGgraphTimeRange.text()
1563 timerange = self.specGgraphTimeRange.text()
1563 if not timerange == '':
1564 if not timerange == '':
1564 try:
1565 try:
1565 timerange = int(timerange)
1566 timerange = int(timerange)
1566 except:
1567 except:
1567 return 0
1568 return 0
1568 format = 'int'
1569 format = 'int'
1569 opObj.addParameter(name='timerange', value=timerange, format=format)
1570 opObj.addParameter(name='timerange', value=timerange, format=format)
1570
1571
1571 xvalue = self.specGgraphTminTmax.text()
1572 xvalue = self.specGgraphTminTmax.text()
1572 if not xvalue == '':
1573 if not xvalue == '':
1573 xvalueList = xvalue.split(',')
1574 xvalueList = xvalue.split(',')
1574 try:
1575 try:
1575 value = float(xvalueList[0])
1576 value = float(xvalueList[0])
1576 value = float(xvalueList[1])
1577 value = float(xvalueList[1])
1577 except:
1578 except:
1578 return 0
1579 return 0
1579 format = 'float'
1580 format = 'float'
1580 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1581 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1581 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1582 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1582
1583
1583 yvalue = self.specGgraphHeight.text()
1584 yvalue = self.specGgraphHeight.text()
1584 if not yvalue == '':
1585 if not yvalue == '':
1585 yvalueList = yvalue.split(",")
1586 yvalueList = yvalue.split(",")
1586 try:
1587 try:
1587 value = float(yvalueList[0])
1588 value = float(yvalueList[0])
1588 value = float(yvalueList[1])
1589 value = float(yvalueList[1])
1589 except:
1590 except:
1590 return 0
1591 return 0
1591 format = 'float'
1592 format = 'float'
1592 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1593 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1593 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1594 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1594
1595
1595 zvalue = self.specGgraphmagnitud.text()
1596 zvalue = self.specGgraphmagnitud.text()
1596 if not zvalue == '':
1597 if not zvalue == '':
1597 zvalueList = zvalue.split(",")
1598 zvalueList = zvalue.split(",")
1598 try:
1599 try:
1599 value = float(zvalueList[0])
1600 value = float(zvalueList[0])
1600 value = float(zvalueList[1])
1601 value = float(zvalueList[1])
1601 except:
1602 except:
1602 return 0
1603 return 0
1603 opObj.addParameter(name='zmin', value=zvalueList[0], format='float')
1604 opObj.addParameter(name='zmin', value=zvalueList[0], format='float')
1604 opObj.addParameter(name='zmax', value=zvalueList[1], format='float')
1605 opObj.addParameter(name='zmax', value=zvalueList[1], format='float')
1605
1606
1606 if self.specGraphSaveCoherencemap.isChecked():
1607 if self.specGraphSaveCoherencemap.isChecked():
1607 checkPath = True
1608 checkPath = True
1608 opObj.addParameter(name='save', value='1', format='bool')
1609 opObj.addParameter(name='save', value='1', format='bool')
1609 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1610 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1610 value = self.specGraphPrefix.text()
1611 value = self.specGraphPrefix.text()
1611 if not value == "":
1612 if not value == "":
1612 try:
1613 try:
1613 value = str(self.specGraphPrefix.text())
1614 value = str(self.specGraphPrefix.text())
1614 except:
1615 except:
1615 self.console.clear()
1616 self.console.clear()
1616 self.console.append("Please Write prefix")
1617 self.console.append("Please Write prefix")
1617 return 0
1618 return 0
1618 opObj.addParameter(name='figfile', value=value, format='str')
1619 opObj.addParameter(name='figfile', value=value, format='str')
1619
1620
1620 # test_ftp
1621 # test_ftp
1621 if self.specGraphftpCoherencemap.isChecked():
1622 if self.specGraphftpCoherencemap.isChecked():
1622 opObj.addParameter(name='ftp', value='1', format='int')
1623 opObj.addParameter(name='ftp', value='1', format='int')
1623 self.addFTPConf2Operation(puObj, opObj)
1624 self.addFTPConf2Operation(puObj, opObj)
1624 addFTP = True
1625 addFTP = True
1625
1626
1626 if self.specGraphPowerprofile.isChecked():
1627 if self.specGraphPowerprofile.isChecked():
1627 name_operation = 'PowerProfilePlot'
1628 name_operation = 'PowerProfilePlot'
1628 optype = 'other'
1629 optype = 'other'
1629 name_parameter = 'type'
1630 name_parameter = 'type'
1630 value = 'PowerProfilePlot'
1631 value = 'PowerProfilePlot'
1631 format = 'str'
1632 format = 'str'
1632
1633
1633 if self.idImagpower == 0:
1634 if self.idImagpower == 0:
1634 self.idImagpower = 600
1635 self.idImagpower = 600
1635 else:
1636 else:
1636 self.idImagpower = self.idImagpower + 1
1637 self.idImagpower = self.idImagpower + 1
1637 value1 = int(self.idImagpower)
1638 value1 = int(self.idImagpower)
1638 opObj = puObj.addOperation(name=name_operation, optype=optype)
1639 opObj = puObj.addOperation(name=name_operation, optype=optype)
1639 # opObj.addParameter(name=name_parameter, value=value, format='str')
1640 # opObj.addParameter(name=name_parameter, value=value, format='str')
1640 opObj.addParameter(name='id', value=value1, format='int')
1641 opObj.addParameter(name='id', value=value1, format='int')
1641
1642
1642 channelList = self.specGgraphChannelList.text()
1643 channelList = self.specGgraphChannelList.text()
1643 if not channelList == '':
1644 if not channelList == '':
1644 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1645 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1645
1646
1646 xvalue = self.specGgraphDbsrange.text()
1647 xvalue = self.specGgraphDbsrange.text()
1647 if not xvalue == '':
1648 if not xvalue == '':
1648 xvalueList = xvalue.split(',')
1649 xvalueList = xvalue.split(',')
1649 try:
1650 try:
1650 value = float(xvalueList[0])
1651 value = float(xvalueList[0])
1651 value = float(xvalueList[1])
1652 value = float(xvalueList[1])
1652 except:
1653 except:
1653 return 0
1654 return 0
1654 format = 'float'
1655 format = 'float'
1655 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1656 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1656 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1657 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1657
1658
1658 yvalue = self.specGgraphHeight.text()
1659 yvalue = self.specGgraphHeight.text()
1659 if not yvalue == '':
1660 if not yvalue == '':
1660 yvalueList = yvalue.split(",")
1661 yvalueList = yvalue.split(",")
1661 try:
1662 try:
1662 value = float(yvalueList[0])
1663 value = float(yvalueList[0])
1663 value = float(yvalueList[1])
1664 value = float(yvalueList[1])
1664 except:
1665 except:
1665 return 0
1666 return 0
1666 format = 'float'
1667 format = 'float'
1667 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1668 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1668 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1669 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1669
1670
1670
1671
1671 if self.specGraphSavePowerprofile.isChecked():
1672 if self.specGraphSavePowerprofile.isChecked():
1672 checkPath = True
1673 checkPath = True
1673 opObj.addParameter(name='save', value='1', format='bool')
1674 opObj.addParameter(name='save', value='1', format='bool')
1674 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1675 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1675 value = self.specGraphPrefix.text()
1676 value = self.specGraphPrefix.text()
1676 if not value == "":
1677 if not value == "":
1677 try:
1678 try:
1678 value = str(self.specGraphPrefix.text())
1679 value = str(self.specGraphPrefix.text())
1679 except:
1680 except:
1680 self.console.clear()
1681 self.console.clear()
1681 self.console.append("Please Write prefix")
1682 self.console.append("Please Write prefix")
1682 return 0
1683 return 0
1683 opObj.addParameter(name='figfile', value=value, format='str')
1684 opObj.addParameter(name='figfile', value=value, format='str')
1684
1685
1685
1686
1686 if self.specGraphftpPowerprofile.isChecked():
1687 if self.specGraphftpPowerprofile.isChecked():
1687 opObj.addParameter(name='ftp', value='1', format='int')
1688 opObj.addParameter(name='ftp', value='1', format='int')
1688 self.addFTPConf2Operation(puObj, opObj)
1689 self.addFTPConf2Operation(puObj, opObj)
1689 addFTP = True
1690 addFTP = True
1690 # rti noise
1691 # rti noise
1691
1692
1692 if self.specGraphCebRTInoise.isChecked():
1693 if self.specGraphCebRTInoise.isChecked():
1693 name_operation = 'Noise'
1694 name_operation = 'Noise'
1694 optype = 'other'
1695 optype = 'other'
1695 name_parameter = 'type'
1696 name_parameter = 'type'
1696 value = 'Noise'
1697 value = 'Noise'
1697 format = 'str'
1698 format = 'str'
1698
1699
1699 if self.idImagrtinoise == 0:
1700 if self.idImagrtinoise == 0:
1700 self.idImagrtinoise = 700
1701 self.idImagrtinoise = 700
1701 else:
1702 else:
1702 self.idImagrtinoise = self.idImagrtinoise + 1
1703 self.idImagrtinoise = self.idImagrtinoise + 1
1703
1704
1704 name_parameter1 = 'id'
1705 name_parameter1 = 'id'
1705 value1 = int(self.idImagrtinoise)
1706 value1 = int(self.idImagrtinoise)
1706 format1 = 'int'
1707 format1 = 'int'
1707 format = 'str'
1708 format = 'str'
1708
1709
1709 opObj = puObj.addOperation(name=name_operation, optype=optype)
1710 opObj = puObj.addOperation(name=name_operation, optype=optype)
1710 # opObj.addParameter(name=name_parameter, value=value, format=format)
1711 # opObj.addParameter(name=name_parameter, value=value, format=format)
1711 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1712 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1712
1713
1713 channelList = self.specGgraphChannelList.text()
1714 channelList = self.specGgraphChannelList.text()
1714 xvalue = self.specGgraphTminTmax.text()
1715 xvalue = self.specGgraphTminTmax.text()
1715 yvalue = self.specGgraphDbsrange.text()
1716 yvalue = self.specGgraphDbsrange.text()
1716 timerange = self.specGgraphTimeRange.text()
1717 timerange = self.specGgraphTimeRange.text()
1717
1718
1718
1719
1719 if not channelList == '':
1720 if not channelList == '':
1720 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1721 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1721
1722
1722 if not timerange == '':
1723 if not timerange == '':
1723 format = 'int'
1724 format = 'int'
1724 try:
1725 try:
1725 timerange = int(timerange)
1726 timerange = int(timerange)
1726 except:
1727 except:
1727 return 0
1728 return 0
1728 opObj.addParameter(name='timerange', value=timerange, format=format)
1729 opObj.addParameter(name='timerange', value=timerange, format=format)
1729
1730
1730 if not xvalue == '':
1731 if not xvalue == '':
1731 xvalueList = xvalue.split(',')
1732 xvalueList = xvalue.split(',')
1732 try:
1733 try:
1733 value = float(xvalueList[0])
1734 value = float(xvalueList[0])
1734 value = float(xvalueList[1])
1735 value = float(xvalueList[1])
1735 except:
1736 except:
1736 return 0
1737 return 0
1737 format = 'float'
1738 format = 'float'
1738 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1739 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1739 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1740 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1740
1741
1741 if not yvalue == '':
1742 if not yvalue == '':
1742 yvalueList = yvalue.split(",")
1743 yvalueList = yvalue.split(",")
1743 try:
1744 try:
1744 value = float(yvalueList[0])
1745 value = float(yvalueList[0])
1745 value = float(yvalueList[1])
1746 value = float(yvalueList[1])
1746 except:
1747 except:
1747 return 0
1748 return 0
1748 format = 'float'
1749 format = 'float'
1749 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1750 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1750 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1751 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1751
1752
1752 if self.specGraphSaveRTInoise.isChecked():
1753 if self.specGraphSaveRTInoise.isChecked():
1753 checkPath = True
1754 checkPath = True
1754 opObj.addParameter(name='save', value='1', format='bool')
1755 opObj.addParameter(name='save', value='1', format='bool')
1755 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1756 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1756 value = self.specGraphPrefix.text()
1757 value = self.specGraphPrefix.text()
1757 if not value == "":
1758 if not value == "":
1758 try:
1759 try:
1759 value = str(self.specGraphPrefix.text())
1760 value = str(self.specGraphPrefix.text())
1760 except:
1761 except:
1761 self.console.clear()
1762 self.console.clear()
1762 self.console.append("Please Write prefix")
1763 self.console.append("Please Write prefix")
1763 return 0
1764 return 0
1764 opObj.addParameter(name='figfile', value=value, format='str')
1765 opObj.addParameter(name='figfile', value=value, format='str')
1765
1766
1766 # test_ftp
1767 # test_ftp
1767 if self.specGraphftpRTInoise.isChecked():
1768 if self.specGraphftpRTInoise.isChecked():
1768 opObj.addParameter(name='ftp', value='1', format='int')
1769 opObj.addParameter(name='ftp', value='1', format='int')
1769 self.addFTPConf2Operation(puObj, opObj)
1770 self.addFTPConf2Operation(puObj, opObj)
1770 addFTP = True
1771 addFTP = True
1771
1772
1772 localfolder = None
1773 localfolder = None
1773 if checkPath:
1774 if checkPath:
1774 localfolder = str(self.specGraphPath.text())
1775 localfolder = str(self.specGraphPath.text())
1775 if localfolder == '':
1776 if localfolder == '':
1776 self.console.clear()
1777 self.console.clear()
1777 self.console.append("Graphic path should be defined")
1778 self.console.append("Graphic path should be defined")
1778 return 0
1779 return 0
1779
1780
1780 if addFTP:
1781 if addFTP:
1781 if not localfolder:
1782 if not localfolder:
1782 self.console.clear()
1783 self.console.clear()
1783 self.console.append("You have to save the plots before sending them to FTP Server")
1784 self.console.append("You have to save the plots before sending them to FTP Server")
1784 return 0
1785 return 0
1785
1786
1786 if not self.temporalFTP.create:
1787 if not self.temporalFTP.create:
1787 self.temporalFTP.setwithoutconfiguration()
1788 self.temporalFTP.setwithoutconfiguration()
1788
1789
1789 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
1790 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
1790 self.createFTPProcUnitView(server, username, password, remotefolder,
1791 self.createFTPProcUnitView(server, username, password, remotefolder,
1791 ftp_wei, exp_code, sub_exp_code, plot_pos,
1792 ftp_wei, exp_code, sub_exp_code, plot_pos,
1792 localfolder=localfolder)
1793 localfolder=localfolder)
1793 else:
1794 else:
1794 self.removeFTPProcUnitView()
1795 self.removeFTPProcUnitView()
1795
1796
1796 # if something happend
1797 # if something happend
1797 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Spectra')
1798 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Spectra')
1798 if parms_ok:
1799 if parms_ok:
1799 name_operation = 'SpectraWriter'
1800 name_operation = 'SpectraWriter'
1800 optype = 'other'
1801 optype = 'other'
1801 name_parameter1 = 'path'
1802 name_parameter1 = 'path'
1802 name_parameter2 = 'blocksPerFile'
1803 name_parameter2 = 'blocksPerFile'
1803 name_parameter3 = 'profilesPerBlock'
1804 name_parameter3 = 'profilesPerBlock'
1804 value1 = output_path
1805 value1 = output_path
1805 value2 = blocksperfile
1806 value2 = blocksperfile
1806 value3 = profilesperblock
1807 value3 = profilesperblock
1807 format = "int"
1808 format = "int"
1808
1809
1809 opObj = puObj.addOperation(name=name_operation, optype=optype)
1810 opObj = puObj.addOperation(name=name_operation, optype=optype)
1810 opObj.addParameter(name=name_parameter1, value=value1)
1811 opObj.addParameter(name=name_parameter1, value=value1)
1811 opObj.addParameter(name=name_parameter2, value=value2, format=format)
1812 opObj.addParameter(name=name_parameter2, value=value2, format=format)
1812 opObj.addParameter(name=name_parameter3, value=value3, format=format)
1813 opObj.addParameter(name=name_parameter3, value=value3, format=format)
1813
1814
1814 self.showPUSpectraProperties(puObj)
1815 self.refreshPUProperties(puObj)
1815
1816
1816 self.console.clear()
1817 self.console.clear()
1817 self.console.append("If you want to save your project")
1818 self.console.append("If you want to save your project")
1818 self.console.append("click on your project name in the Tree Project Explorer")
1819 self.console.append("click on your project name in the Tree Project Explorer")
1819
1820
1820 self.actionSaveToolbar.setEnabled(True)
1821 self.actionSaveToolbar.setEnabled(True)
1821 self.actionStarToolbar.setEnabled(True)
1822 self.actionStarToolbar.setEnabled(True)
1822
1823
1823 return 1
1824 return 1
1824
1825
1825 """
1826 """
1826 Spectra Graph
1827 Spectra Graph
1827 """
1828 """
1828 @pyqtSignature("int")
1829 @pyqtSignature("int")
1829 def on_specGraphCebSpectraplot_stateChanged(self, p0):
1830 def on_specGraphCebSpectraplot_stateChanged(self, p0):
1830
1831
1831 if p0 == 2:
1832 if p0 == 2:
1832 self.specGgraphChannelList.setEnabled(True)
1833 self.specGgraphChannelList.setEnabled(True)
1833 self.specGgraphFreq.setEnabled(True)
1834 self.specGgraphFreq.setEnabled(True)
1834 self.specGgraphHeight.setEnabled(True)
1835 self.specGgraphHeight.setEnabled(True)
1835 self.specGgraphDbsrange.setEnabled(True)
1836 self.specGgraphDbsrange.setEnabled(True)
1836 if p0 == 0:
1837 if p0 == 0:
1837 self.specGgraphFreq.setEnabled(False)
1838 self.specGgraphFreq.setEnabled(False)
1838 self.specGgraphHeight.setEnabled(False)
1839 self.specGgraphHeight.setEnabled(False)
1839 self.specGgraphDbsrange.setEnabled(False)
1840 self.specGgraphDbsrange.setEnabled(False)
1840
1841
1841
1842
1842 @pyqtSignature("int")
1843 @pyqtSignature("int")
1843 def on_specGraphCebCrossSpectraplot_stateChanged(self, p0):
1844 def on_specGraphCebCrossSpectraplot_stateChanged(self, p0):
1844
1845
1845 if p0 == 2:
1846 if p0 == 2:
1846 self.specGgraphFreq.setEnabled(True)
1847 self.specGgraphFreq.setEnabled(True)
1847 self.specGgraphHeight.setEnabled(True)
1848 self.specGgraphHeight.setEnabled(True)
1848 self.specGgraphDbsrange.setEnabled(True)
1849 self.specGgraphDbsrange.setEnabled(True)
1849 if p0 == 0:
1850 if p0 == 0:
1850 self.specGgraphFreq.setEnabled(False)
1851 self.specGgraphFreq.setEnabled(False)
1851 self.specGgraphHeight.setEnabled(False)
1852 self.specGgraphHeight.setEnabled(False)
1852 self.specGgraphDbsrange.setEnabled(False)
1853 self.specGgraphDbsrange.setEnabled(False)
1853
1854
1854 @pyqtSignature("int")
1855 @pyqtSignature("int")
1855 def on_specGraphCebRTIplot_stateChanged(self, p0):
1856 def on_specGraphCebRTIplot_stateChanged(self, p0):
1856
1857
1857 if p0 == 2:
1858 if p0 == 2:
1858 self.specGgraphChannelList.setEnabled(True)
1859 self.specGgraphChannelList.setEnabled(True)
1859 self.specGgraphTminTmax.setEnabled(True)
1860 self.specGgraphTminTmax.setEnabled(True)
1860 self.specGgraphHeight.setEnabled(True)
1861 self.specGgraphHeight.setEnabled(True)
1861 self.specGgraphDbsrange.setEnabled(True)
1862 self.specGgraphDbsrange.setEnabled(True)
1862 self.specGgraphTimeRange.setEnabled(True)
1863 self.specGgraphTimeRange.setEnabled(True)
1863
1864
1864 if p0 == 0:
1865 if p0 == 0:
1865 self.specGgraphTminTmax.setEnabled(False)
1866 self.specGgraphTminTmax.setEnabled(False)
1866 self.specGgraphHeight.setEnabled(False)
1867 self.specGgraphHeight.setEnabled(False)
1867 self.specGgraphDbsrange.setEnabled(False)
1868 self.specGgraphDbsrange.setEnabled(False)
1868 self.specGgraphTimeRange.setEnabled(False)
1869 self.specGgraphTimeRange.setEnabled(False)
1869
1870
1870
1871
1871 @pyqtSignature("int")
1872 @pyqtSignature("int")
1872 def on_specGraphCebRTInoise_stateChanged(self, p0):
1873 def on_specGraphCebRTInoise_stateChanged(self, p0):
1873 if p0 == 2:
1874 if p0 == 2:
1874 self.specGgraphChannelList.setEnabled(True)
1875 self.specGgraphChannelList.setEnabled(True)
1875 self.specGgraphTminTmax.setEnabled(True)
1876 self.specGgraphTminTmax.setEnabled(True)
1876 self.specGgraphDbsrange.setEnabled(True)
1877 self.specGgraphDbsrange.setEnabled(True)
1877 self.specGgraphTimeRange.setEnabled(True)
1878 self.specGgraphTimeRange.setEnabled(True)
1878
1879
1879 if p0 == 0:
1880 if p0 == 0:
1880 self.specGgraphTminTmax.setEnabled(False)
1881 self.specGgraphTminTmax.setEnabled(False)
1881 self.specGgraphDbsrange.setEnabled(False)
1882 self.specGgraphDbsrange.setEnabled(False)
1882 self.specGgraphTimeRange.setEnabled(False)
1883 self.specGgraphTimeRange.setEnabled(False)
1883
1884
1884
1885
1885
1886
1886
1887
1887 @pyqtSignature("int")
1888 @pyqtSignature("int")
1888 def on_specGraphCebCoherencmap_stateChanged(self, p0):
1889 def on_specGraphCebCoherencmap_stateChanged(self, p0):
1889
1890
1890 if p0 == 2:
1891 if p0 == 2:
1891 self.specGgraphTminTmax.setEnabled(True)
1892 self.specGgraphTminTmax.setEnabled(True)
1892 self.specGgraphHeight.setEnabled(True)
1893 self.specGgraphHeight.setEnabled(True)
1893 self.specGgraphmagnitud.setEnabled(True)
1894 self.specGgraphmagnitud.setEnabled(True)
1894 self.specGgraphTimeRange.setEnabled(True)
1895 self.specGgraphTimeRange.setEnabled(True)
1895
1896
1896 if p0 == 0:
1897 if p0 == 0:
1897 self.specGgraphTminTmax.setEnabled(False)
1898 self.specGgraphTminTmax.setEnabled(False)
1898 self.specGgraphHeight.setEnabled(False)
1899 self.specGgraphHeight.setEnabled(False)
1899 self.specGgraphmagnitud.setEnabled(False)
1900 self.specGgraphmagnitud.setEnabled(False)
1900 self.specGgraphTimeRange.setEnabled(False)
1901 self.specGgraphTimeRange.setEnabled(False)
1901
1902
1902
1903
1903
1904
1904
1905
1905 @pyqtSignature("int")
1906 @pyqtSignature("int")
1906 def on_specGraphPowerprofile_stateChanged(self, p0):
1907 def on_specGraphPowerprofile_stateChanged(self, p0):
1907
1908
1908 if p0 == 2:
1909 if p0 == 2:
1909
1910
1910 self.specGgraphHeight.setEnabled(True)
1911 self.specGgraphHeight.setEnabled(True)
1911 self.specGgraphDbsrange.setEnabled(True)
1912 self.specGgraphDbsrange.setEnabled(True)
1912 if p0 == 0:
1913 if p0 == 0:
1913 self.specGgraphHeight.setEnabled(False)
1914 self.specGgraphHeight.setEnabled(False)
1914 self.specGgraphDbsrange.setEnabled(False)
1915 self.specGgraphDbsrange.setEnabled(False)
1915
1916
1916 @pyqtSignature("int")
1917 @pyqtSignature("int")
1917 def on_specGraphPhase_stateChanged(self, p0):
1918 def on_specGraphPhase_stateChanged(self, p0):
1918
1919
1919 if p0 == 2:
1920 if p0 == 2:
1920 self.specGgraphTminTmax.setEnabled(True)
1921 self.specGgraphTminTmax.setEnabled(True)
1921 self.specGgraphPhaserange.setEnabled(True)
1922 self.specGgraphPhaserange.setEnabled(True)
1922
1923
1923 if p0 == 0:
1924 if p0 == 0:
1924 self.specGgraphTminTmax.setEnabled(False)
1925 self.specGgraphTminTmax.setEnabled(False)
1925 self.specGgraphPhaserange.setEnabled(False)
1926 self.specGgraphPhaserange.setEnabled(False)
1926
1927
1927 @pyqtSignature("int")
1928 @pyqtSignature("int")
1928 def on_specGraphSaveSpectra_stateChanged(self, p0):
1929 def on_specGraphSaveSpectra_stateChanged(self, p0):
1929 """
1930 """
1930 """
1931 """
1931 if p0 == 2:
1932 if p0 == 2:
1932 self.specGraphPath.setEnabled(True)
1933 self.specGraphPath.setEnabled(True)
1933 self.specGraphPrefix.setEnabled(True)
1934 self.specGraphPrefix.setEnabled(True)
1934 self.specGraphToolPath.setEnabled(True)
1935 self.specGraphToolPath.setEnabled(True)
1935 if p0 == 0:
1936 if p0 == 0:
1936 self.specGraphPath.setEnabled(False)
1937 self.specGraphPath.setEnabled(False)
1937 self.specGraphPrefix.setEnabled(False)
1938 self.specGraphPrefix.setEnabled(False)
1938 self.specGraphToolPath.setEnabled(False)
1939 self.specGraphToolPath.setEnabled(False)
1939
1940
1940
1941
1941 @pyqtSignature("int")
1942 @pyqtSignature("int")
1942 def on_specGraphSaveCross_stateChanged(self, p0):
1943 def on_specGraphSaveCross_stateChanged(self, p0):
1943 if p0 == 2:
1944 if p0 == 2:
1944 self.specGraphPath.setEnabled(True)
1945 self.specGraphPath.setEnabled(True)
1945 self.specGraphPrefix.setEnabled(True)
1946 self.specGraphPrefix.setEnabled(True)
1946 self.specGraphToolPath.setEnabled(True)
1947 self.specGraphToolPath.setEnabled(True)
1947
1948
1948 @pyqtSignature("int")
1949 @pyqtSignature("int")
1949 def on_specGraphSaveRTIplot_stateChanged(self, p0):
1950 def on_specGraphSaveRTIplot_stateChanged(self, p0):
1950 if p0 == 2:
1951 if p0 == 2:
1951 self.specGraphPath.setEnabled(True)
1952 self.specGraphPath.setEnabled(True)
1952 self.specGraphPrefix.setEnabled(True)
1953 self.specGraphPrefix.setEnabled(True)
1953 self.specGraphToolPath.setEnabled(True)
1954 self.specGraphToolPath.setEnabled(True)
1954
1955
1955 @pyqtSignature("int")
1956 @pyqtSignature("int")
1956 def on_specGraphSaveRTInoise_stateChanged(self, p0):
1957 def on_specGraphSaveRTInoise_stateChanged(self, p0):
1957 if p0 == 2:
1958 if p0 == 2:
1958 self.specGraphPath.setEnabled(True)
1959 self.specGraphPath.setEnabled(True)
1959 self.specGraphPrefix.setEnabled(True)
1960 self.specGraphPrefix.setEnabled(True)
1960 self.specGraphToolPath.setEnabled(True)
1961 self.specGraphToolPath.setEnabled(True)
1961
1962
1962 @pyqtSignature("int")
1963 @pyqtSignature("int")
1963 def on_specGraphSaveCoherencemap_stateChanged(self, p0):
1964 def on_specGraphSaveCoherencemap_stateChanged(self, p0):
1964 if p0 == 2:
1965 if p0 == 2:
1965 self.specGraphPath.setEnabled(True)
1966 self.specGraphPath.setEnabled(True)
1966 self.specGraphPrefix.setEnabled(True)
1967 self.specGraphPrefix.setEnabled(True)
1967 self.specGraphToolPath.setEnabled(True)
1968 self.specGraphToolPath.setEnabled(True)
1968
1969
1969
1970
1970 @pyqtSignature("int")
1971 @pyqtSignature("int")
1971 def on_specGraphSavePowerprofile_stateChanged(self, p0):
1972 def on_specGraphSavePowerprofile_stateChanged(self, p0):
1972 if p0 == 2:
1973 if p0 == 2:
1973 self.specGraphPath.setEnabled(True)
1974 self.specGraphPath.setEnabled(True)
1974 self.specGraphPrefix.setEnabled(True)
1975 self.specGraphPrefix.setEnabled(True)
1975 self.specGraphToolPath.setEnabled(True)
1976 self.specGraphToolPath.setEnabled(True)
1976
1977
1977
1978
1978 #-------ftp-----#
1979 #-------ftp-----#
1979 @pyqtSignature("int")
1980 @pyqtSignature("int")
1980 def on_specGraphftpSpectra_stateChanged(self, p0):
1981 def on_specGraphftpSpectra_stateChanged(self, p0):
1981 """
1982 """
1982 """
1983 """
1983 if p0 == 2:
1984 if p0 == 2:
1984 self.specGgraphftpratio.setEnabled(True)
1985 self.specGgraphftpratio.setEnabled(True)
1985
1986
1986 if p0 == 0:
1987 if p0 == 0:
1987 self.specGgraphftpratio.setEnabled(False)
1988 self.specGgraphftpratio.setEnabled(False)
1988
1989
1989
1990
1990 @pyqtSignature("int")
1991 @pyqtSignature("int")
1991 def on_specGraphftpCross_stateChanged(self, p0):
1992 def on_specGraphftpCross_stateChanged(self, p0):
1992 if p0 == 2:
1993 if p0 == 2:
1993 self.specGgraphftpratio.setEnabled(True)
1994 self.specGgraphftpratio.setEnabled(True)
1994
1995
1995 @pyqtSignature("int")
1996 @pyqtSignature("int")
1996 def on_specGraphftpRTIplot_stateChanged(self, p0):
1997 def on_specGraphftpRTIplot_stateChanged(self, p0):
1997 if p0 == 2:
1998 if p0 == 2:
1998 self.specGgraphftpratio.setEnabled(True)
1999 self.specGgraphftpratio.setEnabled(True)
1999
2000
2000 @pyqtSignature("int")
2001 @pyqtSignature("int")
2001 def on_specGraphftpRTInoise_stateChanged(self, p0):
2002 def on_specGraphftpRTInoise_stateChanged(self, p0):
2002 if p0 == 2:
2003 if p0 == 2:
2003 self.specGgraphftpratio.setEnabled(True)
2004 self.specGgraphftpratio.setEnabled(True)
2004
2005
2005 @pyqtSignature("int")
2006 @pyqtSignature("int")
2006 def on_specGraphftpCoherencemap_stateChanged(self, p0):
2007 def on_specGraphftpCoherencemap_stateChanged(self, p0):
2007 if p0 == 2:
2008 if p0 == 2:
2008 self.specGgraphftpratio.setEnabled(True)
2009 self.specGgraphftpratio.setEnabled(True)
2009
2010
2010 @pyqtSignature("int")
2011 @pyqtSignature("int")
2011 def on_specGraphftpPowerprofile_stateChanged(self, p0):
2012 def on_specGraphftpPowerprofile_stateChanged(self, p0):
2012 if p0 == 2:
2013 if p0 == 2:
2013 self.specGgraphftpratio.setEnabled(True)
2014 self.specGgraphftpratio.setEnabled(True)
2014
2015
2015 #-------------------#
2016 #-------------------#
2016
2017
2017
2018
2018
2019
2019 @pyqtSignature("")
2020 @pyqtSignature("")
2020 def on_specGraphToolPath_clicked(self):
2021 def on_specGraphToolPath_clicked(self):
2021 """
2022 """
2022 """
2023 """
2023 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2024 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2024 self.specGraphPath.setText(self.savePath)
2025 self.specGraphPath.setText(self.savePath)
2025 if not os.path.exists(self.savePath):
2026 if not os.path.exists(self.savePath):
2026 self.console.clear()
2027 self.console.clear()
2027 self.console.append("Write a correct a path")
2028 self.console.append("Write a correct a path")
2028 return
2029 return
2029
2030
2030 @pyqtSignature("")
2031 @pyqtSignature("")
2031 def on_specHeisGraphToolPath_clicked(self):
2032 def on_specHeisGraphToolPath_clicked(self):
2032 """
2033 """
2033 """
2034 """
2034 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2035 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2035 self.specHeisGraphPath.setText(self.savePath)
2036 self.specHeisGraphPath.setText(self.savePath)
2036 if not os.path.exists(self.savePath):
2037 if not os.path.exists(self.savePath):
2037 self.console.clear()
2038 self.console.clear()
2038 self.console.append("Write a correct a path")
2039 self.console.append("Write a correct a path")
2039 return
2040 return
2040
2041
2041 @pyqtSignature("")
2042 @pyqtSignature("")
2042 def on_specGraphClear_clicked(self):
2043 def on_specGraphClear_clicked(self):
2043 self.clearspecGraph()
2044 self.clearspecGraph()
2044
2045
2045 @pyqtSignature("int")
2046 @pyqtSignature("int")
2046 def on_specHeisOpCebIncoherent_stateChanged(self, p0):
2047 def on_specHeisOpCebIncoherent_stateChanged(self, p0):
2047 """
2048 """
2048 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
2049 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
2049 """
2050 """
2050 if p0 == 2:
2051 if p0 == 2:
2051 self.specHeisOpIncoherent.setEnabled(True)
2052 self.specHeisOpIncoherent.setEnabled(True)
2052 self.specHeisOpCobIncInt.setEnabled(True)
2053 self.specHeisOpCobIncInt.setEnabled(True)
2053 if p0 == 0:
2054 if p0 == 0:
2054 self.specHeisOpIncoherent.setEnabled(False)
2055 self.specHeisOpIncoherent.setEnabled(False)
2055 self.specHeisOpCobIncInt.setEnabled(False)
2056 self.specHeisOpCobIncInt.setEnabled(False)
2056
2057
2057 @pyqtSignature("")
2058 @pyqtSignature("")
2058 def on_specHeisOpOk_clicked(self):
2059 def on_specHeisOpOk_clicked(self):
2059 """
2060 """
2060 AΓ‘ADE OPERACION SPECTRAHEIS
2061 AΓ‘ADE OPERACION SPECTRAHEIS
2061 """
2062 """
2062 addFTP = False
2063 addFTP = False
2063 checkPath = False
2064 checkPath = False
2064
2065
2065 self.actionSaveToolbar.setEnabled(False)
2066 self.actionSaveToolbar.setEnabled(False)
2066 self.actionStarToolbar.setEnabled(False)
2067 self.actionStarToolbar.setEnabled(False)
2067
2068
2068 puObj = self.getSelectedPUObj()
2069 puObj = self.getSelectedItemObj()
2069 puObj.removeOperations()
2070 puObj.removeOperations()
2070
2071
2071 if self.specHeisOpCebIncoherent.isChecked():
2072 if self.specHeisOpCebIncoherent.isChecked():
2072 value = self.specHeisOpIncoherent.text()
2073 value = self.specHeisOpIncoherent.text()
2073 name_operation = 'IncohInt4SpectraHeis'
2074 name_operation = 'IncohInt4SpectraHeis'
2074 optype = 'other'
2075 optype = 'other'
2075 if self.specOpCobIncInt.currentIndex() == 0:
2076 if self.specOpCobIncInt.currentIndex() == 0:
2076 name_parameter = 'timeInterval'
2077 name_parameter = 'timeInterval'
2077 format = 'float'
2078 format = 'float'
2078 opObj = puObj.addOperation(name=name_operation, optype=optype)
2079 opObj = puObj.addOperation(name=name_operation, optype=optype)
2079 opObj.addParameter(name=name_parameter, value=value, format=format)
2080 opObj.addParameter(name=name_parameter, value=value, format=format)
2080
2081
2081 # ---- Spectra Plot-----
2082 # ---- Spectra Plot-----
2082 if self.specHeisGraphCebSpectraplot.isChecked():
2083 if self.specHeisGraphCebSpectraplot.isChecked():
2083 name_operation = 'SpectraHeisScope'
2084 name_operation = 'SpectraHeisScope'
2084 optype = 'other'
2085 optype = 'other'
2085 name_parameter = 'type'
2086 name_parameter = 'type'
2086 value = 'SpectraHeisScope'
2087 value = 'SpectraHeisScope'
2087 format = 'str'
2088 format = 'str'
2088 if self.idImagspectraHeis == 0:
2089 if self.idImagspectraHeis == 0:
2089 self.idImagspectraHeis = 800
2090 self.idImagspectraHeis = 800
2090 else:
2091 else:
2091 self.idImagspectraHeis = self.idImagspectraHeis + 1
2092 self.idImagspectraHeis = self.idImagspectraHeis + 1
2092 name_parameter1 = 'id'
2093 name_parameter1 = 'id'
2093 value1 = int(self.idImagspectraHeis)
2094 value1 = int(self.idImagspectraHeis)
2094 format1 = 'int'
2095 format1 = 'int'
2095
2096
2096 format = 'str'
2097 format = 'str'
2097
2098
2098 channelList = self.specHeisGgraphChannelList.text()
2099 channelList = self.specHeisGgraphChannelList.text()
2099 xvalue = self.specHeisGgraphXminXmax.text()
2100 xvalue = self.specHeisGgraphXminXmax.text()
2100 yvalue = self.specHeisGgraphYminYmax.text()
2101 yvalue = self.specHeisGgraphYminYmax.text()
2101 opObj = puObj.addOperation(name=name_operation, optype=optype)
2102 opObj = puObj.addOperation(name=name_operation, optype=optype)
2102 # opObj.addParameter(name=name_parameter, value=value, format=format)
2103 # opObj.addParameter(name=name_parameter, value=value, format=format)
2103 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
2104 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
2104
2105
2105 if not channelList == '':
2106 if not channelList == '':
2106 name_parameter = 'channelList'
2107 name_parameter = 'channelList'
2107 format = 'intlist'
2108 format = 'intlist'
2108 opObj.addParameter(name=name_parameter, value=channelList, format=format)
2109 opObj.addParameter(name=name_parameter, value=channelList, format=format)
2109
2110
2110 if not xvalue == '':
2111 if not xvalue == '':
2111 xvalueList = xvalue.split(',')
2112 xvalueList = xvalue.split(',')
2112 try:
2113 try:
2113 value1 = float(xvalueList[0])
2114 value1 = float(xvalueList[0])
2114 value2 = float(xvalueList[1])
2115 value2 = float(xvalueList[1])
2115 except:
2116 except:
2116 self.console.clear()
2117 self.console.clear()
2117 self.console.append("Please Write corrects parameter xmin-xmax")
2118 self.console.append("Please Write corrects parameter xmin-xmax")
2118 return 0
2119 return 0
2119 name1 = 'xmin'
2120 name1 = 'xmin'
2120 name2 = 'xmax'
2121 name2 = 'xmax'
2121 format = 'float'
2122 format = 'float'
2122 opObj.addParameter(name=name1, value=value1, format=format)
2123 opObj.addParameter(name=name1, value=value1, format=format)
2123 opObj.addParameter(name=name2, value=value2, format=format)
2124 opObj.addParameter(name=name2, value=value2, format=format)
2124 #------specHeisGgraphYmin-Ymax---
2125 #------specHeisGgraphYmin-Ymax---
2125 if not yvalue == '':
2126 if not yvalue == '':
2126 yvalueList = yvalue.split(",")
2127 yvalueList = yvalue.split(",")
2127 try:
2128 try:
2128 value1 = float(yvalueList[0])
2129 value1 = float(yvalueList[0])
2129 value2 = float(yvalueList[1])
2130 value2 = float(yvalueList[1])
2130 except:
2131 except:
2131 self.console.clear()
2132 self.console.clear()
2132 self.console.append("Please Write corrects parameter Ymix-Ymax")
2133 self.console.append("Please Write corrects parameter Ymix-Ymax")
2133 return 0
2134 return 0
2134 name1 = 'ymin'
2135 name1 = 'ymin'
2135 name2 = 'ymax'
2136 name2 = 'ymax'
2136 format = 'float'
2137 format = 'float'
2137 opObj.addParameter(name=name1, value=value1, format=format)
2138 opObj.addParameter(name=name1, value=value1, format=format)
2138 opObj.addParameter(name=name2, value=value2, format=format)
2139 opObj.addParameter(name=name2, value=value2, format=format)
2139
2140
2140 if self.specHeisGraphSaveSpectra.isChecked():
2141 if self.specHeisGraphSaveSpectra.isChecked():
2141 checkPath = True
2142 checkPath = True
2142 name_parameter1 = 'save'
2143 name_parameter1 = 'save'
2143 name_parameter2 = 'figpath'
2144 name_parameter2 = 'figpath'
2144 name_parameter3 = 'figfile'
2145 name_parameter3 = 'figfile'
2145 value1 = '1'
2146 value1 = '1'
2146 value2 = self.specHeisGraphPath.text()
2147 value2 = self.specHeisGraphPath.text()
2147 value3 = self.specHeisGraphPrefix.text()
2148 value3 = self.specHeisGraphPrefix.text()
2148 format1 = 'bool'
2149 format1 = 'bool'
2149 format2 = 'str'
2150 format2 = 'str'
2150 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
2151 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
2151 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2152 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2152 if not value3 == "":
2153 if not value3 == "":
2153 try:
2154 try:
2154 value3 = str(self.specHeisGraphPrefix.text())
2155 value3 = str(self.specHeisGraphPrefix.text())
2155 except:
2156 except:
2156 self.console.clear()
2157 self.console.clear()
2157 self.console.append("Please Write prefix")
2158 self.console.append("Please Write prefix")
2158 return 0
2159 return 0
2159 opObj.addParameter(name='figfile', value=self.specHeisGraphPrefix.text(), format='str')
2160 opObj.addParameter(name='figfile', value=self.specHeisGraphPrefix.text(), format='str')
2160
2161
2161 # opObj.addParameter(name=name_parameter3, value=value3, format=format2)
2162 # opObj.addParameter(name=name_parameter3, value=value3, format=format2)
2162 # opObj.addParameter(name='wr_period', value='5',format='int')
2163 # opObj.addParameter(name='wr_period', value='5',format='int')
2163
2164
2164 if self.specHeisGraphftpSpectra.isChecked():
2165 if self.specHeisGraphftpSpectra.isChecked():
2165 opObj.addParameter(name='ftp', value='1', format='int')
2166 opObj.addParameter(name='ftp', value='1', format='int')
2166 self.addFTPConf2Operation(puObj, opObj)
2167 self.addFTPConf2Operation(puObj, opObj)
2167 addFTP = True
2168 addFTP = True
2168
2169
2169 if self.specHeisGraphCebRTIplot.isChecked():
2170 if self.specHeisGraphCebRTIplot.isChecked():
2170 name_operation = 'RTIfromSpectraHeis'
2171 name_operation = 'RTIfromSpectraHeis'
2171 optype = 'other'
2172 optype = 'other'
2172 name_parameter = 'type'
2173 name_parameter = 'type'
2173 value = 'RTIfromSpectraHeis'
2174 value = 'RTIfromSpectraHeis'
2174 format = 'str'
2175 format = 'str'
2175
2176
2176 if self.idImagrtiHeis == 0:
2177 if self.idImagrtiHeis == 0:
2177 self.idImagrtiHeis = 900
2178 self.idImagrtiHeis = 900
2178 else:
2179 else:
2179 self.idImagrtiHeis = self.idImagrtiHeis + 1
2180 self.idImagrtiHeis = self.idImagrtiHeis + 1
2180
2181
2181 name_parameter1 = 'id'
2182 name_parameter1 = 'id'
2182 value1 = int(self.idImagrtiHeis)
2183 value1 = int(self.idImagrtiHeis)
2183 format1 = 'int'
2184 format1 = 'int'
2184
2185
2185 format = 'str'
2186 format = 'str'
2186
2187
2187 opObj = puObj.addOperation(name=name_operation, optype=optype)
2188 opObj = puObj.addOperation(name=name_operation, optype=optype)
2188 # opObj.addParameter(name=name_parameter, value=value, format=format)
2189 # opObj.addParameter(name=name_parameter, value=value, format=format)
2189 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
2190 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
2190
2191
2191 channelList = self.specHeisGgraphChannelList.text()
2192 channelList = self.specHeisGgraphChannelList.text()
2192 xvalue = self.specHeisGgraphTminTmax.text()
2193 xvalue = self.specHeisGgraphTminTmax.text()
2193 yvalue = self.specHeisGgraphYminYmax.text()
2194 yvalue = self.specHeisGgraphYminYmax.text()
2194 timerange = self.specHeisGgraphTimeRange.text()
2195 timerange = self.specHeisGgraphTimeRange.text()
2195
2196
2196 if not channelList == '':
2197 if not channelList == '':
2197 opObj.addParameter(name='channelList', value=channelList, format='intlist')
2198 opObj.addParameter(name='channelList', value=channelList, format='intlist')
2198
2199
2199 if not xvalue == '':
2200 if not xvalue == '':
2200 xvalueList = xvalue.split(',')
2201 xvalueList = xvalue.split(',')
2201 try:
2202 try:
2202 value = float(xvalueList[0])
2203 value = float(xvalueList[0])
2203 value = float(xvalueList[1])
2204 value = float(xvalueList[1])
2204 except:
2205 except:
2205 return 0
2206 return 0
2206 format = 'float'
2207 format = 'float'
2207 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
2208 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
2208 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
2209 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
2209
2210
2210 if not timerange == '':
2211 if not timerange == '':
2211 format = 'int'
2212 format = 'int'
2212 try:
2213 try:
2213 timerange = int(timerange)
2214 timerange = int(timerange)
2214 except:
2215 except:
2215 return 0
2216 return 0
2216 opObj.addParameter(name='timerange', value=timerange, format=format)
2217 opObj.addParameter(name='timerange', value=timerange, format=format)
2217
2218
2218
2219
2219 if not yvalue == '':
2220 if not yvalue == '':
2220 yvalueList = yvalue.split(",")
2221 yvalueList = yvalue.split(",")
2221 try:
2222 try:
2222 value = float(yvalueList[0])
2223 value = float(yvalueList[0])
2223 value = float(yvalueList[1])
2224 value = float(yvalueList[1])
2224 except:
2225 except:
2225 return 0
2226 return 0
2226 format = 'float'
2227 format = 'float'
2227 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
2228 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
2228 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
2229 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
2229
2230
2230 if self.specHeisGraphSaveRTIplot.isChecked():
2231 if self.specHeisGraphSaveRTIplot.isChecked():
2231 checkPath = True
2232 checkPath = True
2232 opObj.addParameter(name='save', value='1', format='bool')
2233 opObj.addParameter(name='save', value='1', format='bool')
2233 opObj.addParameter(name='figpath', value=self.specHeisGraphPath.text(), format='str')
2234 opObj.addParameter(name='figpath', value=self.specHeisGraphPath.text(), format='str')
2234 value = self.specHeisGraphPrefix.text()
2235 value = self.specHeisGraphPrefix.text()
2235 if not value == "":
2236 if not value == "":
2236 try:
2237 try:
2237 value = str(self.specHeisGraphPrefix.text())
2238 value = str(self.specHeisGraphPrefix.text())
2238 except:
2239 except:
2239 self.console.clear()
2240 self.console.clear()
2240 self.console.append("Please Write prefix")
2241 self.console.append("Please Write prefix")
2241 return 0
2242 return 0
2242 opObj.addParameter(name='figfile', value=value, format='str')
2243 opObj.addParameter(name='figfile', value=value, format='str')
2243
2244
2244 # test_ftp
2245 # test_ftp
2245 if self.specHeisGraphftpRTIplot.isChecked():
2246 if self.specHeisGraphftpRTIplot.isChecked():
2246 opObj.addParameter(name='ftp', value='1', format='int')
2247 opObj.addParameter(name='ftp', value='1', format='int')
2247 self.addFTPConf2Operation(puObj, opObj)
2248 self.addFTPConf2Operation(puObj, opObj)
2248 addFTP = True
2249 addFTP = True
2249
2250
2250 localfolder = None
2251 localfolder = None
2251 if checkPath:
2252 if checkPath:
2252 localfolder = str(self.specGraphPath.text())
2253 localfolder = str(self.specGraphPath.text())
2253 if localfolder == '':
2254 if localfolder == '':
2254 self.console.clear()
2255 self.console.clear()
2255 self.console.append("Graphic path should be defined")
2256 self.console.append("Graphic path should be defined")
2256 return 0
2257 return 0
2257
2258
2258 if addFTP:
2259 if addFTP:
2259 if not localfolder:
2260 if not localfolder:
2260 self.console.clear()
2261 self.console.clear()
2261 self.console.append("You have to save the plots before sending them to FTP Server")
2262 self.console.append("You have to save the plots before sending them to FTP Server")
2262 return 0
2263 return 0
2263
2264
2264 if not self.temporalFTP.create:
2265 if not self.temporalFTP.create:
2265 self.temporalFTP.setwithoutconfiguration()
2266 self.temporalFTP.setwithoutconfiguration()
2266
2267
2267 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
2268 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
2268 self.createFTPProcUnitView(server, username, password, remotefolder,
2269 self.createFTPProcUnitView(server, username, password, remotefolder,
2269 ftp_wei, exp_code, sub_exp_code, plot_pos,
2270 ftp_wei, exp_code, sub_exp_code, plot_pos,
2270 localfolder=localfolder)
2271 localfolder=localfolder)
2271 else:
2272 else:
2272 self.removeFTPProcUnitView()
2273 self.removeFTPProcUnitView()
2273
2274
2274 # if something happened
2275 # if something happened
2275 parms_ok, output_path, blocksperfile, metada = self.checkInputsPUSave(datatype='SpectraHeis')
2276 parms_ok, output_path, blocksperfile, metada = self.checkInputsPUSave(datatype='SpectraHeis')
2276 if parms_ok:
2277 if parms_ok:
2277 name_operation = 'FitsWriter'
2278 name_operation = 'FitsWriter'
2278 optype = 'other'
2279 optype = 'other'
2279 name_parameter1 = 'path'
2280 name_parameter1 = 'path'
2280 name_parameter2 = 'dataBlocksPerFile'
2281 name_parameter2 = 'dataBlocksPerFile'
2281 name_parameter3 = 'metadatafile'
2282 name_parameter3 = 'metadatafile'
2282 value1 = output_path
2283 value1 = output_path
2283 value2 = blocksperfile
2284 value2 = blocksperfile
2284 value3 = metada
2285 value3 = metada
2285 format2 = "int"
2286 format2 = "int"
2286 format3 = "str"
2287 format3 = "str"
2287 opObj = puObj.addOperation(name=name_operation, optype=optype)
2288 opObj = puObj.addOperation(name=name_operation, optype=optype)
2288 opObj.addParameter(name=name_parameter1, value=value1)
2289 opObj.addParameter(name=name_parameter1, value=value1)
2289 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2290 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2290 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
2291 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
2291
2292
2292 self.showPUSpectraHeisProperties(puObj)
2293 self.refreshPUProperties(puObj)
2293
2294
2294 self.console.clear()
2295 self.console.clear()
2295 self.console.append("Click on save icon ff you want to save your project")
2296 self.console.append("Click on save icon ff you want to save your project")
2296
2297
2297 self.actionSaveToolbar.setEnabled(True)
2298 self.actionSaveToolbar.setEnabled(True)
2298 self.actionStarToolbar.setEnabled(True)
2299 self.actionStarToolbar.setEnabled(True)
2299
2300
2300 return 1
2301 return 1
2301 @pyqtSignature("int")
2302 @pyqtSignature("int")
2302 def on_specHeisGraphCebSpectraplot_stateChanged(self, p0):
2303 def on_specHeisGraphCebSpectraplot_stateChanged(self, p0):
2303
2304
2304 if p0 == 2:
2305 if p0 == 2:
2305 self.specHeisGgraphChannelList.setEnabled(True)
2306 self.specHeisGgraphChannelList.setEnabled(True)
2306 self.specHeisGgraphXminXmax.setEnabled(True)
2307 self.specHeisGgraphXminXmax.setEnabled(True)
2307 self.specHeisGgraphYminYmax.setEnabled(True)
2308 self.specHeisGgraphYminYmax.setEnabled(True)
2308 if p0 == 0:
2309 if p0 == 0:
2309 self.specHeisGgraphXminXmax.setEnabled(False)
2310 self.specHeisGgraphXminXmax.setEnabled(False)
2310 self.specHeisGgraphYminYmax.setEnabled(False)
2311 self.specHeisGgraphYminYmax.setEnabled(False)
2311
2312
2312 @pyqtSignature("int")
2313 @pyqtSignature("int")
2313 def on_specHeisGraphCebRTIplot_stateChanged(self, p0):
2314 def on_specHeisGraphCebRTIplot_stateChanged(self, p0):
2314
2315
2315 if p0 == 2:
2316 if p0 == 2:
2316 self.specHeisGgraphChannelList.setEnabled(True)
2317 self.specHeisGgraphChannelList.setEnabled(True)
2317 self.specHeisGgraphTminTmax.setEnabled(True)
2318 self.specHeisGgraphTminTmax.setEnabled(True)
2318 self.specHeisGgraphYminYmax.setEnabled(True)
2319 self.specHeisGgraphYminYmax.setEnabled(True)
2319 self.specHeisGgraphTimeRange.setEnabled(True)
2320 self.specHeisGgraphTimeRange.setEnabled(True)
2320
2321
2321 if p0 == 0:
2322 if p0 == 0:
2322 self.specHeisGgraphTminTmax.setEnabled(False)
2323 self.specHeisGgraphTminTmax.setEnabled(False)
2323 self.specHeisGgraphYminYmax.setEnabled(False)
2324 self.specHeisGgraphYminYmax.setEnabled(False)
2324 self.specHeisGgraphTimeRange.setEnabled(False)
2325 self.specHeisGgraphTimeRange.setEnabled(False)
2325
2326
2326 @pyqtSignature("int")
2327 @pyqtSignature("int")
2327 def on_specHeisGraphSaveSpectra_stateChanged(self, p0):
2328 def on_specHeisGraphSaveSpectra_stateChanged(self, p0):
2328 """
2329 """
2329 """
2330 """
2330 if p0 == 2:
2331 if p0 == 2:
2331 self.specHeisGraphPath.setEnabled(True)
2332 self.specHeisGraphPath.setEnabled(True)
2332 self.specHeisGraphPrefix.setEnabled(True)
2333 self.specHeisGraphPrefix.setEnabled(True)
2333 self.specHeisGraphToolPath.setEnabled(True)
2334 self.specHeisGraphToolPath.setEnabled(True)
2334 if p0 == 0:
2335 if p0 == 0:
2335 self.specHeisGraphPath.setEnabled(False)
2336 self.specHeisGraphPath.setEnabled(False)
2336 self.specHeisGraphPrefix.setEnabled(False)
2337 self.specHeisGraphPrefix.setEnabled(False)
2337 self.specHeisGraphToolPath.setEnabled(False)
2338 self.specHeisGraphToolPath.setEnabled(False)
2338
2339
2339 @pyqtSignature("int")
2340 @pyqtSignature("int")
2340 def on_specHeisGraphSaveRTIplot_stateChanged(self, p0):
2341 def on_specHeisGraphSaveRTIplot_stateChanged(self, p0):
2341 if p0 == 2:
2342 if p0 == 2:
2342 self.specHeisGraphPath.setEnabled(True)
2343 self.specHeisGraphPath.setEnabled(True)
2343 self.specHeisGraphPrefix.setEnabled(True)
2344 self.specHeisGraphPrefix.setEnabled(True)
2344 self.specHeisGraphToolPath.setEnabled(True)
2345 self.specHeisGraphToolPath.setEnabled(True)
2345
2346
2346 @pyqtSignature("int")
2347 @pyqtSignature("int")
2347 def on_specHeisGraphftpSpectra_stateChanged(self, p0):
2348 def on_specHeisGraphftpSpectra_stateChanged(self, p0):
2348 """
2349 """
2349 """
2350 """
2350 if p0 == 2:
2351 if p0 == 2:
2351 self.specHeisGgraphftpratio.setEnabled(True)
2352 self.specHeisGgraphftpratio.setEnabled(True)
2352
2353
2353 if p0 == 0:
2354 if p0 == 0:
2354 self.specHeisGgraphftpratio.setEnabled(False)
2355 self.specHeisGgraphftpratio.setEnabled(False)
2355
2356
2356 @pyqtSignature("int")
2357 @pyqtSignature("int")
2357 def on_specHeisGraphftpRTIplot_stateChanged(self, p0):
2358 def on_specHeisGraphftpRTIplot_stateChanged(self, p0):
2358 if p0 == 2:
2359 if p0 == 2:
2359 self.specHeisGgraphftpratio.setEnabled(True)
2360 self.specHeisGgraphftpratio.setEnabled(True)
2360
2361
2361 @pyqtSignature("")
2362 @pyqtSignature("")
2362 def on_specHeisGraphClear_clicked(self):
2363 def on_specHeisGraphClear_clicked(self):
2363 pass
2364 pass
2365
2366 def __getParmsFromProjectWindow(self):
2367 """
2368 Check Inputs Project:
2369 - project_name
2370 - datatype
2371 - ext
2372 - data_path
2373 - readmode
2374 - delay
2375 - set
2376 - walk
2377 """
2378 parms_ok = True
2379
2380 project_name = str(self.proName.text())
2381
2382 if project_name == '' or project_name == None:
2383 outputstr = "Enter a project Name"
2384 self.console.append(outputstr)
2385 parms_ok = False
2386 project_name = None
2387
2388 datatype = str(self.proComDataType.currentText())
2389 ext = str(self.proDataType.text())
2390
2391 dpath = str(self.proDataPath.text())
2392
2393 if dpath == '':
2394 outputstr = 'Datapath is empty'
2395 self.console.append(outputstr)
2396 parms_ok = False
2397 dpath = None
2398
2399 if dpath != None:
2400 if not os.path.isdir(dpath):
2401 outputstr = 'Datapath (%s) does not exist' % dpath
2402 self.console.append(outputstr)
2403 parms_ok = False
2404 dpath = None
2405
2406 online = str(self.proComReadMode.currentIndex())
2407
2408 delay = None
2409 if online==1:
2410 try:
2411 delay = int(str(self.proDelay.text()))
2412 except:
2413 outputstr = 'Delay value (%s) must be a integer number' %str(self.proName.text())
2414 self.console.append(outputstr)
2415 parms_ok = False
2416
2417
2418 set = None
2419 ippKm = None
2420
2421 value = str(self.proSet.text())
2422
2423 if datatype.lower() == "usrp":
2424 try:
2425 ippKm = float(value)
2426 except:
2427 outputstr = 'IPP value (%s) must be a float number' % str(self.proName.text())
2428 self.console.append(outputstr)
2429 parms_ok = False
2430 else:
2431 try:
2432 set = int(value)
2433 except:
2434 pass
2435
2436 walk = self.proComWalk.currentIndex()
2437
2438 starDate = str(self.proComStartDate.currentText())
2439 endDate = str(self.proComEndDate.currentText())
2440
2441 # startDateList = starDate.split("/")
2442 # endDateList = endDate.split("/")
2443 #
2444 # starDate = datetime.date(int(startDateList[0]), int(startDateList[1]), int(startDateList[2]))
2445 # endDate = datetime.date(int(endDateList[0]), int(endDateList[1]), int(endDateList[2]))
2446
2447 startTime = self.proStartTime.time()
2448 endTime = self.proEndTime.time()
2449
2450 startTime = startTime.strftime("%H:%M:%S")
2451 endTime = endTime.strftime("%H:%M:%S")
2452
2453 projectParms = ProjectParms()
2454
2455 projectParms.project_name = project_name
2456 projectParms.datatype = datatype
2457 projectParms.ext = ext
2458 projectParms.dpath = dpath
2459 projectParms.online = online
2460 projectParms.startDate = startDate
2461 projectParms.endDate = endDate
2462 projectParms.startTime = startTime
2463 projectParms.endTime = endTime
2464 projectParms.delay=delay
2465 projectParms.walk=walk
2466 projectParms.set=set
2467 projectParms.ippKm=ippKm
2468 projectParms.parmsOk=parms_ok
2469
2470 return projectParms
2471
2472
2473 def __getParmsFromProjectObj(self, projectObjView):
2474
2475 parms_ok = True
2476
2477 project_name, description = projectObjView.name, projectObjView.description
2478
2479 readUnitObj = projectObjView.getReadUnitObj()
2480 datatype = readUnitObj.datatype
2481
2482 operationObj = readUnitObj.getOperationObj(name='run')
2483
2484 dpath = operationObj.getParameterValue(parameterName='path')
2485 startDate = operationObj.getParameterValue(parameterName='startDate')
2486 endDate = operationObj.getParameterValue(parameterName='endDate')
2487
2488 startDate = startDate.strftime("%Y/%m/%d")
2489 endDate = endDate.strftime("%Y/%m/%d")
2490
2491 startTime = operationObj.getParameterValue(parameterName='startTime')
2492 endTime = operationObj.getParameterValue(parameterName='endTime')
2493
2494 startTime = startTime.strftime("%H:%M:%S")
2495 endTime = endTime.strftime("%H:%M:%S")
2496
2497 online = 0
2498 try:
2499 online = operationObj.getParameterValue(parameterName='online')
2500 except:
2501 pass
2502
2503 delay = ''
2504 try:
2505 delay = operationObj.getParameterValue(parameterName='delay')
2506 except:
2507 pass
2508
2509 walk = 0
2510 try:
2511 walk = operationObj.getParameterValue(parameterName='walk')
2512 except:
2513 pass
2514
2515 set = ''
2516 try:
2517 set = operationObj.getParameterValue(parameterName='set')
2518 except:
2519 pass
2520
2521 ippKm = ''
2522 if datatype.lower() == 'usrp':
2523 try:
2524 ippKm = operationObj.getParameterValue(parameterName='ippKm')
2525 except:
2526 pass
2527
2528 projectParms = ProjectParms()
2529
2530 projectParms.project_name = project_name
2531 projectParms.datatype = datatype
2532 projectParms.ext = None
2533 projectParms.dpath = dpath
2534 projectParms.online = online
2535 projectParms.startDate = startDate
2536 projectParms.endDate = endDate
2537 projectParms.startTime = startTime
2538 projectParms.endTime = endTime
2539 projectParms.delay=delay
2540 projectParms.walk=walk
2541 projectParms.set=set
2542 projectParms.ippKm=ippKm
2543 projectParms.parmsOk=parms_ok
2544
2545 return projectParms
2546
2547 def refreshProjectWindow2(self, projectObjView):
2548
2549 projectParms = self.__getParmsFromProjectObj(projectObjView)
2550
2551 index = projectParms.getDatatypeIndex()
2552
2553 self.proName.setText(projectObjView.name)
2554 self.proDescription.clear()
2555 self.proDescription.append(projectObjView.description)
2556
2557 self.on_proComDataType_activated(index=index)
2558 self.proDataType.setText(projectParms.getExt())
2559 self.proDataPath.setText(projectParms.dpath)
2560 self.proComDataType.setCurrentIndex(index)
2561 self.proComReadMode.setCurrentIndex(projectParms.online)
2562 self.proDelay.setText(str(projectParms.delay))
2563 self.proSet.setText(str(projectParms.set))
2564
2565 dateList = self.loadDays(data_path = projectParms.dpath,
2566 ext = projectParms.getExt(),
2567 walk = projectParms.walk,
2568 expLabel = projectParms.expLabel)
2569
2570 try:
2571 startDateIndex = dateList.index(projectParms.startDate)
2572 except:
2573 startDateIndex = 0
2574
2575 try:
2576 endDateIndex = dateList.index(projectParms.endDate)
2577 except:
2578 endDateIndex = -1
2579
2580 self.proComStartDate.setCurrentIndex(startDateIndex)
2581 self.proComEndDate.setCurrentIndex(endDateIndex)
2582
2583 startlist = projectParms.startTime.split(":")
2584 endlist = projectParms.endTime.split(":")
2585
2586 self.time.setHMS(int(startlist[0]), int(startlist[1]), int(startlist[2]))
2587 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2588
2589 self.proStartTime.setTime(self.time)
2590 self.proEndTime.setTime(self.time)
2591
2592 def refreshProjectProperties(self, projectObjView):
2593
2594 propertyBuffObj = PropertyBuffer()
2595 name = projectObjView.name
2596
2597 propertyBuffObj.append("Properties", "Name", projectObjView.name),
2598 propertyBuffObj.append("Properties", "Description", projectObjView.description)
2599 propertyBuffObj.append("Properties", "Workspace", self.pathWorkSpace)
2600
2601 readUnitObj = projectObjView.getReadUnitObj()
2602 runOperationObj = readUnitObj.getOperationObj(name='run')
2603
2604 for thisParmObj in runOperationObj.getParameterObjList():
2605 propertyBuffObj.append("Reading parms", thisParmObj.name, str(thisParmObj.getValue()))
2606
2607 propertiesModel = propertyBuffObj.getPropertyModel()
2608
2609 self.treeProjectProperties.setModel(propertiesModel)
2610 self.treeProjectProperties.expandAll()
2611 self.treeProjectProperties.resizeColumnToContents(0)
2612 self.treeProjectProperties.resizeColumnToContents(1)
2613
2614 def refreshPUProperties(self, puObjView):
2615
2616 propertyBuffObj = PropertyBuffer()
2617
2618 for thisOp in puObjView.getOperationObjList():
2619
2620 operationName = thisOp.name
2621 if operationName == 'run':
2622 operationName = 'Properties'
2623 else:
2624 if not thisOp.getParameterObjList():
2625 propertyBuffObj.append(operationName, '--', '--')
2364
2626
2627 for thisParmObj in thisOp.getParameterObjList():
2628
2629 propertyBuffObj.append(operationName, thisParmObj.name, str(thisParmObj.getValue()))
2630
2631 propertiesModel = propertyBuffObj.getPropertyModel()
2632
2633 self.treeProjectProperties.setModel(propertiesModel)
2634 self.treeProjectProperties.expandAll()
2635 self.treeProjectProperties.resizeColumnToContents(0)
2636 self.treeProjectProperties.resizeColumnToContents(1)
2637
2365 def on_click(self, index):
2638 def on_click(self, index):
2366
2639
2367 self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index)
2640 self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index)
2368 if self.getSelectedProjectObj():
2641
2369 projectObjView = self.getSelectedProjectObj()
2642 projectObjView = self.getSelectedProjectObj()
2370 project_name, description = projectObjView.name, projectObjView.description
2643
2371 id = int(projectObjView.id)
2644 if not projectObjView:
2372 idReadUnit = projectObjView.getReadUnitId()
2645 return
2373 readUnitObj = projectObjView.getProcUnitObj(idReadUnit)
2646
2374 datatype, data_path, startDate, endDate, startTime, endTime , online , delay, walk , set = self.showProjectProperties(projectObjView)
2647 #A project has been selected
2375 # show ProjectView
2648 if projectObjView == self.getSelectedItemObj():
2376 self.refreshProjectWindow(project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set)
2649
2377 if datatype == 'Voltage':
2650 self.refreshProjectWindow2(projectObjView)
2378 ext = '.r'
2651 self.refreshProjectProperties(projectObjView)
2379 elif datatype == 'Spectra':
2652
2380 ext = '.pdata'
2381 elif datatype == 'Fits':
2382 ext = '.fits'
2383 if online == 0:
2384 self.proComStartDate.clear()
2385 self.proComEndDate.clear()
2386 self.loadDays(data_path, ext, walk)
2387 self.tabProject.setEnabled(True)
2653 self.tabProject.setEnabled(True)
2388 self.tabVoltage.setEnabled(False)
2654 self.tabVoltage.setEnabled(False)
2389 self.tabSpectra.setEnabled(False)
2655 self.tabSpectra.setEnabled(False)
2390 self.tabCorrelation.setEnabled(False)
2656 self.tabCorrelation.setEnabled(False)
2391 self.tabSpectraHeis.setEnabled(False)
2657 self.tabSpectraHeis.setEnabled(False)
2392 self.tabWidgetProject.setCurrentWidget(self.tabProject)
2658 self.tabWidgetProject.setCurrentWidget(self.tabProject)
2393
2659
2660 return
2661
2662 #A processing unit has been selected
2663 voltEnable = False
2664 specEnable = False
2665 corrEnable = False
2666 specHeisEnable = False
2667 tabSelected = self.tabProject
2668
2669 puObj = self.getSelectedItemObj()
2670 inputId = puObj.getInputId()
2671 inputPUObj = projectObjView.getProcUnitObj(inputId)
2672
2394 if self.selectedItemTree.text() == 'Voltage':
2673 if self.selectedItemTree.text() == 'Voltage':
2395 datatype = 'Voltage'
2674 datatype = 'Voltage'
2396 puObj = self.getSelectedPUObj()
2675
2397 self.showtabPUCreated(datatype=datatype)
2398 if len(puObj.getOperationObjList()) == 1:
2676 if len(puObj.getOperationObjList()) == 1:
2399 self.setInputsPU_View(datatype)
2677 self.clearPUWindow(datatype)
2400 else:
2678 else:
2401 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2679 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2402 self.showPUVoltageProperties(puObj)
2680 self.refreshPUProperties(puObj)
2681
2682 voltEnable = True
2683 tabSelected = self.tabVoltage
2403
2684
2404 if self.selectedItemTree.text() == 'Spectra':
2685 if self.selectedItemTree.text() == 'Spectra':
2405
2686
2406 datatype = 'Spectra'
2687 datatype = 'Spectra'
2407 puObj = self.getSelectedPUObj()
2688
2408 self.showtabPUCreated(datatype=datatype)
2689 if inputPUObj.datatype == 'Spectra':
2409 if readUnitObj.datatype == 'Spectra':
2410 self.specOpnFFTpoints.setEnabled(False)
2690 self.specOpnFFTpoints.setEnabled(False)
2411 self.specOpProfiles.setEnabled(False)
2691 self.specOpProfiles.setEnabled(False)
2412 self.specOpippFactor.setEnabled(False)
2692 self.specOpippFactor.setEnabled(False)
2413
2414 else:
2693 else:
2415 self.specOpnFFTpoints.setEnabled(True)
2694 self.specOpnFFTpoints.setEnabled(True)
2416 self.specOpProfiles.setEnabled(True)
2695 self.specOpProfiles.setEnabled(True)
2417 self.specOpippFactor.setEnabled(True)
2696 self.specOpippFactor.setEnabled(True)
2418
2697
2419 if len(puObj.getOperationObjList()) == 1:
2698 if len(puObj.getOperationObjList()) == 1:
2420 self.setInputsPU_View(datatype)
2699 self.clearPUWindow(datatype)
2421
2700
2422 opObj = puObj.getOperationObj(name="run")
2701 opObj = puObj.getOperationObj(name="run")
2423 if opObj == None:
2702 if opObj == None:
2424 self.specOpnFFTpoints.clear()
2703 self.specOpnFFTpoints.clear()
2425 self.specOpProfiles.clear()
2704 self.specOpProfiles.clear()
2426 self.specOpippFactor.clear()
2705 self.specOpippFactor.clear()
2427 else:
2706 else:
2428 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
2707 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
2429 if parmObj == None:
2708 if parmObj == None:
2430 self.specOpnFFTpoints.clear()
2709 self.specOpnFFTpoints.clear()
2431 else:
2710 else:
2432 value = opObj.getParameterValue(parameterName='nFFTPoints')
2711 value = opObj.getParameterValue(parameterName='nFFTPoints')
2433 self.specOpnFFTpoints.setText(str(value))
2712 self.specOpnFFTpoints.setText(str(value))
2434
2713
2435 parmObj = opObj.getParameterObj(parameterName='nProfiles')
2714 parmObj = opObj.getParameterObj(parameterName='nProfiles')
2436 if parmObj == None:
2715 if parmObj == None:
2437 self.specOpProfiles.clear()
2716 self.specOpProfiles.clear()
2438 else:
2717 else:
2439 value = opObj.getParameterValue(parameterName='nProfiles')
2718 value = opObj.getParameterValue(parameterName='nProfiles')
2440 self.specOpProfiles.setText(str(value))
2719 self.specOpProfiles.setText(str(value))
2441
2720
2442 parmObj = opObj.getParameterObj(parameterName="ippFactor")
2721 parmObj = opObj.getParameterObj(parameterName="ippFactor")
2443 if parmObj == None:
2722 if parmObj == None:
2444 self.specOpippFactor.clear()
2723 self.specOpippFactor.clear()
2445 else:
2724 else:
2446 value = opObj.getParameterValue(parameterName='ippFactor')
2725 value = opObj.getParameterValue(parameterName='ippFactor')
2447 self.specOpippFactor.setText(str(value))
2726 self.specOpippFactor.setText(str(value))
2448
2727
2449 opObj = puObj.getOperationObj(name="run")
2728 opObj = puObj.getOperationObj(name="run")
2450 if opObj == None:
2729 if opObj == None:
2451 self.specOppairsList.clear()
2730 self.specOppairsList.clear()
2452 self.specOpCebCrossSpectra.setCheckState(0)
2731 self.specOpCebCrossSpectra.setCheckState(0)
2453 else:
2732 else:
2454 parmObj = opObj.getParameterObj(parameterName='pairsList')
2733 parmObj = opObj.getParameterObj(parameterName='pairsList')
2455 if parmObj == None:
2734 if parmObj == None:
2456 self.specOppairsList.clear()
2735 self.specOppairsList.clear()
2457 self.specOpCebCrossSpectra.setCheckState(0)
2736 self.specOpCebCrossSpectra.setCheckState(0)
2458 else:
2737 else:
2459 value = opObj.getParameterValue(parameterName='pairsList')
2738 value = opObj.getParameterValue(parameterName='pairsList')
2460 value = str(value)[1:-1]
2739 value = str(value)[1:-1]
2461 self.specOppairsList.setText(str(value))
2740 self.specOppairsList.setText(str(value))
2462 self.specOppairsList.setEnabled(True)
2741 self.specOppairsList.setEnabled(True)
2463 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
2742 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
2464
2743
2465 else:
2744 else:
2466 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2745 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2467 self.showPUSpectraProperties(puObj)
2746 self.refreshPUProperties(puObj)
2747
2748 specEnable = True
2749 tabSelected = self.tabSpectra
2468
2750
2469 if self.selectedItemTree.text() == 'Correlation':
2751 if self.selectedItemTree.text() == 'Correlation':
2470 self.tabCorrelation.setEnabled(True)
2752
2471 self.tabVoltage.setEnabled(False)
2753 corrEnable = True
2472 self.tabSpectra.setEnabled(False)
2754 tabSelected = self.tabCorrelation
2473 self.tabWidgetProject.setCurrentWidget(self.tabCorrelation)
2474
2755
2475 if self.selectedItemTree.text() == 'SpectraHeis':
2756 if self.selectedItemTree.text() == 'SpectraHeis':
2476 datatype = 'SpectraHeis'
2757 datatype = 'SpectraHeis'
2477 puObj = self.getSelectedPUObj()
2758
2478 self.showtabPUCreated(datatype=datatype)
2479 if len(puObj.getOperationObjList()) == 1:
2759 if len(puObj.getOperationObjList()) == 1:
2480 self.setInputsPU_View(datatype)
2760 self.clearPUWindow(datatype)
2481 else:
2761 else:
2482 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2762 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2483 self.showPUSpectraHeisProperties(puObj)
2763 self.refreshPUProperties(puObj)
2484
2764
2765 specHeisEnable = False
2766 tabSelected = self.tabSpectraHeis
2767
2768 self.tabProject.setEnabled(False)
2769 self.tabVoltage.setEnabled(voltEnable)
2770 self.tabSpectra.setEnabled(specEnable)
2771 self.tabCorrelation.setEnabled(corrEnable)
2772 self.tabSpectraHeis.setEnabled(specHeisEnable)
2773 self.tabWidgetProject.setCurrentWidget(tabSelected)
2485
2774
2486 def on_right_click(self, pos):
2775 def on_right_click(self, pos):
2487
2776
2488 self.menu = QtGui.QMenu()
2777 self.menu = QtGui.QMenu()
2489 quitAction0 = self.menu.addAction("Create a new project")
2778 quitAction0 = self.menu.addAction("Create a New Project")
2490 quitAction1 = self.menu.addAction("Create a new processing unit")
2779 quitAction1 = self.menu.addAction("Create a New Processing Unit")
2491 quitAction2 = self.menu.addAction("Delete selected unit")
2780 quitAction2 = self.menu.addAction("Delete Item")
2492 quitAction3 = self.menu.addAction("Quit")
2781 quitAction3 = self.menu.addAction("Quit")
2493
2782
2494 if len(self.__itemTreeDict) == 0:
2783 if len(self.__itemTreeDict) == 0:
2495 quitAction2.setEnabled(False)
2784 quitAction2.setEnabled(False)
2496 else:
2785 else:
2497 quitAction2.setEnabled(True)
2786 quitAction2.setEnabled(True)
2498
2787
2499 action = self.menu.exec_(self.mapToGlobal(pos))
2788 action = self.menu.exec_(self.mapToGlobal(pos))
2500
2789
2501 if action == quitAction0:
2790 if action == quitAction0:
2502 self. setInputsProject_View()
2791 self. setInputsProject_View()
2503 self.create = True
2792 self.create = True
2504
2793
2505 if action == quitAction1:
2794 if action == quitAction1:
2506 if len(self.__projectObjDict) == 0:
2795 if len(self.__projectObjDict) == 0:
2507 outputstr = "First Create a Project then add Processing Unit"
2796 outputstr = "You need to create a Project before adding a Processing Unit"
2508 self.console.clear()
2797 self.console.clear()
2509 self.console.append(outputstr)
2798 self.console.append(outputstr)
2510 return 0
2799 return 0
2511 else:
2800 else:
2512 self.addPUWindow()
2801 self.addPUWindow()
2513 self.console.clear()
2802 self.console.clear()
2514 self.console.append("Please, Choose the type of Processing Unit")
2803 self.console.append("Please, Choose the type of Processing Unit")
2515 self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
2804 # self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
2516 self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
2805 # self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
2517 self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
2806 # self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
2518
2807
2519 if action == quitAction2:
2808 if action == quitAction2:
2520 index = self.selectedItemTree
2809 index = self.selectedItemTree
2521 try:
2810 try:
2522 index.parent()
2811 index.parent()
2523 except:
2812 except:
2524 self.console.append('First left click on Project or Processing Unit')
2813 self.console.append('Please first select a Project or Processing Unit')
2525 return 0
2814 return 0
2526 # print index.parent(),index
2815 # print index.parent(),index
2527 if index.parent() == None:
2816 if index.parent() == None:
2528 self.projectExplorerModel.removeRow(index.row())
2817 self.projectExplorerModel.removeRow(index.row())
2529 else:
2818 else:
2530 index.parent().removeRow(index.row())
2819 index.parent().removeRow(index.row())
2531 self.deleteProjectorPU()
2820 self.removeItemTreeFromProject()
2532 self.console.clear()
2821 self.console.clear()
2533 # for i in self.projectExplorerTree.selectionModel().selection().indexes():
2822 # for i in self.projectExplorerTree.selectionModel().selection().indexes():
2534 # print i.row()
2823 # print i.row()
2535
2824
2536 if action == quitAction3:
2825 if action == quitAction3:
2537 self.close()
2826 self.close()
2538 return 0
2827 return 0
2539
2828
2540 def refreshProjectWindow(self, project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set):
2829 def refreshProjectWindow(self, project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set):
2541
2830
2542 self.proName.setText(str(project_name))
2831 self.proName.setText(str(project_name))
2543
2832
2544 if datatype == 'Voltage':
2833 if datatype == 'Voltage':
2545 ext = '.r'
2834 ext = '.r'
2546 value = 0
2835 value = 0
2547 elif datatype == 'Spectra':
2836 elif datatype == 'Spectra':
2548 ext = '.pdata'
2837 ext = '.pdata'
2549 value = 1
2838 value = 1
2550 elif datatype == 'Fits':
2839 elif datatype == 'Fits':
2551 ext = 'fits'
2840 ext = '.fits'
2552 value = 2
2841 value = 2
2842 elif datatype == 'USRP':
2843 ext = '.hdf5'
2844 value = 3
2845
2553 self.proDataType.setText(ext)
2846 self.proDataType.setText(ext)
2554 self.proDataPath.setText(str(data_path))
2847 self.proDataPath.setText(str(data_path))
2555 self.proComDataType.setCurrentIndex(value)
2848 self.proComDataType.setCurrentIndex(value)
2556 self.proComReadMode.setCurrentIndex(int(online))
2849 self.proComReadMode.setCurrentIndex(int(online))
2557 self.proDelay.setText(str(delay))
2850 self.proDelay.setText(str(delay))
2558 self.proSet.setText(str(set))
2851 self.proSet.setText(str(set))
2559 self.proComStartDate.clear()
2852 self.proComStartDate.clear()
2560 self.proComEndDate.clear()
2853 self.proComEndDate.clear()
2561 self.proComStartDate.addItem(str(startDate))
2854 self.proComStartDate.addItem(str(startDate))
2562 self.proComEndDate.addItem(str(endDate))
2855 self.proComEndDate.addItem(str(endDate))
2563 starTime = str(startTime)
2856 starTime = str(startTime)
2564 starlist = starTime.split(":")
2857 starlist = starTime.split(":")
2565 endTime = str(endTime)
2858 endTime = str(endTime)
2566 endlist = endTime.split(":")
2859 endlist = endTime.split(":")
2567 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
2860 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
2568 self.proStartTime.setTime(self.time)
2861 self.proStartTime.setTime(self.time)
2569 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2862 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2570 self.proEndTime.setTime(self.time)
2863 self.proEndTime.setTime(self.time)
2571 self.proDescription.clear()
2864 self.proDescription.clear()
2572 self.proDescription.append(description)
2865 self.proDescription.append(description)
2573
2866
2574 def refreshPUWindow(self, datatype, puObj):
2867 def refreshPUWindow(self, datatype, puObj):
2575
2868
2576 if datatype == 'Voltage':
2869 if datatype == 'Voltage':
2577 opObj = puObj.getOperationObj(name='setRadarFrequency')
2870 opObj = puObj.getOperationObj(name='setRadarFrequency')
2578 if opObj == None:
2871 if opObj == None:
2579 self.volOpRadarfrequency.clear()
2872 self.volOpRadarfrequency.clear()
2580 self.volOpCebRadarfrequency.setCheckState(0)
2873 self.volOpCebRadarfrequency.setCheckState(0)
2581 else:
2874 else:
2582 value = opObj.getParameterValue(parameterName='frequency')
2875 value = opObj.getParameterValue(parameterName='frequency')
2583 value = str(value)
2876 value = str(value)
2584 self.volOpRadarfrequency.setText(value)
2877 self.volOpRadarfrequency.setText(value)
2585 self.volOpRadarfrequency.setEnabled(True)
2878 self.volOpRadarfrequency.setEnabled(True)
2586 self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2879 self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2587
2880
2588
2881
2589 opObj = puObj.getOperationObj(name="selectChannels")
2882 opObj = puObj.getOperationObj(name="selectChannels")
2590
2883
2591 if opObj == None:
2884 if opObj == None:
2592 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2885 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2593
2886
2594 if opObj == None:
2887 if opObj == None:
2595 self.volOpChannel.clear()
2888 self.volOpChannel.clear()
2596 self.volOpCebChannels.setCheckState(0)
2889 self.volOpCebChannels.setCheckState(0)
2597 else:
2890 else:
2598 channelEnabled = False
2891 channelEnabled = False
2599 try:
2892 try:
2600 value = opObj.getParameterValue(parameterName='channelList')
2893 value = opObj.getParameterValue(parameterName='channelList')
2601 value = str(value)[1:-1]
2894 value = str(value)[1:-1]
2602 channelEnabled = True
2895 channelEnabled = True
2603 channelMode = 0
2896 channelMode = 0
2604 except:
2897 except:
2605 pass
2898 pass
2606 try:
2899 try:
2607 value = opObj.getParameterValue(parameterName='channelIndexList')
2900 value = opObj.getParameterValue(parameterName='channelIndexList')
2608 value = str(value)[1:-1]
2901 value = str(value)[1:-1]
2609 channelEnabled = True
2902 channelEnabled = True
2610 channelMode = 1
2903 channelMode = 1
2611 except:
2904 except:
2612 pass
2905 pass
2613
2906
2614 if channelEnabled:
2907 if channelEnabled:
2615 self.volOpChannel.setText(value)
2908 self.volOpChannel.setText(value)
2616 self.volOpChannel.setEnabled(True)
2909 self.volOpChannel.setEnabled(True)
2617 self.volOpCebChannels.setCheckState(QtCore.Qt.Checked)
2910 self.volOpCebChannels.setCheckState(QtCore.Qt.Checked)
2618 self.VOLOpComChannel.setCurrentIndex(channelMode)
2911 self.volOpComChannels.setCurrentIndex(channelMode)
2619
2912
2620 opObj = puObj.getOperationObj(name="selectHeights")
2913 opObj = puObj.getOperationObj(name="selectHeights")
2621 if opObj == None:
2914 if opObj == None:
2622 self.volOpHeights.clear()
2915 self.volOpHeights.clear()
2623 self.volOpCebHeights.setCheckState(0)
2916 self.volOpCebHeights.setCheckState(0)
2624 else:
2917 else:
2625 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2918 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2626 value1 = str(value1)
2919 value1 = str(value1)
2627 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2920 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2628 value2 = str(value2)
2921 value2 = str(value2)
2629 value = value1 + "," + value2
2922 value = value1 + "," + value2
2630 self.volOpHeights.setText(value)
2923 self.volOpHeights.setText(value)
2631 self.volOpHeights.setEnabled(True)
2924 self.volOpHeights.setEnabled(True)
2632 self.volOpCebHeights.setCheckState(QtCore.Qt.Checked)
2925 self.volOpCebHeights.setCheckState(QtCore.Qt.Checked)
2633
2926
2634 opObj = puObj.getOperationObj(name="filterByHeights")
2927 opObj = puObj.getOperationObj(name="filterByHeights")
2635 if opObj == None:
2928 if opObj == None:
2636 self.volOpFilter.clear()
2929 self.volOpFilter.clear()
2637 self.volOpCebFilter.setCheckState(0)
2930 self.volOpCebFilter.setCheckState(0)
2638 else:
2931 else:
2639 value = opObj.getParameterValue(parameterName='window')
2932 value = opObj.getParameterValue(parameterName='window')
2640 value = str(value)
2933 value = str(value)
2641 self.volOpFilter.setText(value)
2934 self.volOpFilter.setText(value)
2642 self.volOpFilter.setEnabled(True)
2935 self.volOpFilter.setEnabled(True)
2643 self.volOpCebFilter.setCheckState(QtCore.Qt.Checked)
2936 self.volOpCebFilter.setCheckState(QtCore.Qt.Checked)
2644
2937
2645 opObj = puObj.getOperationObj(name="ProfileSelector")
2938 opObj = puObj.getOperationObj(name="ProfileSelector")
2646 if opObj == None:
2939 if opObj == None:
2647 self.volOpProfile.clear()
2940 self.volOpProfile.clear()
2648 self.volOpCebProfile.setCheckState(0)
2941 self.volOpCebProfile.setCheckState(0)
2649 else:
2942 else:
2650 for parmObj in opObj.getParameterObjList():
2943 for parmObj in opObj.getParameterObjList():
2651 if parmObj.name == "profileRangeList":
2944 if parmObj.name == "profileRangeList":
2652 value = opObj.getParameterValue(parameterName='profileRangeList')
2945 value = opObj.getParameterValue(parameterName='profileRangeList')
2653 value = str(value)[1:-1]
2946 value = str(value)[1:-1]
2654 self.volOpProfile.setText(value)
2947 self.volOpProfile.setText(value)
2655 self.volOpProfile.setEnabled(True)
2948 self.volOpProfile.setEnabled(True)
2656 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2949 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2657 self.volOpComProfile.setCurrentIndex(1)
2950 self.volOpComProfile.setCurrentIndex(1)
2658 if parmObj.name == "profileList":
2951 if parmObj.name == "profileList":
2659 value = opObj.getParameterValue(parameterName='profileList')
2952 value = opObj.getParameterValue(parameterName='profileList')
2660 value = str(value)[1:-1]
2953 value = str(value)[1:-1]
2661 self.volOpProfile.setText(value)
2954 self.volOpProfile.setText(value)
2662 self.volOpProfile.setEnabled(True)
2955 self.volOpProfile.setEnabled(True)
2663 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2956 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2664 self.volOpComProfile.setCurrentIndex(0)
2957 self.volOpComProfile.setCurrentIndex(0)
2665
2958
2666
2959
2667 opObj = puObj.getOperationObj(name="Decoder")
2960 opObj = puObj.getOperationObj(name="Decoder")
2668 if opObj == None:
2961 if opObj == None:
2669 self.volOpCebDecodification.setCheckState(0)
2962 self.volOpCebDecodification.setCheckState(0)
2670 else:
2963 else:
2671 try:
2964 try:
2672 valueCode = opObj.getParameterValue(parameterName='nCode')
2965 valueCode = opObj.getParameterValue(parameterName='nCode')
2673 status = "on"
2966 status = "on"
2674 except:
2967 except:
2675 status = "off"
2968 status = "off"
2676 if not status == "off":
2969 if not status == "off":
2677 if int(valueCode) == 1:
2970 if int(valueCode) == 1:
2678 valueBaud = opObj.getParameterValue(parameterName='nBaud')
2971 valueBaud = opObj.getParameterValue(parameterName='nBaud')
2679 if int(valueBaud) == 3:
2972 if int(valueBaud) == 3:
2680 self.volOpComCode.setCurrentIndex(0)
2973 self.volOpComCode.setCurrentIndex(0)
2681 if int(valueBaud) == 4:
2974 if int(valueBaud) == 4:
2682 self.volOpComCode.setCurrentIndex(1)
2975 self.volOpComCode.setCurrentIndex(1)
2683 if int(valueBaud) == 5:
2976 if int(valueBaud) == 5:
2684 self.volOpComCode.setCurrentIndex(2)
2977 self.volOpComCode.setCurrentIndex(2)
2685 if int(valueBaud) == 7:
2978 if int(valueBaud) == 7:
2686 self.volOpComCode.setCurrentIndex(3)
2979 self.volOpComCode.setCurrentIndex(3)
2687 if int(valueBaud) == 11:
2980 if int(valueBaud) == 11:
2688 self.volOpComCode.setCurrentIndex(4)
2981 self.volOpComCode.setCurrentIndex(4)
2689 if int(valueBaud) == 13:
2982 if int(valueBaud) == 13:
2690 self.volOpComCode.setCurrentIndex(5)
2983 self.volOpComCode.setCurrentIndex(5)
2691 else:
2984 else:
2692 valueBaud = opObj.getParameterValue(parameterName='nBaud')
2985 valueBaud = opObj.getParameterValue(parameterName='nBaud')
2693 if int(valueBaud) == 3:
2986 if int(valueBaud) == 3:
2694 self.volOpComCode.setCurrentIndex(6)
2987 self.volOpComCode.setCurrentIndex(6)
2695 if int(valueBaud) == 4:
2988 if int(valueBaud) == 4:
2696 self.volOpComCode.setCurrentIndex(7)
2989 self.volOpComCode.setCurrentIndex(7)
2697 if int(valueBaud) == 5:
2990 if int(valueBaud) == 5:
2698 self.volOpComCode.setCurrentIndex(8)
2991 self.volOpComCode.setCurrentIndex(8)
2699 if int(valueBaud) == 7:
2992 if int(valueBaud) == 7:
2700 self.volOpComCode.setCurrentIndex(9)
2993 self.volOpComCode.setCurrentIndex(9)
2701 if int(valueBaud) == 11:
2994 if int(valueBaud) == 11:
2702 self.volOpComCode.setCurrentIndex(10)
2995 self.volOpComCode.setCurrentIndex(10)
2703 if int(valueBaud) == 13:
2996 if int(valueBaud) == 13:
2704 self.volOpComCode.setCurrentIndex(11)
2997 self.volOpComCode.setCurrentIndex(11)
2705
2998
2706 for parmObj in opObj.getParameterObjList():
2999 for parmObj in opObj.getParameterObjList():
2707 if parmObj.name == "nBaud":
3000 if parmObj.name == "nBaud":
2708 value = opObj.getParameterValue(parameterName='nBaud')
3001 value = opObj.getParameterValue(parameterName='nBaud')
2709 if parmObj.name == "mode":
3002 if parmObj.name == "mode":
2710 value = opObj.getParameterValue(parameterName='mode')
3003 value = opObj.getParameterValue(parameterName='mode')
2711 self.volOpComMode.setCurrentIndex(value)
3004 self.volOpComMode.setCurrentIndex(value)
2712 else:
3005 else:
2713 self.volOpComCode.setCurrentIndex(12)
3006 self.volOpComCode.setCurrentIndex(12)
2714 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
3007 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
2715
3008
2716 opObj = puObj.getOperationObj(name="deFlip")
3009 opObj = puObj.getOperationObj(name="deFlip")
2717 if opObj == None:
3010 if opObj == None:
2718 self.volOpFlip.clear()
3011 self.volOpFlip.clear()
2719 self.volOpFlip.setEnabled(False)
3012 self.volOpFlip.setEnabled(False)
2720 self.volOpCebFlip.setCheckState(0)
3013 self.volOpCebFlip.setCheckState(0)
2721 else:
3014 else:
2722 try:
3015 try:
2723 value = opObj.getParameterValue(parameterName='channelList')
3016 value = opObj.getParameterValue(parameterName='channelList')
2724 value = str(value)[1:-1]
3017 value = str(value)[1:-1]
2725 except:
3018 except:
2726 value = ""
3019 value = ""
2727
3020
2728 self.volOpFlip.setText(value)
3021 self.volOpFlip.setText(value)
2729 self.volOpFlip.setEnabled(True)
3022 self.volOpFlip.setEnabled(True)
2730 self.volOpCebFlip.setCheckState(QtCore.Qt.Checked)
3023 self.volOpCebFlip.setCheckState(QtCore.Qt.Checked)
2731
3024
2732 opObj = puObj.getOperationObj(name="CohInt")
3025 opObj = puObj.getOperationObj(name="CohInt")
2733 if opObj == None:
3026 if opObj == None:
2734 self.volOpCohInt.clear()
3027 self.volOpCohInt.clear()
2735 self.volOpCebCohInt.setCheckState(0)
3028 self.volOpCebCohInt.setCheckState(0)
2736 else:
3029 else:
2737 value = opObj.getParameterValue(parameterName='n')
3030 value = opObj.getParameterValue(parameterName='n')
2738 self.volOpCohInt.setText(str(value))
3031 self.volOpCohInt.setText(str(value))
2739 self.volOpCohInt.setEnabled(True)
3032 self.volOpCohInt.setEnabled(True)
2740 self.volOpCebCohInt.setCheckState(QtCore.Qt.Checked)
3033 self.volOpCebCohInt.setCheckState(QtCore.Qt.Checked)
2741
3034
2742 opObj = puObj.getOperationObj(name='Scope')
3035 opObj = puObj.getOperationObj(name='Scope')
2743 if opObj == None:
3036 if opObj == None:
2744 self.volGraphCebshow.setCheckState(0)
3037 self.volGraphCebshow.setCheckState(0)
2745 else:
3038 else:
2746 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
3039 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
2747 value = opObj.getParameterObj(parameterName='channelList')
3040 value = opObj.getParameterObj(parameterName='channelList')
2748 if value == None:
3041 if value == None:
2749 self.volGraphChannelList.clear()
3042 self.volGraphChannelList.clear()
2750 else:
3043 else:
2751 value = opObj.getParameterValue(parameterName='channelList')
3044 value = opObj.getParameterValue(parameterName='channelList')
2752 value = str(value)[1:-1]
3045 value = str(value)[1:-1]
2753 self.volGraphChannelList.setText(value)
3046 self.volGraphChannelList.setText(value)
2754 self.volOpProfile.setEnabled(True)
3047 self.volOpProfile.setEnabled(True)
2755
3048
2756 for parmObj in opObj.getParameterObjList():
3049 for parmObj in opObj.getParameterObjList():
2757 if parmObj.name == "xmin":
3050 if parmObj.name == "xmin":
2758 value1 = opObj.getParameterValue(parameterName='xmin')
3051 value1 = opObj.getParameterValue(parameterName='xmin')
2759 value1 = str(value1)
3052 value1 = str(value1)
2760 value2 = opObj.getParameterValue(parameterName='xmax')
3053 value2 = opObj.getParameterValue(parameterName='xmax')
2761 value2 = str(value2)
3054 value2 = str(value2)
2762 value = value1 + "," + value2
3055 value = value1 + "," + value2
2763 self.volGraphfreqrange.setText(value)
3056 self.volGraphfreqrange.setText(value)
2764 else:
3057 else:
2765 self.volGraphfreqrange.clear()
3058 self.volGraphfreqrange.clear()
2766 for parmObj in opObj.getParameterObjList():
3059 for parmObj in opObj.getParameterObjList():
2767 if parmObj.name == "ymin":
3060 if parmObj.name == "ymin":
2768 value1 = opObj.getParameterValue(parameterName='ymin')
3061 value1 = opObj.getParameterValue(parameterName='ymin')
2769 value1 = str(value1)
3062 value1 = str(value1)
2770 value2 = opObj.getParameterValue(parameterName='ymax')
3063 value2 = opObj.getParameterValue(parameterName='ymax')
2771 value2 = str(value2)
3064 value2 = str(value2)
2772 value = value1 + "," + value2
3065 value = value1 + "," + value2
2773 value2 = str(value2)
3066 value2 = str(value2)
2774 self.volGraphHeightrange.setText(value)
3067 self.volGraphHeightrange.setText(value)
2775 else:
3068 else:
2776 self.volGraphHeightrange.clear()
3069 self.volGraphHeightrange.clear()
2777
3070
2778
3071
2779 for parmObj in opObj.getParameterObjList():
3072 for parmObj in opObj.getParameterObjList():
2780 if parmObj.name == "save":
3073 if parmObj.name == "save":
2781 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
3074 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
2782 else:
3075 else:
2783 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
3076 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2784
3077
2785 # outputVoltageWrite
3078 # outputVoltageWrite
2786 opObj = puObj.getOperationObj(name='VoltageWriter')
3079 opObj = puObj.getOperationObj(name='VoltageWriter')
2787 if opObj == None:
3080 if opObj == None:
2788 self.volOutputPath.clear()
3081 self.volOutputPath.clear()
2789 self.volOutputblocksperfile.clear()
3082 self.volOutputblocksperfile.clear()
2790 self.volOutputprofilesperblock.clear()
3083 self.volOutputprofilesperblock.clear()
2791 else:
3084 else:
2792 value = opObj.getParameterObj(parameterName='path')
3085 value = opObj.getParameterObj(parameterName='path')
2793 if value == None:
3086 if value == None:
2794 self.volOutputPath.clear()
3087 self.volOutputPath.clear()
2795 else:
3088 else:
2796 value = opObj.getParameterValue(parameterName='path')
3089 value = opObj.getParameterValue(parameterName='path')
2797 path = str(value)
3090 path = str(value)
2798 self.volOutputPath.setText(path)
3091 self.volOutputPath.setText(path)
2799 value = opObj.getParameterObj(parameterName='blocksPerFile')
3092 value = opObj.getParameterObj(parameterName='blocksPerFile')
2800 if value == None:
3093 if value == None:
2801 self.volOutputblocksperfile.clear()
3094 self.volOutputblocksperfile.clear()
2802 else:
3095 else:
2803 value = opObj.getParameterValue(parameterName='blocksPerFile')
3096 value = opObj.getParameterValue(parameterName='blocksPerFile')
2804 blocksperfile = str(value)
3097 blocksperfile = str(value)
2805 self.volOutputblocksperfile.setText(blocksperfile)
3098 self.volOutputblocksperfile.setText(blocksperfile)
2806 value = opObj.getParameterObj(parameterName='profilesPerBlock')
3099 value = opObj.getParameterObj(parameterName='profilesPerBlock')
2807 if value == None:
3100 if value == None:
2808 self.volOutputprofilesperblock.clear()
3101 self.volOutputprofilesperblock.clear()
2809 else:
3102 else:
2810 value = opObj.getParameterValue(parameterName='profilesPerBlock')
3103 value = opObj.getParameterValue(parameterName='profilesPerBlock')
2811 profilesPerBlock = str(value)
3104 profilesPerBlock = str(value)
2812 self.volOutputprofilesperblock.setText(profilesPerBlock)
3105 self.volOutputprofilesperblock.setText(profilesPerBlock)
2813
3106
2814 if datatype == 'Spectra':
3107 if datatype == 'Spectra':
2815
3108
2816 opObj = puObj.getOperationObj(name='setRadarFrequency')
3109 opObj = puObj.getOperationObj(name='setRadarFrequency')
2817 if opObj == None:
3110 if opObj == None:
2818 self.specOpRadarfrequency.clear()
3111 self.specOpRadarfrequency.clear()
2819 self.specOpCebRadarfrequency.setCheckState(0)
3112 self.specOpCebRadarfrequency.setCheckState(0)
2820 else:
3113 else:
2821 value = opObj.getParameterValue(parameterName='frequency')
3114 value = opObj.getParameterValue(parameterName='frequency')
2822 value = str(value)
3115 value = str(value)
2823 self.specOpRadarfrequency.setText(value)
3116 self.specOpRadarfrequency.setText(value)
2824 self.specOpRadarfrequency.setEnabled(True)
3117 self.specOpRadarfrequency.setEnabled(True)
2825 self.specOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
3118 self.specOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2826
3119
2827 opObj = puObj.getOperationObj(name="run")
3120 opObj = puObj.getOperationObj(name="run")
2828 if opObj == None:
3121 if opObj == None:
2829 self.specOpnFFTpoints.clear()
3122 self.specOpnFFTpoints.clear()
2830 self.specOpProfiles.clear()
3123 self.specOpProfiles.clear()
2831 self.specOpippFactor.clear()
3124 self.specOpippFactor.clear()
2832 else:
3125 else:
2833 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
3126 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
2834 if parmObj == None:
3127 if parmObj == None:
2835 self.specOpnFFTpoints.clear()
3128 self.specOpnFFTpoints.clear()
2836 else:
3129 else:
2837 self.specOpnFFTpoints.setEnabled(True)
3130 self.specOpnFFTpoints.setEnabled(True)
2838 value = opObj.getParameterValue(parameterName='nFFTPoints')
3131 value = opObj.getParameterValue(parameterName='nFFTPoints')
2839 self.specOpnFFTpoints.setText(str(value))
3132 self.specOpnFFTpoints.setText(str(value))
2840
3133
2841 parmObj = opObj.getParameterObj(parameterName='nProfiles')
3134 parmObj = opObj.getParameterObj(parameterName='nProfiles')
2842 if parmObj == None:
3135 if parmObj == None:
2843 self.specOpProfiles.clear()
3136 self.specOpProfiles.clear()
2844 else:
3137 else:
2845 self.specOpProfiles.setEnabled(True)
3138 self.specOpProfiles.setEnabled(True)
2846 value = opObj.getParameterValue(parameterName='nProfiles')
3139 value = opObj.getParameterValue(parameterName='nProfiles')
2847 self.specOpProfiles.setText(str(value))
3140 self.specOpProfiles.setText(str(value))
2848
3141
2849 parmObj = opObj.getParameterObj(parameterName='ippFactor')
3142 parmObj = opObj.getParameterObj(parameterName='ippFactor')
2850 if parmObj == None:
3143 if parmObj == None:
2851 self.specOpippFactor.clear()
3144 self.specOpippFactor.clear()
2852 else:
3145 else:
2853 self.specOpippFactor.setEnabled(True)
3146 self.specOpippFactor.setEnabled(True)
2854 value = opObj.getParameterValue(parameterName='ippFactor')
3147 value = opObj.getParameterValue(parameterName='ippFactor')
2855 self.specOpippFactor.setText(str(value))
3148 self.specOpippFactor.setText(str(value))
2856
3149
2857 opObj = puObj.getOperationObj(name="run")
3150 opObj = puObj.getOperationObj(name="run")
2858 if opObj == None:
3151 if opObj == None:
2859 self.specOppairsList.clear()
3152 self.specOppairsList.clear()
2860 self.specOpCebCrossSpectra.setCheckState(0)
3153 self.specOpCebCrossSpectra.setCheckState(0)
2861 else:
3154 else:
2862 parmObj = opObj.getParameterObj(parameterName='pairsList')
3155 parmObj = opObj.getParameterObj(parameterName='pairsList')
2863 if parmObj == None:
3156 if parmObj == None:
2864 self.specOppairsList.clear()
3157 self.specOppairsList.clear()
2865 self.specOpCebCrossSpectra.setCheckState(0)
3158 self.specOpCebCrossSpectra.setCheckState(0)
2866 else:
3159 else:
2867 value = opObj.getParameterValue(parameterName='pairsList')
3160 value = opObj.getParameterValue(parameterName='pairsList')
2868 value = str(value)[1:-1]
3161 value = str(value)[1:-1]
2869 self.specOppairsList.setText(str(value))
3162 self.specOppairsList.setText(str(value))
2870 self.specOppairsList.setEnabled(True)
3163 self.specOppairsList.setEnabled(True)
2871 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
3164 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
2872
3165
2873 opObj = puObj.getOperationObj(name="selectChannels")
3166 opObj = puObj.getOperationObj(name="selectChannels")
2874
3167
2875 if opObj == None:
3168 if opObj == None:
2876 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
3169 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2877
3170
2878 if opObj == None:
3171 if opObj == None:
2879 self.specOpChannel.clear()
3172 self.specOpChannel.clear()
2880 self.specOpCebChannel.setCheckState(0)
3173 self.specOpCebChannel.setCheckState(0)
2881 else:
3174 else:
2882 channelEnabled = False
3175 channelEnabled = False
2883 try:
3176 try:
2884 value = opObj.getParameterValue(parameterName='channelList')
3177 value = opObj.getParameterValue(parameterName='channelList')
2885 value = str(value)[1:-1]
3178 value = str(value)[1:-1]
2886 channelEnabled = True
3179 channelEnabled = True
2887 channelMode = 0
3180 channelMode = 0
2888 except:
3181 except:
2889 pass
3182 pass
2890 try:
3183 try:
2891 value = opObj.getParameterValue(parameterName='channelIndexList')
3184 value = opObj.getParameterValue(parameterName='channelIndexList')
2892 value = str(value)[1:-1]
3185 value = str(value)[1:-1]
2893 channelEnabled = True
3186 channelEnabled = True
2894 channelMode = 1
3187 channelMode = 1
2895 except:
3188 except:
2896 pass
3189 pass
2897
3190
2898 if channelEnabled:
3191 if channelEnabled:
2899 self.specOpChannel.setText(value)
3192 self.specOpChannel.setText(value)
2900 self.specOpChannel.setEnabled(True)
3193 self.specOpChannel.setEnabled(True)
2901 self.specOpCebChannel.setCheckState(QtCore.Qt.Checked)
3194 self.specOpCebChannel.setCheckState(QtCore.Qt.Checked)
2902 self.specOpComChannel.setCurrentIndex(channelMode)
3195 self.specOpComChannel.setCurrentIndex(channelMode)
2903
3196
2904 opObj = puObj.getOperationObj(name="selectHeights")
3197 opObj = puObj.getOperationObj(name="selectHeights")
2905 if opObj == None:
3198 if opObj == None:
2906 self.specOpHeights.clear()
3199 self.specOpHeights.clear()
2907 self.specOpCebHeights.setCheckState(0)
3200 self.specOpCebHeights.setCheckState(0)
2908 else:
3201 else:
2909 value1 = int(opObj.getParameterValue(parameterName='minHei'))
3202 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2910 value1 = str(value1)
3203 value1 = str(value1)
2911 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
3204 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2912 value2 = str(value2)
3205 value2 = str(value2)
2913 value = value1 + "," + value2
3206 value = value1 + "," + value2
2914 self.specOpHeights.setText(value)
3207 self.specOpHeights.setText(value)
2915 self.specOpHeights.setEnabled(True)
3208 self.specOpHeights.setEnabled(True)
2916 self.specOpCebHeights.setCheckState(QtCore.Qt.Checked)
3209 self.specOpCebHeights.setCheckState(QtCore.Qt.Checked)
2917
3210
2918 opObj = puObj.getOperationObj(name="IncohInt")
3211 opObj = puObj.getOperationObj(name="IncohInt")
2919 if opObj == None:
3212 if opObj == None:
2920 self.specOpIncoherent.clear()
3213 self.specOpIncoherent.clear()
2921 self.specOpCebIncoherent.setCheckState(0)
3214 self.specOpCebIncoherent.setCheckState(0)
2922 else:
3215 else:
2923 for parmObj in opObj.getParameterObjList():
3216 for parmObj in opObj.getParameterObjList():
2924 if parmObj.name == 'timeInterval':
3217 if parmObj.name == 'timeInterval':
2925 value = opObj.getParameterValue(parameterName='timeInterval')
3218 value = opObj.getParameterValue(parameterName='timeInterval')
2926 value = float(value)
3219 value = float(value)
2927 self.specOpIncoherent.setText(str(value))
3220 self.specOpIncoherent.setText(str(value))
2928 self.specOpIncoherent.setEnabled(True)
3221 self.specOpIncoherent.setEnabled(True)
2929 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3222 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
2930 self.specOpCobIncInt.setCurrentIndex(0)
3223 self.specOpCobIncInt.setCurrentIndex(0)
2931
3224
2932 if parmObj.name == 'n':
3225 if parmObj.name == 'n':
2933 value = opObj.getParameterValue(parameterName='n')
3226 value = opObj.getParameterValue(parameterName='n')
2934 value = float(value)
3227 value = float(value)
2935 self.specOpIncoherent.setText(str(value))
3228 self.specOpIncoherent.setText(str(value))
2936 self.specOpIncoherent.setEnabled(True)
3229 self.specOpIncoherent.setEnabled(True)
2937 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3230 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
2938 self.specOpCobIncInt.setCurrentIndex(1)
3231 self.specOpCobIncInt.setCurrentIndex(1)
2939
3232
2940 opObj = puObj.getOperationObj(name="removeDC")
3233 opObj = puObj.getOperationObj(name="removeDC")
2941 if opObj == None:
3234 if opObj == None:
2942 self.specOpCebRemoveDC.setCheckState(0)
3235 self.specOpCebRemoveDC.setCheckState(0)
2943 else:
3236 else:
2944 self.specOpCebRemoveDC.setCheckState(QtCore.Qt.Checked)
3237 self.specOpCebRemoveDC.setCheckState(QtCore.Qt.Checked)
2945 value = opObj.getParameterValue(parameterName='mode')
3238 value = opObj.getParameterValue(parameterName='mode')
2946 if value == 1:
3239 if value == 1:
2947 self.specOpComRemoveDC.setCurrentIndex(0)
3240 self.specOpComRemoveDC.setCurrentIndex(0)
2948 elif value == 2:
3241 elif value == 2:
2949 self.specOpComRemoveDC.setCurrentIndex(1)
3242 self.specOpComRemoveDC.setCurrentIndex(1)
2950
3243
2951 opObj = puObj.getOperationObj(name="removeInterference")
3244 opObj = puObj.getOperationObj(name="removeInterference")
2952 if opObj == None:
3245 if opObj == None:
2953 self.specOpCebRemoveInt.setCheckState(0)
3246 self.specOpCebRemoveInt.setCheckState(0)
2954 else:
3247 else:
2955 self.specOpCebRemoveInt.setCheckState(QtCore.Qt.Checked)
3248 self.specOpCebRemoveInt.setCheckState(QtCore.Qt.Checked)
2956
3249
2957 opObj = puObj.getOperationObj(name='getNoise')
3250 opObj = puObj.getOperationObj(name='getNoise')
2958 if opObj == None:
3251 if opObj == None:
2959 self.specOpCebgetNoise.setCheckState(0)
3252 self.specOpCebgetNoise.setCheckState(0)
2960 self.specOpgetNoise.clear()
3253 self.specOpgetNoise.clear()
2961 else:
3254 else:
2962 self.specOpCebgetNoise.setCheckState(QtCore.Qt.Checked)
3255 self.specOpCebgetNoise.setCheckState(QtCore.Qt.Checked)
2963 parmObj = opObj.getParameterObj(parameterName='minHei')
3256 parmObj = opObj.getParameterObj(parameterName='minHei')
2964 if parmObj == None:
3257 if parmObj == None:
2965 self.specOpgetNoise.clear()
3258 self.specOpgetNoise.clear()
2966 value1 = None
3259 value1 = None
2967 else:
3260 else:
2968 value1 = opObj.getParameterValue(parameterName='minHei')
3261 value1 = opObj.getParameterValue(parameterName='minHei')
2969 value1 = str(value1)
3262 value1 = str(value1)
2970 parmObj = opObj.getParameterObj(parameterName='maxHei')
3263 parmObj = opObj.getParameterObj(parameterName='maxHei')
2971 if parmObj == None:
3264 if parmObj == None:
2972 value2 = None
3265 value2 = None
2973 value = value1
3266 value = value1
2974 self.specOpgetNoise.setText(value)
3267 self.specOpgetNoise.setText(value)
2975 self.specOpgetNoise.setEnabled(True)
3268 self.specOpgetNoise.setEnabled(True)
2976 else:
3269 else:
2977 value2 = opObj.getParameterValue(parameterName='maxHei')
3270 value2 = opObj.getParameterValue(parameterName='maxHei')
2978 value2 = str(value2)
3271 value2 = str(value2)
2979 parmObj = opObj.getParameterObj(parameterName='minVel')
3272 parmObj = opObj.getParameterObj(parameterName='minVel')
2980 if parmObj == None:
3273 if parmObj == None:
2981 value3 = None
3274 value3 = None
2982 value = value1 + "," + value2
3275 value = value1 + "," + value2
2983 self.specOpgetNoise.setText(value)
3276 self.specOpgetNoise.setText(value)
2984 self.specOpgetNoise.setEnabled(True)
3277 self.specOpgetNoise.setEnabled(True)
2985 else:
3278 else:
2986 value3 = opObj.getParameterValue(parameterName='minVel')
3279 value3 = opObj.getParameterValue(parameterName='minVel')
2987 value3 = str(value3)
3280 value3 = str(value3)
2988 parmObj = opObj.getParameterObj(parameterName='maxVel')
3281 parmObj = opObj.getParameterObj(parameterName='maxVel')
2989 if parmObj == None:
3282 if parmObj == None:
2990 value4 = None
3283 value4 = None
2991 value = value1 + "," + value2 + "," + value3
3284 value = value1 + "," + value2 + "," + value3
2992 self.specOpgetNoise.setText(value)
3285 self.specOpgetNoise.setText(value)
2993 self.specOpgetNoise.setEnabled(True)
3286 self.specOpgetNoise.setEnabled(True)
2994 else:
3287 else:
2995 value4 = opObj.getParameterValue(parameterName='maxVel')
3288 value4 = opObj.getParameterValue(parameterName='maxVel')
2996 value4 = str(value4)
3289 value4 = str(value4)
2997 value = value1 + "," + value2 + "," + value3 + ',' + value4
3290 value = value1 + "," + value2 + "," + value3 + ',' + value4
2998 self.specOpgetNoise.setText(value)
3291 self.specOpgetNoise.setText(value)
2999 self.specOpgetNoise.setEnabled(True)
3292 self.specOpgetNoise.setEnabled(True)
3000
3293
3001 opObj = puObj.getOperationObj(name='SpectraPlot')
3294 opObj = puObj.getOperationObj(name='SpectraPlot')
3002 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
3295 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
3003 if opObj == None:
3296 if opObj == None:
3004 self.specGraphCebSpectraplot.setCheckState(0)
3297 self.specGraphCebSpectraplot.setCheckState(0)
3005 self.specGraphSaveSpectra.setCheckState(0)
3298 self.specGraphSaveSpectra.setCheckState(0)
3006 self.specGraphftpSpectra.setCheckState(0)
3299 self.specGraphftpSpectra.setCheckState(0)
3007
3300
3008 else:
3301 else:
3009 operationSpectraPlot = "Enable"
3302 operationSpectraPlot = "Enable"
3010 self.specGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3303 self.specGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3011 parmObj = opObj.getParameterObj(parameterName='channelList')
3304 parmObj = opObj.getParameterObj(parameterName='channelList')
3012 if parmObj == None:
3305 if parmObj == None:
3013 self.specGgraphChannelList.clear()
3306 self.specGgraphChannelList.clear()
3014 else:
3307 else:
3015 value = opObj.getParameterValue(parameterName='channelList')
3308 value = opObj.getParameterValue(parameterName='channelList')
3016 channelListSpectraPlot = str(value)[1:-1]
3309 channelListSpectraPlot = str(value)[1:-1]
3017 self.specGgraphChannelList.setText(channelListSpectraPlot)
3310 self.specGgraphChannelList.setText(channelListSpectraPlot)
3018 self.specGgraphChannelList.setEnabled(True)
3311 self.specGgraphChannelList.setEnabled(True)
3019
3312
3020 parmObj = opObj.getParameterObj(parameterName='xmin')
3313 parmObj = opObj.getParameterObj(parameterName='xmin')
3021 if parmObj == None:
3314 if parmObj == None:
3022 self.specGgraphFreq.clear()
3315 self.specGgraphFreq.clear()
3023 else:
3316 else:
3024 value1 = opObj.getParameterValue(parameterName='xmin')
3317 value1 = opObj.getParameterValue(parameterName='xmin')
3025 value1 = str(value1)
3318 value1 = str(value1)
3026 value2 = opObj.getParameterValue(parameterName='xmax')
3319 value2 = opObj.getParameterValue(parameterName='xmax')
3027 value2 = str(value2)
3320 value2 = str(value2)
3028 value = value1 + "," + value2
3321 value = value1 + "," + value2
3029 self.specGgraphFreq.setText(value)
3322 self.specGgraphFreq.setText(value)
3030 self.specGgraphFreq.setEnabled(True)
3323 self.specGgraphFreq.setEnabled(True)
3031
3324
3032 parmObj = opObj.getParameterObj(parameterName='ymin')
3325 parmObj = opObj.getParameterObj(parameterName='ymin')
3033 if parmObj == None:
3326 if parmObj == None:
3034 self.specGgraphHeight.clear()
3327 self.specGgraphHeight.clear()
3035 else:
3328 else:
3036 value1 = opObj.getParameterValue(parameterName='ymin')
3329 value1 = opObj.getParameterValue(parameterName='ymin')
3037 value1 = str(value1)
3330 value1 = str(value1)
3038 value2 = opObj.getParameterValue(parameterName='ymax')
3331 value2 = opObj.getParameterValue(parameterName='ymax')
3039 value2 = str(value2)
3332 value2 = str(value2)
3040 value = value1 + "," + value2
3333 value = value1 + "," + value2
3041 self.specGgraphHeight.setText(value)
3334 self.specGgraphHeight.setText(value)
3042 self.specGgraphHeight.setEnabled(True)
3335 self.specGgraphHeight.setEnabled(True)
3043
3336
3044 parmObj = opObj.getParameterObj(parameterName='zmin')
3337 parmObj = opObj.getParameterObj(parameterName='zmin')
3045 if parmObj == None:
3338 if parmObj == None:
3046 self.specGgraphDbsrange.clear()
3339 self.specGgraphDbsrange.clear()
3047 else:
3340 else:
3048 value1 = opObj.getParameterValue(parameterName='zmin')
3341 value1 = opObj.getParameterValue(parameterName='zmin')
3049 value1 = str(value1)
3342 value1 = str(value1)
3050 value2 = opObj.getParameterValue(parameterName='zmax')
3343 value2 = opObj.getParameterValue(parameterName='zmax')
3051 value2 = str(value2)
3344 value2 = str(value2)
3052 value = value1 + "," + value2
3345 value = value1 + "," + value2
3053 self.specGgraphDbsrange.setText(value)
3346 self.specGgraphDbsrange.setText(value)
3054 self.specGgraphDbsrange.setEnabled(True)
3347 self.specGgraphDbsrange.setEnabled(True)
3055
3348
3056
3349
3057 parmObj = opObj.getParameterObj(parameterName="figpath")
3350 parmObj = opObj.getParameterObj(parameterName="figpath")
3058 if parmObj == None:
3351 if parmObj == None:
3059 self.specGraphSaveSpectra.setCheckState(0)
3352 self.specGraphSaveSpectra.setCheckState(0)
3060 else:
3353 else:
3061 self.specGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3354 self.specGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3062 value = opObj.getParameterValue(parameterName='figpath')
3355 value = opObj.getParameterValue(parameterName='figpath')
3063 self.specGraphPath.setText(value)
3356 self.specGraphPath.setText(value)
3064
3357
3065 parmObj = opObj.getParameterObj(parameterName="ftp")
3358 parmObj = opObj.getParameterObj(parameterName="ftp")
3066 if parmObj == None:
3359 if parmObj == None:
3067 self.specGraphftpSpectra.setCheckState(0)
3360 self.specGraphftpSpectra.setCheckState(0)
3068 else:
3361 else:
3069 self.specGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3362 self.specGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3070 try:
3363 try:
3071 value = opObj.getParameterValue(parameterName='wr_period')
3364 value = opObj.getParameterValue(parameterName='wr_period')
3072 except:
3365 except:
3073 value = " "
3366 value = " "
3074 self.specGgraphftpratio.setText(str(value))
3367 self.specGgraphftpratio.setText(str(value))
3075
3368
3076 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
3369 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
3077 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
3370 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
3078 if opObj == None:
3371 if opObj == None:
3079 self.specGraphCebCrossSpectraplot.setCheckState(0)
3372 self.specGraphCebCrossSpectraplot.setCheckState(0)
3080 self.specGraphSaveCross.setCheckState(0)
3373 self.specGraphSaveCross.setCheckState(0)
3081
3374
3082 else:
3375 else:
3083 operationCrossSpectraPlot = "Enable"
3376 operationCrossSpectraPlot = "Enable"
3084 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
3377 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
3085 parmObj = opObj.getParameterObj(parameterName='xmin')
3378 parmObj = opObj.getParameterObj(parameterName='xmin')
3086 if parmObj == None:
3379 if parmObj == None:
3087 self.specGgraphFreq.clear()
3380 self.specGgraphFreq.clear()
3088 else:
3381 else:
3089 value1 = opObj.getParameterValue(parameterName='xmin')
3382 value1 = opObj.getParameterValue(parameterName='xmin')
3090 value1 = str(value1)
3383 value1 = str(value1)
3091 value2 = opObj.getParameterValue(parameterName='xmax')
3384 value2 = opObj.getParameterValue(parameterName='xmax')
3092 value2 = str(value2)
3385 value2 = str(value2)
3093 value = value1 + "," + value2
3386 value = value1 + "," + value2
3094 self.specGgraphFreq.setText(value)
3387 self.specGgraphFreq.setText(value)
3095 self.specGgraphFreq.setEnabled(True)
3388 self.specGgraphFreq.setEnabled(True)
3096
3389
3097 parmObj = opObj.getParameterObj(parameterName='ymin')
3390 parmObj = opObj.getParameterObj(parameterName='ymin')
3098 if parmObj == None:
3391 if parmObj == None:
3099 self.specGgraphHeight.clear()
3392 self.specGgraphHeight.clear()
3100 else:
3393 else:
3101 value1 = opObj.getParameterValue(parameterName='ymin')
3394 value1 = opObj.getParameterValue(parameterName='ymin')
3102 value1 = str(value1)
3395 value1 = str(value1)
3103 value2 = opObj.getParameterValue(parameterName='ymax')
3396 value2 = opObj.getParameterValue(parameterName='ymax')
3104 value2 = str(value2)
3397 value2 = str(value2)
3105 value = value1 + "," + value2
3398 value = value1 + "," + value2
3106 self.specGgraphHeight.setText(value)
3399 self.specGgraphHeight.setText(value)
3107 self.specGgraphHeight.setEnabled(True)
3400 self.specGgraphHeight.setEnabled(True)
3108
3401
3109 parmObj = opObj.getParameterObj(parameterName='zmin')
3402 parmObj = opObj.getParameterObj(parameterName='zmin')
3110 if parmObj == None:
3403 if parmObj == None:
3111 self.specGgraphDbsrange.clear()
3404 self.specGgraphDbsrange.clear()
3112 else:
3405 else:
3113 value1 = opObj.getParameterValue(parameterName='zmin')
3406 value1 = opObj.getParameterValue(parameterName='zmin')
3114 value1 = str(value1)
3407 value1 = str(value1)
3115 value2 = opObj.getParameterValue(parameterName='zmax')
3408 value2 = opObj.getParameterValue(parameterName='zmax')
3116 value2 = str(value2)
3409 value2 = str(value2)
3117 value = value1 + "," + value2
3410 value = value1 + "," + value2
3118 self.specGgraphDbsrange.setText(value)
3411 self.specGgraphDbsrange.setText(value)
3119 self.specGgraphDbsrange.setEnabled(True)
3412 self.specGgraphDbsrange.setEnabled(True)
3120
3413
3121 parmObj = opObj.getParameterObj(parameterName="figpath")
3414 parmObj = opObj.getParameterObj(parameterName="figpath")
3122 if parmObj == None:
3415 if parmObj == None:
3123 self.specGraphSaveCross.setCheckState(0)
3416 self.specGraphSaveCross.setCheckState(0)
3124
3417
3125 else:
3418 else:
3126 self.specGraphSaveCross.setCheckState(QtCore.Qt.Checked)
3419 self.specGraphSaveCross.setCheckState(QtCore.Qt.Checked)
3127 value = opObj.getParameterValue(parameterName='figpath')
3420 value = opObj.getParameterValue(parameterName='figpath')
3128 self.specGraphPath.setText(value)
3421 self.specGraphPath.setText(value)
3129
3422
3130 parmObj = opObj.getParameterObj(parameterName="ftp")
3423 parmObj = opObj.getParameterObj(parameterName="ftp")
3131 if parmObj == None:
3424 if parmObj == None:
3132 self.specGraphftpCross.setCheckState(0)
3425 self.specGraphftpCross.setCheckState(0)
3133 else:
3426 else:
3134 self.specGraphftpCross.setCheckState(QtCore.Qt.Checked)
3427 self.specGraphftpCross.setCheckState(QtCore.Qt.Checked)
3135 try:
3428 try:
3136 value = opObj.getParameterValue(parameterName='wr_period')
3429 value = opObj.getParameterValue(parameterName='wr_period')
3137 except:
3430 except:
3138 value = " "
3431 value = " "
3139 self.specGgraphftpratio.setText(str(value))
3432 self.specGgraphftpratio.setText(str(value))
3140
3433
3141 opObj = puObj.getOperationObj(name='RTIPlot')
3434 opObj = puObj.getOperationObj(name='RTIPlot')
3142 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
3435 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
3143 if opObj == None:
3436 if opObj == None:
3144 self.specGraphCebRTIplot.setCheckState(0)
3437 self.specGraphCebRTIplot.setCheckState(0)
3145 self.specGraphSaveRTIplot.setCheckState(0)
3438 self.specGraphSaveRTIplot.setCheckState(0)
3146 self.specGraphftpRTIplot.setCheckState(0)
3439 self.specGraphftpRTIplot.setCheckState(0)
3147 else:
3440 else:
3148 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3441 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3149 parmObj = opObj.getParameterObj(parameterName='channelList')
3442 parmObj = opObj.getParameterObj(parameterName='channelList')
3150 if parmObj == None:
3443 if parmObj == None:
3151 self.specGgraphChannelList.clear()
3444 self.specGgraphChannelList.clear()
3152 else:
3445 else:
3153 value = opObj.getParameterValue(parameterName='channelList')
3446 value = opObj.getParameterValue(parameterName='channelList')
3154 channelListRTIPlot = str(value)[1:-1]
3447 channelListRTIPlot = str(value)[1:-1]
3155 self.specGgraphChannelList.setText(channelListRTIPlot)
3448 self.specGgraphChannelList.setText(channelListRTIPlot)
3156 self.specGgraphChannelList.setEnabled(True)
3449 self.specGgraphChannelList.setEnabled(True)
3157
3450
3158 parmObj = opObj.getParameterObj(parameterName='xmin')
3451 parmObj = opObj.getParameterObj(parameterName='xmin')
3159 if parmObj == None:
3452 if parmObj == None:
3160 self.specGgraphTminTmax.clear()
3453 self.specGgraphTminTmax.clear()
3161 else:
3454 else:
3162 value1 = opObj.getParameterValue(parameterName='xmin')
3455 value1 = opObj.getParameterValue(parameterName='xmin')
3163 value1 = str(value1)
3456 value1 = str(value1)
3164 value2 = opObj.getParameterValue(parameterName='xmax')
3457 value2 = opObj.getParameterValue(parameterName='xmax')
3165 value2 = str(value2)
3458 value2 = str(value2)
3166 value = value1 + "," + value2
3459 value = value1 + "," + value2
3167 self.specGgraphTminTmax.setText(value)
3460 self.specGgraphTminTmax.setText(value)
3168 self.specGgraphTminTmax.setEnabled(True)
3461 self.specGgraphTminTmax.setEnabled(True)
3169
3462
3170 parmObj = opObj.getParameterObj(parameterName='timerange')
3463 parmObj = opObj.getParameterObj(parameterName='timerange')
3171 if parmObj == None:
3464 if parmObj == None:
3172 self.specGgraphTimeRange.clear()
3465 self.specGgraphTimeRange.clear()
3173 else:
3466 else:
3174 value1 = opObj.getParameterValue(parameterName='timerange')
3467 value1 = opObj.getParameterValue(parameterName='timerange')
3175 value1 = str(value1)
3468 value1 = str(value1)
3176 self.specGgraphTimeRange.setText(value1)
3469 self.specGgraphTimeRange.setText(value1)
3177 self.specGgraphTimeRange.setEnabled(True)
3470 self.specGgraphTimeRange.setEnabled(True)
3178
3471
3179 parmObj = opObj.getParameterObj(parameterName='ymin')
3472 parmObj = opObj.getParameterObj(parameterName='ymin')
3180 if parmObj == None:
3473 if parmObj == None:
3181 self.specGgraphHeight.clear()
3474 self.specGgraphHeight.clear()
3182 else:
3475 else:
3183 value1 = opObj.getParameterValue(parameterName='ymin')
3476 value1 = opObj.getParameterValue(parameterName='ymin')
3184 value1 = str(value1)
3477 value1 = str(value1)
3185 value2 = opObj.getParameterValue(parameterName='ymax')
3478 value2 = opObj.getParameterValue(parameterName='ymax')
3186 value2 = str(value2)
3479 value2 = str(value2)
3187 value = value1 + "," + value2
3480 value = value1 + "," + value2
3188 self.specGgraphHeight.setText(value)
3481 self.specGgraphHeight.setText(value)
3189 self.specGgraphHeight.setEnabled(True)
3482 self.specGgraphHeight.setEnabled(True)
3190
3483
3191 parmObj = opObj.getParameterObj(parameterName='zmin')
3484 parmObj = opObj.getParameterObj(parameterName='zmin')
3192 if parmObj == None:
3485 if parmObj == None:
3193 self.specGgraphDbsrange.clear()
3486 self.specGgraphDbsrange.clear()
3194 else:
3487 else:
3195 value1 = opObj.getParameterValue(parameterName='zmin')
3488 value1 = opObj.getParameterValue(parameterName='zmin')
3196 value1 = str(value1)
3489 value1 = str(value1)
3197 value2 = opObj.getParameterValue(parameterName='zmax')
3490 value2 = opObj.getParameterValue(parameterName='zmax')
3198 value2 = str(value2)
3491 value2 = str(value2)
3199 value = value1 + "," + value2
3492 value = value1 + "," + value2
3200 self.specGgraphDbsrange.setText(value)
3493 self.specGgraphDbsrange.setText(value)
3201 self.specGgraphDbsrange.setEnabled(True)
3494 self.specGgraphDbsrange.setEnabled(True)
3202
3495
3203 parmObj = opObj.getParameterObj(parameterName="figpath")
3496 parmObj = opObj.getParameterObj(parameterName="figpath")
3204 if parmObj == None:
3497 if parmObj == None:
3205 self.specGraphSaveRTIplot.setCheckState(0)
3498 self.specGraphSaveRTIplot.setCheckState(0)
3206 else:
3499 else:
3207 self.specGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3500 self.specGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3208 value = opObj.getParameterValue(parameterName='figpath')
3501 value = opObj.getParameterValue(parameterName='figpath')
3209 self.specGraphPath.setText(value)
3502 self.specGraphPath.setText(value)
3210 #---------add----#
3503 #---------add----#
3211 parmObj = opObj.getParameterObj(parameterName="ftp")
3504 parmObj = opObj.getParameterObj(parameterName="ftp")
3212 if parmObj == None:
3505 if parmObj == None:
3213 self.specGraphftpRTIplot.setCheckState(0)
3506 self.specGraphftpRTIplot.setCheckState(0)
3214 else:
3507 else:
3215 self.specGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3508 self.specGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3216 try:
3509 try:
3217 value = opObj.getParameterValue(parameterName='wr_period')
3510 value = opObj.getParameterValue(parameterName='wr_period')
3218 except:
3511 except:
3219 value = " "
3512 value = " "
3220 self.specGgraphftpratio.setText(str(value))
3513 self.specGgraphftpratio.setText(str(value))
3221
3514
3222 opObj = puObj.getOperationObj(name='CoherenceMap')
3515 opObj = puObj.getOperationObj(name='CoherenceMap')
3223 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
3516 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
3224 if opObj == None:
3517 if opObj == None:
3225 self.specGraphCebCoherencmap.setCheckState(0)
3518 self.specGraphCebCoherencmap.setCheckState(0)
3226 self.specGraphSaveCoherencemap.setCheckState(0)
3519 self.specGraphSaveCoherencemap.setCheckState(0)
3227 self.specGraphftpCoherencemap.setCheckState(0)
3520 self.specGraphftpCoherencemap.setCheckState(0)
3228
3521
3229 else:
3522 else:
3230 operationCoherenceMap = "Enable"
3523 operationCoherenceMap = "Enable"
3231 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
3524 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
3232 parmObj = opObj.getParameterObj(parameterName='xmin')
3525 parmObj = opObj.getParameterObj(parameterName='xmin')
3233 if parmObj == None:
3526 if parmObj == None:
3234 self.specGgraphTminTmax.clear()
3527 self.specGgraphTminTmax.clear()
3235 else:
3528 else:
3236 value1 = opObj.getParameterValue(parameterName='xmin')
3529 value1 = opObj.getParameterValue(parameterName='xmin')
3237 value1 = str(value1)
3530 value1 = str(value1)
3238 value2 = opObj.getParameterValue(parameterName='xmax')
3531 value2 = opObj.getParameterValue(parameterName='xmax')
3239 value2 = str(value2)
3532 value2 = str(value2)
3240 value = value1 + "," + value2
3533 value = value1 + "," + value2
3241 self.specGgraphTminTmax.setText(value)
3534 self.specGgraphTminTmax.setText(value)
3242 self.specGgraphTminTmax.setEnabled(True)
3535 self.specGgraphTminTmax.setEnabled(True)
3243
3536
3244 parmObj = opObj.getParameterObj(parameterName='timerange')
3537 parmObj = opObj.getParameterObj(parameterName='timerange')
3245 if parmObj == None:
3538 if parmObj == None:
3246 self.specGgraphTimeRange.clear()
3539 self.specGgraphTimeRange.clear()
3247 else:
3540 else:
3248 value1 = opObj.getParameterValue(parameterName='timerange')
3541 value1 = opObj.getParameterValue(parameterName='timerange')
3249 value1 = str(value1)
3542 value1 = str(value1)
3250 self.specGgraphTimeRange.setText(value1)
3543 self.specGgraphTimeRange.setText(value1)
3251 self.specGgraphTimeRange.setEnabled(True)
3544 self.specGgraphTimeRange.setEnabled(True)
3252
3545
3253 parmObj = opObj.getParameterObj(parameterName='ymin')
3546 parmObj = opObj.getParameterObj(parameterName='ymin')
3254 if parmObj == None:
3547 if parmObj == None:
3255 self.specGgraphHeight.clear()
3548 self.specGgraphHeight.clear()
3256 else:
3549 else:
3257 value1 = opObj.getParameterValue(parameterName='ymin')
3550 value1 = opObj.getParameterValue(parameterName='ymin')
3258 value1 = str(value1)
3551 value1 = str(value1)
3259 value2 = opObj.getParameterValue(parameterName='ymax')
3552 value2 = opObj.getParameterValue(parameterName='ymax')
3260 value2 = str(value2)
3553 value2 = str(value2)
3261 value = value1 + "," + value2
3554 value = value1 + "," + value2
3262 self.specGgraphHeight.setText(value)
3555 self.specGgraphHeight.setText(value)
3263 self.specGgraphHeight.setEnabled(True)
3556 self.specGgraphHeight.setEnabled(True)
3264
3557
3265 parmObj = opObj.getParameterObj(parameterName='zmin')
3558 parmObj = opObj.getParameterObj(parameterName='zmin')
3266 if parmObj == None:
3559 if parmObj == None:
3267 self.specGgraphmagnitud.clear()
3560 self.specGgraphmagnitud.clear()
3268 else:
3561 else:
3269 value1 = opObj.getParameterValue(parameterName='zmin')
3562 value1 = opObj.getParameterValue(parameterName='zmin')
3270 value1 = str(value1)
3563 value1 = str(value1)
3271 value2 = opObj.getParameterValue(parameterName='zmax')
3564 value2 = opObj.getParameterValue(parameterName='zmax')
3272 value2 = str(value2)
3565 value2 = str(value2)
3273 value = value1 + "," + value2
3566 value = value1 + "," + value2
3274 self.specGgraphmagnitud.setText(value)
3567 self.specGgraphmagnitud.setText(value)
3275 self.specGgraphmagnitud.setEnabled(True)
3568 self.specGgraphmagnitud.setEnabled(True)
3276
3569
3277 parmObj = opObj.getParameterObj(parameterName="figpath")
3570 parmObj = opObj.getParameterObj(parameterName="figpath")
3278 if parmObj == None:
3571 if parmObj == None:
3279 self.specGraphSaveCoherencemap.setCheckState(0)
3572 self.specGraphSaveCoherencemap.setCheckState(0)
3280 else:
3573 else:
3281 self.specGraphSaveCoherencemap.setCheckState(QtCore.Qt.Checked)
3574 self.specGraphSaveCoherencemap.setCheckState(QtCore.Qt.Checked)
3282 value = opObj.getParameterValue(parameterName='figpath')
3575 value = opObj.getParameterValue(parameterName='figpath')
3283 self.specGraphPath.setText(value)
3576 self.specGraphPath.setText(value)
3284
3577
3285 parmObj = opObj.getParameterObj(parameterName="ftp")
3578 parmObj = opObj.getParameterObj(parameterName="ftp")
3286 if parmObj == None:
3579 if parmObj == None:
3287 self.specGraphftpCoherencemap.setCheckState(0)
3580 self.specGraphftpCoherencemap.setCheckState(0)
3288 else:
3581 else:
3289 self.specGraphftpCoherencemap.setCheckState(QtCore.Qt.Checked)
3582 self.specGraphftpCoherencemap.setCheckState(QtCore.Qt.Checked)
3290 try:
3583 try:
3291 value = opObj.getParameterValue(parameterName='wr_period')
3584 value = opObj.getParameterValue(parameterName='wr_period')
3292 except:
3585 except:
3293 value = " "
3586 value = " "
3294 self.specGgraphftpratio.setText(str(value))
3587 self.specGgraphftpratio.setText(str(value))
3295
3588
3296 opObj = puObj.getOperationObj(name='PowerProfilePlot')
3589 opObj = puObj.getOperationObj(name='PowerProfilePlot')
3297 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
3590 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
3298 if opObj == None:
3591 if opObj == None:
3299 self.specGraphPowerprofile.setCheckState(0)
3592 self.specGraphPowerprofile.setCheckState(0)
3300 self.specGraphSavePowerprofile.setCheckState(0)
3593 self.specGraphSavePowerprofile.setCheckState(0)
3301 operationPowerProfilePlot = "Disabled"
3594 operationPowerProfilePlot = "Disabled"
3302 channelList = None
3595 channelList = None
3303 freq_vel = None
3596 freq_vel = None
3304 heightsrange = None
3597 heightsrange = None
3305 else:
3598 else:
3306 operationPowerProfilePlot = "Enable"
3599 operationPowerProfilePlot = "Enable"
3307 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
3600 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
3308 parmObj = opObj.getParameterObj(parameterName='xmin')
3601 parmObj = opObj.getParameterObj(parameterName='xmin')
3309 if parmObj == None:
3602 if parmObj == None:
3310 self.specGgraphDbsrange.clear()
3603 self.specGgraphDbsrange.clear()
3311 else:
3604 else:
3312 value1 = opObj.getParameterValue(parameterName='xmin')
3605 value1 = opObj.getParameterValue(parameterName='xmin')
3313 value1 = str(value1)
3606 value1 = str(value1)
3314 value2 = opObj.getParameterValue(parameterName='xmax')
3607 value2 = opObj.getParameterValue(parameterName='xmax')
3315 value2 = str(value2)
3608 value2 = str(value2)
3316 value = value1 + "," + value2
3609 value = value1 + "," + value2
3317 self.specGgraphDbsrange.setText(value)
3610 self.specGgraphDbsrange.setText(value)
3318 self.specGgraphDbsrange.setEnabled(True)
3611 self.specGgraphDbsrange.setEnabled(True)
3319
3612
3320 parmObj = opObj.getParameterObj(parameterName='ymin')
3613 parmObj = opObj.getParameterObj(parameterName='ymin')
3321 if parmObj == None:
3614 if parmObj == None:
3322 self.specGgraphHeight.clear()
3615 self.specGgraphHeight.clear()
3323 else:
3616 else:
3324 value1 = opObj.getParameterValue(parameterName='ymin')
3617 value1 = opObj.getParameterValue(parameterName='ymin')
3325 value1 = str(value1)
3618 value1 = str(value1)
3326 value2 = opObj.getParameterValue(parameterName='ymax')
3619 value2 = opObj.getParameterValue(parameterName='ymax')
3327 value2 = str(value2)
3620 value2 = str(value2)
3328 value = value1 + "," + value2
3621 value = value1 + "," + value2
3329 self.specGgraphHeight.setText(value)
3622 self.specGgraphHeight.setText(value)
3330 self.specGgraphHeight.setEnabled(True)
3623 self.specGgraphHeight.setEnabled(True)
3331
3624
3332 parmObj = opObj.getParameterObj(parameterName="figpath")
3625 parmObj = opObj.getParameterObj(parameterName="figpath")
3333 if parmObj == None:
3626 if parmObj == None:
3334 self.specGraphSavePowerprofile.setCheckState(0)
3627 self.specGraphSavePowerprofile.setCheckState(0)
3335 else:
3628 else:
3336 self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked)
3629 self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked)
3337 value = opObj.getParameterValue(parameterName='figpath')
3630 value = opObj.getParameterValue(parameterName='figpath')
3338 self.specGraphPath.setText(value)
3631 self.specGraphPath.setText(value)
3339
3632
3340 parmObj = opObj.getParameterObj(parameterName="ftp")
3633 parmObj = opObj.getParameterObj(parameterName="ftp")
3341 if parmObj == None:
3634 if parmObj == None:
3342 self.specGraphftpPowerprofile.setCheckState(0)
3635 self.specGraphftpPowerprofile.setCheckState(0)
3343 else:
3636 else:
3344 self.specGraphftpPowerprofile.setCheckState(QtCore.Qt.Checked)
3637 self.specGraphftpPowerprofile.setCheckState(QtCore.Qt.Checked)
3345 try:
3638 try:
3346 value = opObj.getParameterValue(parameterName='wr_period')
3639 value = opObj.getParameterValue(parameterName='wr_period')
3347 except:
3640 except:
3348 value = " "
3641 value = " "
3349 self.specGgraphftpratio.setText(str(value))
3642 self.specGgraphftpratio.setText(str(value))
3350 # -noise
3643 # -noise
3351 opObj = puObj.getOperationObj(name='Noise')
3644 opObj = puObj.getOperationObj(name='Noise')
3352 # opObj = puObj.getOpObjfromParamValue(value="Noise")
3645 # opObj = puObj.getOpObjfromParamValue(value="Noise")
3353 if opObj == None:
3646 if opObj == None:
3354 self.specGraphCebRTInoise.setCheckState(0)
3647 self.specGraphCebRTInoise.setCheckState(0)
3355 self.specGraphSaveRTInoise.setCheckState(0)
3648 self.specGraphSaveRTInoise.setCheckState(0)
3356 self.specGraphftpRTInoise.setCheckState(0)
3649 self.specGraphftpRTInoise.setCheckState(0)
3357 else:
3650 else:
3358 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
3651 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
3359 parmObj = opObj.getParameterObj(parameterName='channelList')
3652 parmObj = opObj.getParameterObj(parameterName='channelList')
3360 if parmObj == None:
3653 if parmObj == None:
3361 self.specGgraphChannelList.clear()
3654 self.specGgraphChannelList.clear()
3362 else:
3655 else:
3363 value = opObj.getParameterValue(parameterName='channelList')
3656 value = opObj.getParameterValue(parameterName='channelList')
3364 channelListRTINoise = str(value)[1:-1]
3657 channelListRTINoise = str(value)[1:-1]
3365 self.specGgraphChannelList.setText(channelListRTINoise)
3658 self.specGgraphChannelList.setText(channelListRTINoise)
3366 self.specGgraphChannelList.setEnabled(True)
3659 self.specGgraphChannelList.setEnabled(True)
3367
3660
3368 parmObj = opObj.getParameterObj(parameterName='xmin')
3661 parmObj = opObj.getParameterObj(parameterName='xmin')
3369 if parmObj == None:
3662 if parmObj == None:
3370 self.specGgraphTminTmax.clear()
3663 self.specGgraphTminTmax.clear()
3371 else:
3664 else:
3372 value1 = opObj.getParameterValue(parameterName='xmin')
3665 value1 = opObj.getParameterValue(parameterName='xmin')
3373 value1 = str(value1)
3666 value1 = str(value1)
3374 value2 = opObj.getParameterValue(parameterName='xmax')
3667 value2 = opObj.getParameterValue(parameterName='xmax')
3375 value2 = str(value2)
3668 value2 = str(value2)
3376 value = value1 + "," + value2
3669 value = value1 + "," + value2
3377 self.specGgraphTminTmax.setText(value)
3670 self.specGgraphTminTmax.setText(value)
3378 self.specGgraphTminTmax.setEnabled(True)
3671 self.specGgraphTminTmax.setEnabled(True)
3379
3672
3380 parmObj = opObj.getParameterObj(parameterName='timerange')
3673 parmObj = opObj.getParameterObj(parameterName='timerange')
3381 if parmObj == None:
3674 if parmObj == None:
3382 self.specGgraphTimeRange.clear()
3675 self.specGgraphTimeRange.clear()
3383 else:
3676 else:
3384 value1 = opObj.getParameterValue(parameterName='timerange')
3677 value1 = opObj.getParameterValue(parameterName='timerange')
3385 value1 = str(value1)
3678 value1 = str(value1)
3386 self.specGgraphTimeRange.setText(value1)
3679 self.specGgraphTimeRange.setText(value1)
3387 self.specGgraphTimeRange.setEnabled(True)
3680 self.specGgraphTimeRange.setEnabled(True)
3388
3681
3389
3682
3390 parmObj = opObj.getParameterObj(parameterName='ymin')
3683 parmObj = opObj.getParameterObj(parameterName='ymin')
3391 if parmObj == None:
3684 if parmObj == None:
3392 self.specGgraphDbsrange.clear()
3685 self.specGgraphDbsrange.clear()
3393 else:
3686 else:
3394 value1 = opObj.getParameterValue(parameterName='ymin')
3687 value1 = opObj.getParameterValue(parameterName='ymin')
3395 value1 = str(value1)
3688 value1 = str(value1)
3396 value2 = opObj.getParameterValue(parameterName='ymax')
3689 value2 = opObj.getParameterValue(parameterName='ymax')
3397 value2 = str(value2)
3690 value2 = str(value2)
3398 value = value1 + "," + value2
3691 value = value1 + "," + value2
3399 self.specGgraphDbsrange.setText(value)
3692 self.specGgraphDbsrange.setText(value)
3400 self.specGgraphDbsrange.setEnabled(True)
3693 self.specGgraphDbsrange.setEnabled(True)
3401
3694
3402 parmObj = opObj.getParameterObj(parameterName="figpath")
3695 parmObj = opObj.getParameterObj(parameterName="figpath")
3403 if parmObj == None:
3696 if parmObj == None:
3404 self.specGraphSaveRTInoise.setCheckState(0)
3697 self.specGraphSaveRTInoise.setCheckState(0)
3405 else:
3698 else:
3406 self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked)
3699 self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked)
3407 value = opObj.getParameterValue(parameterName='figpath')
3700 value = opObj.getParameterValue(parameterName='figpath')
3408 self.specGraphPath.setText(value)
3701 self.specGraphPath.setText(value)
3409 #---------add----#
3702 #---------add----#
3410 parmObj = opObj.getParameterObj(parameterName="ftp")
3703 parmObj = opObj.getParameterObj(parameterName="ftp")
3411 if parmObj == None:
3704 if parmObj == None:
3412 self.specGraphftpRTInoise.setCheckState(0)
3705 self.specGraphftpRTInoise.setCheckState(0)
3413 else:
3706 else:
3414 self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked)
3707 self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked)
3415 try:
3708 try:
3416 value = opObj.getParameterValue(parameterName='wr_period')
3709 value = opObj.getParameterValue(parameterName='wr_period')
3417 except:
3710 except:
3418 value = " "
3711 value = " "
3419 self.specGgraphftpratio.setText(str(value))
3712 self.specGgraphftpratio.setText(str(value))
3420
3713
3421 # outputSpectraWrite
3714 # outputSpectraWrite
3422 opObj = puObj.getOperationObj(name='SpectraWriter')
3715 opObj = puObj.getOperationObj(name='SpectraWriter')
3423 if opObj == None:
3716 if opObj == None:
3424 self.specOutputPath.clear()
3717 self.specOutputPath.clear()
3425 self.specOutputblocksperfile.clear()
3718 self.specOutputblocksperfile.clear()
3426 self.specOutputprofileperblock.clear()
3719 self.specOutputprofileperblock.clear()
3427 else:
3720 else:
3428 value = opObj.getParameterObj(parameterName='path')
3721 value = opObj.getParameterObj(parameterName='path')
3429 if value == None:
3722 if value == None:
3430 self.specOutputPath.clear()
3723 self.specOutputPath.clear()
3431 else:
3724 else:
3432 value = opObj.getParameterValue(parameterName='path')
3725 value = opObj.getParameterValue(parameterName='path')
3433 path = str(value)
3726 path = str(value)
3434 self.specOutputPath.setText(path)
3727 self.specOutputPath.setText(path)
3435 value = opObj.getParameterObj(parameterName='blocksPerFile')
3728 value = opObj.getParameterObj(parameterName='blocksPerFile')
3436 if value == None:
3729 if value == None:
3437 self.specOutputblocksperfile.clear()
3730 self.specOutputblocksperfile.clear()
3438 else:
3731 else:
3439 value = opObj.getParameterValue(parameterName='blocksPerFile')
3732 value = opObj.getParameterValue(parameterName='blocksPerFile')
3440 blocksperfile = str(value)
3733 blocksperfile = str(value)
3441 self.specOutputblocksperfile.setText(blocksperfile)
3734 self.specOutputblocksperfile.setText(blocksperfile)
3442 value = opObj.getParameterObj(parameterName='profilesPerBlock')
3735 value = opObj.getParameterObj(parameterName='profilesPerBlock')
3443 if value == None:
3736 if value == None:
3444 self.specOutputprofileperblock.clear()
3737 self.specOutputprofileperblock.clear()
3445 else:
3738 else:
3446 value = opObj.getParameterValue(parameterName='profilesPerBlock')
3739 value = opObj.getParameterValue(parameterName='profilesPerBlock')
3447 profilesPerBlock = str(value)
3740 profilesPerBlock = str(value)
3448 self.specOutputprofileperblock.setText(profilesPerBlock)
3741 self.specOutputprofileperblock.setText(profilesPerBlock)
3449
3742
3450 if datatype == 'SpectraHeis':
3743 if datatype == 'SpectraHeis':
3451 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
3744 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
3452 if opObj == None:
3745 if opObj == None:
3453 self.specHeisOpIncoherent.clear()
3746 self.specHeisOpIncoherent.clear()
3454 self.specHeisOpCebIncoherent.setCheckState(0)
3747 self.specHeisOpCebIncoherent.setCheckState(0)
3455 else:
3748 else:
3456 for parmObj in opObj.getParameterObjList():
3749 for parmObj in opObj.getParameterObjList():
3457 if parmObj.name == 'timeInterval':
3750 if parmObj.name == 'timeInterval':
3458 value = opObj.getParameterValue(parameterName='timeInterval')
3751 value = opObj.getParameterValue(parameterName='timeInterval')
3459 value = float(value)
3752 value = float(value)
3460 self.specHeisOpIncoherent.setText(str(value))
3753 self.specHeisOpIncoherent.setText(str(value))
3461 self.specHeisOpIncoherent.setEnabled(True)
3754 self.specHeisOpIncoherent.setEnabled(True)
3462 self.specHeisOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3755 self.specHeisOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3463 self.specHeisOpCobIncInt.setCurrentIndex(0)
3756 self.specHeisOpCobIncInt.setCurrentIndex(0)
3464
3757
3465 # SpectraHeis Graph
3758 # SpectraHeis Graph
3466 opObj = puObj.getOperationObj(name='SpectraHeisScope')
3759 opObj = puObj.getOperationObj(name='SpectraHeisScope')
3467 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
3760 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
3468 if opObj == None:
3761 if opObj == None:
3469 self.specHeisGraphCebSpectraplot.setCheckState(0)
3762 self.specHeisGraphCebSpectraplot.setCheckState(0)
3470 self.specHeisGraphSaveSpectra.setCheckState(0)
3763 self.specHeisGraphSaveSpectra.setCheckState(0)
3471 self.specHeisGraphftpSpectra.setCheckState(0)
3764 self.specHeisGraphftpSpectra.setCheckState(0)
3472
3765
3473 else:
3766 else:
3474 operationSpectraHeisScope = "Enable"
3767 operationSpectraHeisScope = "Enable"
3475 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3768 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3476 parmObj = opObj.getParameterObj(parameterName='channelList')
3769 parmObj = opObj.getParameterObj(parameterName='channelList')
3477 if parmObj == None:
3770 if parmObj == None:
3478 self.specHeisGgraphChannelList.clear()
3771 self.specHeisGgraphChannelList.clear()
3479 else:
3772 else:
3480 value = opObj.getParameterValue(parameterName='channelList')
3773 value = opObj.getParameterValue(parameterName='channelList')
3481 channelListSpectraHeisScope = str(value)[1:-1]
3774 channelListSpectraHeisScope = str(value)[1:-1]
3482 self.specHeisGgraphChannelList.setText(channelListSpectraHeisScope)
3775 self.specHeisGgraphChannelList.setText(channelListSpectraHeisScope)
3483 self.specHeisGgraphChannelList.setEnabled(True)
3776 self.specHeisGgraphChannelList.setEnabled(True)
3484
3777
3485 parmObj = opObj.getParameterObj(parameterName='xmin')
3778 parmObj = opObj.getParameterObj(parameterName='xmin')
3486 if parmObj == None:
3779 if parmObj == None:
3487 self.specHeisGgraphXminXmax.clear()
3780 self.specHeisGgraphXminXmax.clear()
3488 else:
3781 else:
3489 value1 = opObj.getParameterValue(parameterName='xmin')
3782 value1 = opObj.getParameterValue(parameterName='xmin')
3490 value1 = str(value1)
3783 value1 = str(value1)
3491 value2 = opObj.getParameterValue(parameterName='xmax')
3784 value2 = opObj.getParameterValue(parameterName='xmax')
3492 value2 = str(value2)
3785 value2 = str(value2)
3493 value = value1 + "," + value2
3786 value = value1 + "," + value2
3494 self.specHeisGgraphXminXmax.setText(value)
3787 self.specHeisGgraphXminXmax.setText(value)
3495 self.specHeisGgraphXminXmax.setEnabled(True)
3788 self.specHeisGgraphXminXmax.setEnabled(True)
3496
3789
3497 parmObj = opObj.getParameterObj(parameterName='ymin')
3790 parmObj = opObj.getParameterObj(parameterName='ymin')
3498 if parmObj == None:
3791 if parmObj == None:
3499 self.specHeisGgraphYminYmax.clear()
3792 self.specHeisGgraphYminYmax.clear()
3500 else:
3793 else:
3501 value1 = opObj.getParameterValue(parameterName='ymin')
3794 value1 = opObj.getParameterValue(parameterName='ymin')
3502 value1 = str(value1)
3795 value1 = str(value1)
3503 value2 = opObj.getParameterValue(parameterName='ymax')
3796 value2 = opObj.getParameterValue(parameterName='ymax')
3504 value2 = str(value2)
3797 value2 = str(value2)
3505 value = value1 + "," + value2
3798 value = value1 + "," + value2
3506 self.specHeisGgraphYminYmax.setText(value)
3799 self.specHeisGgraphYminYmax.setText(value)
3507 self.specHeisGgraphYminYmax.setEnabled(True)
3800 self.specHeisGgraphYminYmax.setEnabled(True)
3508
3801
3509 parmObj = opObj.getParameterObj(parameterName="figpath")
3802 parmObj = opObj.getParameterObj(parameterName="figpath")
3510 if parmObj == None:
3803 if parmObj == None:
3511 self.specHeisGraphSaveSpectra.setCheckState(0)
3804 self.specHeisGraphSaveSpectra.setCheckState(0)
3512 else:
3805 else:
3513 self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3806 self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3514 value = opObj.getParameterValue(parameterName='figpath')
3807 value = opObj.getParameterValue(parameterName='figpath')
3515 self.specHeisGraphPath.setText(value)
3808 self.specHeisGraphPath.setText(value)
3516
3809
3517 parmObj = opObj.getParameterObj(parameterName="ftp")
3810 parmObj = opObj.getParameterObj(parameterName="ftp")
3518 if parmObj == None:
3811 if parmObj == None:
3519 self.specHeisGraphftpSpectra.setCheckState(0)
3812 self.specHeisGraphftpSpectra.setCheckState(0)
3520 else:
3813 else:
3521 self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3814 self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3522 try:
3815 try:
3523 value = opObj.getParameterValue(parameterName='wr_period')
3816 value = opObj.getParameterValue(parameterName='wr_period')
3524 except:
3817 except:
3525 value = " "
3818 value = " "
3526 self.specHeisGgraphftpratio.setText(str(value))
3819 self.specHeisGgraphftpratio.setText(str(value))
3527
3820
3528 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
3821 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
3529 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
3822 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
3530 if opObj == None:
3823 if opObj == None:
3531 self.specHeisGraphCebRTIplot.setCheckState(0)
3824 self.specHeisGraphCebRTIplot.setCheckState(0)
3532 self.specHeisGraphSaveRTIplot.setCheckState(0)
3825 self.specHeisGraphSaveRTIplot.setCheckState(0)
3533 self.specHeisGraphftpRTIplot.setCheckState(0)
3826 self.specHeisGraphftpRTIplot.setCheckState(0)
3534 else:
3827 else:
3535 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3828 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3536 parmObj = opObj.getParameterObj(parameterName='channelList')
3829 parmObj = opObj.getParameterObj(parameterName='channelList')
3537 if parmObj == None:
3830 if parmObj == None:
3538 self.specHeisGgraphChannelList.clear()
3831 self.specHeisGgraphChannelList.clear()
3539 else:
3832 else:
3540 value = opObj.getParameterValue(parameterName='channelList')
3833 value = opObj.getParameterValue(parameterName='channelList')
3541 channelListRTIPlot = str(value)[1:-1]
3834 channelListRTIPlot = str(value)[1:-1]
3542 self.specGgraphChannelList.setText(channelListRTIPlot)
3835 self.specGgraphChannelList.setText(channelListRTIPlot)
3543 self.specGgraphChannelList.setEnabled(True)
3836 self.specGgraphChannelList.setEnabled(True)
3544
3837
3545 parmObj = opObj.getParameterObj(parameterName='xmin')
3838 parmObj = opObj.getParameterObj(parameterName='xmin')
3546 if parmObj == None:
3839 if parmObj == None:
3547 self.specHeisGgraphTminTmax.clear()
3840 self.specHeisGgraphTminTmax.clear()
3548 else:
3841 else:
3549 value1 = opObj.getParameterValue(parameterName='xmin')
3842 value1 = opObj.getParameterValue(parameterName='xmin')
3550 value1 = str(value1)
3843 value1 = str(value1)
3551 value2 = opObj.getParameterValue(parameterName='xmax')
3844 value2 = opObj.getParameterValue(parameterName='xmax')
3552 value2 = str(value2)
3845 value2 = str(value2)
3553 value = value1 + "," + value2
3846 value = value1 + "," + value2
3554 self.specHeisGgraphTminTmax.setText(value)
3847 self.specHeisGgraphTminTmax.setText(value)
3555 self.specHeisGgraphTminTmax.setEnabled(True)
3848 self.specHeisGgraphTminTmax.setEnabled(True)
3556
3849
3557 parmObj = opObj.getParameterObj(parameterName='timerange')
3850 parmObj = opObj.getParameterObj(parameterName='timerange')
3558 if parmObj == None:
3851 if parmObj == None:
3559 self.specGgraphTimeRange.clear()
3852 self.specGgraphTimeRange.clear()
3560 else:
3853 else:
3561 value1 = opObj.getParameterValue(parameterName='timerange')
3854 value1 = opObj.getParameterValue(parameterName='timerange')
3562 value1 = str(value1)
3855 value1 = str(value1)
3563 self.specHeisGgraphTimeRange.setText(value1)
3856 self.specHeisGgraphTimeRange.setText(value1)
3564 self.specHeisGgraphTimeRange.setEnabled(True)
3857 self.specHeisGgraphTimeRange.setEnabled(True)
3565
3858
3566 parmObj = opObj.getParameterObj(parameterName='ymin')
3859 parmObj = opObj.getParameterObj(parameterName='ymin')
3567 if parmObj == None:
3860 if parmObj == None:
3568 self.specHeisGgraphYminYmax.clear()
3861 self.specHeisGgraphYminYmax.clear()
3569 else:
3862 else:
3570 value1 = opObj.getParameterValue(parameterName='ymin')
3863 value1 = opObj.getParameterValue(parameterName='ymin')
3571 value1 = str(value1)
3864 value1 = str(value1)
3572 value2 = opObj.getParameterValue(parameterName='ymax')
3865 value2 = opObj.getParameterValue(parameterName='ymax')
3573 value2 = str(value2)
3866 value2 = str(value2)
3574 value = value1 + "," + value2
3867 value = value1 + "," + value2
3575 self.specHeisGgraphYminYmax.setText(value)
3868 self.specHeisGgraphYminYmax.setText(value)
3576 self.specHeisGgraphYminYmax.setEnabled(True)
3869 self.specHeisGgraphYminYmax.setEnabled(True)
3577
3870
3578 parmObj = opObj.getParameterObj(parameterName="figpath")
3871 parmObj = opObj.getParameterObj(parameterName="figpath")
3579 if parmObj == None:
3872 if parmObj == None:
3580 self.specHeisGraphSaveRTIplot.setCheckState(0)
3873 self.specHeisGraphSaveRTIplot.setCheckState(0)
3581 else:
3874 else:
3582 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3875 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3583 value = opObj.getParameterValue(parameterName='figpath')
3876 value = opObj.getParameterValue(parameterName='figpath')
3584 self.specHeisGraphPath.setText(value)
3877 self.specHeisGraphPath.setText(value)
3585 #---------add----#
3878 #---------add----#
3586 parmObj = opObj.getParameterObj(parameterName="ftp")
3879 parmObj = opObj.getParameterObj(parameterName="ftp")
3587 if parmObj == None:
3880 if parmObj == None:
3588 self.specHeisGraphftpRTIplot.setCheckState(0)
3881 self.specHeisGraphftpRTIplot.setCheckState(0)
3589 else:
3882 else:
3590 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3883 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3591 try:
3884 try:
3592 value = opObj.getParameterValue(parameterName='wr_period')
3885 value = opObj.getParameterValue(parameterName='wr_period')
3593 except:
3886 except:
3594 value = " "
3887 value = " "
3595 self.specHeisGgraphftpratio.setText(str(value))
3888 self.specHeisGgraphftpratio.setText(str(value))
3596
3889
3597
3890
3598
3891
3599 # outputSpectraHeisWrite
3892 # outputSpectraHeisWrite
3600 opObj = puObj.getOperationObj(name='FitsWriter')
3893 opObj = puObj.getOperationObj(name='FitsWriter')
3601 if opObj == None:
3894 if opObj == None:
3602 self.specHeisOutputPath.clear()
3895 self.specHeisOutputPath.clear()
3603 self.specHeisOutputblocksperfile.clear()
3896 self.specHeisOutputblocksperfile.clear()
3604 self.specHeisOutputMetada.clear()
3897 self.specHeisOutputMetada.clear()
3605 else:
3898 else:
3606 value = opObj.getParameterObj(parameterName='path')
3899 value = opObj.getParameterObj(parameterName='path')
3607 if value == None:
3900 if value == None:
3608 self.specHeisOutputPath.clear()
3901 self.specHeisOutputPath.clear()
3609 else:
3902 else:
3610 value = opObj.getParameterValue(parameterName='path')
3903 value = opObj.getParameterValue(parameterName='path')
3611 path = str(value)
3904 path = str(value)
3612 self.specHeisOutputPath.setText(path)
3905 self.specHeisOutputPath.setText(path)
3613 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
3906 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
3614 if value == None:
3907 if value == None:
3615 self.specHeisOutputblocksperfile.clear()
3908 self.specHeisOutputblocksperfile.clear()
3616 else:
3909 else:
3617 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
3910 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
3618 blocksperfile = str(value)
3911 blocksperfile = str(value)
3619 self.specHeisOutputblocksperfile.setText(blocksperfile)
3912 self.specHeisOutputblocksperfile.setText(blocksperfile)
3620 value = opObj.getParameterObj(parameterName='metadatafile')
3913 value = opObj.getParameterObj(parameterName='metadatafile')
3621 if value == None:
3914 if value == None:
3622 self.specHeisOutputMetada.clear()
3915 self.specHeisOutputMetada.clear()
3623 else:
3916 else:
3624 value = opObj.getParameterValue(parameterName='metadatafile')
3917 value = opObj.getParameterValue(parameterName='metadatafile')
3625 metada = str(value)
3918 metada = str(value)
3626 self.specHeisOutputMetada.setText(metada)
3919 self.specHeisOutputMetada.setText(metada)
3627
3920
3628
3921
3629
3922
3630 def setspecGraph(self):
3923 def setspecGraph(self):
3631
3924
3632 self.specGgraphChannelList.setEnabled(True)
3925 self.specGgraphChannelList.setEnabled(True)
3633
3926
3634 def clearspecGraph(self):
3927 def clearspecGraph(self):
3635
3928
3636 self.specGgraphChannelList.clear()
3929 self.specGgraphChannelList.clear()
3637
3930
3638 def create_comm(self):
3931 def create_comm(self):
3639
3932
3640 self.commCtrlPThread = CommCtrlProcessThread()
3933 self.commCtrlPThread = CommCtrlProcessThread()
3641 self.commCtrlPThread.start()
3934 self.commCtrlPThread.start()
3642
3935
3643 def create_updating_timer(self):
3936 def create_updating_timer(self):
3644 self.comm_data_timer = QtCore.QTimer(self)
3937 self.comm_data_timer = QtCore.QTimer(self)
3645 self.comm_data_timer.timeout.connect(self.on_comm_updating_timer)
3938 self.comm_data_timer.timeout.connect(self.on_comm_updating_timer)
3646 self.comm_data_timer.start(1000)
3939 self.comm_data_timer.start(1000)
3647
3940
3648 def create_figure(self):
3941 def create_figure(self):
3649 self.queue_plot = Queue.Queue()
3942 self.queue_plot = Queue.Queue()
3650 self.plotmanager = PlotManager(self.queue_plot)
3943 self.plotmanager = PlotManager(self.queue_plot)
3651 self.plot_timer = QtCore.QTimer()
3944 self.plot_timer = QtCore.QTimer()
3652 QtCore.QObject.connect(self.plot_timer, QtCore.SIGNAL("timeout()"), self.periodicCall)
3945 QtCore.QObject.connect(self.plot_timer, QtCore.SIGNAL("timeout()"), self.periodicCall)
3653 self.plot_timer.start(100)
3946 self.plot_timer.start(100)
3654 self.running = 1
3947 self.running = 1
3655
3948
3656 def periodicCall(self):
3949 def periodicCall(self):
3657 """
3950 """
3658 Check every 100 ms if there is something new in the queue.
3951 Check every 100 ms if there is something new in the queue.
3659 """
3952 """
3660 self.plotmanager.processIncoming()
3953 self.plotmanager.processIncoming()
3661 if not self.running:
3954 if not self.running:
3662 app.quit()
3955 app.quit()
3663
3956
3664 # def on_comm_data_timer(self):
3957 # def on_comm_data_timer(self):
3665 # # lee el data_queue y la coloca en el queue de ploteo
3958 # # lee el data_queue y la coloca en el queue de ploteo
3666 # try:
3959 # try:
3667 # reply = self.commCtrlPThread.data_q.get(block=False)
3960 # reply = self.commCtrlPThread.data_q.get(block=False)
3668 # self.queue_plot.put(reply.data)
3961 # self.queue_plot.put(reply.data)
3669 #
3962 #
3670 # except Queue.Empty:
3963 # except Queue.Empty:
3671 # pass
3964 # pass
3672
3965
3673 def createProjectView(self, id):
3966 def createProjectView(self, id):
3674
3967
3675 self.create = False
3968 self.create = False
3676 project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3969 project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3677
3970
3678 projectObjView = Project()
3971 projectObjView = Project()
3679 projectObjView.setup(id=id, name=project_name, description=description)
3972 projectObjView.setup(id=id, name=project_name, description=description)
3680
3973
3681 self.__projectObjDict[id] = projectObjView
3974 self.__projectObjDict[id] = projectObjView
3682
3975
3683 return projectObjView
3976 return projectObjView
3684
3977
3685 def updateProjectView(self):
3978 def updateProjectView(self):
3686
3979
3687 project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3980 project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3688
3981
3689 projectObjView = self.getSelectedProjectObj()
3982 projectObjView = self.getSelectedProjectObj()
3690 projectObjView.update(name=project_name, description=description)
3983 projectObjView.update(name=project_name, description=description)
3691
3984
3692 return projectObjView
3985 return projectObjView
3693
3986
3694 def createReadUnitView(self, projectObjView):
3987 def createReadUnitView(self, projectObjView):
3695
3988
3696 project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
3989 project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3697 if set == None:
3990
3698 readUnitConfObj = projectObjView.addReadUnit(datatype=datatype,
3991 if datatype == "Voltage" or datatype == "Spectra" or datatype == "Fits":
3699 path=data_path,
3700 startDate=startDate,
3701 endDate=endDate,
3702 startTime=startTime,
3703 endTime=endTime,
3704 online=online,
3705 delay=delay,
3706 walk=walk)
3707 else:
3708 readUnitConfObj = projectObjView.addReadUnit(datatype=datatype,
3992 readUnitConfObj = projectObjView.addReadUnit(datatype=datatype,
3709 path=data_path,
3993 path=data_path,
3710 startDate=startDate,
3994 startDate=startDate,
3711 endDate=endDate,
3995 endDate=endDate,
3712 startTime=startTime,
3996 startTime=startTime,
3713 endTime=endTime,
3997 endTime=endTime,
3714 online=online,
3998 online=online,
3715 delay=delay,
3999 delay=delay,
3716 walk=walk,
4000 walk=walk,
3717 set=set)
4001 set=set
3718
4002 )
4003
4004 if datatype == "USRP":
4005 readUnitConfObj = projectObjView.addReadUnit(datatype=datatype,
4006 path=data_path,
4007 startDate=startDate,
4008 endDate=endDate,
4009 startTime=startTime,
4010 endTime=endTime,
4011 online=online,
4012 delay=delay,
4013 ippKm=set
4014 )
3719 return readUnitConfObj
4015 return readUnitConfObj
3720
4016
3721 def updateReadUnitView(self, projectObjView, idReadUnit):
4017 def updateReadUnitView(self, projectObjView, idReadUnit):
3722
4018
3723 project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
4019 project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
3724
4020
3725 readUnitConfObj = projectObjView.getProcUnitObj(idReadUnit)
4021 readUnitConfObj = projectObjView.getProcUnitObj(idReadUnit)
3726
4022
3727 if set == None:
4023 if datatype == "Voltage" or datatype == "Spectra" or datatype == "Fits":
3728
3729 readUnitConfObj.update(datatype=datatype,
4024 readUnitConfObj.update(datatype=datatype,
3730 path=data_path,
4025 path=data_path,
3731 startDate=startDate,
4026 startDate=startDate,
3732 endDate=endDate,
4027 endDate=endDate,
3733 startTime=startTime,
4028 startTime=startTime,
3734 endTime=endTime,
4029 endTime=endTime,
3735 online=online,
4030 online=online,
3736 delay=delay,
4031 delay=delay,
3737 walk=walk)
4032 walk=walk,
3738
4033 set=set
3739 else:
4034 )
4035
4036 if datatype == "USRP":
3740 readUnitConfObj.update(datatype=datatype,
4037 readUnitConfObj.update(datatype=datatype,
3741 path=data_path,
4038 path=data_path,
3742 startDate=startDate,
4039 startDate=startDate,
3743 endDate=endDate,
4040 endDate=endDate,
3744 startTime=startTime,
4041 startTime=startTime,
3745 endTime=endTime,
4042 endTime=endTime,
3746 online=online,
4043 online=online,
3747 delay=delay,
4044 delay=delay,
3748 walk=walk,
4045 ippKm=set
3749 set=set)
4046 )
3750
3751
3752
4047
3753 return readUnitConfObj
4048 return readUnitConfObj
3754
4049
3755 def createProcUnitView(self, projectObjView, datatype, inputId):
4050 def createProcUnitView(self, projectObjView, datatype, inputId):
3756
4051
3757 procUnitConfObj = projectObjView.addProcUnit(datatype=datatype, inputId=inputId)
4052 procUnitConfObj = projectObjView.addProcUnit(datatype=datatype, inputId=inputId)
3758
4053
3759 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4054 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
3760
4055
3761 return procUnitConfObj
4056 return procUnitConfObj
3762
4057
3763 def updateProcUnitView(self, id):
4058 def updateProcUnitView(self, id):
3764
4059
3765 procUnitConfObj = projectObjView.getProcUnitObj(id)
4060 procUnitConfObj = projectObjView.getProcUnitObj(id)
3766 procUnitConfObj.removeOperations()
4061 procUnitConfObj.removeOperations()
3767
4062
3768 return procUnitConfObj
4063 return procUnitConfObj
3769
4064
3770 def addPUWindow(self):
4065 def addPUWindow(self):
3771
4066
3772 self.configUPWindowObj = UnitProcessWindow(self)
4067 self.configUPWindowObj = UnitProcessWindow(self)
3773 fatherObj = self.getSelectedPUObj()
4068 fatherObj = self.getSelectedItemObj()
3774 try:
4069 try:
3775 fatherObj.getElementName()
4070 fatherObj.getElementName()
3776 except:
4071 except:
3777 self.console.append("First left click on Project or Processing Unit")
4072 self.console.append("First left click on Project or Processing Unit")
3778 return 0
4073 return 0
3779
4074
3780 if fatherObj.getElementName() == 'Project':
4075 if fatherObj.getElementName() == 'Project':
3781 readUnitConfObj = fatherObj.getReadUnitObj()
4076 readUnitConfObj = fatherObj.getReadUnitObj()
3782 self.configUPWindowObj.dataTypeProject = str(readUnitConfObj.datatype)
4077 self.configUPWindowObj.dataTypeProject = str(readUnitConfObj.datatype)
3783
4078
3784 self.configUPWindowObj.getfromWindowList.append(fatherObj)
4079 self.configUPWindowObj.getfromWindowList.append(fatherObj)
3785 self.configUPWindowObj.loadTotalList()
4080 self.configUPWindowObj.loadTotalList()
3786 self.configUPWindowObj.show()
4081 self.configUPWindowObj.show()
3787 self.configUPWindowObj.closed.connect(self.createPUWindow)
4082 self.configUPWindowObj.closed.connect(self.createPUWindow)
3788
4083
3789 def createPUWindow(self):
4084 def createPUWindow(self):
3790
4085
3791 self.console.clear()
4086 self.console.clear()
3792
4087
3793 if not self.configUPWindowObj.create:
4088 if not self.configUPWindowObj.create:
3794 return
4089 return
3795
4090
3796 fatherObj = self.configUPWindowObj.getFromWindow
4091 fatherObj = self.configUPWindowObj.getFromWindow
3797 datatype = self.configUPWindowObj.typeofUP
4092 datatype = self.configUPWindowObj.typeofUP
3798
4093
3799 if fatherObj.getElementName() == 'Project':
4094 if fatherObj.getElementName() == 'Project':
3800 inputId = fatherObj.getReadUnitId()
4095 inputId = fatherObj.getReadUnitId()
3801 projectObjView = fatherObj
4096 projectObjView = fatherObj
3802 else:
4097 else:
3803 inputId = fatherObj.getId()
4098 inputId = fatherObj.getId()
3804 projectObjView = self.getSelectedProjectObj()
4099 projectObjView = self.getSelectedProjectObj()
3805
4100
3806 #----------------------------
4101 #----------------------------
3807 puObj = self.createProcUnitView(projectObjView, datatype, inputId)
4102 puObj = self.createProcUnitView(projectObjView, datatype, inputId)
3808 #----------------------------
4103 #----------------------------
3809 self.addPU2ProjectExplorer(id=puObj.getId(), name=datatype)
4104 self.addPU2ProjectExplorer(id=puObj.getId(), name=datatype)
3810
4105
3811 self.showtabPUCreated(datatype)
4106 self.showtabPUCreated(datatype)
3812
4107
3813 self.setInputsPU_View(datatype)
4108 self.clearPUWindow(datatype)
3814
4109
3815 self.showPUinitView()
4110 self.showPUinitView()
3816
4111
3817 def addFTPConf2Operation(self, puObj, opObj):
4112 def addFTPConf2Operation(self, puObj, opObj):
3818
4113
3819 if self.temporalFTP.create:
4114 if self.temporalFTP.create:
3820 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
4115 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
3821 else:
4116 else:
3822 self.temporalFTP.setwithoutconfiguration()
4117 self.temporalFTP.setwithoutconfiguration()
3823 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
4118 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
3824
4119
3825 # opObj.addParameter(name='server', value=server, format='str')
4120 # opObj.addParameter(name='server', value=server, format='str')
3826 # opObj.addParameter(name='folder', value=remotefolder, format='str')
4121 # opObj.addParameter(name='folder', value=remotefolder, format='str')
3827 # opObj.addParameter(name='username', value=username, format='str')
4122 # opObj.addParameter(name='username', value=username, format='str')
3828 # opObj.addParameter(name='password', value=password, format='str')
4123 # opObj.addParameter(name='password', value=password, format='str')
3829
4124
3830 if ftp_wei:
4125 if ftp_wei:
3831 opObj.addParameter(name='ftp_wei', value=int(ftp_wei), format='int')
4126 opObj.addParameter(name='ftp_wei', value=int(ftp_wei), format='int')
3832 if exp_code:
4127 if exp_code:
3833 opObj.addParameter(name='exp_code', value=int(exp_code), format='int')
4128 opObj.addParameter(name='exp_code', value=int(exp_code), format='int')
3834 if sub_exp_code:
4129 if sub_exp_code:
3835 opObj.addParameter(name='sub_exp_code', value=int(sub_exp_code), format='int')
4130 opObj.addParameter(name='sub_exp_code', value=int(sub_exp_code), format='int')
3836 if plot_pos:
4131 if plot_pos:
3837 opObj.addParameter(name='plot_pos', value=int(plot_pos), format='int')
4132 opObj.addParameter(name='plot_pos', value=int(plot_pos), format='int')
3838
4133
3839 if puObj.datatype == "Spectra":
4134 if puObj.datatype == "Spectra":
3840 value = self.specGgraphftpratio.text()
4135 value = self.specGgraphftpratio.text()
3841 if puObj.datatype == "SpectraHeis":
4136 if puObj.datatype == "SpectraHeis":
3842 value = self.specHeisGgraphftpratio.text()
4137 value = self.specHeisGgraphftpratio.text()
3843
4138
3844 if not value == "":
4139 if not value == "":
3845 try:
4140 try:
3846 value = int(value)
4141 value = int(value)
3847 except:
4142 except:
3848 self.console.clear()
4143 self.console.clear()
3849 self.console.append("Please fill Ratio on the textbox")
4144 self.console.append("Please fill Ratio on the textbox")
3850 return 0
4145 return 0
3851
4146
3852 opObj.addParameter(name='wr_period', value=value, format='int')
4147 opObj.addParameter(name='wr_period', value=value, format='int')
3853
4148
3854 def createFTPProcUnitView(self, server, username, password, remotefolder,
4149 def createFTPProcUnitView(self, server, username, password, remotefolder,
3855 ftp_wei, exp_code, sub_exp_code, plot_pos,
4150 ftp_wei, exp_code, sub_exp_code, plot_pos,
3856 localfolder='./', extension='.png', period='60', protocol='ftp'):
4151 localfolder='./', extension='.png', period='60', protocol='ftp'):
3857
4152
3858 projectObj = self.getSelectedProjectObj()
4153 projectObj = self.getSelectedProjectObj()
3859 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
4154 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
3860
4155
3861 if not procUnitConfObj:
4156 if not procUnitConfObj:
3862 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
4157 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
3863 else:
4158 else:
3864 procUnitConfObj.removeOperations()
4159 procUnitConfObj.removeOperations()
3865
4160
3866 procUnitConfObj.addParameter(name='server', value=server, format='str')
4161 procUnitConfObj.addParameter(name='server', value=server, format='str')
3867 procUnitConfObj.addParameter(name='username', value=username, format='str')
4162 procUnitConfObj.addParameter(name='username', value=username, format='str')
3868 procUnitConfObj.addParameter(name='password', value=password, format='str')
4163 procUnitConfObj.addParameter(name='password', value=password, format='str')
3869 procUnitConfObj.addParameter(name='localfolder', value=localfolder, format='str')
4164 procUnitConfObj.addParameter(name='localfolder', value=localfolder, format='str')
3870 procUnitConfObj.addParameter(name='remotefolder', value=remotefolder, format='str')
4165 procUnitConfObj.addParameter(name='remotefolder', value=remotefolder, format='str')
3871 procUnitConfObj.addParameter(name='ext', value=extension, format='str')
4166 procUnitConfObj.addParameter(name='ext', value=extension, format='str')
3872 procUnitConfObj.addParameter(name='period', value=period, format='int')
4167 procUnitConfObj.addParameter(name='period', value=period, format='int')
3873 procUnitConfObj.addParameter(name='protocol', value=protocol, format='str')
4168 procUnitConfObj.addParameter(name='protocol', value=protocol, format='str')
3874
4169
3875 procUnitConfObj.addParameter(name='ftp_wei', value=ftp_wei, format='str')
4170 procUnitConfObj.addParameter(name='ftp_wei', value=ftp_wei, format='str')
3876 procUnitConfObj.addParameter(name='exp_code', value=exp_code, format='str')
4171 procUnitConfObj.addParameter(name='exp_code', value=exp_code, format='str')
3877 procUnitConfObj.addParameter(name='sub_exp_code', value=sub_exp_code, format='str')
4172 procUnitConfObj.addParameter(name='sub_exp_code', value=sub_exp_code, format='str')
3878 procUnitConfObj.addParameter(name='plot_pos', value=plot_pos, format='str')
4173 procUnitConfObj.addParameter(name='plot_pos', value=plot_pos, format='str')
3879
4174
3880 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4175 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
3881
4176
3882 self.__ftpProcUnitAdded = True
4177 self.__ftpProcUnitAdded = True
3883 self.__ftpProcUnitId = procUnitConfObj.getId()
4178 self.__ftpProcUnitId = procUnitConfObj.getId()
3884
4179
3885 def removeFTPProcUnitView(self):
4180 def removeFTPProcUnitView(self):
3886
4181
3887 projectObj = self.getSelectedProjectObj()
4182 projectObj = self.getSelectedProjectObj()
3888 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
4183 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
3889
4184
3890 self.__ftpProcUnitAdded = False
4185 self.__ftpProcUnitAdded = False
3891 self.__ftpProcUnitId = None
4186 self.__ftpProcUnitId = None
3892
4187
3893 if not procUnitConfObj:
4188 if not procUnitConfObj:
3894 return
4189 return
3895
4190
3896 projectObj.removeProcUnit(procUnitConfObj.getId())
4191 projectObj.removeProcUnit(procUnitConfObj.getId())
3897
4192
3898 if procUnitConfObj.getId() not in self.__puObjDict.keys():
4193 if procUnitConfObj.getId() not in self.__puObjDict.keys():
3899 return
4194 return
3900
4195
3901 self.__puObjDict.pop(procUnitConfObj.getId())
4196 self.__puObjDict.pop(procUnitConfObj.getId())
3902
4197
3903 def bufferProject(self, caracteristica, principal, description):
4198 def bufferProject(self, caracteristica, principal, description):
3904
4199
3905 self.projectProperCaracteristica.append(caracteristica)
4200 self.projectProperCaracteristica.append(caracteristica)
3906 self.projectProperPrincipal.append(principal)
4201 self.projectProperPrincipal.append(principal)
3907 self.projectProperDescripcion.append(description)
4202 self.projectProperDescripcion.append(description)
3908 return self.projectProperCaracteristica, self.projectProperPrincipal, self.projectProperDescripcion
4203 return self.projectProperCaracteristica, self.projectProperPrincipal, self.projectProperDescripcion
3909
4204
3910
4205
3911 def showProjectProperties(self, projectObjView):
4206 def showProjectProperties(self, projectObjView):
3912
4207
3913 project_name, description = projectObjView.name, projectObjView.description
4208 project_name, description = projectObjView.name, projectObjView.description
3914
4209
3915 id = projectObjView.id
4210 id = projectObjView.id
3916 readUnitId = projectObjView.getReadUnitId()
4211 readUnitId = projectObjView.getReadUnitId()
3917 readUnitObj = projectObjView.getProcUnitObj(readUnitId)
4212 readUnitObj = projectObjView.getProcUnitObj(readUnitId)
3918 operationObj = readUnitObj.getOperationObj(name='run')
4213 operationObj = readUnitObj.getOperationObj(name='run')
3919
4214
3920
4215
3921 datatype = operationObj.getParameterValue(parameterName='datatype')
4216 datatype = operationObj.getParameterValue(parameterName='datatype')
3922 dpath = operationObj.getParameterValue(parameterName='path')
4217 dpath = operationObj.getParameterValue(parameterName='path')
3923 startDate = operationObj.getParameterValue(parameterName='startDate')
4218 startDate = operationObj.getParameterValue(parameterName='startDate')
3924 endDate = operationObj.getParameterValue(parameterName='endDate')
4219 endDate = operationObj.getParameterValue(parameterName='endDate')
3925 startDate = str(startDate)
4220 startDate = str(startDate)
3926 endDate = str(endDate)
4221 endDate = str(endDate)
3927 startDateList = startDate.split('-')
4222 startDateList = startDate.split('-')
3928 endDateList = endDate.split('-')
4223 endDateList = endDate.split('-')
3929 startDate = startDateList[0] + "/" + startDateList[1] + "/" + startDateList[2]
4224 startDate = startDateList[0] + "/" + startDateList[1] + "/" + startDateList[2]
3930 endDate = endDateList[0] + "/" + endDateList[1] + "/" + endDateList[2]
4225 endDate = endDateList[0] + "/" + endDateList[1] + "/" + endDateList[2]
3931
4226
3932 startTime = operationObj.getParameterValue(parameterName='startTime')
4227 startTime = operationObj.getParameterValue(parameterName='startTime')
3933 endTime = operationObj.getParameterValue(parameterName='endTime')
4228 endTime = operationObj.getParameterValue(parameterName='endTime')
3934 online = operationObj.getParameterValue(parameterName='online')
4229 online = operationObj.getParameterValue(parameterName='online')
3935 walk = operationObj.getParameterValue(parameterName='walk')
4230 walk = operationObj.getParameterValue(parameterName='walk')
3936 delay = operationObj.getParameterValue(parameterName='delay')
4231 delay = operationObj.getParameterValue(parameterName='delay')
3937 try:
4232 try:
3938 set = operationObj.getParameterValue(parameterName='set')
4233 set = operationObj.getParameterValue(parameterName='set')
3939 except:
4234 except:
3940 set = " "
4235 set = " "
3941
4236
3942 if online == 0:
4237 if online == 0:
3943 remode = "offline"
4238 remode = "offline"
3944 else:
4239 else:
3945 remode = "online"
4240 remode = "online"
3946
4241
3947 if walk == 0:
4242 if walk == 0:
3948 walk_str = 'On Files'
4243 walk_str = 'On Files'
3949 else:
4244 else:
3950 walk_str = 'On Folder'
4245 walk_str = 'On Folder'
3951
4246
3952 self.bufferProject("Properties", "Name", project_name),
4247 self.bufferProject("Properties", "Name", project_name),
3953 self.bufferProject("Properties", "Data Path", dpath)
4248 self.bufferProject("Properties", "Data Path", dpath)
3954 self.bufferProject("Properties", "Workspace", self.pathWorkSpace)
4249 self.bufferProject("Properties", "Workspace", self.pathWorkSpace)
3955 self.bufferProject("Parameters", "Read Mode ", remode)
4250 self.bufferProject("Parameters", "Read Mode ", remode)
3956 self.bufferProject("Parameters", "DataType ", datatype)
4251 self.bufferProject("Parameters", "DataType ", datatype)
3957 self.bufferProject("Parameters", "Start Date", str(startDate))
4252 self.bufferProject("Parameters", "Start Date", str(startDate))
3958 self.bufferProject("Parameters", "End Date ", str(endDate))
4253 self.bufferProject("Parameters", "End Date ", str(endDate))
3959 self.bufferProject("Parameters", "Start Time", str(startTime))
4254 self.bufferProject("Parameters", "Start Time", str(startTime))
3960 self.bufferProject("Parameters", "End Time ", str(endTime))
4255 self.bufferProject("Parameters", "End Time ", str(endTime))
3961 self.bufferProject("Parameters", "Delay ", str(delay))
4256 self.bufferProject("Parameters", "Delay ", str(delay))
3962 try:
4257 try:
3963 set = operationObj.getParameterValue(parameterName='set')
4258 set = operationObj.getParameterValue(parameterName='set')
3964 self.bufferProject("Parameters", "Set ", set)
4259 self.bufferProject("Parameters", "Set ", set)
3965 except:
4260 except:
3966 set = " "
4261 set = " "
3967 self.bufferProject("Parameters", "Walk ", str(walk_str))
4262 self.bufferProject("Parameters", "Walk ", str(walk_str))
3968 self.bufferProject("Parameters", "Time zone", "Local")
4263 self.bufferProject("Parameters", "Time zone", "Local")
3969 self.bufferProject("Description", "Summary ", description)
4264 self.bufferProject("Description", "Summary ", description)
3970
4265
3971 self.propertiesModel = treeModel()
4266 self.propertiesModel = TreeModel()
3972 self.propertiesModel.showProjectParms(self.projectProperCaracteristica, self.projectProperPrincipal, self.projectProperDescripcion)
4267 self.propertiesModel.showProperties(self.projectProperCaracteristica, self.projectProperPrincipal, self.projectProperDescripcion)
3973 self.treeProjectProperties.setModel(self.propertiesModel)
4268 self.treeProjectProperties.setModel(self.propertiesModel)
3974 self.treeProjectProperties.expandAll()
4269 self.treeProjectProperties.expandAll()
3975 self.treeProjectProperties.resizeColumnToContents(0)
4270 self.treeProjectProperties.resizeColumnToContents(0)
3976 self.treeProjectProperties.resizeColumnToContents(1)
4271 self.treeProjectProperties.resizeColumnToContents(1)
3977
4272
3978 self.projectProperCaracteristica = []
4273 self.projectProperCaracteristica = []
3979 self.projectProperPrincipal = []
4274 self.projectProperPrincipal = []
3980 self.projectProperDescripcion = []
4275 self.projectProperDescripcion = []
3981
4276
3982 return datatype , dpath , startDate , endDate, startTime, endTime, online, delay, walk, set
4277 return datatype , dpath , startDate , endDate, startTime, endTime, online, delay, walk, set
3983
4278
3984 def showPUinitView(self):
4279 def showPUinitView(self):
3985 self.propertiesModel = treeModel()
4280 self.propertiesModel = TreeModel()
3986 self.propertiesModel.initPUVoltageView()
4281 self.propertiesModel.initPUVoltageView()
3987 self.treeProjectProperties.setModel(self.propertiesModel)
4282 self.treeProjectProperties.setModel(self.propertiesModel)
3988 self.treeProjectProperties.expandAll()
4283 self.treeProjectProperties.expandAll()
3989 self.treeProjectProperties.allColumnsShowFocus()
4284 self.treeProjectProperties.allColumnsShowFocus()
3990 self.treeProjectProperties.resizeColumnToContents(1)
4285 self.treeProjectProperties.resizeColumnToContents(1)
3991
4286
3992 def bufferVoltage(self, caracteristica, principal, description):
4287 def bufferVoltage(self, caracteristica, principal, description):
3993 self.volProperCaracteristica.append(caracteristica)
4288 self.volProperCaracteristica.append(caracteristica)
3994 self.volProperPrincipal.append(principal)
4289 self.volProperPrincipal.append(principal)
3995 self.volProperDescripcion.append(description)
4290 self.volProperDescripcion.append(description)
3996 return self.volProperCaracteristica, self.volProperPrincipal, self.volProperDescripcion
4291 return self.volProperCaracteristica, self.volProperPrincipal, self.volProperDescripcion
3997
4292
3998 def showPUVoltageProperties(self, puObj):
4293 def showPUVoltageProperties(self, puObj):
3999
4294
4000
4295
4001 type = puObj.name
4296 type = puObj.name
4002 self.bufferVoltage("Processing Unit", "Type", type)
4297 self.bufferVoltage("Processing Unit", "Type", type)
4003
4298
4004 opObj = puObj.getOperationObj(name="setRadarFrequency")
4299 opObj = puObj.getOperationObj(name="setRadarFrequency")
4005 if opObj == None:
4300 if opObj == None:
4006 radarfrequency = None
4301 radarfrequency = None
4007 else:
4302 else:
4008 value = opObj.getParameterValue(parameterName='frequency')
4303 value = opObj.getParameterValue(parameterName='frequency')
4009 value = str(value)
4304 value = str(value)
4010 radarfrequency = value
4305 radarfrequency = value
4011 self.bufferVoltage("Processing Unit", "Radar Frequency", radarfrequency)
4306 self.bufferVoltage("Processing Unit", "Radar Frequency", radarfrequency)
4012
4307
4013 opObj = puObj.getOperationObj(name="selectChannels")
4308 opObj = puObj.getOperationObj(name="selectChannels")
4014 if opObj == None:
4309 if opObj == None:
4015 channel = None
4310 channel = None
4016 else:
4311 else:
4017 value = opObj.getParameterValue(parameterName='channelList')
4312 value = opObj.getParameterValue(parameterName='channelList')
4018 value = str(value)#[1:-1]
4313 value = str(value)#[1:-1]
4019 channel = value
4314 channel = value
4020 self.bufferVoltage("Processing Unit", "Select Channel", channel)
4315 self.bufferVoltage("Processing Unit", "Select Channel", channel)
4021
4316
4022 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
4317 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
4023 if opObj == None:
4318 if opObj == None:
4024 channel = None
4319 channel = None
4025 else:
4320 else:
4026 value = opObj.getParameterValue(parameterName='channelIndexList')
4321 value = opObj.getParameterValue(parameterName='channelIndexList')
4027 value = str(value)#[1:-1]
4322 value = str(value)#[1:-1]
4028 channel = value
4323 channel = value
4029 self.bufferVoltage("Processing Unit", "Select Channel by Index", channel)
4324 self.bufferVoltage("Processing Unit", "Select Channel by Index", channel)
4030
4325
4031 opObj = puObj.getOperationObj(name="selectHeights")
4326 opObj = puObj.getOperationObj(name="selectHeights")
4032 if opObj == None:
4327 if opObj == None:
4033 heights = None
4328 heights = None
4034 else:
4329 else:
4035 value1 = int(opObj.getParameterValue(parameterName='minHei'))
4330 value1 = int(opObj.getParameterValue(parameterName='minHei'))
4036 value1 = str(value1)
4331 value1 = str(value1)
4037 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
4332 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
4038 value2 = str(value2)
4333 value2 = str(value2)
4039 value = value1 + "," + value2
4334 value = value1 + "," + value2
4040 heights = value
4335 heights = value
4041 self.bufferVoltage("Processing Unit", "Select Heights", heights)
4336 self.bufferVoltage("Processing Unit", "Select Heights", heights)
4042
4337
4043
4338
4044 opObj = puObj.getOperationObj(name="filterByHeights")
4339 opObj = puObj.getOperationObj(name="filterByHeights")
4045 if opObj == None:
4340 if opObj == None:
4046 filter = None
4341 filter = None
4047 else:
4342 else:
4048 value = opObj.getParameterValue(parameterName='window')
4343 value = opObj.getParameterValue(parameterName='window')
4049 value = str(value)
4344 value = str(value)
4050 filter = value
4345 filter = value
4051 self.bufferVoltage("Processing Unit", "Filter", filter)
4346 self.bufferVoltage("Processing Unit", "Filter", filter)
4052
4347
4053
4348
4054 opObj = puObj.getOperationObj(name="ProfileSelector")
4349 opObj = puObj.getOperationObj(name="ProfileSelector")
4055 if opObj == None:
4350 if opObj == None:
4056 profile = None
4351 profile = None
4057 else:
4352 else:
4058 for parmObj in opObj.getParameterObjList():
4353 for parmObj in opObj.getParameterObjList():
4059 if parmObj.name == "profileRangeList":
4354 if parmObj.name == "profileRangeList":
4060 value = opObj.getParameterValue(parameterName='profileRangeList')
4355 value = opObj.getParameterValue(parameterName='profileRangeList')
4061 value = str(value)#[1:-1]
4356 value = str(value)#[1:-1]
4062 profile = value
4357 profile = value
4063 self.bufferVoltage("Processing Unit", "Select Profile", profile)
4358 self.bufferVoltage("Processing Unit", "Select Profile", profile)
4064
4359
4065 if parmObj.name == "profileList":
4360 if parmObj.name == "profileList":
4066 value = opObj.getParameterValue(parameterName='profileList')
4361 value = opObj.getParameterValue(parameterName='profileList')
4067 value = str(value)#[1:-1]
4362 value = str(value)#[1:-1]
4068 profile = value
4363 profile = value
4069 self.bufferVoltage("Processing Unit", "Select Profile", profile)
4364 self.bufferVoltage("Processing Unit", "Select Profile", profile)
4070
4365
4071
4366
4072 opObj = puObj.getOperationObj(name="Decoder")
4367 opObj = puObj.getOperationObj(name="Decoder")
4073 if opObj == None:
4368 if opObj == None:
4074 self.volOpCebDecodification.setCheckState(0)
4369 self.volOpCebDecodification.setCheckState(0)
4075 code = None
4370 code = None
4076 mode = None
4371 mode = None
4077 else:
4372 else:
4078 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
4373 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
4079 try:
4374 try:
4080 code = opObj.getParameterValue(parameterName='code')
4375 code = opObj.getParameterValue(parameterName='code')
4081 nBaud = opObj.getParameterValue(parameterName='nBaud')
4376 nBaud = opObj.getParameterValue(parameterName='nBaud')
4082 nCode = opObj.getParameterValue(parameterName='nCode')
4377 nCode = opObj.getParameterValue(parameterName='nCode')
4083 code = numpy.array(code).reshape(nCode,nBaud)
4378 code = numpy.array(code).reshape(nCode,nBaud)
4084 except:
4379 except:
4085 code = "Default"
4380 code = "Default"
4086
4381
4087 self.bufferVoltage("Processing Unit", "Code", str(code).replace('\n',''))
4382 self.bufferVoltage("Processing Unit", "Code", str(code).replace('\n',''))
4088
4383
4089 try:
4384 try:
4090 value = opObj.getParameterValue(parameterName='mode')
4385 value = opObj.getParameterValue(parameterName='mode')
4091 if int(value) == 0:
4386 if int(value) == 0:
4092 mode = "Time"
4387 mode = "Time"
4093 else:
4388 else:
4094 mode = "freq" + str(value)
4389 mode = "freq" + str(value)
4095 except:
4390 except:
4096 mode = "Default"
4391 mode = "Default"
4097 self.bufferVoltage("Processing Unit", "Decoder mode", mode)
4392 self.bufferVoltage("Processing Unit", "Decoder mode", mode)
4098
4393
4099 opObj = puObj.getOperationObj(name="deFlip")
4394 opObj = puObj.getOperationObj(name="deFlip")
4100 if opObj == None:
4395 if opObj == None:
4101 value = None
4396 value = None
4102 else:
4397 else:
4103 try:
4398 try:
4104 value = opObj.getParameterValue(parameterName='channelList')
4399 value = opObj.getParameterValue(parameterName='channelList')
4105 value = str(value)
4400 value = str(value)
4106 except:
4401 except:
4107 value = "All channels"
4402 value = "All channels"
4108
4403
4109 self.bufferVoltage("Processing Unit", "Flip", value)
4404 self.bufferVoltage("Processing Unit", "Flip", value)
4110
4405
4111 opObj = puObj.getOperationObj(name="CohInt")
4406 opObj = puObj.getOperationObj(name="CohInt")
4112 if opObj == None:
4407 if opObj == None:
4113 coherentintegration = None
4408 coherentintegration = None
4114 else:
4409 else:
4115 value = opObj.getParameterValue(parameterName='n')
4410 value = opObj.getParameterValue(parameterName='n')
4116 coherentintegration = value
4411 coherentintegration = value
4117 self.bufferVoltage("Processing Unit", "Coh Int", coherentintegration)
4412 self.bufferVoltage("Processing Unit", "Coh Int", coherentintegration)
4118
4413
4119
4414
4120 # graph
4415 # graph
4121 # opObj = puObj.getOperationObj(name='Plot')
4416 # opObj = puObj.getOperationObj(name='Plot')
4122 opObj = puObj.getOperationObj(name='Scope')
4417 opObj = puObj.getOperationObj(name='Scope')
4123 if opObj == None:
4418 if opObj == None:
4124 self.volGraphCebshow.setCheckState(0)
4419 self.volGraphCebshow.setCheckState(0)
4125 operation = "Disabled"
4420 operation = "Disabled"
4126 channelList = None
4421 channelList = None
4127 freq_vel = None
4422 freq_vel = None
4128 heightsrange = None
4423 heightsrange = None
4129 else:
4424 else:
4130 operation = 'Enabled'
4425 operation = 'Enabled'
4131 self.bufferVoltage("Scope", "Operation", operation),
4426 self.bufferVoltage("Scope", "Operation", operation),
4132 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
4427 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
4133 value = opObj.getParameterObj(parameterName='channelList')
4428 value = opObj.getParameterObj(parameterName='channelList')
4134 if value == None:
4429 if value == None:
4135 channelList = None
4430 channelList = None
4136 else:
4431 else:
4137 value = opObj.getParameterValue(parameterName='channelList')
4432 value = opObj.getParameterValue(parameterName='channelList')
4138 value = str(value)[1:-1]
4433 value = str(value)[1:-1]
4139 channelList = value
4434 channelList = value
4140 self.bufferVoltage("Scope", "Channel List", channelList)
4435 self.bufferVoltage("Scope", "Channel List", channelList)
4141
4436
4142
4437
4143 value1 = opObj.getParameterObj(parameterName='xmin')
4438 value1 = opObj.getParameterObj(parameterName='xmin')
4144 if value1 == None:
4439 if value1 == None:
4145 freq_vel = None
4440 freq_vel = None
4146 else:
4441 else:
4147 value1 = opObj.getParameterValue(parameterName='xmin')
4442 value1 = opObj.getParameterValue(parameterName='xmin')
4148 value1 = str(value1)
4443 value1 = str(value1)
4149 value2 = opObj.getParameterObj(parameterName='xmax')
4444 value2 = opObj.getParameterObj(parameterName='xmax')
4150 if value2 == None:
4445 if value2 == None:
4151 freq_vel = None
4446 freq_vel = None
4152 else:
4447 else:
4153 value2 = opObj.getParameterValue(parameterName='xmax')
4448 value2 = opObj.getParameterValue(parameterName='xmax')
4154 value2 = str(value2)
4449 value2 = str(value2)
4155 value = value1 + "," + value2
4450 value = value1 + "," + value2
4156 freq_vel = value
4451 freq_vel = value
4157 self.bufferVoltage("Scope", "Freq/Vel", freq_vel)
4452 self.bufferVoltage("Scope", "Freq/Vel", freq_vel)
4158
4453
4159 value1 = opObj.getParameterObj(parameterName='ymin')
4454 value1 = opObj.getParameterObj(parameterName='ymin')
4160 if value1 == None:
4455 if value1 == None:
4161 heightsrange = None
4456 heightsrange = None
4162 else:
4457 else:
4163 value1 = opObj.getParameterValue(parameterName='ymin')
4458 value1 = opObj.getParameterValue(parameterName='ymin')
4164 value1 = str(value1)
4459 value1 = str(value1)
4165 value2 = opObj.getParameterObj(parameterName='ymax')
4460 value2 = opObj.getParameterObj(parameterName='ymax')
4166 if value2 == None:
4461 if value2 == None:
4167 fheightsrange = None
4462 fheightsrange = None
4168 else:
4463 else:
4169 value2 = opObj.getParameterValue(parameterName='ymax')
4464 value2 = opObj.getParameterValue(parameterName='ymax')
4170 value2 = str(value2)
4465 value2 = str(value2)
4171 value = value1 + "," + value2
4466 value = value1 + "," + value2
4172 heightsrange = value
4467 heightsrange = value
4173 self.bufferVoltage("Scope", "Height Range", heightsrange)
4468 self.bufferVoltage("Scope", "Height Range", heightsrange)
4174
4469
4175 parmObj = opObj.getParameterObj(parameterName="figpath")
4470 parmObj = opObj.getParameterObj(parameterName="figpath")
4176 if parmObj == None:
4471 if parmObj == None:
4177 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
4472 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
4178 figpath = None
4473 figpath = None
4179 else:
4474 else:
4180 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
4475 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
4181 value = opObj.getParameterValue(parameterName='figpath')
4476 value = opObj.getParameterValue(parameterName='figpath')
4182 figpath = value
4477 figpath = value
4183 self.bufferVoltage("Scope", "Path", figpath)
4478 self.bufferVoltage("Scope", "Path", figpath)
4184 # outputVoltageWrite
4479 # outputVoltageWrite
4185 opObj = puObj.getOperationObj(name='VoltageWriter')
4480 opObj = puObj.getOperationObj(name='VoltageWriter')
4186 if opObj == None:
4481 if opObj == None:
4187 pass
4482 pass
4188 else:
4483 else:
4189 operation = 'Enabled'
4484 operation = 'Enabled'
4190 self.bufferVoltage("Output", "Operation", operation)
4485 self.bufferVoltage("Output", "Operation", operation)
4191 value = opObj.getParameterObj(parameterName='path')
4486 value = opObj.getParameterObj(parameterName='path')
4192 if value == None:
4487 if value == None:
4193 path = None
4488 path = None
4194 else:
4489 else:
4195 value = opObj.getParameterValue(parameterName='path')
4490 value = opObj.getParameterValue(parameterName='path')
4196 path = str(value)
4491 path = str(value)
4197 self.bufferVoltage("Output", "Path", path)
4492 self.bufferVoltage("Output", "Path", path)
4198 value = opObj.getParameterObj(parameterName='blocksPerFile')
4493 value = opObj.getParameterObj(parameterName='blocksPerFile')
4199 if value == None:
4494 if value == None:
4200 blocksperfile = None
4495 blocksperfile = None
4201 else:
4496 else:
4202 value = opObj.getParameterValue(parameterName='blocksPerFile')
4497 value = opObj.getParameterValue(parameterName='blocksPerFile')
4203 blocksperfile = str(value)
4498 blocksperfile = str(value)
4204 self.bufferVoltage("Output", "BlocksPerFile", blocksperfile)
4499 self.bufferVoltage("Output", "BlocksPerFile", blocksperfile)
4205 value = opObj.getParameterObj(parameterName='profilesPerBlock')
4500 value = opObj.getParameterObj(parameterName='profilesPerBlock')
4206 if value == None:
4501 if value == None:
4207 profilesPerBlock = None
4502 profilesPerBlock = None
4208 else:
4503 else:
4209 value = opObj.getParameterValue(parameterName='profilesPerBlock')
4504 value = opObj.getParameterValue(parameterName='profilesPerBlock')
4210 profilesPerBlock = str(value)
4505 profilesPerBlock = str(value)
4211 self.bufferVoltage("Output", "ProfilesPerBlock", profilesPerBlock)
4506 self.bufferVoltage("Output", "ProfilesPerBlock", profilesPerBlock)
4212
4507
4213
4508
4214 # set model PU Properties
4509 # set model PU Properties
4215
4510
4216 self.propertiesModel = treeModel()
4511 self.propertiesModel = TreeModel()
4217 self.propertiesModel.showPUVoltageParms(self.volProperCaracteristica, self.volProperPrincipal, self.volProperDescripcion)
4512 self.propertiesModel.showProperties(self.volProperCaracteristica, self.volProperPrincipal, self.volProperDescripcion)
4218 self.volProperCaracteristica = []
4513 self.volProperCaracteristica = []
4219 self.volProperPrincipal = []
4514 self.volProperPrincipal = []
4220 self.volProperDescripcion = []
4515 self.volProperDescripcion = []
4221 self.treeProjectProperties.setModel(self.propertiesModel)
4516 self.treeProjectProperties.setModel(self.propertiesModel)
4222 self.treeProjectProperties.expandAll()
4517 self.treeProjectProperties.expandAll()
4223 self.treeProjectProperties.allColumnsShowFocus()
4518 self.treeProjectProperties.allColumnsShowFocus()
4224 self.treeProjectProperties.resizeColumnToContents(0)
4519 self.treeProjectProperties.resizeColumnToContents(0)
4225 self.treeProjectProperties.resizeColumnToContents(1)
4520 self.treeProjectProperties.resizeColumnToContents(1)
4226
4521
4227 def bufferSpectra(self, caracteristica, principal, description):
4522 def bufferSpectra(self, caracteristica, principal, description):
4228 self.specProperCaracteristica.append(caracteristica)
4523 self.specProperCaracteristica.append(caracteristica)
4229 self.specProperPrincipal.append(principal)
4524 self.specProperPrincipal.append(principal)
4230 self.specProperDescripcion.append(description)
4525 self.specProperDescripcion.append(description)
4231 return self.specProperCaracteristica, self.specProperPrincipal, self.specProperDescripcion
4526 return self.specProperCaracteristica, self.specProperPrincipal, self.specProperDescripcion
4232
4527
4233 def showPUSpectraProperties(self, puObj):
4528 def showPUSpectraProperties(self, puObj):
4234 type = puObj.name
4529 type = puObj.name
4235 self.bufferSpectra("Processing Unit", "Type", type)
4530 self.bufferSpectra("Processing Unit", "Type", type)
4236
4531
4237 opObj = puObj.getOperationObj(name="setRadarFrequency")
4532 opObj = puObj.getOperationObj(name="setRadarFrequency")
4238 if opObj == None:
4533 if opObj == None:
4239 radarfrequency = None
4534 radarfrequency = None
4240 else:
4535 else:
4241 value = opObj.getParameterValue(parameterName='frequency')
4536 value = opObj.getParameterValue(parameterName='frequency')
4242 value = str(value)
4537 value = str(value)
4243 radarfrequency = value
4538 radarfrequency = value
4244 self.bufferSpectra("Processing Unit", "Radar Frequency", radarfrequency)
4539 self.bufferSpectra("Processing Unit", "Radar Frequency", radarfrequency)
4245
4540
4246
4541
4247 opObj = puObj.getOperationObj(name="run")
4542 opObj = puObj.getOperationObj(name="run")
4248 if opObj == None:
4543 if opObj == None:
4249 self.specOpnFFTpoints.clear()
4544 self.specOpnFFTpoints.clear()
4250 self.specOpProfiles.clear()
4545 self.specOpProfiles.clear()
4251 self.specOpippFactor.clear()
4546 self.specOpippFactor.clear()
4252 else:
4547 else:
4253 parmObj = opObj.getParameterObj(parameterName='nProfiles')
4548 parmObj = opObj.getParameterObj(parameterName='nProfiles')
4254 if parmObj == None:
4549 if parmObj == None:
4255 nProfiles = None
4550 nProfiles = None
4256 else:
4551 else:
4257 value = opObj.getParameterValue(parameterName='nProfiles')
4552 value = opObj.getParameterValue(parameterName='nProfiles')
4258 nProfiles = value
4553 nProfiles = value
4259 self.bufferSpectra("Processing Unit", "nProfiles", nProfiles)
4554 self.bufferSpectra("Processing Unit", "nProfiles", nProfiles)
4260
4555
4261 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
4556 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
4262 if parmObj == None:
4557 if parmObj == None:
4263 nFFTPoints = None
4558 nFFTPoints = None
4264 else:
4559 else:
4265 value = opObj.getParameterValue(parameterName='nFFTPoints')
4560 value = opObj.getParameterValue(parameterName='nFFTPoints')
4266 nFFTPoints = value
4561 nFFTPoints = value
4267 self.bufferSpectra("Processing Unit", "nFFTpoints", nFFTPoints)
4562 self.bufferSpectra("Processing Unit", "nFFTpoints", nFFTPoints)
4268
4563
4269 parmObj = opObj.getParameterObj(parameterName='ippFactor')
4564 parmObj = opObj.getParameterObj(parameterName='ippFactor')
4270 if parmObj == None:
4565 if parmObj == None:
4271 ippFactor = None
4566 ippFactor = None
4272 else:
4567 else:
4273 value = opObj.getParameterValue(parameterName='ippFactor')
4568 value = opObj.getParameterValue(parameterName='ippFactor')
4274 ippFactor = value
4569 ippFactor = value
4275 self.bufferSpectra("Processing Unit", "Ipp Factor", ippFactor)
4570 self.bufferSpectra("Processing Unit", "Ipp Factor", ippFactor)
4276
4571
4277
4572
4278 opObj = puObj.getOperationObj(name="run")
4573 opObj = puObj.getOperationObj(name="run")
4279 if opObj == None:
4574 if opObj == None:
4280 pairsList = None
4575 pairsList = None
4281 else:
4576 else:
4282 parm = opObj.getParameterObj(parameterName='pairsList')
4577 parm = opObj.getParameterObj(parameterName='pairsList')
4283 if parm == None:
4578 if parm == None:
4284 pairsList = None
4579 pairsList = None
4285 else:
4580 else:
4286 value = opObj.getParameterValue(parameterName='pairsList')
4581 value = opObj.getParameterValue(parameterName='pairsList')
4287 value = str(value)[1:-1]
4582 value = str(value)[1:-1]
4288 pairsList = value
4583 pairsList = value
4289 self.bufferSpectra("Processing Unit", "PairsList", pairsList)
4584 self.bufferSpectra("Processing Unit", "PairsList", pairsList)
4290
4585
4291
4586
4292 opObj = puObj.getOperationObj(name="selectChannels")
4587 opObj = puObj.getOperationObj(name="selectChannels")
4293 if opObj == None:
4588 if opObj == None:
4294 channel = None
4589 channel = None
4295 else:
4590 else:
4296 try:
4591 try:
4297 value = opObj.getParameterValue(parameterName='channelList')
4592 value = opObj.getParameterValue(parameterName='channelList')
4298 value = str(value)[1:-1]
4593 value = str(value)[1:-1]
4299 channel = value
4594 channel = value
4300
4595
4301 self.bufferSpectra("Processing Unit", "Channel List", channel)
4596 self.bufferSpectra("Processing Unit", "Channel List", channel)
4302 except:
4597 except:
4303 pass
4598 pass
4304 try:
4599 try:
4305 value = opObj.getParameterValue(parameterName='channelIndexList')
4600 value = opObj.getParameterValue(parameterName='channelIndexList')
4306 value = str(value)[1:-1]
4601 value = str(value)[1:-1]
4307 channel = value
4602 channel = value
4308
4603
4309 self.bufferSpectra("Processing Unit", "Channel Index List", channel)
4604 self.bufferSpectra("Processing Unit", "Channel Index List", channel)
4310 except:
4605 except:
4311 pass
4606 pass
4312
4607
4313 opObj = puObj.getOperationObj(name="selectHeights")
4608 opObj = puObj.getOperationObj(name="selectHeights")
4314 if opObj == None:
4609 if opObj == None:
4315 heights = None
4610 heights = None
4316 else:
4611 else:
4317 value1 = int(opObj.getParameterValue(parameterName='minHei'))
4612 value1 = int(opObj.getParameterValue(parameterName='minHei'))
4318 value1 = str(value1)
4613 value1 = str(value1)
4319 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
4614 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
4320 value2 = str(value2)
4615 value2 = str(value2)
4321 value = value1 + "," + value2
4616 value = value1 + "," + value2
4322 heights = value
4617 heights = value
4323 self.bufferSpectra("Processing Unit", "Heights", heights)
4618 self.bufferSpectra("Processing Unit", "Heights", heights)
4324
4619
4325 opObj = puObj.getOperationObj(name="IncohInt")
4620 opObj = puObj.getOperationObj(name="IncohInt")
4326 if opObj == None:
4621 if opObj == None:
4327 incoherentintegration = None
4622 incoherentintegration = None
4328 else:
4623 else:
4329 try:
4624 try:
4330 value = opObj.getParameterValue(parameterName='timeInterval')
4625 value = opObj.getParameterValue(parameterName='timeInterval')
4331 except:
4626 except:
4332 value = opObj.getParameterValue(parameterName='n')
4627 value = opObj.getParameterValue(parameterName='n')
4333
4628
4334 value = float(value)
4629 value = float(value)
4335 incoherentintegration = str(value)
4630 incoherentintegration = str(value)
4336 self.bufferSpectra("Processing Unit", "Incoherent Integration", incoherentintegration)
4631 self.bufferSpectra("Processing Unit", "Incoherent Integration", incoherentintegration)
4337
4632
4338
4633
4339 opObj = puObj.getOperationObj(name="removeDC")
4634 opObj = puObj.getOperationObj(name="removeDC")
4340 if opObj == None:
4635 if opObj == None:
4341 removeDC = None
4636 removeDC = None
4342 else:
4637 else:
4343 value = opObj.getParameterValue(parameterName='mode')
4638 value = opObj.getParameterValue(parameterName='mode')
4344 self.bufferSpectra("Processing Unit", "Remove DC", value)
4639 self.bufferSpectra("Processing Unit", "Remove DC", value)
4345
4640
4346 opObj = puObj.getOperationObj(name="removeInterference")
4641 opObj = puObj.getOperationObj(name="removeInterference")
4347 if opObj == None:
4642 if opObj == None:
4348 removeInterference = None
4643 removeInterference = None
4349 else:
4644 else:
4350 self.bufferSpectra("Processing Unit", "Remove Interference", "1")
4645 self.bufferSpectra("Processing Unit", "Remove Interference", "1")
4351
4646
4352 opObj = puObj.getOperationObj(name="getNoise")
4647 opObj = puObj.getOperationObj(name="getNoise")
4353 if opObj == None:
4648 if opObj == None:
4354 getNoise = None
4649 getNoise = None
4355 else:
4650 else:
4356 value1 = opObj.getParameterObj(parameterName='minHei')
4651 value1 = opObj.getParameterObj(parameterName='minHei')
4357 if value1 == None:
4652 if value1 == None:
4358 getNoise = None
4653 getNoise = None
4359 getNoise = "Default"
4654 getNoise = "Default"
4360 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4655 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4361
4656
4362 else:
4657 else:
4363 value1 = opObj.getParameterValue(parameterName='minHei')
4658 value1 = opObj.getParameterValue(parameterName='minHei')
4364 value1 = str(value1)
4659 value1 = str(value1)
4365 value2 = opObj.getParameterObj(parameterName='maxHei')
4660 value2 = opObj.getParameterObj(parameterName='maxHei')
4366 if value2 == None:
4661 if value2 == None:
4367 getNoise = None
4662 getNoise = None
4368 value = value1
4663 value = value1
4369 getNoise = value
4664 getNoise = value
4370 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4665 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4371 else:
4666 else:
4372 value2 = opObj.getParameterValue(parameterName='maxHei')
4667 value2 = opObj.getParameterValue(parameterName='maxHei')
4373 value2 = str(value2)
4668 value2 = str(value2)
4374 value3 = opObj.getParameterObj(parameterName='minVel')
4669 value3 = opObj.getParameterObj(parameterName='minVel')
4375 if value3 == None:
4670 if value3 == None:
4376 getNoise = None
4671 getNoise = None
4377 value = value1 + "," + value2
4672 value = value1 + "," + value2
4378 getNoise = value
4673 getNoise = value
4379 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4674 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4380 else:
4675 else:
4381 value3 = opObj.getParameterValue(parameterName='minVel')
4676 value3 = opObj.getParameterValue(parameterName='minVel')
4382 value3 = str(value3)
4677 value3 = str(value3)
4383 value4 = opObj.getParameterObj(parameterName='maxVel')
4678 value4 = opObj.getParameterObj(parameterName='maxVel')
4384 if value4 == None:
4679 if value4 == None:
4385 getNoise = None
4680 getNoise = None
4386 value = value1 + "," + value2 + ',' + value3
4681 value = value1 + "," + value2 + ',' + value3
4387 getNoise = value
4682 getNoise = value
4388 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4683 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4389 else:
4684 else:
4390 value4 = opObj.getParameterValue(parameterName='maxVel')
4685 value4 = opObj.getParameterValue(parameterName='maxVel')
4391 value4 = str(value4)
4686 value4 = str(value4)
4392 value = value1 + "," + value2 + ',' + value3 + ',' + value4
4687 value = value1 + "," + value2 + ',' + value3 + ',' + value4
4393 getNoise = value
4688 getNoise = value
4394 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4689 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4395
4690
4396 opObj = puObj.getOperationObj(name='SpectraPlot')
4691 opObj = puObj.getOperationObj(name='SpectraPlot')
4397 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
4692 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
4398
4693
4399 if opObj == None:
4694 if opObj == None:
4400 operationSpectraPlot = "Disabled"
4695 operationSpectraPlot = "Disabled"
4401 freq_vel = None
4696 freq_vel = None
4402 heightsrange = None
4697 heightsrange = None
4403 channelListSpectraPlot = None
4698 channelListSpectraPlot = None
4404 else:
4699 else:
4405 operationSpectraPlot = "Enable"
4700 operationSpectraPlot = "Enable"
4406 self.bufferSpectra("Spectra Plot", "Operation", operationSpectraPlot)
4701 self.bufferSpectra("Spectra Plot", "Operation", operationSpectraPlot)
4407 parmObj = opObj.getParameterObj(parameterName='channelList')
4702 parmObj = opObj.getParameterObj(parameterName='channelList')
4408 if parmObj == None:
4703 if parmObj == None:
4409 channelListSpectraPlot = None
4704 channelListSpectraPlot = None
4410 else:
4705 else:
4411 value = opObj.getParameterValue(parameterName='channelList')
4706 value = opObj.getParameterValue(parameterName='channelList')
4412 channelListSpectraPlot = str(value)[1:-1]
4707 channelListSpectraPlot = str(value)[1:-1]
4413 self.bufferSpectra("Spectra Plot", "Channel List", channelListSpectraPlot)
4708 self.bufferSpectra("Spectra Plot", "Channel List", channelListSpectraPlot)
4414
4709
4415
4710
4416 value1 = opObj.getParameterObj(parameterName='xmin')
4711 value1 = opObj.getParameterObj(parameterName='xmin')
4417 if value1 == None:
4712 if value1 == None:
4418 freq_vel = None
4713 freq_vel = None
4419 else:
4714 else:
4420 value1 = opObj.getParameterValue(parameterName='xmin')
4715 value1 = opObj.getParameterValue(parameterName='xmin')
4421 value1 = str(value1)
4716 value1 = str(value1)
4422 value2 = opObj.getParameterObj(parameterName='xmax')
4717 value2 = opObj.getParameterObj(parameterName='xmax')
4423 if value2 == None:
4718 if value2 == None:
4424 freq_vel = None
4719 freq_vel = None
4425 else:
4720 else:
4426 value2 = opObj.getParameterValue(parameterName='xmax')
4721 value2 = opObj.getParameterValue(parameterName='xmax')
4427 value2 = str(value2)
4722 value2 = str(value2)
4428 value = value1 + "," + value2
4723 value = value1 + "," + value2
4429 freq_vel = value
4724 freq_vel = value
4430 self.bufferSpectra("Spectra Plot", "Freq/Vel", freq_vel)
4725 self.bufferSpectra("Spectra Plot", "Freq/Vel", freq_vel)
4431
4726
4432 value1 = opObj.getParameterObj(parameterName='ymin')
4727 value1 = opObj.getParameterObj(parameterName='ymin')
4433 if value1 == None:
4728 if value1 == None:
4434 heightsrange = None
4729 heightsrange = None
4435 else:
4730 else:
4436 value1 = opObj.getParameterValue(parameterName='ymin')
4731 value1 = opObj.getParameterValue(parameterName='ymin')
4437 value1 = str(value1)
4732 value1 = str(value1)
4438 value2 = opObj.getParameterObj(parameterName='ymax')
4733 value2 = opObj.getParameterObj(parameterName='ymax')
4439 if value2 == None:
4734 if value2 == None:
4440 fheightsrange = None
4735 fheightsrange = None
4441 else:
4736 else:
4442 value2 = opObj.getParameterValue(parameterName='ymax')
4737 value2 = opObj.getParameterValue(parameterName='ymax')
4443 value2 = str(value2)
4738 value2 = str(value2)
4444 value = value1 + "," + value2
4739 value = value1 + "," + value2
4445 heightsrange = value
4740 heightsrange = value
4446 self.bufferSpectra("Spectra Plot", "Height Range", heightsrange)
4741 self.bufferSpectra("Spectra Plot", "Height Range", heightsrange)
4447
4742
4448 value1 = opObj.getParameterObj(parameterName='zmin')
4743 value1 = opObj.getParameterObj(parameterName='zmin')
4449 if value1 == None:
4744 if value1 == None:
4450 dBrange = None
4745 dBrange = None
4451 else:
4746 else:
4452 value1 = opObj.getParameterValue(parameterName='zmin')
4747 value1 = opObj.getParameterValue(parameterName='zmin')
4453 value1 = str(value1)
4748 value1 = str(value1)
4454 value2 = opObj.getParameterObj(parameterName='zmax')
4749 value2 = opObj.getParameterObj(parameterName='zmax')
4455 if value2 == None:
4750 if value2 == None:
4456 fdBrange = None
4751 fdBrange = None
4457 else:
4752 else:
4458 value2 = opObj.getParameterValue(parameterName='zmax')
4753 value2 = opObj.getParameterValue(parameterName='zmax')
4459 value2 = str(value2)
4754 value2 = str(value2)
4460 value = value1 + "," + value2
4755 value = value1 + "," + value2
4461 dbrange = value
4756 dbrange = value
4462 self.bufferSpectra("Spectra Plot", "dB Range", dbrange)
4757 self.bufferSpectra("Spectra Plot", "dB Range", dbrange)
4463
4758
4464 parmObj = opObj.getParameterObj(parameterName="figpath")
4759 parmObj = opObj.getParameterObj(parameterName="figpath")
4465 if parmObj == None:
4760 if parmObj == None:
4466 path = None
4761 path = None
4467 else:
4762 else:
4468 path = opObj.getParameterValue(parameterName='figpath')
4763 path = opObj.getParameterValue(parameterName='figpath')
4469 self.bufferSpectra("Spectra Plot", "Save Path", path)
4764 self.bufferSpectra("Spectra Plot", "Save Path", path)
4470
4765
4471 parmObj = opObj.getParameterObj(parameterName="ftp")
4766 parmObj = opObj.getParameterObj(parameterName="ftp")
4472 if parmObj == None:
4767 if parmObj == None:
4473 status = 'disable'
4768 status = 'disable'
4474 else:
4769 else:
4475 status = 'enable'
4770 status = 'enable'
4476 self.bufferSpectra("Spectra Plot", "FTP", status)
4771 self.bufferSpectra("Spectra Plot", "FTP", status)
4477 self.showWr_Period(puObj, opObj, nameplotop="Spectra Plot")
4772 self.showWr_Period(puObj, opObj, nameplotop="Spectra Plot")
4478 # self.saveFTPvalues(opObj)
4773 # self.saveFTPvalues(opObj)
4479
4774
4480 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
4775 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
4481 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
4776 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
4482 if opObj == None:
4777 if opObj == None:
4483 self.specGraphCebCrossSpectraplot.setCheckState(0)
4778 self.specGraphCebCrossSpectraplot.setCheckState(0)
4484 operationCrossSpectraPlot = "Disabled"
4779 operationCrossSpectraPlot = "Disabled"
4485 channelList = None
4780 channelList = None
4486 freq_vel = None
4781 freq_vel = None
4487 heightsrange = None
4782 heightsrange = None
4488 else:
4783 else:
4489 operationCrossSpectraPlot = "Enable"
4784 operationCrossSpectraPlot = "Enable"
4490 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
4785 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
4491 self.bufferSpectra("Cross Spectra Plot", "Operation", operationCrossSpectraPlot)
4786 self.bufferSpectra("Cross Spectra Plot", "Operation", operationCrossSpectraPlot)
4492
4787
4493 value1 = opObj.getParameterObj(parameterName='xmin')
4788 value1 = opObj.getParameterObj(parameterName='xmin')
4494 if value1 == None:
4789 if value1 == None:
4495 freq_vel = None
4790 freq_vel = None
4496 else:
4791 else:
4497 value1 = opObj.getParameterValue(parameterName='xmin')
4792 value1 = opObj.getParameterValue(parameterName='xmin')
4498 value1 = str(value1)
4793 value1 = str(value1)
4499 value2 = opObj.getParameterObj(parameterName='xmax')
4794 value2 = opObj.getParameterObj(parameterName='xmax')
4500 if value2 == None:
4795 if value2 == None:
4501 freq_vel = None
4796 freq_vel = None
4502 else:
4797 else:
4503 value2 = opObj.getParameterValue(parameterName='xmax')
4798 value2 = opObj.getParameterValue(parameterName='xmax')
4504 value2 = str(value2)
4799 value2 = str(value2)
4505 value = value1 + "," + value2
4800 value = value1 + "," + value2
4506 freq_vel = value
4801 freq_vel = value
4507 self.bufferSpectra("Cross Spectra Plot", "Freq/Vel", freq_vel)
4802 self.bufferSpectra("Cross Spectra Plot", "Freq/Vel", freq_vel)
4508
4803
4509 value1 = opObj.getParameterObj(parameterName='ymin')
4804 value1 = opObj.getParameterObj(parameterName='ymin')
4510 if value1 == None:
4805 if value1 == None:
4511 heightsrange = None
4806 heightsrange = None
4512 else:
4807 else:
4513 value1 = opObj.getParameterValue(parameterName='ymin')
4808 value1 = opObj.getParameterValue(parameterName='ymin')
4514 value1 = str(value1)
4809 value1 = str(value1)
4515 value2 = opObj.getParameterObj(parameterName='ymax')
4810 value2 = opObj.getParameterObj(parameterName='ymax')
4516 if value2 == None:
4811 if value2 == None:
4517 fheightsrange = None
4812 fheightsrange = None
4518 else:
4813 else:
4519 value2 = opObj.getParameterValue(parameterName='ymax')
4814 value2 = opObj.getParameterValue(parameterName='ymax')
4520 value2 = str(value2)
4815 value2 = str(value2)
4521 value = value1 + "," + value2
4816 value = value1 + "," + value2
4522 heightsrange = value
4817 heightsrange = value
4523 self.bufferSpectra("Cross Spectra Plot", "Height Range", heightsrange)
4818 self.bufferSpectra("Cross Spectra Plot", "Height Range", heightsrange)
4524
4819
4525 value1 = opObj.getParameterObj(parameterName='zmin')
4820 value1 = opObj.getParameterObj(parameterName='zmin')
4526 if value1 == None:
4821 if value1 == None:
4527 dBrange = None
4822 dBrange = None
4528 else:
4823 else:
4529 value1 = opObj.getParameterValue(parameterName='zmin')
4824 value1 = opObj.getParameterValue(parameterName='zmin')
4530 value1 = str(value1)
4825 value1 = str(value1)
4531 value2 = opObj.getParameterObj(parameterName='zmax')
4826 value2 = opObj.getParameterObj(parameterName='zmax')
4532 if value2 == None:
4827 if value2 == None:
4533 fdBrange = None
4828 fdBrange = None
4534 else:
4829 else:
4535 value2 = opObj.getParameterValue(parameterName='zmax')
4830 value2 = opObj.getParameterValue(parameterName='zmax')
4536 value2 = str(value2)
4831 value2 = str(value2)
4537 value = value1 + "," + value2
4832 value = value1 + "," + value2
4538 dbrange = value
4833 dbrange = value
4539 self.bufferSpectra("Cross Spectra Plot", "dB Range", dbrange)
4834 self.bufferSpectra("Cross Spectra Plot", "dB Range", dbrange)
4540
4835
4541 parmObj = opObj.getParameterObj(parameterName="figpath")
4836 parmObj = opObj.getParameterObj(parameterName="figpath")
4542 if parmObj == None:
4837 if parmObj == None:
4543 path = None
4838 path = None
4544 else:
4839 else:
4545 path = opObj.getParameterValue(parameterName='figpath')
4840 path = opObj.getParameterValue(parameterName='figpath')
4546 self.bufferSpectra("Cross Spectra Plot", "Save Path", path)
4841 self.bufferSpectra("Cross Spectra Plot", "Save Path", path)
4547
4842
4548 parmObj = opObj.getParameterObj(parameterName="ftp")
4843 parmObj = opObj.getParameterObj(parameterName="ftp")
4549 if parmObj == None:
4844 if parmObj == None:
4550 status = 'disable'
4845 status = 'disable'
4551 else:
4846 else:
4552 status = 'enable'
4847 status = 'enable'
4553 self.bufferSpectra("Cross Spectra Plot", "FTP", status)
4848 self.bufferSpectra("Cross Spectra Plot", "FTP", status)
4554 self.showWr_Period(puObj, opObj, nameplotop="Cross Spectra Plot")
4849 self.showWr_Period(puObj, opObj, nameplotop="Cross Spectra Plot")
4555 # self.saveFTPvalues(opObj)
4850 # self.saveFTPvalues(opObj)
4556
4851
4557 opObj = puObj.getOperationObj(name='RTIPlot')
4852 opObj = puObj.getOperationObj(name='RTIPlot')
4558 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
4853 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
4559 if opObj == None:
4854 if opObj == None:
4560 self.specGraphCebRTIplot.setCheckState(0)
4855 self.specGraphCebRTIplot.setCheckState(0)
4561 operationRTIPlot = "Disabled"
4856 operationRTIPlot = "Disabled"
4562 channelList = None
4857 channelList = None
4563 freq_vel = None
4858 freq_vel = None
4564 heightsrange = None
4859 heightsrange = None
4565 else:
4860 else:
4566 operationRTIPlot = "Enable"
4861 operationRTIPlot = "Enable"
4567 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
4862 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
4568 self.bufferSpectra("RTI Plot", "Operation", operationRTIPlot)
4863 self.bufferSpectra("RTI Plot", "Operation", operationRTIPlot)
4569 parmObj = opObj.getParameterObj(parameterName='channelList')
4864 parmObj = opObj.getParameterObj(parameterName='channelList')
4570 if parmObj == None:
4865 if parmObj == None:
4571 channelListRTIPlot = None
4866 channelListRTIPlot = None
4572 else:
4867 else:
4573 value = opObj.getParameterValue(parameterName='channelList')
4868 value = opObj.getParameterValue(parameterName='channelList')
4574 channelListRTIPlot = str(value)[1:-1]
4869 channelListRTIPlot = str(value)[1:-1]
4575 self.bufferSpectra("RTI Plot", "Channel List", channelListRTIPlot)
4870 self.bufferSpectra("RTI Plot", "Channel List", channelListRTIPlot)
4576
4871
4577
4872
4578 value1 = opObj.getParameterObj(parameterName='xmin')
4873 value1 = opObj.getParameterObj(parameterName='xmin')
4579 if value1 == None:
4874 if value1 == None:
4580 freq_vel = None
4875 freq_vel = None
4581 else:
4876 else:
4582 value1 = opObj.getParameterValue(parameterName='xmin')
4877 value1 = opObj.getParameterValue(parameterName='xmin')
4583 value1 = str(value1)
4878 value1 = str(value1)
4584 value2 = opObj.getParameterObj(parameterName='xmax')
4879 value2 = opObj.getParameterObj(parameterName='xmax')
4585 if value2 == None:
4880 if value2 == None:
4586 freq_vel = None
4881 freq_vel = None
4587 else:
4882 else:
4588 value2 = opObj.getParameterValue(parameterName='xmax')
4883 value2 = opObj.getParameterValue(parameterName='xmax')
4589 value2 = str(value2)
4884 value2 = str(value2)
4590 value = value1 + "," + value2
4885 value = value1 + "," + value2
4591 tmintmax = value
4886 tmintmax = value
4592 self.bufferSpectra("RTI Plot", "Tmin,Tmax", tmintmax)
4887 self.bufferSpectra("RTI Plot", "Tmin,Tmax", tmintmax)
4593
4888
4594 parmObj = opObj.getParameterObj(parameterName='timerange')
4889 parmObj = opObj.getParameterObj(parameterName='timerange')
4595 if parmObj == None:
4890 if parmObj == None:
4596 timerange = None
4891 timerange = None
4597 else:
4892 else:
4598 value = opObj.getParameterValue(parameterName='timerange')
4893 value = opObj.getParameterValue(parameterName='timerange')
4599 timerange = str(value)
4894 timerange = str(value)
4600 self.bufferSpectra("RTI Plot", "Time Range", timerange)
4895 self.bufferSpectra("RTI Plot", "Time Range", timerange)
4601
4896
4602 value1 = opObj.getParameterObj(parameterName='ymin')
4897 value1 = opObj.getParameterObj(parameterName='ymin')
4603 if value1 == None:
4898 if value1 == None:
4604 heightsrange = None
4899 heightsrange = None
4605 else:
4900 else:
4606 value1 = opObj.getParameterValue(parameterName='ymin')
4901 value1 = opObj.getParameterValue(parameterName='ymin')
4607 value1 = str(value1)
4902 value1 = str(value1)
4608 value2 = opObj.getParameterObj(parameterName='ymax')
4903 value2 = opObj.getParameterObj(parameterName='ymax')
4609 if value2 == None:
4904 if value2 == None:
4610 fheightsrange = None
4905 fheightsrange = None
4611 else:
4906 else:
4612 value2 = opObj.getParameterValue(parameterName='ymax')
4907 value2 = opObj.getParameterValue(parameterName='ymax')
4613 value2 = str(value2)
4908 value2 = str(value2)
4614 value = value1 + "," + value2
4909 value = value1 + "," + value2
4615 heightsrange = value
4910 heightsrange = value
4616 self.bufferSpectra("RTI Plot", "Height Range", heightsrange)
4911 self.bufferSpectra("RTI Plot", "Height Range", heightsrange)
4617
4912
4618 value1 = opObj.getParameterObj(parameterName='zmin')
4913 value1 = opObj.getParameterObj(parameterName='zmin')
4619 if value1 == None:
4914 if value1 == None:
4620 dBrange = None
4915 dBrange = None
4621 else:
4916 else:
4622 value1 = opObj.getParameterValue(parameterName='zmin')
4917 value1 = opObj.getParameterValue(parameterName='zmin')
4623 value1 = str(value1)
4918 value1 = str(value1)
4624 value2 = opObj.getParameterObj(parameterName='zmax')
4919 value2 = opObj.getParameterObj(parameterName='zmax')
4625 if value2 == None:
4920 if value2 == None:
4626 fdBrange = None
4921 fdBrange = None
4627 else:
4922 else:
4628 value2 = opObj.getParameterValue(parameterName='zmax')
4923 value2 = opObj.getParameterValue(parameterName='zmax')
4629 value2 = str(value2)
4924 value2 = str(value2)
4630 value = value1 + "," + value2
4925 value = value1 + "," + value2
4631 dbrange = value
4926 dbrange = value
4632 self.bufferSpectra("RTI Plot", "dB Range", dbrange)
4927 self.bufferSpectra("RTI Plot", "dB Range", dbrange)
4633
4928
4634 parmObj = opObj.getParameterObj(parameterName="figpath")
4929 parmObj = opObj.getParameterObj(parameterName="figpath")
4635 if parmObj == None:
4930 if parmObj == None:
4636 path = None
4931 path = None
4637 else:
4932 else:
4638 path = opObj.getParameterValue(parameterName='figpath')
4933 path = opObj.getParameterValue(parameterName='figpath')
4639 self.bufferSpectra("RTI Plot", "Save Path", path)
4934 self.bufferSpectra("RTI Plot", "Save Path", path)
4640
4935
4641 parmObj = opObj.getParameterObj(parameterName="ftp")
4936 parmObj = opObj.getParameterObj(parameterName="ftp")
4642 if parmObj == None:
4937 if parmObj == None:
4643 status = 'disable'
4938 status = 'disable'
4644 else:
4939 else:
4645 status = 'enable'
4940 status = 'enable'
4646 self.bufferSpectra("RTI Plot", "FTP", status)
4941 self.bufferSpectra("RTI Plot", "FTP", status)
4647 self.showWr_Period(puObj, opObj, nameplotop="RTI Plot")
4942 self.showWr_Period(puObj, opObj, nameplotop="RTI Plot")
4648 # self.saveFTPvalues(opObj)
4943 # self.saveFTPvalues(opObj)
4649
4944
4650 opObj = puObj.getOperationObj(name='CoherenceMap')
4945 opObj = puObj.getOperationObj(name='CoherenceMap')
4651 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
4946 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
4652 if opObj == None:
4947 if opObj == None:
4653 self.specGraphCebCoherencmap.setCheckState(0)
4948 self.specGraphCebCoherencmap.setCheckState(0)
4654 operationCoherenceMap = "Disabled"
4949 operationCoherenceMap = "Disabled"
4655 channelList = None
4950 channelList = None
4656 freq_vel = None
4951 freq_vel = None
4657 heightsrange = None
4952 heightsrange = None
4658 else:
4953 else:
4659 operationCoherenceMap = "Enable"
4954 operationCoherenceMap = "Enable"
4660 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
4955 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
4661 self.bufferSpectra("Coherence Map Plot", "Operation", operationCoherenceMap)
4956 self.bufferSpectra("Coherence Map Plot", "Operation", operationCoherenceMap)
4662 parmObj = opObj.getParameterObj(parameterName='channelList')
4957 parmObj = opObj.getParameterObj(parameterName='channelList')
4663 if parmObj == None:
4958 if parmObj == None:
4664 channelListRTIPlot = None
4959 channelListRTIPlot = None
4665 else:
4960 else:
4666 value = opObj.getParameterValue(parameterName='channelList')
4961 value = opObj.getParameterValue(parameterName='channelList')
4667 channelListRTIPlot = str(value)[1:-1]
4962 channelListRTIPlot = str(value)[1:-1]
4668 self.bufferSpectra("Coherence Map Plot", "Channel List", channelListRTIPlot)
4963 self.bufferSpectra("Coherence Map Plot", "Channel List", channelListRTIPlot)
4669
4964
4670
4965
4671 value1 = opObj.getParameterObj(parameterName='xmin')
4966 value1 = opObj.getParameterObj(parameterName='xmin')
4672 if value1 == None:
4967 if value1 == None:
4673 freq_vel = None
4968 freq_vel = None
4674 else:
4969 else:
4675 value1 = opObj.getParameterValue(parameterName='xmin')
4970 value1 = opObj.getParameterValue(parameterName='xmin')
4676 value1 = str(value1)
4971 value1 = str(value1)
4677 value2 = opObj.getParameterObj(parameterName='xmax')
4972 value2 = opObj.getParameterObj(parameterName='xmax')
4678 if value2 == None:
4973 if value2 == None:
4679 freq_vel = None
4974 freq_vel = None
4680 else:
4975 else:
4681 value2 = opObj.getParameterValue(parameterName='xmax')
4976 value2 = opObj.getParameterValue(parameterName='xmax')
4682 value2 = str(value2)
4977 value2 = str(value2)
4683 value = value1 + "," + value2
4978 value = value1 + "," + value2
4684 tmintmax = value
4979 tmintmax = value
4685 self.bufferSpectra("Coherence Map Plot", "Tmin,Tmax", tmintmax)
4980 self.bufferSpectra("Coherence Map Plot", "Tmin,Tmax", tmintmax)
4686
4981
4687 parmObj = opObj.getParameterObj(parameterName='timerange')
4982 parmObj = opObj.getParameterObj(parameterName='timerange')
4688 if parmObj == None:
4983 if parmObj == None:
4689 timerange = None
4984 timerange = None
4690 else:
4985 else:
4691 value = opObj.getParameterValue(parameterName='timerange')
4986 value = opObj.getParameterValue(parameterName='timerange')
4692 timerange = str(value)
4987 timerange = str(value)
4693 self.bufferSpectra("Coherence Map Plot", "Time Range", timerange)
4988 self.bufferSpectra("Coherence Map Plot", "Time Range", timerange)
4694
4989
4695 value1 = opObj.getParameterObj(parameterName='ymin')
4990 value1 = opObj.getParameterObj(parameterName='ymin')
4696 if value1 == None:
4991 if value1 == None:
4697 heightsrange = None
4992 heightsrange = None
4698 else:
4993 else:
4699 value1 = opObj.getParameterValue(parameterName='ymin')
4994 value1 = opObj.getParameterValue(parameterName='ymin')
4700 value1 = str(value1)
4995 value1 = str(value1)
4701 value2 = opObj.getParameterObj(parameterName='ymax')
4996 value2 = opObj.getParameterObj(parameterName='ymax')
4702 if value2 == None:
4997 if value2 == None:
4703 fheightsrange = None
4998 fheightsrange = None
4704 else:
4999 else:
4705 value2 = opObj.getParameterValue(parameterName='ymax')
5000 value2 = opObj.getParameterValue(parameterName='ymax')
4706 value2 = str(value2)
5001 value2 = str(value2)
4707 value = value1 + "," + value2
5002 value = value1 + "," + value2
4708 heightsrange = value
5003 heightsrange = value
4709 self.bufferSpectra("Coherence Map Plot", "Height Range", heightsrange)
5004 self.bufferSpectra("Coherence Map Plot", "Height Range", heightsrange)
4710
5005
4711 value1 = opObj.getParameterObj(parameterName='zmin')
5006 value1 = opObj.getParameterObj(parameterName='zmin')
4712 if value1 == None:
5007 if value1 == None:
4713 dBrange = None
5008 dBrange = None
4714 else:
5009 else:
4715 value1 = opObj.getParameterValue(parameterName='zmin')
5010 value1 = opObj.getParameterValue(parameterName='zmin')
4716 value1 = str(value1)
5011 value1 = str(value1)
4717 value2 = opObj.getParameterObj(parameterName='zmax')
5012 value2 = opObj.getParameterObj(parameterName='zmax')
4718 if value2 == None:
5013 if value2 == None:
4719 fdBrange = None
5014 fdBrange = None
4720 else:
5015 else:
4721 value2 = opObj.getParameterValue(parameterName='zmax')
5016 value2 = opObj.getParameterValue(parameterName='zmax')
4722 value2 = str(value2)
5017 value2 = str(value2)
4723 value = value1 + "," + value2
5018 value = value1 + "," + value2
4724 dbrange = value
5019 dbrange = value
4725 self.bufferSpectra("Coherence Map Plot", "Magnitud", dbrange)
5020 self.bufferSpectra("Coherence Map Plot", "Magnitud", dbrange)
4726
5021
4727 parmObj = opObj.getParameterObj(parameterName="figpath")
5022 parmObj = opObj.getParameterObj(parameterName="figpath")
4728 if parmObj == None:
5023 if parmObj == None:
4729 path = None
5024 path = None
4730 else:
5025 else:
4731 path = opObj.getParameterValue(parameterName='figpath')
5026 path = opObj.getParameterValue(parameterName='figpath')
4732 self.bufferSpectra("Coherence Map Plot", "Save Path", path)
5027 self.bufferSpectra("Coherence Map Plot", "Save Path", path)
4733
5028
4734 parmObj = opObj.getParameterObj(parameterName="ftp")
5029 parmObj = opObj.getParameterObj(parameterName="ftp")
4735 if parmObj == None:
5030 if parmObj == None:
4736 status = 'disable'
5031 status = 'disable'
4737 else:
5032 else:
4738 status = 'enable'
5033 status = 'enable'
4739 self.bufferSpectra("Coherence Map Plot", "FTP", status)
5034 self.bufferSpectra("Coherence Map Plot", "FTP", status)
4740 self.showWr_Period(puObj, opObj, nameplotop="Coherence Map Plot")
5035 self.showWr_Period(puObj, opObj, nameplotop="Coherence Map Plot")
4741 # self.saveFTPvalues(opObj)
5036 # self.saveFTPvalues(opObj)
4742
5037
4743
5038
4744 opObj = puObj.getOperationObj(name='PowerProfilePlot')
5039 opObj = puObj.getOperationObj(name='PowerProfilePlot')
4745 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
5040 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
4746 if opObj == None:
5041 if opObj == None:
4747 self.specGraphPowerprofile.setCheckState(0)
5042 self.specGraphPowerprofile.setCheckState(0)
4748 operationPowerProfilePlot = "Disabled"
5043 operationPowerProfilePlot = "Disabled"
4749 channelList = None
5044 channelList = None
4750 freq_vel = None
5045 freq_vel = None
4751 heightsrange = None
5046 heightsrange = None
4752 else:
5047 else:
4753 operationPowerProfilePlot = "Enable"
5048 operationPowerProfilePlot = "Enable"
4754 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
5049 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
4755 self.bufferSpectra("PowerProfile Plot", "Operation", operationPowerProfilePlot)
5050 self.bufferSpectra("PowerProfile Plot", "Operation", operationPowerProfilePlot)
4756 parmObj = opObj.getParameterObj(parameterName='channelList')
5051 parmObj = opObj.getParameterObj(parameterName='channelList')
4757 if parmObj == None:
5052 if parmObj == None:
4758 channelListSpectraPlot = None
5053 channelListSpectraPlot = None
4759 else:
5054 else:
4760 value = opObj.getParameterValue(parameterName='channelList')
5055 value = opObj.getParameterValue(parameterName='channelList')
4761 channelListSpectraPlot = str(value)[1:-1]
5056 channelListSpectraPlot = str(value)[1:-1]
4762 self.bufferSpectra("PowerProfile Plot", "Channel List", channelListSpectraPlot)
5057 self.bufferSpectra("PowerProfile Plot", "Channel List", channelListSpectraPlot)
4763
5058
4764
5059
4765 value1 = opObj.getParameterObj(parameterName='xmin')
5060 value1 = opObj.getParameterObj(parameterName='xmin')
4766 if value1 == None:
5061 if value1 == None:
4767 freq_vel = None
5062 freq_vel = None
4768 else:
5063 else:
4769 value1 = opObj.getParameterValue(parameterName='xmin')
5064 value1 = opObj.getParameterValue(parameterName='xmin')
4770 value1 = str(value1)
5065 value1 = str(value1)
4771 value2 = opObj.getParameterObj(parameterName='xmax')
5066 value2 = opObj.getParameterObj(parameterName='xmax')
4772 if value2 == None:
5067 if value2 == None:
4773 freq_vel = None
5068 freq_vel = None
4774 else:
5069 else:
4775 value2 = opObj.getParameterValue(parameterName='xmax')
5070 value2 = opObj.getParameterValue(parameterName='xmax')
4776 value2 = str(value2)
5071 value2 = str(value2)
4777 value = value1 + "," + value2
5072 value = value1 + "," + value2
4778 dbrange = value
5073 dbrange = value
4779 self.bufferSpectra("PowerProfile Plot", "dbRange", dbrange)
5074 self.bufferSpectra("PowerProfile Plot", "dbRange", dbrange)
4780
5075
4781 value1 = opObj.getParameterObj(parameterName='ymin')
5076 value1 = opObj.getParameterObj(parameterName='ymin')
4782 if value1 == None:
5077 if value1 == None:
4783 heightsrange = None
5078 heightsrange = None
4784 else:
5079 else:
4785 value1 = opObj.getParameterValue(parameterName='ymin')
5080 value1 = opObj.getParameterValue(parameterName='ymin')
4786 value1 = str(value1)
5081 value1 = str(value1)
4787 value2 = opObj.getParameterObj(parameterName='ymax')
5082 value2 = opObj.getParameterObj(parameterName='ymax')
4788 if value2 == None:
5083 if value2 == None:
4789 fheightsrange = None
5084 fheightsrange = None
4790 else:
5085 else:
4791 value2 = opObj.getParameterValue(parameterName='ymax')
5086 value2 = opObj.getParameterValue(parameterName='ymax')
4792 value2 = str(value2)
5087 value2 = str(value2)
4793 value = value1 + "," + value2
5088 value = value1 + "," + value2
4794 heightsrange = value
5089 heightsrange = value
4795 self.bufferSpectra("PowerProfile Plot", "Height Range", heightsrange)
5090 self.bufferSpectra("PowerProfile Plot", "Height Range", heightsrange)
4796
5091
4797
5092
4798 parmObj = opObj.getParameterObj(parameterName="figpath")
5093 parmObj = opObj.getParameterObj(parameterName="figpath")
4799 if parmObj == None:
5094 if parmObj == None:
4800 path = None
5095 path = None
4801 else:
5096 else:
4802 path = opObj.getParameterValue(parameterName='figpath')
5097 path = opObj.getParameterValue(parameterName='figpath')
4803 self.bufferSpectra("PowerProfile Plot", "Save Path", path)
5098 self.bufferSpectra("PowerProfile Plot", "Save Path", path)
4804
5099
4805 parmObj = opObj.getParameterObj(parameterName="ftp")
5100 parmObj = opObj.getParameterObj(parameterName="ftp")
4806 if parmObj == None:
5101 if parmObj == None:
4807 status = 'disable'
5102 status = 'disable'
4808 else:
5103 else:
4809 status = 'enable'
5104 status = 'enable'
4810 self.bufferSpectra("PowerProfile Plot", "FTP", status)
5105 self.bufferSpectra("PowerProfile Plot", "FTP", status)
4811 self.showWr_Period(puObj, opObj, nameplotop="PowerProfile Plot")
5106 self.showWr_Period(puObj, opObj, nameplotop="PowerProfile Plot")
4812 # self.saveFTPvalues(opObj)
5107 # self.saveFTPvalues(opObj)
4813
5108
4814 # noise
5109 # noise
4815 opObj = puObj.getOperationObj(name='Noise')
5110 opObj = puObj.getOperationObj(name='Noise')
4816 # opObj = puObj.getOpObjfromParamValue(value="Noise")
5111 # opObj = puObj.getOpObjfromParamValue(value="Noise")
4817 if opObj == None:
5112 if opObj == None:
4818 self.specGraphCebRTInoise.setCheckState(0)
5113 self.specGraphCebRTInoise.setCheckState(0)
4819 operationRTINoise = "Disabled"
5114 operationRTINoise = "Disabled"
4820 channelList = None
5115 channelList = None
4821 freq_vel = None
5116 freq_vel = None
4822 dbRange = None
5117 dbRange = None
4823 else:
5118 else:
4824 operationRTINoise = "Enable"
5119 operationRTINoise = "Enable"
4825 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
5120 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
4826 self.bufferSpectra("Noise Plot", "Operation", operationRTINoise)
5121 self.bufferSpectra("Noise Plot", "Operation", operationRTINoise)
4827 parmObj = opObj.getParameterObj(parameterName='channelList')
5122 parmObj = opObj.getParameterObj(parameterName='channelList')
4828 if parmObj == None:
5123 if parmObj == None:
4829 channelListRTINoise = None
5124 channelListRTINoise = None
4830 else:
5125 else:
4831 value = opObj.getParameterValue(parameterName='channelList')
5126 value = opObj.getParameterValue(parameterName='channelList')
4832 channelListRTINoise = str(value)[1:-1]
5127 channelListRTINoise = str(value)[1:-1]
4833 self.bufferSpectra("Noise Plot", "Channel List", channelListRTINoise)
5128 self.bufferSpectra("Noise Plot", "Channel List", channelListRTINoise)
4834
5129
4835
5130
4836 value1 = opObj.getParameterObj(parameterName='xmin')
5131 value1 = opObj.getParameterObj(parameterName='xmin')
4837 if value1 == None:
5132 if value1 == None:
4838 freq_vel = None
5133 freq_vel = None
4839 else:
5134 else:
4840 value1 = opObj.getParameterValue(parameterName='xmin')
5135 value1 = opObj.getParameterValue(parameterName='xmin')
4841 value1 = str(value1)
5136 value1 = str(value1)
4842 value2 = opObj.getParameterObj(parameterName='xmax')
5137 value2 = opObj.getParameterObj(parameterName='xmax')
4843 if value2 == None:
5138 if value2 == None:
4844 freq_vel = None
5139 freq_vel = None
4845 else:
5140 else:
4846 value2 = opObj.getParameterValue(parameterName='xmax')
5141 value2 = opObj.getParameterValue(parameterName='xmax')
4847 value2 = str(value2)
5142 value2 = str(value2)
4848 value = value1 + "," + value2
5143 value = value1 + "," + value2
4849 tmintmax = value
5144 tmintmax = value
4850 self.bufferSpectra("Noise Plot", "Tmin,Tmax", tmintmax)
5145 self.bufferSpectra("Noise Plot", "Tmin,Tmax", tmintmax)
4851
5146
4852 parmObj = opObj.getParameterObj(parameterName='timerange')
5147 parmObj = opObj.getParameterObj(parameterName='timerange')
4853 if parmObj == None:
5148 if parmObj == None:
4854 timerange = None
5149 timerange = None
4855 else:
5150 else:
4856 value = opObj.getParameterValue(parameterName='timerange')
5151 value = opObj.getParameterValue(parameterName='timerange')
4857 timerange = str(value)
5152 timerange = str(value)
4858 self.bufferSpectra("Noise Plot", "Time Range", timerange)
5153 self.bufferSpectra("Noise Plot", "Time Range", timerange)
4859
5154
4860
5155
4861
5156
4862 value1 = opObj.getParameterObj(parameterName='ymin')
5157 value1 = opObj.getParameterObj(parameterName='ymin')
4863 if value1 == None:
5158 if value1 == None:
4864 DBrange = None
5159 DBrange = None
4865 else:
5160 else:
4866 value1 = opObj.getParameterValue(parameterName='ymin')
5161 value1 = opObj.getParameterValue(parameterName='ymin')
4867 value1 = str(value1)
5162 value1 = str(value1)
4868 value2 = opObj.getParameterObj(parameterName='ymax')
5163 value2 = opObj.getParameterObj(parameterName='ymax')
4869 if value2 == None:
5164 if value2 == None:
4870 fdBrange = None
5165 fdBrange = None
4871 else:
5166 else:
4872 value2 = opObj.getParameterValue(parameterName='ymax')
5167 value2 = opObj.getParameterValue(parameterName='ymax')
4873 value2 = str(value2)
5168 value2 = str(value2)
4874 value = value1 + "," + value2
5169 value = value1 + "," + value2
4875 dBrange = value
5170 dBrange = value
4876 self.bufferSpectra("Noise Plot", "dB Range", dBrange)
5171 self.bufferSpectra("Noise Plot", "dB Range", dBrange)
4877
5172
4878 parmObj = opObj.getParameterObj(parameterName="figpath")
5173 parmObj = opObj.getParameterObj(parameterName="figpath")
4879 if parmObj == None:
5174 if parmObj == None:
4880 path = None
5175 path = None
4881 else:
5176 else:
4882 path = opObj.getParameterValue(parameterName='figpath')
5177 path = opObj.getParameterValue(parameterName='figpath')
4883 self.bufferSpectra("Noise Plot", "Save Path", path)
5178 self.bufferSpectra("Noise Plot", "Save Path", path)
4884
5179
4885 parmObj = opObj.getParameterObj(parameterName="ftp")
5180 parmObj = opObj.getParameterObj(parameterName="ftp")
4886 if parmObj == None:
5181 if parmObj == None:
4887 status = 'disable'
5182 status = 'disable'
4888 else:
5183 else:
4889 status = 'enable'
5184 status = 'enable'
4890 self.bufferSpectra("Noise Plot", "FTP", status)
5185 self.bufferSpectra("Noise Plot", "FTP", status)
4891 self.showWr_Period(puObj, opObj, nameplotop="Noise Plot")
5186 self.showWr_Period(puObj, opObj, nameplotop="Noise Plot")
4892 # self.saveFTPvalues(opObj)
5187 # self.saveFTPvalues(opObj)
4893
5188
4894 # outputSpectraWrite
5189 # outputSpectraWrite
4895 opObj = puObj.getOperationObj(name='SpectraWriter')
5190 opObj = puObj.getOperationObj(name='SpectraWriter')
4896 if opObj == None:
5191 if opObj == None:
4897 pass
5192 pass
4898 else:
5193 else:
4899 operation = 'Enabled'
5194 operation = 'Enabled'
4900 self.bufferSpectra("Output", "Operation", operation)
5195 self.bufferSpectra("Output", "Operation", operation)
4901 value = opObj.getParameterObj(parameterName='path')
5196 value = opObj.getParameterObj(parameterName='path')
4902 if value == None:
5197 if value == None:
4903 path = None
5198 path = None
4904 else:
5199 else:
4905 value = opObj.getParameterValue(parameterName='path')
5200 value = opObj.getParameterValue(parameterName='path')
4906 path = str(value)
5201 path = str(value)
4907 self.bufferSpectra("Output", "Path", path)
5202 self.bufferSpectra("Output", "Path", path)
4908 value = opObj.getParameterObj(parameterName='blocksPerFile')
5203 value = opObj.getParameterObj(parameterName='blocksPerFile')
4909 if value == None:
5204 if value == None:
4910 blocksperfile = None
5205 blocksperfile = None
4911 else:
5206 else:
4912 value = opObj.getParameterValue(parameterName='blocksPerFile')
5207 value = opObj.getParameterValue(parameterName='blocksPerFile')
4913 blocksperfile = str(value)
5208 blocksperfile = str(value)
4914 self.bufferSpectra("Output", "BlocksPerFile", blocksperfile)
5209 self.bufferSpectra("Output", "BlocksPerFile", blocksperfile)
4915 value = opObj.getParameterObj(parameterName='profilesPerBlock')
5210 value = opObj.getParameterObj(parameterName='profilesPerBlock')
4916 if value == None:
5211 if value == None:
4917 profilesPerBlock = None
5212 profilesPerBlock = None
4918 else:
5213 else:
4919 value = opObj.getParameterValue(parameterName='profilesPerBlock')
5214 value = opObj.getParameterValue(parameterName='profilesPerBlock')
4920 profilesPerBlock = str(value)
5215 profilesPerBlock = str(value)
4921 self.bufferSpectra("Output", "ProfilesPerBlock", profilesPerBlock)
5216 self.bufferSpectra("Output", "ProfilesPerBlock", profilesPerBlock)
4922
5217
4923 projectObj = self.getSelectedProjectObj()
5218 projectObj = self.getSelectedProjectObj()
4924 ftpProcUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
5219 ftpProcUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
4925
5220
4926 if ftpProcUnitConfObj:
5221 if ftpProcUnitConfObj:
4927
5222
4928 opObj = ftpProcUnitConfObj.getOperationObj(name='run')
5223 opObj = ftpProcUnitConfObj.getOperationObj(name='run')
4929
5224
4930 server = opObj.getParameterValue(parameterName='server')
5225 server = opObj.getParameterValue(parameterName='server')
4931 folder = opObj.getParameterValue(parameterName='remotefolder')
5226 folder = opObj.getParameterValue(parameterName='remotefolder')
4932 username = opObj.getParameterValue(parameterName='username')
5227 username = opObj.getParameterValue(parameterName='username')
4933 password = opObj.getParameterValue(parameterName='password')
5228 password = opObj.getParameterValue(parameterName='password')
4934 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5229 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
4935 exp_code = opObj.getParameterValue(parameterName='exp_code')
5230 exp_code = opObj.getParameterValue(parameterName='exp_code')
4936 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5231 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
4937 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5232 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
4938 localfolder = opObj.getParameterValue(parameterName='localfolder')
5233 localfolder = opObj.getParameterValue(parameterName='localfolder')
4939
5234
4940 self.bufferSpectra("FTP", "Server", server)
5235 self.bufferSpectra("FTP", "Server", server)
4941 self.bufferSpectra("FTP", "Remote folder", folder)
5236 self.bufferSpectra("FTP", "Remote folder", folder)
4942 self.bufferSpectra("FTP", "Local folder", localfolder)
5237 self.bufferSpectra("FTP", "Local folder", localfolder)
4943 self.bufferSpectra("FTP", "Username", username)
5238 self.bufferSpectra("FTP", "Username", username)
4944 self.bufferSpectra("FTP", "Password", '*'*len(password))
5239 self.bufferSpectra("FTP", "Password", '*'*len(password))
4945 self.bufferSpectra("FTP", "Ftp_wei", ftp_wei)
5240 self.bufferSpectra("FTP", "Ftp_wei", ftp_wei)
4946 self.bufferSpectra("FTP", "Exp_code", exp_code)
5241 self.bufferSpectra("FTP", "Exp_code", exp_code)
4947 self.bufferSpectra("FTP", "Sub_exp_code", sub_exp_code)
5242 self.bufferSpectra("FTP", "Sub_exp_code", sub_exp_code)
4948 self.bufferSpectra("FTP", "Plot_pos", plot_pos)
5243 self.bufferSpectra("FTP", "Plot_pos", plot_pos)
4949
5244
4950 # set model PU Properties
5245 # set model PU Properties
4951
5246
4952 self.propertiesModel = treeModel()
5247 self.propertiesModel = TreeModel()
4953 self.propertiesModel.showPUSpectraParms(self.specProperCaracteristica, self.specProperPrincipal, self.specProperDescripcion)
5248 self.propertiesModel.showProperties(self.specProperCaracteristica, self.specProperPrincipal, self.specProperDescripcion)
4954
5249
4955 self.treeProjectProperties.setModel(self.propertiesModel)
5250 self.treeProjectProperties.setModel(self.propertiesModel)
4956 self.treeProjectProperties.expandAll()
5251 self.treeProjectProperties.expandAll()
4957 self.treeProjectProperties.allColumnsShowFocus()
5252 self.treeProjectProperties.allColumnsShowFocus()
4958 self.treeProjectProperties.resizeColumnToContents(0)
5253 self.treeProjectProperties.resizeColumnToContents(0)
4959 self.treeProjectProperties.resizeColumnToContents(1)
5254 self.treeProjectProperties.resizeColumnToContents(1)
4960
5255
4961 self.specProperCaracteristica = []
5256 self.specProperCaracteristica = []
4962 self.specProperDescripcion = []
5257 self.specProperDescripcion = []
4963 self.specProperPrincipal = []
5258 self.specProperPrincipal = []
4964
5259
4965
5260
4966 def bufferSpectraHeis(self, caracteristica, principal, description):
5261 def bufferSpectraHeis(self, caracteristica, principal, description):
4967 self.specHeisProperCaracteristica.append(caracteristica)
5262 self.specHeisProperCaracteristica.append(caracteristica)
4968 self.specHeisProperPrincipal.append(principal)
5263 self.specHeisProperPrincipal.append(principal)
4969 self.specHeisProperDescripcion.append(description)
5264 self.specHeisProperDescripcion.append(description)
4970 return self.specHeisProperCaracteristica, self.specHeisProperPrincipal, self.specHeisProperDescripcion
5265 return self.specHeisProperCaracteristica, self.specHeisProperPrincipal, self.specHeisProperDescripcion
4971
5266
4972
5267
4973 def showPUSpectraHeisProperties(self, puObj):
5268 def showPUSpectraHeisProperties(self, puObj):
4974 type = puObj.name
5269 type = puObj.name
4975 self.bufferSpectraHeis("Processing Unit", "Type", type)
5270 self.bufferSpectraHeis("Processing Unit", "Type", type)
4976
5271
4977 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
5272 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
4978 if opObj == None:
5273 if opObj == None:
4979 incoherentintegration = None
5274 incoherentintegration = None
4980 else:
5275 else:
4981 value = opObj.getParameterValue(parameterName='timeInterval')
5276 value = opObj.getParameterValue(parameterName='timeInterval')
4982 value = float(value)
5277 value = float(value)
4983 incoherentintegration = str(value)
5278 incoherentintegration = str(value)
4984 self.bufferSpectraHeis("Processing Unit", "Incoherent Integration", incoherentintegration)
5279 self.bufferSpectraHeis("Processing Unit", "Incoherent Integration", incoherentintegration)
4985 # spectraheis graph
5280 # spectraheis graph
4986 opObj = puObj.getOperationObj(name='SpectraHeisScope')
5281 opObj = puObj.getOperationObj(name='SpectraHeisScope')
4987 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
5282 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
4988 if opObj == None:
5283 if opObj == None:
4989 self.specHeisGraphCebSpectraplot.setCheckState(0)
5284 self.specHeisGraphCebSpectraplot.setCheckState(0)
4990 operationSpectraHeisPlot = "Disabled"
5285 operationSpectraHeisPlot = "Disabled"
4991 xmin_xmax = None
5286 xmin_xmax = None
4992 ymin_ymax = None
5287 ymin_ymax = None
4993 channelListSpectraPlot = None
5288 channelListSpectraPlot = None
4994 else:
5289 else:
4995 operationSpectraHeisPlot = "Enable"
5290 operationSpectraHeisPlot = "Enable"
4996 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
5291 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
4997 self.bufferSpectraHeis("SpectraHeis Plot", "Operation", operationSpectraHeisPlot)
5292 self.bufferSpectraHeis("SpectraHeis Plot", "Operation", operationSpectraHeisPlot)
4998 parmObj = opObj.getParameterObj(parameterName='channelList')
5293 parmObj = opObj.getParameterObj(parameterName='channelList')
4999 if parmObj == None:
5294 if parmObj == None:
5000 channelListSpectraPlot = None
5295 channelListSpectraPlot = None
5001 else:
5296 else:
5002 value = opObj.getParameterValue(parameterName='channelList')
5297 value = opObj.getParameterValue(parameterName='channelList')
5003 channelListSpectraPlot = str(value)[1:-1]
5298 channelListSpectraPlot = str(value)[1:-1]
5004 self.bufferSpectraHeis("SpectraHeis Plot", "Channel List", channelListSpectraPlot)
5299 self.bufferSpectraHeis("SpectraHeis Plot", "Channel List", channelListSpectraPlot)
5005
5300
5006
5301
5007 value1 = opObj.getParameterObj(parameterName='xmin')
5302 value1 = opObj.getParameterObj(parameterName='xmin')
5008 if value1 == None:
5303 if value1 == None:
5009 xmin_xmax = None
5304 xmin_xmax = None
5010 else:
5305 else:
5011 value1 = opObj.getParameterValue(parameterName='xmin')
5306 value1 = opObj.getParameterValue(parameterName='xmin')
5012 value1 = str(value1)
5307 value1 = str(value1)
5013 value2 = opObj.getParameterObj(parameterName='xmax')
5308 value2 = opObj.getParameterObj(parameterName='xmax')
5014 if value2 == None:
5309 if value2 == None:
5015 xmin_xmax = None
5310 xmin_xmax = None
5016 else:
5311 else:
5017 value2 = opObj.getParameterValue(parameterName='xmax')
5312 value2 = opObj.getParameterValue(parameterName='xmax')
5018 value2 = str(value2)
5313 value2 = str(value2)
5019 value = value1 + "," + value2
5314 value = value1 + "," + value2
5020 xmin_xmax = value
5315 xmin_xmax = value
5021 self.bufferSpectraHeis("SpectraHeis Plot", "Xmin-Xmax", xmin_xmax)
5316 self.bufferSpectraHeis("SpectraHeis Plot", "Xmin-Xmax", xmin_xmax)
5022
5317
5023 value1 = opObj.getParameterObj(parameterName='ymin')
5318 value1 = opObj.getParameterObj(parameterName='ymin')
5024 if value1 == None:
5319 if value1 == None:
5025 ymin_ymax = None
5320 ymin_ymax = None
5026 else:
5321 else:
5027 value1 = opObj.getParameterValue(parameterName='ymin')
5322 value1 = opObj.getParameterValue(parameterName='ymin')
5028 value1 = str(value1)
5323 value1 = str(value1)
5029 value2 = opObj.getParameterObj(parameterName='ymax')
5324 value2 = opObj.getParameterObj(parameterName='ymax')
5030 if value2 == None:
5325 if value2 == None:
5031 ymin_ymax = None
5326 ymin_ymax = None
5032 else:
5327 else:
5033 value2 = opObj.getParameterValue(parameterName='ymax')
5328 value2 = opObj.getParameterValue(parameterName='ymax')
5034 value2 = str(value2)
5329 value2 = str(value2)
5035 value = value1 + "," + value2
5330 value = value1 + "," + value2
5036 ymin_ymax = value
5331 ymin_ymax = value
5037 self.bufferSpectraHeis("SpectraHeis Plot", "Ymin-Ymax", ymin_ymax)
5332 self.bufferSpectraHeis("SpectraHeis Plot", "Ymin-Ymax", ymin_ymax)
5038
5333
5039 parmObj = opObj.getParameterObj(parameterName="figpath")
5334 parmObj = opObj.getParameterObj(parameterName="figpath")
5040 if parmObj == None:
5335 if parmObj == None:
5041 path = None
5336 path = None
5042 else:
5337 else:
5043 path = opObj.getParameterValue(parameterName='figpath')
5338 path = opObj.getParameterValue(parameterName='figpath')
5044 self.bufferSpectraHeis("SpectraHeis Plot", "Save Path", path)
5339 self.bufferSpectraHeis("SpectraHeis Plot", "Save Path", path)
5045
5340
5046 parmObj = opObj.getParameterObj(parameterName="ftp")
5341 parmObj = opObj.getParameterObj(parameterName="ftp")
5047 if parmObj == None:
5342 if parmObj == None:
5048 status = 'disable'
5343 status = 'disable'
5049 else:
5344 else:
5050 status = 'enable'
5345 status = 'enable'
5051 self.bufferSpectraHeis("SpectraHeis Plot", "FTP", status)
5346 self.bufferSpectraHeis("SpectraHeis Plot", "FTP", status)
5052 self.showWr_Period(puObj, opObj, nameplotop="SpectraHeis Plot")
5347 self.showWr_Period(puObj, opObj, nameplotop="SpectraHeis Plot")
5053 # self.saveFTPvalues(opObj)
5348 # self.saveFTPvalues(opObj)
5054
5349
5055 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
5350 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
5056 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
5351 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
5057 if opObj == None:
5352 if opObj == None:
5058 self.specHeisGraphCebRTIplot.setCheckState(0)
5353 self.specHeisGraphCebRTIplot.setCheckState(0)
5059 operationRTIPlot = "Disabled"
5354 operationRTIPlot = "Disabled"
5060 channelList = None
5355 channelList = None
5061 freq_vel = None
5356 freq_vel = None
5062 heightsrange = None
5357 heightsrange = None
5063 else:
5358 else:
5064 operationRTIPlot = "Enable"
5359 operationRTIPlot = "Enable"
5065 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
5360 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
5066 self.bufferSpectraHeis("RTIHeis Plot", "Operation", operationRTIPlot)
5361 self.bufferSpectraHeis("RTIHeis Plot", "Operation", operationRTIPlot)
5067 parmObj = opObj.getParameterObj(parameterName='channelList')
5362 parmObj = opObj.getParameterObj(parameterName='channelList')
5068 if parmObj == None:
5363 if parmObj == None:
5069 channelListRTIPlot = None
5364 channelListRTIPlot = None
5070 else:
5365 else:
5071 value = opObj.getParameterValue(parameterName='channelList')
5366 value = opObj.getParameterValue(parameterName='channelList')
5072 channelListRTIPlot = str(value)[1:-1]
5367 channelListRTIPlot = str(value)[1:-1]
5073 self.bufferSpectraHeis("RTIHeis Plot", "Channel List", channelListRTIPlot)
5368 self.bufferSpectraHeis("RTIHeis Plot", "Channel List", channelListRTIPlot)
5074
5369
5075
5370
5076 value1 = opObj.getParameterObj(parameterName='xmin')
5371 value1 = opObj.getParameterObj(parameterName='xmin')
5077 if value1 == None:
5372 if value1 == None:
5078 freq_vel = None
5373 freq_vel = None
5079 else:
5374 else:
5080 value1 = opObj.getParameterValue(parameterName='xmin')
5375 value1 = opObj.getParameterValue(parameterName='xmin')
5081 value1 = str(value1)
5376 value1 = str(value1)
5082 value2 = opObj.getParameterObj(parameterName='xmax')
5377 value2 = opObj.getParameterObj(parameterName='xmax')
5083 if value2 == None:
5378 if value2 == None:
5084 freq_vel = None
5379 freq_vel = None
5085 else:
5380 else:
5086 value2 = opObj.getParameterValue(parameterName='xmax')
5381 value2 = opObj.getParameterValue(parameterName='xmax')
5087 value2 = str(value2)
5382 value2 = str(value2)
5088 value = value1 + "," + value2
5383 value = value1 + "," + value2
5089 tmintmax = value
5384 tmintmax = value
5090 self.bufferSpectraHeis("RTIHeis Plot", "Tmin,Tmax", tmintmax)
5385 self.bufferSpectraHeis("RTIHeis Plot", "Tmin,Tmax", tmintmax)
5091
5386
5092 parmObj = opObj.getParameterObj(parameterName='timerange')
5387 parmObj = opObj.getParameterObj(parameterName='timerange')
5093 if parmObj == None:
5388 if parmObj == None:
5094 timerange = None
5389 timerange = None
5095 else:
5390 else:
5096 value = opObj.getParameterValue(parameterName='timerange')
5391 value = opObj.getParameterValue(parameterName='timerange')
5097 timerange = str(value)
5392 timerange = str(value)
5098 self.bufferSpectraHeis("RTIHeis Plot", "Time Range", timerange)
5393 self.bufferSpectraHeis("RTIHeis Plot", "Time Range", timerange)
5099
5394
5100 value1 = opObj.getParameterObj(parameterName='ymin')
5395 value1 = opObj.getParameterObj(parameterName='ymin')
5101 if value1 == None:
5396 if value1 == None:
5102 heightsrange = None
5397 heightsrange = None
5103 else:
5398 else:
5104 value1 = opObj.getParameterValue(parameterName='ymin')
5399 value1 = opObj.getParameterValue(parameterName='ymin')
5105 value1 = str(value1)
5400 value1 = str(value1)
5106 value2 = opObj.getParameterObj(parameterName='ymax')
5401 value2 = opObj.getParameterObj(parameterName='ymax')
5107 if value2 == None:
5402 if value2 == None:
5108 fheightsrange = None
5403 fheightsrange = None
5109 else:
5404 else:
5110 value2 = opObj.getParameterValue(parameterName='ymax')
5405 value2 = opObj.getParameterValue(parameterName='ymax')
5111 value2 = str(value2)
5406 value2 = str(value2)
5112 value = value1 + "," + value2
5407 value = value1 + "," + value2
5113 heightsrange = value
5408 heightsrange = value
5114 self.bufferSpectraHeis("RTIHeis Plot", "Ymin-Ymax", heightsrange)
5409 self.bufferSpectraHeis("RTIHeis Plot", "Ymin-Ymax", heightsrange)
5115
5410
5116 parmObj = opObj.getParameterObj(parameterName="figpath")
5411 parmObj = opObj.getParameterObj(parameterName="figpath")
5117 if parmObj == None:
5412 if parmObj == None:
5118 path = None
5413 path = None
5119 else:
5414 else:
5120 path = opObj.getParameterValue(parameterName='figpath')
5415 path = opObj.getParameterValue(parameterName='figpath')
5121 self.bufferSpectraHeis("RTIHeis Plot", "Save Path", path)
5416 self.bufferSpectraHeis("RTIHeis Plot", "Save Path", path)
5122
5417
5123 parmObj = opObj.getParameterObj(parameterName="ftp")
5418 parmObj = opObj.getParameterObj(parameterName="ftp")
5124 if parmObj == None:
5419 if parmObj == None:
5125 status = 'disable'
5420 status = 'disable'
5126 else:
5421 else:
5127 status = 'enable'
5422 status = 'enable'
5128 self.bufferSpectraHeis("RTIHeis Plot", "FTP", status)
5423 self.bufferSpectraHeis("RTIHeis Plot", "FTP", status)
5129 self.showWr_Period(puObj, opObj, nameplotop="RTIHeis Plot")
5424 self.showWr_Period(puObj, opObj, nameplotop="RTIHeis Plot")
5130 # self.saveFTPvalues(opObj)
5425 # self.saveFTPvalues(opObj)
5131
5426
5132 # outputSpectraHeisWrite
5427 # outputSpectraHeisWrite
5133 opObj = puObj.getOperationObj(name='FitsWriter')
5428 opObj = puObj.getOperationObj(name='FitsWriter')
5134 if opObj == None:
5429 if opObj == None:
5135 pass
5430 pass
5136 else:
5431 else:
5137 operation = 'Enabled'
5432 operation = 'Enabled'
5138 self.bufferSpectraHeis("Output", "Operation", operation)
5433 self.bufferSpectraHeis("Output", "Operation", operation)
5139 value = opObj.getParameterObj(parameterName='path')
5434 value = opObj.getParameterObj(parameterName='path')
5140 if value == None:
5435 if value == None:
5141 path = None
5436 path = None
5142 else:
5437 else:
5143 value = opObj.getParameterValue(parameterName='path')
5438 value = opObj.getParameterValue(parameterName='path')
5144 path = str(value)
5439 path = str(value)
5145 self.bufferSpectraHeis("Output", "Path", path)
5440 self.bufferSpectraHeis("Output", "Path", path)
5146 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
5441 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
5147 if value == None:
5442 if value == None:
5148 blocksperfile = None
5443 blocksperfile = None
5149 else:
5444 else:
5150 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
5445 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
5151 blocksperfile = str(value)
5446 blocksperfile = str(value)
5152 self.bufferSpectraHeis("Output", "BlocksPerFile", blocksperfile)
5447 self.bufferSpectraHeis("Output", "BlocksPerFile", blocksperfile)
5153 value = opObj.getParameterObj(parameterName='metadatafile')
5448 value = opObj.getParameterObj(parameterName='metadatafile')
5154 if value == None:
5449 if value == None:
5155 metadata = None
5450 metadata = None
5156 else:
5451 else:
5157 value = opObj.getParameterValue(parameterName='metadatafile')
5452 value = opObj.getParameterValue(parameterName='metadatafile')
5158 metadata = str(value)
5453 metadata = str(value)
5159 self.bufferSpectraHeis("Output", "Metadata", metadata)
5454 self.bufferSpectraHeis("Output", "Metadata", metadata)
5160
5455
5161 projectObj = self.getSelectedProjectObj()
5456 projectObj = self.getSelectedProjectObj()
5162 ftpProcUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
5457 ftpProcUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
5163
5458
5164 if ftpProcUnitConfObj:
5459 if ftpProcUnitConfObj:
5165
5460
5166 opObj = ftpProcUnitConfObj.getOperationObj(name='run')
5461 opObj = ftpProcUnitConfObj.getOperationObj(name='run')
5167
5462
5168 server = opObj.getParameterValue(parameterName='server')
5463 server = opObj.getParameterValue(parameterName='server')
5169 folder = opObj.getParameterValue(parameterName='folder')
5464 folder = opObj.getParameterValue(parameterName='folder')
5170 username = opObj.getParameterValue(parameterName='username')
5465 username = opObj.getParameterValue(parameterName='username')
5171 password = opObj.getParameterValue(parameterName='password')
5466 password = opObj.getParameterValue(parameterName='password')
5172 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5467 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5173 exp_code = opObj.getParameterValue(parameterName='exp_code')
5468 exp_code = opObj.getParameterValue(parameterName='exp_code')
5174 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5469 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5175 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5470 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5176 localfolder = opObj.getParameterValue(parameterName='localfolder')
5471 localfolder = opObj.getParameterValue(parameterName='localfolder')
5177
5472
5178 self.bufferSpectraHeis("FTP", "Server", server)
5473 self.bufferSpectraHeis("FTP", "Server", server)
5179 self.bufferSpectraHeis("FTP", "Remote folder", folder)
5474 self.bufferSpectraHeis("FTP", "Remote folder", folder)
5180 self.bufferSpectraHeis("FTP", "Local folder", localfolder)
5475 self.bufferSpectraHeis("FTP", "Local folder", localfolder)
5181 self.bufferSpectraHeis("FTP", "Username", username)
5476 self.bufferSpectraHeis("FTP", "Username", username)
5182 self.bufferSpectraHeis("FTP", "Password", '*'*len(password))
5477 self.bufferSpectraHeis("FTP", "Password", '*'*len(password))
5183 self.bufferSpectraHeis("FTP", "Ftp_wei", ftp_wei)
5478 self.bufferSpectraHeis("FTP", "Ftp_wei", ftp_wei)
5184 self.bufferSpectraHeis("FTP", "Exp_code", exp_code)
5479 self.bufferSpectraHeis("FTP", "Exp_code", exp_code)
5185 self.bufferSpectraHeis("FTP", "Sub_exp_code", sub_exp_code)
5480 self.bufferSpectraHeis("FTP", "Sub_exp_code", sub_exp_code)
5186 self.bufferSpectraHeis("FTP", "Plot_pos", plot_pos)
5481 self.bufferSpectraHeis("FTP", "Plot_pos", plot_pos)
5187
5482
5188 # set model PU Properties
5483 # set model PU Properties
5189
5484
5190 self.propertiesModel = treeModel()
5485 self.propertiesModel = TreeModel()
5191 self.propertiesModel.showPUSpectraHeisParms(self.specHeisProperCaracteristica, self.specHeisProperPrincipal, self.specHeisProperDescripcion)
5486 self.propertiesModel.showProperties(self.specHeisProperCaracteristica, self.specHeisProperPrincipal, self.specHeisProperDescripcion)
5192
5487
5193 self.treeProjectProperties.setModel(self.propertiesModel)
5488 self.treeProjectProperties.setModel(self.propertiesModel)
5194 self.treeProjectProperties.expandAll()
5489 self.treeProjectProperties.expandAll()
5195 self.treeProjectProperties.allColumnsShowFocus()
5490 self.treeProjectProperties.allColumnsShowFocus()
5196 self.treeProjectProperties.resizeColumnToContents(0)
5491 self.treeProjectProperties.resizeColumnToContents(0)
5197 self.treeProjectProperties.resizeColumnToContents(1)
5492 self.treeProjectProperties.resizeColumnToContents(1)
5198
5493
5199 self.specHeisProperCaracteristica = []
5494 self.specHeisProperCaracteristica = []
5200 self.specHeisProperDescripcion = []
5495 self.specHeisProperDescripcion = []
5201 self.specHeisProperPrincipal = []
5496 self.specHeisProperPrincipal = []
5202
5497
5203
5498
5204 def showWr_Period(self, puObj, opObj, nameplotop):
5499 def showWr_Period(self, puObj, opObj, nameplotop):
5205 parmObj = opObj.getParameterObj(parameterName='wr_period')
5500 parmObj = opObj.getParameterObj(parameterName='wr_period')
5206 if parmObj == None:
5501 if parmObj == None:
5207 wr_period = None
5502 wr_period = None
5208 else:
5503 else:
5209 value = opObj.getParameterValue(parameterName='wr_period')
5504 value = opObj.getParameterValue(parameterName='wr_period')
5210 wr_period = str(value)
5505 wr_period = str(value)
5211 if puObj.datatype == "Spectra":
5506 if puObj.datatype == "Spectra":
5212 self.bufferSpectra(nameplotop, "wr_period", wr_period)
5507 self.bufferSpectra(nameplotop, "wr_period", wr_period)
5213 if puObj.datatype == "SpectraHeis":
5508 if puObj.datatype == "SpectraHeis":
5214 self.bufferSpectraHeis(nameplotop, "wr_period", wr_period)
5509 self.bufferSpectraHeis(nameplotop, "wr_period", wr_period)
5215
5510
5216 def saveFTPvalues(self, opObj):
5511 def saveFTPvalues(self, opObj):
5217
5512
5218 parmObj = opObj.getParameterObj(parameterName="server")
5513 parmObj = opObj.getParameterObj(parameterName="server")
5219 if parmObj == None:
5514 if parmObj == None:
5220 server = 'jro-app.igp.gob.pe'
5515 server = 'jro-app.igp.gob.pe'
5221 else:
5516 else:
5222 server = opObj.getParameterValue(parameterName='server')
5517 server = opObj.getParameterValue(parameterName='server')
5223
5518
5224 parmObj = opObj.getParameterObj(parameterName="folder")
5519 parmObj = opObj.getParameterObj(parameterName="folder")
5225 if parmObj == None:
5520 if parmObj == None:
5226 folder = '/home/wmaster/graficos'
5521 folder = '/home/wmaster/graficos'
5227 else:
5522 else:
5228 folder = opObj.getParameterValue(parameterName='folder')
5523 folder = opObj.getParameterValue(parameterName='folder')
5229
5524
5230 parmObj = opObj.getParameterObj(parameterName="username")
5525 parmObj = opObj.getParameterObj(parameterName="username")
5231 if parmObj == None:
5526 if parmObj == None:
5232 username = 'wmaster'
5527 username = 'wmaster'
5233 else:
5528 else:
5234 username = opObj.getParameterValue(parameterName='username')
5529 username = opObj.getParameterValue(parameterName='username')
5235
5530
5236 parmObj = opObj.getParameterObj(parameterName="password")
5531 parmObj = opObj.getParameterObj(parameterName="password")
5237 if parmObj == None:
5532 if parmObj == None:
5238 password = 'mst2010vhf'
5533 password = 'mst2010vhf'
5239 else:
5534 else:
5240 password = opObj.getParameterValue(parameterName='password')
5535 password = opObj.getParameterValue(parameterName='password')
5241
5536
5242 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
5537 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
5243 if parmObj == None:
5538 if parmObj == None:
5244 ftp_wei = '0'
5539 ftp_wei = '0'
5245 else:
5540 else:
5246 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5541 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5247
5542
5248 parmObj = opObj.getParameterObj(parameterName="exp_code")
5543 parmObj = opObj.getParameterObj(parameterName="exp_code")
5249 if parmObj == None:
5544 if parmObj == None:
5250 exp_code = '0'
5545 exp_code = '0'
5251 else:
5546 else:
5252 exp_code = opObj.getParameterValue(parameterName='exp_code')
5547 exp_code = opObj.getParameterValue(parameterName='exp_code')
5253
5548
5254 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
5549 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
5255 if parmObj == None:
5550 if parmObj == None:
5256 sub_exp_code = '0'
5551 sub_exp_code = '0'
5257 else:
5552 else:
5258 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5553 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5259
5554
5260 parmObj = opObj.getParameterObj(parameterName="plot_pos")
5555 parmObj = opObj.getParameterObj(parameterName="plot_pos")
5261 if parmObj == None:
5556 if parmObj == None:
5262 plot_pos = '0'
5557 plot_pos = '0'
5263 else:
5558 else:
5264 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5559 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5265
5560
5266 parmObj = opObj.getParameterObj(parameterName="localfolder")
5561 parmObj = opObj.getParameterObj(parameterName="localfolder")
5267 if parmObj == None:
5562 if parmObj == None:
5268 localfolder = None
5563 localfolder = None
5269 else:
5564 else:
5270 localfolder = opObj.getParameterValue(parameterName='localfolder')
5565 localfolder = opObj.getParameterValue(parameterName='localfolder')
5271
5566
5272 parmObj = opObj.getParameterObj(parameterName="extension")
5567 parmObj = opObj.getParameterObj(parameterName="extension")
5273 if parmObj == None:
5568 if parmObj == None:
5274 extension = None
5569 extension = None
5275 else:
5570 else:
5276 extension = opObj.getParameterValue(parameterName='extension')
5571 extension = opObj.getParameterValue(parameterName='extension')
5277
5572
5278 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos,
5573 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos,
5279 localfolder=localfolder,
5574 localfolder=localfolder,
5280 extension=extension)
5575 extension=extension)
5281
5576
5282 def addProject2ProjectExplorer(self, id, name):
5577 def addProject2ProjectExplorer(self, id, name):
5283
5578
5284 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5579 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5285 self.parentItem = self.projectExplorerModel.invisibleRootItem()
5580 self.parentItem = self.projectExplorerModel.invisibleRootItem()
5286 self.parentItem.appendRow(itemTree)
5581 self.parentItem.appendRow(itemTree)
5287 self.parentItem = itemTree
5582 self.parentItem = itemTree
5288 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5583 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5289
5584
5290 self.selectedItemTree = itemTree
5585 self.selectedItemTree = itemTree
5291
5586
5292 self.__itemTreeDict[id] = itemTree
5587 self.__itemTreeDict[id] = itemTree
5293
5588
5294 def addPU2ProjectExplorer(self, id, name):
5589 def addPU2ProjectExplorer(self, id, name):
5295 # id1= round(int(id)/10.)*10
5590 # id1= round(int(id)/10.)*10
5296 # id= int(id)
5591 # id= int(id)
5297 # id=id-id1
5592 # id=id-id1
5298 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5593 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5299
5594
5300 self.parentItem = self.selectedItemTree
5595 self.parentItem = self.selectedItemTree
5301 self.parentItem.appendRow(itemTree)
5596 self.parentItem.appendRow(itemTree)
5302 self.projectExplorerTree.expandAll()
5597 self.projectExplorerTree.expandAll()
5303 self.parentItem = itemTree
5598 self.parentItem = itemTree
5304 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5599 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5305
5600
5306 self.selectedItemTree = itemTree
5601 self.selectedItemTree = itemTree
5307
5602
5308 self.__itemTreeDict[id] = itemTree
5603 self.__itemTreeDict[id] = itemTree
5309
5604
5310 def addPU2PELoadXML(self, id, name, idParent):
5605 def addPU2PELoadXML(self, id, name, inputId):
5311
5606
5312 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5607 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5313 if self.__itemTreeDict.has_key(idParent):
5608
5314 self.parentItem = self.__itemTreeDict[idParent]
5609 if self.__itemTreeDict.has_key(inputId):
5610 self.parentItem = self.__itemTreeDict[inputId]
5315 else:
5611 else:
5316 self.parentItem = self.selectedItemTree
5612 self.parentItem = self.__itemTreeDict[inputId[0]]
5613
5317 self.parentItem.appendRow(itemTree)
5614 self.parentItem.appendRow(itemTree)
5318 self.projectExplorerTree.expandAll()
5615 self.projectExplorerTree.expandAll()
5319 self.parentItem = itemTree
5616 self.parentItem = itemTree
5320 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5617 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5321
5618
5322 self.selectedItemTree = itemTree
5619 self.selectedItemTree = itemTree
5323
5620
5324 self.__itemTreeDict[id] = itemTree
5621 self.__itemTreeDict[id] = itemTree
5325 # print "stop"
5622 # print "stop"
5326
5623
5327 def getSelectedProjectObj(self):
5624 def getSelectedProjectObj(self):
5625 """
5626 Return the current project object selected. If a processing unit is
5627 actually selected this function returns associated project.
5328
5628
5629 None if any project or processing unit is selected
5630 """
5329 for key in self.__itemTreeDict.keys():
5631 for key in self.__itemTreeDict.keys():
5330 if self.__itemTreeDict[key] != self.selectedItemTree:
5632 if self.__itemTreeDict[key] != self.selectedItemTree:
5331 continue
5633 continue
5332
5634
5333 if self.__projectObjDict.has_key(key):
5635 if self.__projectObjDict.has_key(key):
5334 projectObj = self.__projectObjDict[key]
5636 projectObj = self.__projectObjDict[key]
5637 return projectObj
5638
5639 puObj = self.__puObjDict[key]
5640
5641 if puObj.parentId == None:
5642 projectId = puObj.getId()[0]
5335 else:
5643 else:
5336 puObj = self.__puObjDict[key]
5644 projectId = puObj.parentId
5337 if puObj.parentId == None:
5645
5338 id = puObj.getId()[0]
5646 projectObj = self.__projectObjDict[projectId]
5339 else:
5340 id = puObj.parentId
5341 projectObj = self.__projectObjDict[id]
5342
5647
5343 return projectObj
5648 return projectObj
5344
5649
5345 self.showWarning()
5346
5347 return None
5650 return None
5348
5651
5349 def getSelectedPUObj(self):
5652 def getSelectedItemObj(self):
5653 """
5654 Return the current project or processing unit object selected
5350
5655
5656 None if any project or processing unit is selected
5657 """
5351 for key in self.__itemTreeDict.keys():
5658 for key in self.__itemTreeDict.keys():
5352 if self.__itemTreeDict[key] != self.selectedItemTree:
5659 if self.__itemTreeDict[key] != self.selectedItemTree:
5353 continue
5660 continue
5354
5661
5355 if self.__projectObjDict.has_key(key) == True:
5662 if self.__projectObjDict.has_key(key) == True:
5356 fatherObj = self.__projectObjDict[key]
5663 fatherObj = self.__projectObjDict[key]
5357 else:
5664 else:
5358 fatherObj = self.__puObjDict[key]
5665 fatherObj = self.__puObjDict[key]
5359
5666
5360 return fatherObj
5667 return fatherObj
5361
5668
5362 self.showWarning()
5363
5364 return None
5669 return None
5365
5670
5366 def openProject(self):
5671 def openProject(self):
5367
5672
5368 self.actionStart.setEnabled(False)
5673 self.actionStart.setEnabled(False)
5369 self.actionStarToolbar.setEnabled(False)
5674 self.actionStarToolbar.setEnabled(False)
5370
5675
5371 self.create = False
5676 self.create = False
5372 self.frame_2.setEnabled(True)
5677 self.frame_2.setEnabled(True)
5373 home = expanduser("~")
5678
5374 self.dir = os.path.join(home, 'schain_workspace')
5375 # print self.dir
5679 # print self.dir
5376 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.dir, self.tr("Text Files (*.xml)")))
5680 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
5377 self.console.clear()
5681 self.console.clear()
5378 projectObjLoad = Project()
5682 projectObjLoad = Project()
5379 try:
5683 try:
5380 projectObjLoad.readXml(filename)
5684 projectObjLoad.readXml(filename)
5381 except:
5685 except:
5382 self.console.clear()
5686 self.console.clear()
5383 self.console.append("The selected xml file could not be loaded ...")
5687 self.console.append("The selected xml file could not be loaded ...")
5384 return 0
5688 return 0
5385
5689
5386 project_name, description = projectObjLoad.name, projectObjLoad.description
5690 self.refreshProjectWindow2(projectObjLoad)
5691 self.refreshProjectProperties(projectObjLoad)
5692 # project_name, description = projectObjLoad.name, projectObjLoad.description
5387 id = projectObjLoad.id
5693 id = projectObjLoad.id
5388 self.__projectObjDict[id] = projectObjLoad
5694 self.__projectObjDict[id] = projectObjLoad
5389 # Project Properties
5695 # # Project Properties
5390 datatype, data_path, startDate, endDate, startTime, endTime , online , delay, walk, set = self.showProjectProperties(projectObjLoad)
5696 # datatype, data_path, startDate, endDate, startTime, endTime , online , delay, walk, set = self.showProjectProperties(projectObjLoad)
5391 # show ProjectView
5697 # # show ProjectView
5392 self.addProject2ProjectExplorer(id=id, name=project_name)
5698 self.addProject2ProjectExplorer(id=id, name=projectObjLoad.name)
5393 self.refreshProjectWindow(project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set)
5699 # self.refreshProjectWindow(project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set)
5394
5700 #
5395 if datatype == "Voltage":
5701 # if datatype == "Voltage":
5396 ext = '.r'
5702 # ext = '.r'
5397 self.specOpProfiles.setEnabled(True)
5703 # self.specOpProfiles.setEnabled(True)
5398 self.specOpippFactor.setEnabled(True)
5704 # self.specOpippFactor.setEnabled(True)
5399 elif datatype == "Spectra":
5705 # elif datatype == "Spectra":
5400 ext = '.pdata'
5706 # ext = '.pdata'
5401 self.specOpProfiles.setEnabled(False)
5707 # self.specOpProfiles.setEnabled(False)
5402 self.specOpippFactor.setEnabled(False)
5708 # self.specOpippFactor.setEnabled(False)
5403 elif datatype == "Fits":
5709 # elif datatype == "Fits":
5404 ext = '.fits'
5710 # ext = '.fits'
5405
5711 # elif datatype == "USRP":
5406 if online == 0:
5712 # ext = '.hdf5'
5407 self.loadDays(data_path, ext, walk)
5713 #
5408 else:
5714 # if online == 0:
5409 self.proComStartDate.setEnabled(False)
5715 # self.loadDays(data_path, ext, walk)
5410 self.proComEndDate.setEnabled(False)
5716 # else:
5411 self.proStartTime.setEnabled(False)
5717 # self.proComStartDate.setEnabled(False)
5412 self.proEndTime.setEnabled(False)
5718 # self.proComEndDate.setEnabled(False)
5413 self.frame_2.setEnabled(True)
5719 # self.proStartTime.setEnabled(False)
5720 # self.proEndTime.setEnabled(False)
5721 # self.frame_2.setEnabled(True)
5414
5722
5415 self.tabWidgetProject.setEnabled(True)
5723 self.tabWidgetProject.setEnabled(True)
5416 self.tabWidgetProject.setCurrentWidget(self.tabProject)
5724 self.tabWidgetProject.setCurrentWidget(self.tabProject)
5417 # Disable tabProject after finish the creation
5725 # Disable tabProject after finish the creation
5418 self.tabProject.setEnabled(True)
5726 self.tabProject.setEnabled(True)
5419 puObjorderList = OrderedDict(sorted(projectObjLoad.procUnitConfObjDict.items(), key=lambda x: x[0]))
5727 puObjorderList = OrderedDict(sorted(projectObjLoad.procUnitConfObjDict.items(), key=lambda x: x[0]))
5420
5728
5421 for inputId, puObj in puObjorderList.items():
5729 for puId, puObj in puObjorderList.items():
5422 # print puObj.datatype, puObj.inputId,puObj.getId(),puObj.parentId
5730
5423 self.__puObjDict[puObj.getId()] = puObj
5731 # print "%s %s %s %s %s" %(puObj.datatype, inputId, puObj.inputId, puObj.getId(), puObj.parentId)
5732
5733 self.__puObjDict[puId] = puObj
5424
5734
5425 if puObj.inputId != "0":
5735 if puObj.inputId != '0':
5426 self.addPU2PELoadXML(id=puObj.getId() , name=puObj.datatype , idParent=puObj.inputId)
5736 self.addPU2PELoadXML(id=puId , name=puObj.datatype , inputId=puObj.inputId)
5427
5737
5428 if puObj.datatype == "Voltage":
5738 if puObj.datatype == "Voltage":
5429 self.refreshPUWindow(puObj.datatype, puObj)
5739 self.refreshPUWindow(puObj.datatype, puObj)
5430 self.showPUVoltageProperties(puObj)
5740 self.refreshPUProperties(puObj)
5431 self.showtabPUCreated(datatype=puObj.datatype)
5741 self.showtabPUCreated(datatype=puObj.datatype)
5432
5742
5433 if puObj.datatype == "Spectra":
5743 if puObj.datatype == "Spectra":
5434 self.refreshPUWindow(puObj.datatype, puObj)
5744 self.refreshPUWindow(puObj.datatype, puObj)
5435 self.showPUSpectraProperties(puObj)
5745 self.refreshPUProperties(puObj)
5436 self.showtabPUCreated(datatype=puObj.datatype)
5746 self.showtabPUCreated(datatype=puObj.datatype)
5437
5747
5438 if puObj.datatype == "SpectraHeis":
5748 if puObj.datatype == "SpectraHeis":
5439 self.refreshPUWindow(puObj.datatype, puObj)
5749 self.refreshPUWindow(puObj.datatype, puObj)
5440 self.showPUSpectraHeisProperties(puObj)
5750 self.refreshPUProperties(puObj)
5441 self.showtabPUCreated(datatype=puObj.datatype)
5751 self.showtabPUCreated(datatype=puObj.datatype)
5442
5752
5443 if puObj.name == "SendToServer":
5753 if puObj.name == "SendToServer":
5444 self.__ftpProcUnitAdded = True
5754 self.__ftpProcUnitAdded = True
5445 self.__ftpProcUnitId = puObj.getId()
5755 self.__ftpProcUnitId = puObj.getId()
5446
5756
5447 opObj = puObj.getOperationObj(name="run")
5757 opObj = puObj.getOperationObj(name="run")
5448 self.saveFTPvalues(opObj)
5758 self.saveFTPvalues(opObj)
5449
5759
5450 self.console.clear()
5760 # self.console.clear()
5451 self.console.append("The selected xml file has been loaded successfully")
5761 self.console.append("The selected xml file has been loaded successfully")
5452 # self.refreshPUWindow(datatype=datatype,puObj=puObj)
5762 # self.refreshPUWindow(datatype=datatype,puObj=puObj)
5453
5763
5454 self.actionStart.setEnabled(True)
5764 self.actionStart.setEnabled(True)
5455 self.actionStarToolbar.setEnabled(True)
5765 self.actionStarToolbar.setEnabled(True)
5456
5766
5457 def on_comm_updating_timer(self):
5767 def on_comm_updating_timer(self):
5458 # Verifica si algun proceso ha sido inicializado y sigue ejecutandose
5768 # Verifica si algun proceso ha sido inicializado y sigue ejecutandose
5459
5769
5460 if not self.__initialized:
5770 if not self.__initialized:
5461 return
5771 return
5462
5772
5463 if not self.commCtrlPThread.isRunning():
5773 if not self.controllerObj.isAlive():
5464 self.stopProject()
5774 self.stopProject()
5465
5775
5466 def playProject(self, ext=".xml"):
5776 def playProject(self, ext=".xml"):
5467
5777
5468 projectObj = self.getSelectedProjectObj()
5778 projectObj = self.getSelectedProjectObj()
5469
5779
5780 if not projectObj:
5781 print "Please select a project before pressing PLAY"
5782 return
5783
5470 filename = os.path.join(str(self.pathWorkSpace),
5784 filename = os.path.join(str(self.pathWorkSpace),
5471 "%s%s%s" %(str(projectObj.name), str(projectObj.id), ext)
5785 "%s%s%s" %(str(projectObj.name), str(projectObj.id), ext)
5472 )
5786 )
5473
5787
5474 self.console.clear()
5788 self.console.clear()
5475 filename = self.saveProject()
5789 filename = self.saveProject()
5476 # projectObj.writeXml(filename)
5790 # projectObj.writeXml(filename)
5477 if filename == None:
5791 if filename == None:
5478 self.console.append("Process did not initialize.")
5792 self.console.append("Process did not initialize.")
5479 return
5793 return
5480
5794
5481 self.actionStart.setEnabled(False)
5795 self.actionStart.setEnabled(False)
5482 self.actionPause.setEnabled(True)
5796 self.actionPause.setEnabled(True)
5483 self.actionStop.setEnabled(True)
5797 self.actionStop.setEnabled(True)
5484
5798
5485 self.actionStarToolbar.setEnabled(False)
5799 self.actionStarToolbar.setEnabled(False)
5486 self.actionPauseToolbar.setEnabled(True)
5800 self.actionPauseToolbar.setEnabled(True)
5487 self.actionStopToolbar.setEnabled(True)
5801 self.actionStopToolbar.setEnabled(True)
5488
5802
5489 self.console.append("Please Wait...")
5803 self.console.append("Please Wait...")
5490 self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PROCESS, filename))
5804 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PROCESS, filename))
5805
5806 self.controllerObj = ControllerThread(filename)
5807 self.controllerObj.start()
5491 sleep(0.5)
5808 sleep(0.5)
5492 self.__initialized = True
5809 self.__initialized = True
5493
5810
5494 def stopProject(self):
5811 def stopProject(self):
5495
5812
5496 self.__initialized = False
5813 self.__initialized = False
5497
5814
5498 self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.STOP, True))
5815 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.STOP, True))
5816 self.controllerObj.stop()
5499
5817
5500 self.actionStart.setEnabled(True)
5818 self.actionStart.setEnabled(True)
5501 self.actionPause.setEnabled(False)
5819 self.actionPause.setEnabled(False)
5502 self.actionStop.setEnabled(False)
5820 self.actionStop.setEnabled(False)
5503
5821
5504 self.actionStarToolbar.setEnabled(True)
5822 self.actionStarToolbar.setEnabled(True)
5505 self.actionPauseToolbar.setEnabled(False)
5823 self.actionPauseToolbar.setEnabled(False)
5506 self.actionStopToolbar.setEnabled(False)
5824 self.actionStopToolbar.setEnabled(False)
5507
5825
5508 self.restorePauseIcon()
5826 self.restorePauseIcon()
5509
5827
5510 def pauseProject(self):
5828 def pauseProject(self):
5511
5829
5512 self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PAUSE, data=True))
5830 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PAUSE, data=True))
5513
5831 self.controllerObj.pause()
5832
5514 self.actionStart.setEnabled(False)
5833 self.actionStart.setEnabled(False)
5515 self.actionPause.setEnabled(True)
5834 self.actionPause.setEnabled(True)
5516 self.actionStop.setEnabled(True)
5835 self.actionStop.setEnabled(True)
5517
5836
5518 self.actionStarToolbar.setEnabled(False)
5837 self.actionStarToolbar.setEnabled(False)
5519 self.actionPauseToolbar.setEnabled(True)
5838 self.actionPauseToolbar.setEnabled(True)
5520 self.actionStopToolbar.setEnabled(True)
5839 self.actionStopToolbar.setEnabled(True)
5521
5840
5522 def saveProject(self):
5841 def saveProject(self):
5523
5842
5524 self.actionStart.setEnabled(False)
5843 self.actionStart.setEnabled(False)
5525 self.actionStarToolbar.setEnabled(False)
5844 self.actionStarToolbar.setEnabled(False)
5526
5845
5527 sts = True
5846 sts = True
5528 puObj = self.getSelectedPUObj()
5847 puObj = self.getSelectedItemObj()
5529
5848
5530 if puObj != None:
5849 if puObj != None:
5531 if puObj.name == 'VoltageProc':
5850 if puObj.name == 'VoltageProc':
5532 sts = self.on_volOpOk_clicked()
5851 sts = self.on_volOpOk_clicked()
5533 if puObj.name == 'SpectraProc':
5852 if puObj.name == 'SpectraProc':
5534 sts = self.on_specOpOk_clicked()
5853 sts = self.on_specOpOk_clicked()
5535 if puObj.name == 'SpectraHeisProc':
5854 if puObj.name == 'SpectraHeisProc':
5536 sts = self.on_specHeisOpOk_clicked()
5855 sts = self.on_specHeisOpOk_clicked()
5537
5856
5538 if not sts:
5857 if not sts:
5539 return None
5858 return None
5540
5859
5541 projectObj = self.getSelectedProjectObj()
5860 projectObj = self.getSelectedProjectObj()
5542 puObjorderList = OrderedDict(sorted(projectObj.procUnitConfObjDict.items(), key=lambda x: x[0]))
5861 puObjorderList = OrderedDict(sorted(projectObj.procUnitConfObjDict.items(), key=lambda x: x[0]))
5543
5862
5544 for inputId, puObj in puObjorderList.items():
5863 for inputId, puObj in puObjorderList.items():
5545 # print puObj.datatype, puObj.inputId,puObj.getId(),puObj.parentId
5864 # print puObj.datatype, puObj.inputId,puObj.getId(),puObj.parentId
5546
5865
5547 if puObj.name == "VoltageProc":
5866 if puObj.name == "VoltageProc":
5548 self.refreshID(puObj)
5867 self.refreshID(puObj)
5549 if puObj.name == "SpectraProc":
5868 if puObj.name == "SpectraProc":
5550 self.refreshID(puObj)
5869 self.refreshID(puObj)
5551 if puObj.name == "SpectraHeisProc":
5870 if puObj.name == "SpectraHeisProc":
5552 self.refreshID(puObj)
5871 self.refreshID(puObj)
5553
5872
5554 filename = os.path.join(str(self.pathWorkSpace),
5873 filename = os.path.join(str(self.pathWorkSpace),
5555 "%s%s%s" %(str(projectObj.name), str(projectObj.id), '.xml')
5874 "%s%s%s" %(str(projectObj.name), str(projectObj.id), '.xml')
5556 )
5875 )
5557 projectObj.writeXml(filename)
5876 projectObj.writeXml(filename)
5558 self.console.append("Now, you can press the Start Icon on the toolbar")
5877 self.console.append("Now, you can press the Start Icon on the toolbar")
5559
5878
5560 self.actionStart.setEnabled(True)
5879 self.actionStart.setEnabled(True)
5561 self.actionStarToolbar.setEnabled(True)
5880 self.actionStarToolbar.setEnabled(True)
5562
5881
5563 return filename
5882 return filename
5564
5883
5565 def deleteProjectorPU(self):
5884 def removeItemTreeFromProject(self):
5566 """
5885 """
5567 Metodo para eliminar el proyecto en el dictionario de proyectos y en el dictionario de vista de arbol
5886 Metodo para eliminar el proyecto en el dictionario de proyectos y en el dictionario de vista de arbol
5568 """
5887 """
5569 for key in self.__itemTreeDict.keys():
5888 for key in self.__itemTreeDict.keys():
5889
5890 #Check again because an item can delete multiple items (childs)
5891 if key not in self.__itemTreeDict.keys():
5892 continue
5893
5570 if self.__itemTreeDict[key] != self.selectedItemTree:
5894 if self.__itemTreeDict[key] != self.selectedItemTree:
5571 continue
5895 continue
5572
5896
5573 if self.__projectObjDict.has_key(key) == True:
5897 if self.__projectObjDict.has_key(key) == True:
5574
5898
5575 del self.__projectObjDict[key]
5899 del self.__projectObjDict[key]
5576 del self.__itemTreeDict[key]
5900 del self.__itemTreeDict[key]
5577
5901
5578 else:
5902 else:
5579 puObj = self.__puObjDict[key]
5903 puObj = self.__puObjDict[key]
5580 if puObj.parentId == None:
5904 idProjectParent = puObj.parentId
5581 id = puObj.getId()[0]
5905 projectObj = self.__projectObjDict[idProjectParent]
5582 else:
5906
5583 id = puObj.parentId
5584 projectObj = self.__projectObjDict[id]
5585 del self.__puObjDict[key]
5907 del self.__puObjDict[key]
5586 del self.__itemTreeDict[key]
5908 del self.__itemTreeDict[key]
5587 del projectObj.procUnitConfObjDict[key]
5909 del projectObj.procUnitConfObjDict[key]
5910
5588 for key in projectObj.procUnitConfObjDict.keys():
5911 for key in projectObj.procUnitConfObjDict.keys():
5589 if projectObj.procUnitConfObjDict[key].inputId != puObj.getId():
5912 if projectObj.procUnitConfObjDict[key].inputId != puObj.getId():
5590 continue
5913 continue
5591 del self.__puObjDict[projectObj.procUnitConfObjDict[key].getId()]
5914 del self.__puObjDict[projectObj.procUnitConfObjDict[key].getId()]
5592 del self.__itemTreeDict[projectObj.procUnitConfObjDict[key].getId()]
5915 del self.__itemTreeDict[projectObj.procUnitConfObjDict[key].getId()]
5593 del projectObj.procUnitConfObjDict[key]
5916 del projectObj.procUnitConfObjDict[key]
5594 # print projectObj.procUnitConfObjDict
5917 # print projectObj.procUnitConfObjDict
5595 # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict
5918 # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict
5596 self.showWarning()
5597
5598 def showWarning(self):
5599 pass
5600
5919
5601 def getParmsFromProjectWindow(self):
5920 def getParmsFromProjectWindow(self):
5602 """
5921 """
5603 Return Inputs Project:
5922 Return Inputs Project:
5604 - id
5923 - id
5605 - project_name
5924 - project_name
5606 - datatype
5925 - datatype
5607 - ext
5926 - ext
5608 - data_path
5927 - data_path
5609 - readmode
5928 - readmode
5610 - delay
5929 - delay
5611 - set
5930 - set
5612 - walk
5931 - walk
5613 """
5932 """
5614 project_name = str(self.proName.text())
5933 project_name = str(self.proName.text())
5615 try:
5934 try:
5616 name = str(self.proName.text())
5935 name = str(self.proName.text())
5617 except:
5936 except:
5618 self.console.clear()
5937 self.console.clear()
5619 self.console.append("Please Write a name")
5938 self.console.append("Please Write a name")
5620 return 0
5939 return 0
5621
5940
5622 desc = str(self.proDescription.toPlainText())
5941 desc = str(self.proDescription.toPlainText())
5623 datatype = str(self.proComDataType.currentText())
5942 datatype = str(self.proComDataType.currentText())
5624 data_path = str(self.proDataPath.text())
5943 data_path = str(self.proDataPath.text())
5625 if not os.path.exists(data_path):
5944 if not os.path.exists(data_path):
5626 self.proOk.setEnabled(False)
5945 self.proOk.setEnabled(False)
5627 self.console.clear()
5946 self.console.clear()
5628 self.console.append("Write a correct a path")
5947 self.console.append("Write a correct a path")
5629 return
5948 return
5630
5949
5631 online = int(self.online)
5950 online = int(self.online)
5632 if online == 0:
5951 if online == 0:
5633 delay = 0
5952 delay = 0
5634 set = 0
5953 set = 0
5635 else:
5954 else:
5636 delay = self.proDelay.text()
5955 delay = self.proDelay.text()
5637 try:
5956 try:
5638 delay = int(self.proDelay.text())
5957 delay = int(self.proDelay.text())
5639 except:
5958 except:
5640 self.console.clear()
5959 self.console.clear()
5641 self.console.append("Please Write a number for delay")
5960 self.console.append("Please Write a number for delay")
5642 return 0
5961 return 0
5643
5962
5644 set = self.proSet.text()
5963 set = self.proSet.text()
5645 try:
5964 try:
5646 set = int(self.proSet.text())
5965 set = int(self.proSet.text())
5647 except:
5966 except:
5648 self.console.clear()
5967 self.console.clear()
5649 set = None
5968 set = None
5650
5969
5651
5970
5652 walk = int(self.walk)
5971 walk = int(self.walk)
5653 starDate = str(self.proComStartDate.currentText())
5972 starDate = str(self.proComStartDate.currentText())
5654 endDate = str(self.proComEndDate.currentText())
5973 endDate = str(self.proComEndDate.currentText())
5655 reloj1 = self.proStartTime.time()
5974 reloj1 = self.proStartTime.time()
5656 reloj2 = self.proEndTime.time()
5975 reloj2 = self.proEndTime.time()
5657 startTime = str(reloj1.hour()) + ":" + str(reloj1.minute()) + ":" + str(reloj1.second())
5976 startTime = str(reloj1.hour()) + ":" + str(reloj1.minute()) + ":" + str(reloj1.second())
5658 endTime = str(reloj2.hour()) + ":" + str(reloj2.minute()) + ":" + str(reloj2.second())
5977 endTime = str(reloj2.hour()) + ":" + str(reloj2.minute()) + ":" + str(reloj2.second())
5659
5978
5660 return project_name, desc, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk , set
5979 return project_name, desc, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk , set
5661
5980
5662 def removefromtree(self, row):
5981 def removefromtree(self, row):
5663 self.parentItem.removeRow(row)
5982 self.parentItem.removeRow(row)
5664
5983
5665
5984
5666 def setInputsProject_View(self):
5985 def setInputsProject_View(self):
5986
5667 self.tabWidgetProject.setEnabled(True)
5987 self.tabWidgetProject.setEnabled(True)
5668 self.tabWidgetProject.setCurrentWidget(self.tabProject)
5988 self.tabWidgetProject.setCurrentWidget(self.tabProject)
5669 self.tabProject.setEnabled(True)
5989 self.tabProject.setEnabled(True)
5670 self.frame_2.setEnabled(False)
5990 self.frame_2.setEnabled(False)
5671 self.proName.clear()
5991 self.proName.clear()
5672 self.proName.setFocus()
5992 self.proName.setFocus()
5673 self.proName.setSelection(0, 0)
5993 self.proName.setSelection(0, 0)
5674 self.proName.setCursorPosition(0)
5994 self.proName.setCursorPosition(0)
5675 self.proDataType.setText('.r')
5995 self.proDataType.setText('.r')
5676 self.proDataPath.clear()
5996 self.proDataPath.clear()
5677 self.proComDataType.clear()
5997 self.proComDataType.clear()
5678 self.proComDataType.addItem("Voltage")
5998 self.proComDataType.addItem("Voltage")
5679 self.proComDataType.addItem("Spectra")
5999 self.proComDataType.addItem("Spectra")
5680 self.proComDataType.addItem("Fits")
6000 self.proComDataType.addItem("Fits")
6001 self.proComDataType.addItem("USRP")
5681
6002
5682 self.proComStartDate.clear()
6003 self.proComStartDate.clear()
5683 self.proComEndDate.clear()
6004 self.proComEndDate.clear()
5684
6005
5685 startTime = "00:00:00"
6006 startTime = "00:00:00"
5686 endTime = "23:59:59"
6007 endTime = "23:59:59"
5687 starlist = startTime.split(":")
6008 starlist = startTime.split(":")
5688 endlist = endTime.split(":")
6009 endlist = endTime.split(":")
5689 self.proDelay.setText("0")
6010 self.proDelay.setText("0")
5690 self.proSet.setText("0")
6011 self.proSet.setText("0")
5691 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
6012 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
5692 self.proStartTime.setTime(self.time)
6013 self.proStartTime.setTime(self.time)
5693 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
6014 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
5694 self.proEndTime.setTime(self.time)
6015 self.proEndTime.setTime(self.time)
5695 self.proDescription.clear()
6016 self.proDescription.clear()
5696 self.proOk.setEnabled(False)
6017 self.proOk.setEnabled(False)
5697 self.console.clear()
6018 self.console.clear()
5698 # self.console.append("Please, Write a name Project")
6019 # self.console.append("Please, Write a name Project")
5699 # self.console.append("Introduce Project Parameters")DC
6020 # self.console.append("Introduce Project Parameters")DC
5700 # self.console.append("Select data type Voltage( .rawdata) or Spectra(.pdata)")
6021 # self.console.append("Select data type Voltage( .rawdata) or Spectra(.pdata)")
5701
6022
5702 def setInputsPU_View(self, datatype):
6023 def clearPUWindow(self, datatype):
6024
5703 projectObjView = self.getSelectedProjectObj()
6025 projectObjView = self.getSelectedProjectObj()
5704 idReadUnit = projectObjView.getReadUnitId()
6026
5705 readUnitObj = projectObjView.getProcUnitObj(idReadUnit)
6027 if not projectObjView:
6028 return
6029
6030 puObj = self.getSelectedItemObj()
6031 inputId = puObj.getInputId()
6032 inputPUObj = projectObjView.getProcUnitObj(inputId)
5706
6033
5707 if datatype == 'Voltage':
6034 if datatype == 'Voltage':
5708 self.volOpComChannels.setEnabled(False)
6035 self.volOpComChannels.setEnabled(False)
5709 self.volOpComHeights.setEnabled(False)
6036 self.volOpComHeights.setEnabled(False)
5710 self.volOpFilter.setEnabled(False)
6037 self.volOpFilter.setEnabled(False)
5711 self.volOpComProfile.setEnabled(False)
6038 self.volOpComProfile.setEnabled(False)
5712 self.volOpComCode.setEnabled(False)
6039 self.volOpComCode.setEnabled(False)
5713 self.volOpCohInt.setEnabled(False)
6040 self.volOpCohInt.setEnabled(False)
5714 self.volOpChannel.setEnabled(False)
6041 self.volOpChannel.setEnabled(False)
5715 self.volOpHeights.setEnabled(False)
6042 self.volOpHeights.setEnabled(False)
5716 self.volOpProfile.setEnabled(False)
6043 self.volOpProfile.setEnabled(False)
5717 self.volOpRadarfrequency.setEnabled(False)
6044 self.volOpRadarfrequency.setEnabled(False)
5718 self.volOpCebChannels.setCheckState(0)
6045 self.volOpCebChannels.setCheckState(0)
5719 self.volOpCebRadarfrequency.setCheckState(0)
6046 self.volOpCebRadarfrequency.setCheckState(0)
5720 self.volOpCebHeights.setCheckState(0)
6047 self.volOpCebHeights.setCheckState(0)
5721 self.volOpCebFilter.setCheckState(0)
6048 self.volOpCebFilter.setCheckState(0)
5722 self.volOpCebProfile.setCheckState(0)
6049 self.volOpCebProfile.setCheckState(0)
5723 self.volOpCebDecodification.setCheckState(0)
6050 self.volOpCebDecodification.setCheckState(0)
5724 self.volOpCebCohInt.setCheckState(0)
6051 self.volOpCebCohInt.setCheckState(0)
5725
6052
5726 self.volOpChannel.clear()
6053 self.volOpChannel.clear()
5727 self.volOpHeights.clear()
6054 self.volOpHeights.clear()
5728 self.volOpProfile.clear()
6055 self.volOpProfile.clear()
5729 self.volOpFilter.clear()
6056 self.volOpFilter.clear()
5730 self.volOpCohInt.clear()
6057 self.volOpCohInt.clear()
5731 self.volOpRadarfrequency.clear()
6058 self.volOpRadarfrequency.clear()
5732
6059
5733 if datatype == 'Spectra':
6060 if datatype == 'Spectra':
5734
6061
5735 if readUnitObj.datatype == 'Spectra':
6062 if inputPUObj.datatype == 'Spectra':
5736 self.specOpnFFTpoints.setEnabled(False)
6063 self.specOpnFFTpoints.setEnabled(False)
5737 self.specOpProfiles.setEnabled(False)
6064 self.specOpProfiles.setEnabled(False)
5738 self.specOpippFactor.setEnabled(False)
6065 self.specOpippFactor.setEnabled(False)
5739 else:
6066 else:
5740 self.specOpnFFTpoints.setEnabled(True)
6067 self.specOpnFFTpoints.setEnabled(True)
5741 self.specOpProfiles.setEnabled(True)
6068 self.specOpProfiles.setEnabled(True)
5742 self.specOpippFactor.setEnabled(True)
6069 self.specOpippFactor.setEnabled(True)
5743
6070
5744 self.specOpCebCrossSpectra.setCheckState(0)
6071 self.specOpCebCrossSpectra.setCheckState(0)
5745 self.specOpCebChannel.setCheckState(0)
6072 self.specOpCebChannel.setCheckState(0)
5746 self.specOpCebHeights.setCheckState(0)
6073 self.specOpCebHeights.setCheckState(0)
5747 self.specOpCebIncoherent.setCheckState(0)
6074 self.specOpCebIncoherent.setCheckState(0)
5748 self.specOpCebRemoveDC.setCheckState(0)
6075 self.specOpCebRemoveDC.setCheckState(0)
5749 self.specOpCebRemoveInt.setCheckState(0)
6076 self.specOpCebRemoveInt.setCheckState(0)
5750 self.specOpCebgetNoise.setCheckState(0)
6077 self.specOpCebgetNoise.setCheckState(0)
5751 self.specOpCebRadarfrequency.setCheckState(0)
6078 self.specOpCebRadarfrequency.setCheckState(0)
5752
6079
5753 self.specOpRadarfrequency.setEnabled(False)
6080 self.specOpRadarfrequency.setEnabled(False)
5754 self.specOppairsList.setEnabled(False)
6081 self.specOppairsList.setEnabled(False)
5755 self.specOpChannel.setEnabled(False)
6082 self.specOpChannel.setEnabled(False)
5756 self.specOpHeights.setEnabled(False)
6083 self.specOpHeights.setEnabled(False)
5757 self.specOpIncoherent.setEnabled(False)
6084 self.specOpIncoherent.setEnabled(False)
5758 self.specOpgetNoise.setEnabled(False)
6085 self.specOpgetNoise.setEnabled(False)
5759
6086
5760 self.specOpRadarfrequency.clear()
6087 self.specOpRadarfrequency.clear()
5761 self.specOpnFFTpoints.clear()
6088 self.specOpnFFTpoints.clear()
5762 self.specOpProfiles.clear()
6089 self.specOpProfiles.clear()
5763 self.specOpippFactor.clear
6090 self.specOpippFactor.clear
5764 self.specOppairsList.clear()
6091 self.specOppairsList.clear()
5765 self.specOpChannel.clear()
6092 self.specOpChannel.clear()
5766 self.specOpHeights.clear()
6093 self.specOpHeights.clear()
5767 self.specOpIncoherent.clear()
6094 self.specOpIncoherent.clear()
5768 self.specOpgetNoise.clear()
6095 self.specOpgetNoise.clear()
5769
6096
5770 self.specGraphCebSpectraplot.setCheckState(0)
6097 self.specGraphCebSpectraplot.setCheckState(0)
5771 self.specGraphCebCrossSpectraplot.setCheckState(0)
6098 self.specGraphCebCrossSpectraplot.setCheckState(0)
5772 self.specGraphCebRTIplot.setCheckState(0)
6099 self.specGraphCebRTIplot.setCheckState(0)
5773 self.specGraphCebRTInoise.setCheckState(0)
6100 self.specGraphCebRTInoise.setCheckState(0)
5774 self.specGraphCebCoherencmap.setCheckState(0)
6101 self.specGraphCebCoherencmap.setCheckState(0)
5775 self.specGraphPowerprofile.setCheckState(0)
6102 self.specGraphPowerprofile.setCheckState(0)
5776
6103
5777 self.specGraphSaveSpectra.setCheckState(0)
6104 self.specGraphSaveSpectra.setCheckState(0)
5778 self.specGraphSaveCross.setCheckState(0)
6105 self.specGraphSaveCross.setCheckState(0)
5779 self.specGraphSaveRTIplot.setCheckState(0)
6106 self.specGraphSaveRTIplot.setCheckState(0)
5780 self.specGraphSaveRTInoise.setCheckState(0)
6107 self.specGraphSaveRTInoise.setCheckState(0)
5781 self.specGraphSaveCoherencemap.setCheckState(0)
6108 self.specGraphSaveCoherencemap.setCheckState(0)
5782 self.specGraphSavePowerprofile.setCheckState(0)
6109 self.specGraphSavePowerprofile.setCheckState(0)
5783
6110
5784 self.specGraphftpRTIplot.setCheckState(0)
6111 self.specGraphftpRTIplot.setCheckState(0)
5785 self.specGraphftpRTInoise.setCheckState(0)
6112 self.specGraphftpRTInoise.setCheckState(0)
5786 self.specGraphftpCoherencemap.setCheckState(0)
6113 self.specGraphftpCoherencemap.setCheckState(0)
5787
6114
5788 self.specGraphPath.clear()
6115 self.specGraphPath.clear()
5789 self.specGraphPrefix.clear()
6116 self.specGraphPrefix.clear()
5790
6117
5791 self.specGgraphftpratio.clear()
6118 self.specGgraphftpratio.clear()
5792
6119
5793 self.specGgraphChannelList.clear()
6120 self.specGgraphChannelList.clear()
5794 self.specGgraphFreq.clear()
6121 self.specGgraphFreq.clear()
5795 self.specGgraphHeight.clear()
6122 self.specGgraphHeight.clear()
5796 self.specGgraphDbsrange.clear()
6123 self.specGgraphDbsrange.clear()
5797 self.specGgraphmagnitud.clear()
6124 self.specGgraphmagnitud.clear()
5798 self.specGgraphTminTmax.clear()
6125 self.specGgraphTminTmax.clear()
5799 self.specGgraphTimeRange.clear()
6126 self.specGgraphTimeRange.clear()
5800
6127
5801 if datatype == 'SpectraHeis':
6128 if datatype == 'SpectraHeis':
5802 self.specHeisOpCebIncoherent.setCheckState(0)
6129 self.specHeisOpCebIncoherent.setCheckState(0)
5803 self.specHeisOpIncoherent.setEnabled(False)
6130 self.specHeisOpIncoherent.setEnabled(False)
5804 self.specHeisOpIncoherent.clear()
6131 self.specHeisOpIncoherent.clear()
5805
6132
5806 self.specHeisGraphCebSpectraplot.setCheckState(0)
6133 self.specHeisGraphCebSpectraplot.setCheckState(0)
5807 self.specHeisGraphCebRTIplot.setCheckState(0)
6134 self.specHeisGraphCebRTIplot.setCheckState(0)
5808
6135
5809 self.specHeisGraphSaveSpectra.setCheckState(0)
6136 self.specHeisGraphSaveSpectra.setCheckState(0)
5810 self.specHeisGraphSaveRTIplot.setCheckState(0)
6137 self.specHeisGraphSaveRTIplot.setCheckState(0)
5811
6138
5812 self.specHeisGraphftpSpectra.setCheckState(0)
6139 self.specHeisGraphftpSpectra.setCheckState(0)
5813 self.specHeisGraphftpRTIplot.setCheckState(0)
6140 self.specHeisGraphftpRTIplot.setCheckState(0)
5814
6141
5815 self.specHeisGraphPath.clear()
6142 self.specHeisGraphPath.clear()
5816 self.specHeisGraphPrefix.clear()
6143 self.specHeisGraphPrefix.clear()
5817 self.specHeisGgraphChannelList.clear()
6144 self.specHeisGgraphChannelList.clear()
5818 self.specHeisGgraphXminXmax.clear()
6145 self.specHeisGgraphXminXmax.clear()
5819 self.specHeisGgraphYminYmax.clear()
6146 self.specHeisGgraphYminYmax.clear()
5820 self.specHeisGgraphTminTmax.clear()
6147 self.specHeisGgraphTminTmax.clear()
5821 self.specHeisGgraphTimeRange.clear()
6148 self.specHeisGgraphTimeRange.clear()
5822 self.specHeisGgraphftpratio.clear()
6149 self.specHeisGgraphftpratio.clear()
5823
6150
5824
6151
5825
6152
5826
6153
5827
6154
5828 def showtabPUCreated(self, datatype):
6155 def showtabPUCreated(self, datatype):
5829 if datatype == "Voltage":
6156 if datatype == "Voltage":
5830 self.tabVoltage.setEnabled(True)
6157 self.tabVoltage.setEnabled(True)
5831 self.tabProject.setEnabled(False)
6158 self.tabProject.setEnabled(False)
5832 self.tabSpectra.setEnabled(False)
6159 self.tabSpectra.setEnabled(False)
5833 self.tabCorrelation.setEnabled(False)
6160 self.tabCorrelation.setEnabled(False)
5834 self.tabSpectraHeis.setEnabled(False)
6161 self.tabSpectraHeis.setEnabled(False)
5835 self.tabWidgetProject.setCurrentWidget(self.tabVoltage)
6162 self.tabWidgetProject.setCurrentWidget(self.tabVoltage)
5836
6163
5837 if datatype == "Spectra":
6164 if datatype == "Spectra":
5838 self.tabVoltage.setEnabled(False)
6165 self.tabVoltage.setEnabled(False)
5839 self.tabProject.setEnabled(False)
6166 self.tabProject.setEnabled(False)
5840 self.tabSpectra.setEnabled(True)
6167 self.tabSpectra.setEnabled(True)
5841 self.tabCorrelation.setEnabled(False)
6168 self.tabCorrelation.setEnabled(False)
5842 self.tabSpectraHeis.setEnabled(False)
6169 self.tabSpectraHeis.setEnabled(False)
5843 self.tabWidgetProject.setCurrentWidget(self.tabSpectra)
6170 self.tabWidgetProject.setCurrentWidget(self.tabSpectra)
5844 if datatype == "SpectraHeis":
6171 if datatype == "SpectraHeis":
5845 self.tabVoltage.setEnabled(False)
6172 self.tabVoltage.setEnabled(False)
5846 self.tabProject.setEnabled(False)
6173 self.tabProject.setEnabled(False)
5847 self.tabSpectra.setEnabled(False)
6174 self.tabSpectra.setEnabled(False)
5848 self.tabCorrelation.setEnabled(False)
6175 self.tabCorrelation.setEnabled(False)
5849 self.tabSpectraHeis.setEnabled(True)
6176 self.tabSpectraHeis.setEnabled(True)
5850 self.tabWidgetProject.setCurrentWidget(self.tabSpectraHeis)
6177 self.tabWidgetProject.setCurrentWidget(self.tabSpectraHeis)
5851
6178
5852
5853 def searchData(self, data_path, ext, walk, expLabel=''):
5854 dateList = []
5855 fileList = []
5856
5857 if not os.path.exists(data_path):
5858 return None
5859
5860 if walk == 0:
5861 files = os.listdir(data_path)
5862 for thisFile in files:
5863 thisExt = os.path.splitext(thisFile)[-1]
5864 if thisExt == ext:
5865 fileList.append(thisFile)
5866
5867 for thisFile in fileList:
5868 try:
5869 year = int(thisFile[1:5])
5870 doy = int(thisFile[5:8])
5871
5872 date = datetime.date(year, 1, 1) + datetime.timedelta(doy - 1)
5873 dateformat = date.strftime("%Y/%m/%d")
5874
5875 if dateformat not in dateList:
5876 dateList.append(dateformat)
5877 except:
5878 continue
5879 # REVISION---------------------------------1
5880 if walk == 1:
5881
5882 dirList = os.listdir(data_path)
5883
5884 dirList.sort()
5885
5886 dateList = []
5887
5888 for thisDir in dirList:
5889
5890 if not isRadarPath(thisDir):
5891 self.console.clear()
5892 self.console.append("Please, Choose the Correct Path")
5893 self.proOk.setEnabled(False)
5894 continue
5895
5896 doypath = os.path.join(data_path, thisDir, expLabel)
5897 if not os.path.exists(doypath):
5898 self.console.clear()
5899 self.console.append("Please, Choose the Correct Path")
5900 return
5901 files = os.listdir(doypath)
5902 fileList = []
5903
5904 for thisFile in files:
5905 thisExt = os.path.splitext(thisFile)[-1]
5906 if thisExt != ext:
5907 self.console.clear()
5908 self.console.append("There is no datatype selected in the Path Directory")
5909 self.proOk.setEnabled(False)
5910 continue
5911
5912 if not isRadarFile(thisFile):
5913 self.proOk.setEnabled(False)
5914 self.console.clear()
5915 self.console.append("Please, Choose the Correct Path")
5916 continue
5917
5918 fileList.append(thisFile)
5919 break
5920
5921 if fileList == []:
5922 continue
5923
5924 year = int(thisDir[1:5])
5925 doy = int(thisDir[5:8])
5926
5927 date = datetime.date(year, 1, 1) + datetime.timedelta(doy - 1)
5928 dateformat = date.strftime("%Y/%m/%d")
5929 dateList.append(dateformat)
5930
5931 if len(dateList) > 0:
5932 self.proOk.setEnabled(True)
5933 return dateList
5934
5935
5936 # self.proOk.setEnabled(False)
5937 return None
5938
5939 def checkInputsProject(self):
6179 def checkInputsProject(self):
5940 """
6180 """
5941 Check Inputs Project:
6181 Check Inputs Project:
5942 - project_name
6182 - project_name
5943 - datatype
6183 - datatype
5944 - ext
6184 - ext
5945 - data_path
6185 - data_path
5946 - readmode
6186 - readmode
5947 - delay
6187 - delay
5948 - set
6188 - set
5949 - walk
6189 - walk
5950 """
6190 """
5951 parms_ok = True
6191 parms_ok = True
5952 project_name = str(self.proName.text())
6192 project_name = str(self.proName.text())
5953 if project_name == '' or project_name == None:
6193 if project_name == '' or project_name == None:
5954 outputstr = "Enter the Project Name"
6194 outputstr = "Enter the Project Name"
5955 self.console.append(outputstr)
6195 self.console.append(outputstr)
5956 parms_ok = False
6196 parms_ok = False
5957 project_name = None
6197 project_name = None
5958
6198
5959 datatype = str(self.proComDataType.currentText())
6199 datatype = str(self.proComDataType.currentText())
5960 if not(datatype in ['Voltage', 'Spectra', 'Fits']):
6200 if not(datatype in ['Voltage', 'Spectra', 'Fits', 'USRP']):
5961 outputstr = 'datatype = %s, this must be either Voltage, Spectra or SpectraHeis' % datatype
6201 outputstr = 'datatype = %s, this must be either Voltage, Spectra, SpectraHeis or USRP' % datatype
5962 self.console.append(outputstr)
6202 self.console.append(outputstr)
5963 parms_ok = False
6203 parms_ok = False
5964 datatype = None
6204 datatype = None
5965
6205
5966 ext = str(self.proDataType.text())
6206 ext = str(self.proDataType.text())
5967 if not(ext in ['.r', '.pdata', '.fits']):
6207 if not(ext in ['.r', '.pdata', '.fits', '.hdf5']):
5968 outputstr = "extension files must be .r , .pdata or .fits"
6208 outputstr = "extension files must be .r , .pdata, .fits or .hdf5"
5969 self.console.append(outputstr)
6209 self.console.append(outputstr)
5970 parms_ok = False
6210 parms_ok = False
5971 ext = None
6211 ext = None
5972
6212
5973 data_path = str(self.proDataPath.text())
6213 data_path = str(self.proDataPath.text())
5974
6214
5975 if data_path == '':
6215 if data_path == '':
5976 outputstr = 'Datapath is empty'
6216 outputstr = 'Datapath is empty'
5977 self.console.append(outputstr)
6217 self.console.append(outputstr)
5978 parms_ok = False
6218 parms_ok = False
5979 data_path = None
6219 data_path = None
5980
6220
5981 if data_path != None:
6221 if data_path != None:
5982 if not os.path.exists(data_path):
6222 if not os.path.isdir(data_path):
5983 outputstr = 'Datapath:%s does not exists' % data_path
6223 outputstr = 'Datapath:%s does not exists' % data_path
5984 self.console.append(outputstr)
6224 self.console.append(outputstr)
5985 parms_ok = False
6225 parms_ok = False
5986 data_path = None
6226 data_path = None
5987
6227
5988 read_mode = str(self.proComReadMode.currentText())
6228 read_mode = str(self.proComReadMode.currentText())
5989 if not(read_mode in ['Online', 'Offline']):
6229 if not(read_mode in ['Online', 'Offline']):
5990 outputstr = 'Read Mode: %s, this must be either Online or Offline' % read_mode
6230 outputstr = 'Read Mode: %s, this must be either Online or Offline' % read_mode
5991 self.console.append(outputstr)
6231 self.console.append(outputstr)
5992 parms_ok = False
6232 parms_ok = False
5993 read_mode = None
6233 read_mode = None
5994
6234
5995 try:
6235 try:
5996 delay = int(str(self.proDelay.text()))
6236 delay = int(str(self.proDelay.text()))
5997 except:
6237 except:
5998 outputstr = 'Delay: %s, this must be a integer number' % str(self.proName.text())
6238 outputstr = 'Delay: %s, this must be a integer number' % str(self.proName.text())
5999 self.console.append(outputstr)
6239 self.console.append(outputstr)
6000 parms_ok = False
6240 parms_ok = False
6001 delay = None
6241 delay = None
6002
6242
6003 try:
6243 try:
6004 set = int(str(self.proSet.text()))
6244 set = int(str(self.proSet.text()))
6005 except:
6245 except:
6006 # outputstr = 'Set: %s, this must be a integer number' % str(self.proName.text())
6246 # outputstr = 'Set: %s, this must be a integer number' % str(self.proName.text())
6007 # self.console.append(outputstr)
6247 # self.console.append(outputstr)
6008 # parms_ok = False
6248 # parms_ok = False
6009 set = None
6249 set = None
6010
6250
6011 walk_str = str(self.proComWalk.currentText())
6251 walk_str = str(self.proComWalk.currentText())
6012 if walk_str == 'On Files':
6252 if walk_str == 'On Files':
6013 walk = 0
6253 walk = 0
6014 elif walk_str == 'On Folder':
6254 elif walk_str == 'On Folder':
6015 walk = 1
6255 walk = 1
6016 else:
6256 else:
6017 outputstr = 'Walk: %s, this must be either On Files or On Folders' % walk_str
6257 outputstr = 'Walk: %s, this must be either On Files or On Folders' % walk_str
6018 self.console.append(outputstr)
6258 self.console.append(outputstr)
6019 parms_ok = False
6259 parms_ok = False
6020 walk = None
6260 walk = None
6021
6261
6022 return parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set
6262 return parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set
6023
6263
6024 def checkInputsPUSave(self, datatype):
6264 def checkInputsPUSave(self, datatype):
6025 """
6265 """
6026 Check Inputs Spectra Save:
6266 Check Inputs Spectra Save:
6027 - path
6267 - path
6028 - blocks Per File
6268 - blocks Per File
6029 - sufix
6269 - sufix
6030 - dataformat
6270 - dataformat
6031 """
6271 """
6032 parms_ok = True
6272 parms_ok = True
6033
6273
6034 if datatype == "Voltage":
6274 if datatype == "Voltage":
6035 output_path = str(self.volOutputPath.text())
6275 output_path = str(self.volOutputPath.text())
6036 blocksperfile = str(self.volOutputblocksperfile.text())
6276 blocksperfile = str(self.volOutputblocksperfile.text())
6037 profilesperblock = str(self.volOutputprofilesperblock.text())
6277 profilesperblock = str(self.volOutputprofilesperblock.text())
6038
6278
6039 if datatype == "Spectra":
6279 if datatype == "Spectra":
6040 output_path = str(self.specOutputPath.text())
6280 output_path = str(self.specOutputPath.text())
6041 blocksperfile = str(self.specOutputblocksperfile.text())
6281 blocksperfile = str(self.specOutputblocksperfile.text())
6042 profilesperblock = str(self.specOutputprofileperblock.text())
6282 profilesperblock = str(self.specOutputprofileperblock.text())
6043
6283
6044 if datatype == "SpectraHeis":
6284 if datatype == "SpectraHeis":
6045 output_path = str(self.specHeisOutputPath.text())
6285 output_path = str(self.specHeisOutputPath.text())
6046 blocksperfile = str(self.specHeisOutputblocksperfile.text())
6286 blocksperfile = str(self.specHeisOutputblocksperfile.text())
6047 metada = str(self.specHeisOutputMetada.text())
6287 metada = str(self.specHeisOutputMetada.text())
6048
6288
6049 if output_path == '':
6289 if output_path == '':
6050 outputstr = 'Outputpath is empty'
6290 outputstr = 'Outputpath is empty'
6051 self.console.append(outputstr)
6291 self.console.append(outputstr)
6052 parms_ok = False
6292 parms_ok = False
6053 data_path = None
6293 data_path = None
6054
6294
6055 if output_path != None:
6295 if output_path != None:
6056 if not os.path.exists(output_path):
6296 if not os.path.exists(output_path):
6057 outputstr = 'OutputPath:%s does not exists' % output_path
6297 outputstr = 'OutputPath:%s does not exists' % output_path
6058 self.console.append(outputstr)
6298 self.console.append(outputstr)
6059 parms_ok = False
6299 parms_ok = False
6060 output_path = None
6300 output_path = None
6061
6301
6062
6302
6063 try:
6303 try:
6064 profilesperblock = int(profilesperblock)
6304 profilesperblock = int(profilesperblock)
6065 except:
6305 except:
6066 if datatype == "Voltage":
6306 if datatype == "Voltage":
6067 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.volOutputprofilesperblock.text())
6307 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.volOutputprofilesperblock.text())
6068 self.console.append(outputstr)
6308 self.console.append(outputstr)
6069 parms_ok = False
6309 parms_ok = False
6070 profilesperblock = None
6310 profilesperblock = None
6071
6311
6072 elif datatype == "Spectra":
6312 elif datatype == "Spectra":
6073 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.specOutputprofileperblock.text())
6313 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.specOutputprofileperblock.text())
6074 self.console.append(outputstr)
6314 self.console.append(outputstr)
6075 parms_ok = False
6315 parms_ok = False
6076 profilesperblock = None
6316 profilesperblock = None
6077
6317
6078 try:
6318 try:
6079 blocksperfile = int(blocksperfile)
6319 blocksperfile = int(blocksperfile)
6080 except:
6320 except:
6081 if datatype == "Voltage":
6321 if datatype == "Voltage":
6082 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.volOutputblocksperfile.text())
6322 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.volOutputblocksperfile.text())
6083 elif datatype == "Spectra":
6323 elif datatype == "Spectra":
6084 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specOutputblocksperfile.text())
6324 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specOutputblocksperfile.text())
6085 elif datatype == "SpectraHeis":
6325 elif datatype == "SpectraHeis":
6086 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specHeisOutputblocksperfile.text())
6326 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specHeisOutputblocksperfile.text())
6087
6327
6088 self.console.append(outputstr)
6328 self.console.append(outputstr)
6089 parms_ok = False
6329 parms_ok = False
6090 blocksperfile = None
6330 blocksperfile = None
6091
6331
6092 if datatype == "SpectraHeis":
6332 if datatype == "SpectraHeis":
6093 if metada == '':
6333 if metada == '':
6094 outputstr = 'Choose metada file'
6334 outputstr = 'Choose metada file'
6095 self.console.append(outputstr)
6335 self.console.append(outputstr)
6096 parms_ok = False
6336 parms_ok = False
6097 if metada != None:
6337 if metada != None:
6098 if not os.path.isfile(metada):
6338 if not os.path.isfile(metada):
6099 outputstr = 'Metadata:%s does not exists' % metada
6339 outputstr = 'Metadata:%s does not exists' % metada
6100 self.console.append(outputstr)
6340 self.console.append(outputstr)
6101 parms_ok = False
6341 parms_ok = False
6102 output_path = None
6342 output_path = None
6103
6343
6104 if datatype == "Voltage":
6344 if datatype == "Voltage":
6105 return parms_ok, output_path, blocksperfile, profilesperblock
6345 return parms_ok, output_path, blocksperfile, profilesperblock
6106
6346
6107
6347
6108 if datatype == "Spectra":
6348 if datatype == "Spectra":
6109 return parms_ok, output_path, blocksperfile, profilesperblock
6349 return parms_ok, output_path, blocksperfile, profilesperblock
6110
6350
6111
6351
6112 if datatype == "SpectraHeis":
6352 if datatype == "SpectraHeis":
6113 return parms_ok, output_path, blocksperfile, metada
6353 return parms_ok, output_path, blocksperfile, metada
6354
6355 def searchData(self, data_path, ext, walk, expLabel=''):
6356 dateList = []
6357 fileList = []
6358
6359 if not os.path.exists(data_path):
6360 return None
6361
6362 if walk == 0:
6363 files = os.listdir(data_path)
6364 for thisFile in files:
6365 thisExt = os.path.splitext(thisFile)[-1]
6366 if thisExt == ext:
6367 fileList.append(thisFile)
6368
6369 for thisFile in fileList:
6370 try:
6371 year = int(thisFile[1:5])
6372 doy = int(thisFile[5:8])
6373
6374 date = datetime.date(year, 1, 1) + datetime.timedelta(doy - 1)
6375 dateformat = date.strftime("%Y/%m/%d")
6376
6377 if dateformat not in dateList:
6378 dateList.append(dateformat)
6379 except:
6380 continue
6381 # REVISION---------------------------------1
6382 if walk == 1:
6383
6384 dirList = os.listdir(data_path)
6385
6386 dirList.sort()
6387
6388 dateList = []
6389
6390 for thisDir in dirList:
6391
6392 if not isRadarPath(thisDir):
6393 self.console.clear()
6394 self.console.append("Please, Choose the Correct Path")
6395 self.proOk.setEnabled(False)
6396 continue
6397
6398 doypath = os.path.join(data_path, thisDir, expLabel)
6399 if not os.path.exists(doypath):
6400 self.console.clear()
6401 self.console.append("Please, Choose the Correct Path")
6402 return
6403 files = os.listdir(doypath)
6404 fileList = []
6405
6406 for thisFile in files:
6407 thisExt = os.path.splitext(thisFile)[-1]
6408 if thisExt != ext:
6409 self.console.clear()
6410 self.console.append("There is no datatype selected in the Path Directory")
6411 self.proOk.setEnabled(False)
6412 continue
6413
6414 if not isRadarFile(thisFile):
6415 self.proOk.setEnabled(False)
6416 self.console.clear()
6417 self.console.append("Please, Choose the Correct Path")
6418 continue
6419
6420 fileList.append(thisFile)
6421 break
6422
6423 if fileList == []:
6424 continue
6425
6426 year = int(thisDir[1:5])
6427 doy = int(thisDir[5:8])
6428
6429 date = datetime.date(year, 1, 1) + datetime.timedelta(doy - 1)
6430 dateformat = date.strftime("%Y/%m/%d")
6431 dateList.append(dateformat)
6432
6433 if len(dateList) > 0:
6434 self.proOk.setEnabled(True)
6435 return dateList
6436
6437
6438 # self.proOk.setEnabled(False)
6439 return None
6440
6441 def findDatafiles(self, data_path, ext, walk, expLabel=''):
6442
6443 dateList = []
6444 fileList = []
6445
6446 if ext == ".r":
6447 from schainpy.model.io.jroIO_base import JRODataReader
6448
6449 readerObj = JRODataReader()
6450 dateList = readerObj.findDatafiles(path=data_path,
6451 expLabel=expLabel,
6452 ext=ext,
6453 walk=walk)
6454
6455 if ext == ".pdata":
6456 from schainpy.model.io.jroIO_base import JRODataReader
6457
6458 readerObj = JRODataReader()
6459 dateList = readerObj.findDatafiles(path=data_path,
6460 expLabel=expLabel,
6461 ext=ext,
6462 walk=walk)
6463
6464 if ext == ".fits":
6465 from schainpy.model.io.jroIO_base import JRODataReader
6466
6467 readerObj = JRODataReader()
6468 dateList = readerObj.findDatafiles(path=data_path,
6469 expLabel=expLabel,
6470 ext=ext,
6471 walk=walk)
6472
6473 if ext == ".hdf5":
6474 from schainpy.model.io.jroIO_usrp import USRPReader
6475
6476 readerObj = USRPReader()
6477 dateList = readerObj.findDatafiles(path=data_path)
6478
6479 return dateList
6114
6480
6115 def loadDays(self, data_path, ext, walk):
6481 def loadDays(self, data_path, ext, walk, expLabel=''):
6116 """
6482 """
6117 Method to loads day
6483 Method to loads day
6118 """
6484 """
6119 dateList = self.searchData(data_path, ext, walk)
6485 self.proOk.setEnabled(False)
6120 if dateList == None:
6486 self.dateList = []
6487
6488 dateList = self.findDatafiles(data_path, ext=ext, walk=walk, expLabel=expLabel)
6489
6490 if not dateList:
6121 self.console.clear()
6491 self.console.clear()
6122 outputstr = "The path: %s is empty with file extension *%s" % (data_path, ext)
6492 outputstr = "The path: %s is empty with file extension *%s" % (data_path, ext)
6123 self.console.append(outputstr)
6493 self.console.append(outputstr)
6124 return
6494 return
6125
6495
6126 self.dateList = dateList
6496 dateStrList = []
6127 for thisDate in dateList:
6497 for thisDate in dateList:
6128 self.proComStartDate.addItem(thisDate)
6498 dateStr = thisDate.strftime("%Y/%m/%d")
6129 self.proComEndDate.addItem(thisDate)
6499
6500 self.proComStartDate.addItem(dateStr)
6501 self.proComEndDate.addItem(dateStr)
6502 dateStrList.append(dateStr)
6503
6130 self.proComEndDate.setCurrentIndex(self.proComStartDate.count() - 1)
6504 self.proComEndDate.setCurrentIndex(self.proComStartDate.count() - 1)
6131
6505
6132 def setWorkSpaceGUI(self, pathWorkSpace):
6506 self.dateList = dateStrList
6133 self.pathWorkSpace = pathWorkSpace
6507 self.proOk.setEnabled(True)
6508
6509 return self.dateList
6510
6511 def setWorkSpaceGUI(self, pathWorkSpace=None):
6512
6513 if pathWorkSpace == None:
6514 home = os.path.expanduser("~")
6515 pathWorkSpace = os.path.join(home,'schain_workspace')
6516
6517 self.pathWorkSpace = pathWorkSpace
6134
6518
6135 """
6519 """
6136 Comandos Usados en Console
6520 Comandos Usados en Console
6137 """
6521 """
6138 def __del__(self):
6522 def __del__(self):
6139 sys.stdout = sys.__stdout__
6523 sys.stdout = sys.__stdout__
6140 sys.stderr = sys.__stderr__
6524 sys.stderr = sys.__stderr__
6141
6525
6142 def normalOutputWritten(self, text):
6526 def normalOutputWritten(self, text):
6143 color_black = QtGui.QColor(0,0,0)
6527 color_black = QtGui.QColor(0,0,0)
6144 self.console.setTextColor(color_black)
6528 self.console.setTextColor(color_black)
6145 self.console.append(text)
6529 self.console.append(text)
6146
6530
6147 def errorOutputWritten(self, text):
6531 def errorOutputWritten(self, text):
6148 color_red = QtGui.QColor(255,0,0)
6532 color_red = QtGui.QColor(255,0,0)
6149 color_black = QtGui.QColor(0,0,0)
6533 color_black = QtGui.QColor(0,0,0)
6150
6534
6151 self.console.setTextColor(color_red)
6535 self.console.setTextColor(color_red)
6152 self.console.append(text)
6536 self.console.append(text)
6153 self.console.setTextColor(color_black)
6537 self.console.setTextColor(color_black)
6154
6538
6155 def setParameter(self):
6539 def setParameter(self):
6156
6540
6157 self.setWindowTitle("ROJ-Signal Chain")
6541 self.setWindowTitle("ROJ-Signal Chain")
6158 self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"adn.jpg") ))
6542 self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"adn.jpg") ))
6159
6543
6160 self.tabWidgetProject.setEnabled(False)
6544 self.tabWidgetProject.setEnabled(False)
6161 self.tabVoltage.setEnabled(False)
6545 self.tabVoltage.setEnabled(False)
6162 self.tabSpectra.setEnabled(False)
6546 self.tabSpectra.setEnabled(False)
6163 self.tabCorrelation.setEnabled(False)
6547 self.tabCorrelation.setEnabled(False)
6164 self.frame_2.setEnabled(False)
6548 self.frame_2.setEnabled(False)
6165
6549
6166 self.actionCreate.setShortcut('Ctrl+N')
6550 self.actionCreate.setShortcut('Ctrl+N')
6167 self.actionOpen.setShortcut('Ctrl+O')
6551 self.actionOpen.setShortcut('Ctrl+O')
6168 self.actionSave.setShortcut('Ctrl+S')
6552 self.actionSave.setShortcut('Ctrl+S')
6169 self.actionClose.setShortcut('Ctrl+X')
6553 self.actionClose.setShortcut('Ctrl+X')
6170
6554
6171 self.actionStart.setShortcut('Ctrl+1')
6555 self.actionStart.setShortcut('Ctrl+1')
6172 self.actionPause.setShortcut('Ctrl+2')
6556 self.actionPause.setShortcut('Ctrl+2')
6173 self.actionStop.setShortcut('Ctrl+3')
6557 self.actionStop.setShortcut('Ctrl+3')
6174
6558
6175 self.actionFTP.setShortcut('Ctrl+F')
6559 self.actionFTP.setShortcut('Ctrl+F')
6176
6560
6561 self.actionStart.setEnabled(False)
6562 self.actionPause.setEnabled(False)
6563 self.actionStop.setEnabled(False)
6564
6177 self.actionStarToolbar.setEnabled(False)
6565 self.actionStarToolbar.setEnabled(False)
6178 self.actionPauseToolbar.setEnabled(False)
6566 self.actionPauseToolbar.setEnabled(False)
6179 self.actionStopToolbar.setEnabled(False)
6567 self.actionStopToolbar.setEnabled(False)
6180
6568
6181 self.proName.clear()
6569 self.proName.clear()
6182 self.proDataPath.setText('')
6570 self.proDataPath.setText('')
6183 self.console.setReadOnly(True)
6571 self.console.setReadOnly(True)
6184 self.console.append("Welcome to Signal Chain\nOpen a project or Create a new one")
6572 self.console.append("Welcome to Signal Chain\nOpen a project or Create a new one")
6185 self.proStartTime.setDisplayFormat("hh:mm:ss")
6573 self.proStartTime.setDisplayFormat("hh:mm:ss")
6186 self.proDataType.setEnabled(False)
6574 self.proDataType.setEnabled(False)
6187 self.time = QtCore.QTime()
6575 self.time = QtCore.QTime()
6188 self.hour = 0
6576 self.hour = 0
6189 self.min = 0
6577 self.min = 0
6190 self.sec = 0
6578 self.sec = 0
6191 self.proEndTime.setDisplayFormat("hh:mm:ss")
6579 self.proEndTime.setDisplayFormat("hh:mm:ss")
6192 startTime = "00:00:00"
6580 startTime = "00:00:00"
6193 endTime = "23:59:59"
6581 endTime = "23:59:59"
6194 starlist = startTime.split(":")
6582 starlist = startTime.split(":")
6195 endlist = endTime.split(":")
6583 endlist = endTime.split(":")
6196 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
6584 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
6197 self.proStartTime.setTime(self.time)
6585 self.proStartTime.setTime(self.time)
6198 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
6586 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
6199 self.proEndTime.setTime(self.time)
6587 self.proEndTime.setTime(self.time)
6200 self.proOk.setEnabled(False)
6588 self.proOk.setEnabled(False)
6201 # set model Project Explorer
6589 # set model Project Explorer
6202 self.projectExplorerModel = QtGui.QStandardItemModel()
6590 self.projectExplorerModel = QtGui.QStandardItemModel()
6203 self.projectExplorerModel.setHorizontalHeaderLabels(("Project Explorer",))
6591 self.projectExplorerModel.setHorizontalHeaderLabels(("Project Explorer",))
6204 layout = QtGui.QVBoxLayout()
6592 layout = QtGui.QVBoxLayout()
6205 layout.addWidget(self.projectExplorerTree)
6593 layout.addWidget(self.projectExplorerTree)
6206 self.projectExplorerTree.setModel(self.projectExplorerModel)
6594 self.projectExplorerTree.setModel(self.projectExplorerModel)
6207 self.projectExplorerTree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
6595 self.projectExplorerTree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
6208 self.projectExplorerTree.customContextMenuRequested.connect(self.on_right_click)
6596 self.projectExplorerTree.customContextMenuRequested.connect(self.on_right_click)
6209 self.projectExplorerTree.clicked.connect(self.on_click)
6597 self.projectExplorerTree.clicked.connect(self.on_click)
6210 self.projectExplorerTree.expandAll()
6598 self.projectExplorerTree.expandAll()
6211 # set model Project Properties
6599 # set model Project Properties
6212
6600
6213 self.propertiesModel = treeModel()
6601 self.propertiesModel = TreeModel()
6214 self.propertiesModel.initProjectView()
6602 self.propertiesModel.initProjectView()
6215 self.treeProjectProperties.setModel(self.propertiesModel)
6603 self.treeProjectProperties.setModel(self.propertiesModel)
6216 self.treeProjectProperties.expandAll()
6604 self.treeProjectProperties.expandAll()
6217 self.treeProjectProperties.allColumnsShowFocus()
6605 self.treeProjectProperties.allColumnsShowFocus()
6218 self.treeProjectProperties.resizeColumnToContents(1)
6606 self.treeProjectProperties.resizeColumnToContents(1)
6219
6607
6220 # set Project
6608 # set Project
6221 self.proDelay.setEnabled(False)
6609 self.proDelay.setEnabled(False)
6222 self.proSet.setEnabled(False)
6610 self.proSet.setEnabled(False)
6223 self.proDataType.setReadOnly(True)
6611 self.proDataType.setReadOnly(True)
6224
6612
6225 # set Operation Voltage
6613 # set Operation Voltage
6226 self.volOpComChannels.setEnabled(False)
6614 self.volOpComChannels.setEnabled(False)
6227 self.volOpComHeights.setEnabled(False)
6615 self.volOpComHeights.setEnabled(False)
6228 self.volOpFilter.setEnabled(False)
6616 self.volOpFilter.setEnabled(False)
6229 self.volOpComProfile.setEnabled(False)
6617 self.volOpComProfile.setEnabled(False)
6230 self.volOpComCode.setEnabled(False)
6618 self.volOpComCode.setEnabled(False)
6231 self.volOpFlip.setEnabled(False)
6619 self.volOpFlip.setEnabled(False)
6232 self.volOpCohInt.setEnabled(False)
6620 self.volOpCohInt.setEnabled(False)
6233 self.volOpRadarfrequency.setEnabled(False)
6621 self.volOpRadarfrequency.setEnabled(False)
6234
6622
6235 self.volOpChannel.setEnabled(False)
6623 self.volOpChannel.setEnabled(False)
6236 self.volOpHeights.setEnabled(False)
6624 self.volOpHeights.setEnabled(False)
6237 self.volOpProfile.setEnabled(False)
6625 self.volOpProfile.setEnabled(False)
6238 self.volOpComMode.setEnabled(False)
6626 self.volOpComMode.setEnabled(False)
6239
6627
6240 self.volGraphPath.setEnabled(False)
6628 self.volGraphPath.setEnabled(False)
6241 self.volGraphPrefix.setEnabled(False)
6629 self.volGraphPrefix.setEnabled(False)
6242 self.volGraphToolPath.setEnabled(False)
6630 self.volGraphToolPath.setEnabled(False)
6243
6631
6244 # set Graph Voltage
6632 # set Graph Voltage
6245 self.volGraphChannelList.setEnabled(False)
6633 self.volGraphChannelList.setEnabled(False)
6246 self.volGraphfreqrange.setEnabled(False)
6634 self.volGraphfreqrange.setEnabled(False)
6247 self.volGraphHeightrange.setEnabled(False)
6635 self.volGraphHeightrange.setEnabled(False)
6248
6636
6249 # set Operation Spectra
6637 # set Operation Spectra
6250 self.specOpnFFTpoints.setEnabled(False)
6638 self.specOpnFFTpoints.setEnabled(False)
6251 self.specOpProfiles.setEnabled(False)
6639 self.specOpProfiles.setEnabled(False)
6252 self.specOpippFactor.setEnabled(False)
6640 self.specOpippFactor.setEnabled(False)
6253 self.specOppairsList.setEnabled(False)
6641 self.specOppairsList.setEnabled(False)
6254 self.specOpComChannel.setEnabled(False)
6642 self.specOpComChannel.setEnabled(False)
6255 self.specOpComHeights.setEnabled(False)
6643 self.specOpComHeights.setEnabled(False)
6256 self.specOpIncoherent.setEnabled(False)
6644 self.specOpIncoherent.setEnabled(False)
6257 self.specOpgetNoise.setEnabled(False)
6645 self.specOpgetNoise.setEnabled(False)
6258 self.specOpRadarfrequency.setEnabled(False)
6646 self.specOpRadarfrequency.setEnabled(False)
6259
6647
6260
6648
6261 self.specOpChannel.setEnabled(False)
6649 self.specOpChannel.setEnabled(False)
6262 self.specOpHeights.setEnabled(False)
6650 self.specOpHeights.setEnabled(False)
6263 # set Graph Spectra
6651 # set Graph Spectra
6264 self.specGgraphChannelList.setEnabled(False)
6652 self.specGgraphChannelList.setEnabled(False)
6265 self.specGgraphFreq.setEnabled(False)
6653 self.specGgraphFreq.setEnabled(False)
6266 self.specGgraphHeight.setEnabled(False)
6654 self.specGgraphHeight.setEnabled(False)
6267 self.specGgraphDbsrange.setEnabled(False)
6655 self.specGgraphDbsrange.setEnabled(False)
6268 self.specGgraphmagnitud.setEnabled(False)
6656 self.specGgraphmagnitud.setEnabled(False)
6269 self.specGgraphTminTmax.setEnabled(False)
6657 self.specGgraphTminTmax.setEnabled(False)
6270 self.specGgraphTimeRange.setEnabled(False)
6658 self.specGgraphTimeRange.setEnabled(False)
6271 self.specGraphPath.setEnabled(False)
6659 self.specGraphPath.setEnabled(False)
6272 self.specGraphToolPath.setEnabled(False)
6660 self.specGraphToolPath.setEnabled(False)
6273 self.specGraphPrefix.setEnabled(False)
6661 self.specGraphPrefix.setEnabled(False)
6274
6662
6275 self.specGgraphftpratio.setEnabled(False)
6663 self.specGgraphftpratio.setEnabled(False)
6276 # set Operation SpectraHeis
6664 # set Operation SpectraHeis
6277 self.specHeisOpIncoherent.setEnabled(False)
6665 self.specHeisOpIncoherent.setEnabled(False)
6278 self.specHeisOpCobIncInt.setEnabled(False)
6666 self.specHeisOpCobIncInt.setEnabled(False)
6279 # set Graph SpectraHeis
6667 # set Graph SpectraHeis
6280 self.specHeisGgraphChannelList.setEnabled(False)
6668 self.specHeisGgraphChannelList.setEnabled(False)
6281 self.specHeisGgraphXminXmax.setEnabled(False)
6669 self.specHeisGgraphXminXmax.setEnabled(False)
6282 self.specHeisGgraphYminYmax.setEnabled(False)
6670 self.specHeisGgraphYminYmax.setEnabled(False)
6283 self.specHeisGgraphTminTmax.setEnabled(False)
6671 self.specHeisGgraphTminTmax.setEnabled(False)
6284 self.specHeisGgraphTimeRange.setEnabled(False)
6672 self.specHeisGgraphTimeRange.setEnabled(False)
6285 self.specHeisGgraphftpratio.setEnabled(False)
6673 self.specHeisGgraphftpratio.setEnabled(False)
6286 self.specHeisGraphPath.setEnabled(False)
6674 self.specHeisGraphPath.setEnabled(False)
6287 self.specHeisGraphPrefix.setEnabled(False)
6675 self.specHeisGraphPrefix.setEnabled(False)
6288 self.specHeisGraphToolPath.setEnabled(False)
6676 self.specHeisGraphToolPath.setEnabled(False)
6289
6677
6290
6678
6291 # tool tip gui
6679 # tool tip gui
6292 QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
6680 QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
6293 self.projectExplorerTree.setToolTip('Right clik to add Project or Unit Process')
6681 self.projectExplorerTree.setToolTip('Right clik to add Project or Unit Process')
6294 # tool tip gui project
6682 # tool tip gui project
6295 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>')
6683 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>')
6296 self.proComWalk.setCurrentIndex(0)
6684 self.proComWalk.setCurrentIndex(0)
6297 # tool tip gui volOp
6685 # tool tip gui volOp
6298 self.volOpChannel.setToolTip('Example: 1,2,3,4,5')
6686 self.volOpChannel.setToolTip('Example: 1,2,3,4,5')
6299 self.volOpHeights.setToolTip('Example: 90,180')
6687 self.volOpHeights.setToolTip('Example: 90,180')
6300 self.volOpFilter.setToolTip('Example: 2')
6688 self.volOpFilter.setToolTip('Example: 2')
6301 self.volOpProfile.setToolTip('Example:0,127')
6689 self.volOpProfile.setToolTip('Example:0,127')
6302 self.volOpCohInt.setToolTip('Example: 128')
6690 self.volOpCohInt.setToolTip('Example: 128')
6303 self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3')
6691 self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3')
6304 self.volOpOk.setToolTip('If you have finished, please Ok ')
6692 self.volOpOk.setToolTip('If you have finished, please Ok ')
6305 # tool tip gui volGraph
6693 # tool tip gui volGraph
6306 self.volGraphfreqrange.setToolTip('Example: -30,30')
6694 self.volGraphfreqrange.setToolTip('Example: -30,30')
6307 self.volGraphHeightrange.setToolTip('Example: 20,180')
6695 self.volGraphHeightrange.setToolTip('Example: 20,180')
6308 # tool tip gui specOp
6696 # tool tip gui specOp
6309 self.specOpnFFTpoints.setToolTip('Example: 128')
6697 self.specOpnFFTpoints.setToolTip('Example: 128')
6310 self.specOpProfiles.setToolTip('Example: 128')
6698 self.specOpProfiles.setToolTip('Example: 128')
6311 self.specOpippFactor.setToolTip('Example:1.0')
6699 self.specOpippFactor.setToolTip('Example:1.0')
6312 self.specOpIncoherent.setToolTip('Example: 10')
6700 self.specOpIncoherent.setToolTip('Example: 10')
6313 self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)')
6701 self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)')
6314
6702
6315 self.specOpChannel.setToolTip('Example: 0,1,2,3')
6703 self.specOpChannel.setToolTip('Example: 0,1,2,3')
6316 self.specOpHeights.setToolTip('Example: 90,180')
6704 self.specOpHeights.setToolTip('Example: 90,180')
6317 self.specOppairsList.setToolTip('Example: (0,1),(2,3)')
6705 self.specOppairsList.setToolTip('Example: (0,1),(2,3)')
6318 # tool tip gui specGraph
6706 # tool tip gui specGraph
6319
6707
6320 self.specGgraphChannelList.setToolTip('Example: 0,3,4')
6708 self.specGgraphChannelList.setToolTip('Example: 0,3,4')
6321 self.specGgraphFreq.setToolTip('Example: -20,20')
6709 self.specGgraphFreq.setToolTip('Example: -20,20')
6322 self.specGgraphHeight.setToolTip('Example: 100,400')
6710 self.specGgraphHeight.setToolTip('Example: 100,400')
6323 self.specGgraphDbsrange.setToolTip('Example: 30,170')
6711 self.specGgraphDbsrange.setToolTip('Example: 30,170')
6324
6712
6325 self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME')
6713 self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME')
6326
6714
6327 sys.stdout = ShowMeConsole(textWritten=self.normalOutputWritten)
6715 sys.stdout = ShowMeConsole(textWritten=self.normalOutputWritten)
6328 sys.stderr = ShowMeConsole(textWritten=self.errorOutputWritten)
6716 # sys.stderr = ShowMeConsole(textWritten=self.errorOutputWritten)
6329
6717
6330
6718
6331 class UnitProcessWindow(QMainWindow, Ui_UnitProcess):
6719 class UnitProcessWindow(QMainWindow, Ui_UnitProcess):
6332 """
6720 """
6333 Class documentation goes here.
6721 Class documentation goes here.
6334 """
6722 """
6335 closed = pyqtSignal()
6723 closed = pyqtSignal()
6336 create = False
6724 create = False
6337
6725
6338 def __init__(self, parent=None):
6726 def __init__(self, parent=None):
6339 """
6727 """
6340 Constructor
6728 Constructor
6341 """
6729 """
6342 QMainWindow.__init__(self, parent)
6730 QMainWindow.__init__(self, parent)
6343 self.setupUi(self)
6731 self.setupUi(self)
6344 self.getFromWindow = None
6732 self.getFromWindow = None
6345 self.getfromWindowList = []
6733 self.getfromWindowList = []
6346 self.dataTypeProject = None
6734 self.dataTypeProject = None
6347
6735
6348 self.listUP = None
6736 self.listUP = None
6349
6737
6350 @pyqtSignature("")
6738 @pyqtSignature("")
6351 def on_unitPokbut_clicked(self):
6739 def on_unitPokbut_clicked(self):
6352 """
6740 """
6353 Slot documentation goes here.
6741 Slot documentation goes here.
6354 """
6742 """
6355 self.create = True
6743 self.create = True
6356 self.getFromWindow = self.getfromWindowList[int(self.comboInputBox.currentIndex())]
6744 self.getFromWindow = self.getfromWindowList[int(self.comboInputBox.currentIndex())]
6357 # self.nameofUP= str(self.nameUptxt.text())
6745 # self.nameofUP= str(self.nameUptxt.text())
6358 self.typeofUP = str(self.comboTypeBox.currentText())
6746 self.typeofUP = str(self.comboTypeBox.currentText())
6359 self.close()
6747 self.close()
6360
6748
6361
6749
6362 @pyqtSignature("")
6750 @pyqtSignature("")
6363 def on_unitPcancelbut_clicked(self):
6751 def on_unitPcancelbut_clicked(self):
6364 """
6752 """
6365 Slot documentation goes here.
6753 Slot documentation goes here.
6366 """
6754 """
6367 self.create = False
6755 self.create = False
6368 self.close()
6756 self.close()
6369
6757
6370 def loadTotalList(self):
6758 def loadTotalList(self):
6371 self.comboInputBox.clear()
6759 self.comboInputBox.clear()
6372 for i in self.getfromWindowList:
6760 for i in self.getfromWindowList:
6373
6761
6374 name = i.getElementName()
6762 name = i.getElementName()
6375 if name == 'Project':
6763 if name == 'Project':
6376 id = i.id
6764 id = i.id
6377 name = i.name
6765 name = i.name
6378 if self.dataTypeProject == 'Voltage':
6766 if self.dataTypeProject == 'Voltage':
6379 self.comboTypeBox.clear()
6767 self.comboTypeBox.clear()
6380 self.comboTypeBox.addItem("Voltage")
6768 self.comboTypeBox.addItem("Voltage")
6381
6769
6382 if self.dataTypeProject == 'Spectra':
6770 if self.dataTypeProject == 'Spectra':
6383 self.comboTypeBox.clear()
6771 self.comboTypeBox.clear()
6384 self.comboTypeBox.addItem("Spectra")
6772 self.comboTypeBox.addItem("Spectra")
6385 self.comboTypeBox.addItem("Correlation")
6773 self.comboTypeBox.addItem("Correlation")
6386 if self.dataTypeProject == 'Fits':
6774 if self.dataTypeProject == 'Fits':
6387 self.comboTypeBox.clear()
6775 self.comboTypeBox.clear()
6388 self.comboTypeBox.addItem("SpectraHeis")
6776 self.comboTypeBox.addItem("SpectraHeis")
6389
6777
6390
6778
6391 if name == 'ProcUnit':
6779 if name == 'ProcUnit':
6392 id = int(i.id) - 1
6780 id = int(i.id) - 1
6393 name = i.datatype
6781 name = i.datatype
6394 if name == 'Voltage':
6782 if name == 'Voltage':
6395 self.comboTypeBox.clear()
6783 self.comboTypeBox.clear()
6396 self.comboTypeBox.addItem("Spectra")
6784 self.comboTypeBox.addItem("Spectra")
6397 self.comboTypeBox.addItem("SpectraHeis")
6785 self.comboTypeBox.addItem("SpectraHeis")
6398 self.comboTypeBox.addItem("Correlation")
6786 self.comboTypeBox.addItem("Correlation")
6399 if name == 'Spectra':
6787 if name == 'Spectra':
6400 self.comboTypeBox.clear()
6788 self.comboTypeBox.clear()
6401 self.comboTypeBox.addItem("Spectra")
6789 self.comboTypeBox.addItem("Spectra")
6402 self.comboTypeBox.addItem("SpectraHeis")
6790 self.comboTypeBox.addItem("SpectraHeis")
6403 self.comboTypeBox.addItem("Correlation")
6791 self.comboTypeBox.addItem("Correlation")
6404 if name == 'SpectraHeis':
6792 if name == 'SpectraHeis':
6405 self.comboTypeBox.clear()
6793 self.comboTypeBox.clear()
6406 self.comboTypeBox.addItem("SpectraHeis")
6794 self.comboTypeBox.addItem("SpectraHeis")
6407
6795
6408 self.comboInputBox.addItem(str(name))
6796 self.comboInputBox.addItem(str(name))
6409 # self.comboInputBox.addItem(str(name)+str(id))
6797 # self.comboInputBox.addItem(str(name)+str(id))
6410
6798
6411 def closeEvent(self, event):
6799 def closeEvent(self, event):
6412 self.closed.emit()
6800 self.closed.emit()
6413 event.accept()
6801 event.accept()
6414
6802
6415 class Ftp(QMainWindow, Ui_Ftp):
6803 class Ftp(QMainWindow, Ui_Ftp):
6416 """
6804 """
6417 Class documentation goes here.
6805 Class documentation goes here.
6418 """
6806 """
6419 create = False
6807 create = False
6420 closed = pyqtSignal()
6808 closed = pyqtSignal()
6421 server = None
6809 server = None
6422 folder = None
6810 folder = None
6423 username = None
6811 username = None
6424 password = None
6812 password = None
6425 ftp_wei = None
6813 ftp_wei = None
6426 exp_code = None
6814 exp_code = None
6427 sub_exp_code = None
6815 sub_exp_code = None
6428 plot_pos = None
6816 plot_pos = None
6429
6817
6430 def __init__(self, parent=None):
6818 def __init__(self, parent=None):
6431 """
6819 """
6432 Constructor
6820 Constructor
6433 """
6821 """
6434 QMainWindow.__init__(self, parent)
6822 QMainWindow.__init__(self, parent)
6435 self.setupUi(self)
6823 self.setupUi(self)
6436 self.setParameter()
6824 self.setParameter()
6437
6825
6438 def setParameter(self):
6826 def setParameter(self):
6439 self.setWindowTitle("ROJ-Signal Chain")
6827 self.setWindowTitle("ROJ-Signal Chain")
6440 self.serverFTP.setToolTip('Example: jro-app.igp.gob.pe')
6828 self.serverFTP.setToolTip('Example: jro-app.igp.gob.pe')
6441 self.folderFTP.setToolTip('Example: /home/wmaster/graficos')
6829 self.folderFTP.setToolTip('Example: /home/wmaster/graficos')
6442 self.usernameFTP.setToolTip('Example: myusername')
6830 self.usernameFTP.setToolTip('Example: myusername')
6443 self.passwordFTP.setToolTip('Example: mypass ')
6831 self.passwordFTP.setToolTip('Example: mypass ')
6444 self.weightFTP.setToolTip('Example: 0')
6832 self.weightFTP.setToolTip('Example: 0')
6445 self.expcodeFTP.setToolTip('Example: 0')
6833 self.expcodeFTP.setToolTip('Example: 0')
6446 self.subexpFTP.setToolTip('Example: 0')
6834 self.subexpFTP.setToolTip('Example: 0')
6447 self.plotposFTP.setToolTip('Example: 0')
6835 self.plotposFTP.setToolTip('Example: 0')
6448
6836
6449 def setParmsfromTemporal(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos):
6837 def setParmsfromTemporal(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos):
6450 self.serverFTP.setText(str(server))
6838 self.serverFTP.setText(str(server))
6451 self.folderFTP.setText(str(folder))
6839 self.folderFTP.setText(str(folder))
6452 self.usernameFTP.setText(str(username))
6840 self.usernameFTP.setText(str(username))
6453 self.passwordFTP.setText(str(password))
6841 self.passwordFTP.setText(str(password))
6454 self.weightFTP.setText(str(ftp_wei))
6842 self.weightFTP.setText(str(ftp_wei))
6455 self.expcodeFTP.setText(str(exp_code))
6843 self.expcodeFTP.setText(str(exp_code))
6456 self.subexpFTP.setText(str(sub_exp_code))
6844 self.subexpFTP.setText(str(sub_exp_code))
6457 self.plotposFTP.setText(str(plot_pos))
6845 self.plotposFTP.setText(str(plot_pos))
6458
6846
6459 def getParmsFromFtpWindow(self):
6847 def getParmsFromFtpWindow(self):
6460 """
6848 """
6461 Return Inputs Project:
6849 Return Inputs Project:
6462 - server
6850 - server
6463 - folder
6851 - folder
6464 - username
6852 - username
6465 - password
6853 - password
6466 - ftp_wei
6854 - ftp_wei
6467 - exp_code
6855 - exp_code
6468 - sub_exp_code
6856 - sub_exp_code
6469 - plot_pos
6857 - plot_pos
6470 """
6858 """
6471 name_server_ftp = str(self.serverFTP.text())
6859 name_server_ftp = str(self.serverFTP.text())
6472 try:
6860 try:
6473 name = str(self.serverFTP.text())
6861 name = str(self.serverFTP.text())
6474 except:
6862 except:
6475 self.console.clear()
6863 self.console.clear()
6476 self.console.append("Please Write a FTP Server")
6864 self.console.append("Please Write a FTP Server")
6477 return 0
6865 return 0
6478
6866
6479 folder_server_ftp = str(self.folderFTP.text())
6867 folder_server_ftp = str(self.folderFTP.text())
6480 try:
6868 try:
6481 folder = str(self.folderFTP.text())
6869 folder = str(self.folderFTP.text())
6482 except:
6870 except:
6483 self.console.clear()
6871 self.console.clear()
6484 self.console.append("Please Write a Folder")
6872 self.console.append("Please Write a Folder")
6485 return 0
6873 return 0
6486
6874
6487 username_ftp = str(self.usernameFTP.text())
6875 username_ftp = str(self.usernameFTP.text())
6488 try:
6876 try:
6489 username = str(self.usernameFTP.text())
6877 username = str(self.usernameFTP.text())
6490 except:
6878 except:
6491 self.console.clear()
6879 self.console.clear()
6492 self.console.append("Please Write a User Name")
6880 self.console.append("Please Write a User Name")
6493 return 0
6881 return 0
6494
6882
6495 password_ftp = str(self.passwordFTP.text())
6883 password_ftp = str(self.passwordFTP.text())
6496 try:
6884 try:
6497 password = str(self.passwordFTP.text())
6885 password = str(self.passwordFTP.text())
6498 except:
6886 except:
6499 self.console.clear()
6887 self.console.clear()
6500 self.console.append("Please Write a passwordFTP")
6888 self.console.append("Please Write a passwordFTP")
6501 return 0
6889 return 0
6502
6890
6503 ftp_wei = self.weightFTP.text()
6891 ftp_wei = self.weightFTP.text()
6504 if not ftp_wei == "":
6892 if not ftp_wei == "":
6505 try:
6893 try:
6506 ftp_wei = int(self.weightFTP.text())
6894 ftp_wei = int(self.weightFTP.text())
6507 except:
6895 except:
6508 self.console.clear()
6896 self.console.clear()
6509 self.console.append("Please Write a ftp_wei number")
6897 self.console.append("Please Write a ftp_wei number")
6510 return 0
6898 return 0
6511
6899
6512 exp_code = self.expcodeFTP.text()
6900 exp_code = self.expcodeFTP.text()
6513 if not exp_code == "":
6901 if not exp_code == "":
6514 try:
6902 try:
6515 exp_code = int(self.expcodeFTP.text())
6903 exp_code = int(self.expcodeFTP.text())
6516 except:
6904 except:
6517 self.console.clear()
6905 self.console.clear()
6518 self.console.append("Please Write a exp_code number")
6906 self.console.append("Please Write a exp_code number")
6519 return 0
6907 return 0
6520
6908
6521
6909
6522 sub_exp_code = self.subexpFTP.text()
6910 sub_exp_code = self.subexpFTP.text()
6523 if not sub_exp_code == "":
6911 if not sub_exp_code == "":
6524 try:
6912 try:
6525 sub_exp_code = int(self.subexpFTP.text())
6913 sub_exp_code = int(self.subexpFTP.text())
6526 except:
6914 except:
6527 self.console.clear()
6915 self.console.clear()
6528 self.console.append("Please Write a sub_exp_code number")
6916 self.console.append("Please Write a sub_exp_code number")
6529 return 0
6917 return 0
6530
6918
6531 plot_pos = self.plotposFTP.text()
6919 plot_pos = self.plotposFTP.text()
6532 if not plot_pos == "":
6920 if not plot_pos == "":
6533 try:
6921 try:
6534 plot_pos = int(self.plotposFTP.text())
6922 plot_pos = int(self.plotposFTP.text())
6535 except:
6923 except:
6536 self.console.clear()
6924 self.console.clear()
6537 self.console.append("Please Write a plot_pos number")
6925 self.console.append("Please Write a plot_pos number")
6538 return 0
6926 return 0
6539
6927
6540 return name_server_ftp, folder_server_ftp, username_ftp, password_ftp, ftp_wei, exp_code, sub_exp_code, plot_pos
6928 return name_server_ftp, folder_server_ftp, username_ftp, password_ftp, ftp_wei, exp_code, sub_exp_code, plot_pos
6541
6929
6542 @pyqtSignature("")
6930 @pyqtSignature("")
6543 def on_ftpOkButton_clicked(self):
6931 def on_ftpOkButton_clicked(self):
6544 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow()
6932 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow()
6545 self.create = True
6933 self.create = True
6546 self.close()
6934 self.close()
6547
6935
6548 @pyqtSignature("")
6936 @pyqtSignature("")
6549 def on_ftpCancelButton_clicked(self):
6937 def on_ftpCancelButton_clicked(self):
6550 self.create = False
6938 self.create = False
6551 self.close()
6939 self.close()
6552
6940
6553 def closeEvent(self, event):
6941 def closeEvent(self, event):
6554 self.closed.emit()
6942 self.closed.emit()
6555 event.accept()
6943 event.accept()
6556
6944
6557 class ftpBuffer():
6945 class ftpBuffer():
6558 server = None
6946 server = None
6559 folder = None
6947 folder = None
6560 username = None
6948 username = None
6561 password = None
6949 password = None
6562 ftp_wei = None
6950 ftp_wei = None
6563 exp_code = None
6951 exp_code = None
6564 sub_exp_code = None
6952 sub_exp_code = None
6565 plot_pos = None
6953 plot_pos = None
6566 create = False
6954 create = False
6567 withoutconfig = False
6955 withoutconfig = False
6568 createforView = False
6956 createforView = False
6569 localfolder = None
6957 localfolder = None
6570 extension = None
6958 extension = None
6571 period = None
6959 period = None
6572 protocol = None
6960 protocol = None
6573
6961
6574 def __init__(self):
6962 def __init__(self):
6575
6963
6576 self.create = False
6964 self.create = False
6577 self.server = None
6965 self.server = None
6578 self.folder = None
6966 self.folder = None
6579 self.username = None
6967 self.username = None
6580 self.password = None
6968 self.password = None
6581 self.ftp_wei = None
6969 self.ftp_wei = None
6582 self.exp_code = None
6970 self.exp_code = None
6583 self.sub_exp_code = None
6971 self.sub_exp_code = None
6584 self.plot_pos = None
6972 self.plot_pos = None
6585 # self.create = False
6973 # self.create = False
6586 self.localfolder = None
6974 self.localfolder = None
6587 self.extension = None
6975 self.extension = None
6588 self.period = None
6976 self.period = None
6589 self.protocol = None
6977 self.protocol = None
6590
6978
6591 def setwithoutconfiguration(self):
6979 def setwithoutconfiguration(self):
6592
6980
6593 self.create = False
6981 self.create = False
6594 self.server = "jro-app.igp.gob.pe"
6982 self.server = "jro-app.igp.gob.pe"
6595 self.folder = "/home/wmaster/graficos"
6983 self.folder = "/home/wmaster/graficos"
6596 self.username = "wmaster"
6984 self.username = "wmaster"
6597 self.password = "mst2010vhf"
6985 self.password = "mst2010vhf"
6598 self.ftp_wei = "0"
6986 self.ftp_wei = "0"
6599 self.exp_code = "0"
6987 self.exp_code = "0"
6600 self.sub_exp_code = "0"
6988 self.sub_exp_code = "0"
6601 self.plot_pos = "0"
6989 self.plot_pos = "0"
6602 self.withoutconfig = True
6990 self.withoutconfig = True
6603 self.localfolder = './'
6991 self.localfolder = './'
6604 self.extension = '.png'
6992 self.extension = '.png'
6605 self.period = '60'
6993 self.period = '60'
6606 self.protocol = 'ftp'
6994 self.protocol = 'ftp'
6607 self.createforView = True
6995 self.createforView = True
6608
6996
6609 def save(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos, localfolder='./', extension='.png', period='60', protocol='ftp'):
6997 def save(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos, localfolder='./', extension='.png', period='60', protocol='ftp'):
6610
6998
6611 self.server = server
6999 self.server = server
6612 self.folder = folder
7000 self.folder = folder
6613 self.username = username
7001 self.username = username
6614 self.password = password
7002 self.password = password
6615 self.ftp_wei = ftp_wei
7003 self.ftp_wei = ftp_wei
6616 self.exp_code = exp_code
7004 self.exp_code = exp_code
6617 self.sub_exp_code = sub_exp_code
7005 self.sub_exp_code = sub_exp_code
6618 self.plot_pos = plot_pos
7006 self.plot_pos = plot_pos
6619 self.create = True
7007 self.create = True
6620 self.withoutconfig = False
7008 self.withoutconfig = False
6621 self.createforView = True
7009 self.createforView = True
6622 self.localfolder = localfolder
7010 self.localfolder = localfolder
6623
7011
6624
7012
6625 def recover(self):
7013 def recover(self):
6626
7014
6627 return self.server, self.folder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos
7015 return self.server, self.folder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos
6628
7016
6629 class ShowMeConsole(QtCore.QObject):
7017 class ShowMeConsole(QtCore.QObject):
6630 textWritten = QtCore.pyqtSignal(str)
7018 textWritten = QtCore.pyqtSignal(str)
6631 def write (self, text):
7019 def write (self, text):
6632 self.textWritten.emit(str(text))
7020 self.textWritten.emit(str(text))
6633
7021
6634 class PlotManager():
7022 class PlotManager():
6635 def __init__(self, queue):
7023 def __init__(self, queue):
6636 self.queue = queue
7024 self.queue = queue
6637 self.objPlotDict = {}
7025 self.objPlotDict = {}
6638
7026
6639 def processIncoming(self):
7027 def processIncoming(self):
6640 while self.queue.qsize():
7028 while self.queue.qsize():
6641 try:
7029 try:
6642 dataFromQueue = self.queue.get(True)
7030 dataFromQueue = self.queue.get(True)
6643 if dataFromQueue == None:
7031 if dataFromQueue == None:
6644 continue
7032 continue
6645
7033
6646 dataPlot = dataFromQueue['data']
7034 dataPlot = dataFromQueue['data']
6647 kwargs = dataFromQueue['kwargs']
7035 kwargs = dataFromQueue['kwargs']
6648 id = kwargs['id']
7036 id = kwargs['id']
6649 if 'channelList' in kwargs.keys():
7037 if 'channelList' in kwargs.keys():
6650 channelList = kwargs['channelList']
7038 channelList = kwargs['channelList']
6651 else:
7039 else:
6652 channelList = None
7040 channelList = None
6653 plotname = kwargs.pop('type')
7041 plotname = kwargs.pop('type')
6654
7042
6655 if not(id in self.objPlotDict.keys()):
7043 if not(id in self.objPlotDict.keys()):
6656 className = eval(plotname)
7044 className = eval(plotname)
6657 self.objPlotDict[id] = className(id, channelList, dataPlot)
7045 self.objPlotDict[id] = className(id, channelList, dataPlot)
6658 self.objPlotDict[id].show()
7046 self.objPlotDict[id].show()
6659
7047
6660 self.objPlotDict[id].run(dataPlot , **kwargs)
7048 self.objPlotDict[id].run(dataPlot , **kwargs)
6661
7049
6662 except Queue.Empty:
7050 except Queue.Empty:
6663 pass
7051 pass
6664
7052
6665
7053
@@ -1,115 +1,125
1 import threading
1 import threading
2 import Queue
2 import Queue
3 try:
3 try:
4 from gevent import sleep
4 from gevent import sleep
5 except:
5 except:
6 from time import sleep
6 from time import sleep
7
7
8 from schainpy.controller import Project
8 from schainpy.controller import Project
9 from command import *
9 from command import *
10
10
11 class ControllerThread(threading.Thread):
11 class ControllerThread(threading.Thread):
12
12 def __init__(self, filename, data_q=None):
13 def __init__(self, filename, data_q=None):
14
13 super(ControllerThread, self).__init__()
15 super(ControllerThread, self).__init__()
16 self.setDaemon(True)
17
14 self.filename = filename
18 self.filename = filename
15 self.data_q = data_q
19 self.data_q = data_q
16 self.control = {'stop':False,'pause':False}
20 self.control = {'stop':False,'pause':False}
17
21
18 def stop(self):
22 def stop(self):
19 self.control['stop'] = True
23 self.control['stop'] = True
20
24
21 def pause(self):
25 def pause(self):
22 self.control['pause'] = not(self.control['pause'])
26 self.control['pause'] = not(self.control['pause'])
23
27
24 def run(self):
28 def run(self):
25 self.control['stop'] = False
29 self.control['stop'] = False
26 self.control['pause'] = False
30 self.control['pause'] = False
27 self.controllerObj = Project(self.control, self.data_q)
31 self.controllerObj = Project(self.control, self.data_q)
28 self.controllerObj.readXml(self.filename)
32 self.controllerObj.readXml(self.filename)
29 self.controllerObj.createObjects()
33 self.controllerObj.createObjects()
30 self.controllerObj.connectObjects()
34 self.controllerObj.connectObjects()
31 self.controllerObj.run()
35 self.controllerObj.run()
32
36
33 class CommCtrlProcessThread(threading.Thread):
37 class CommCtrlProcessThread(threading.Thread):
34 """ Implements the threading.Thread interface (start, join, etc.) and
38 """ Implements the threading.Thread interface (start, join, etc.) and
35 can be controlled via the cmd_q Queue attribute. Replies are placed in
39 can be controlled via the cmd_q Queue attribute. Replies are placed in
36 the reply_q Queue attribute.
40 the reply_q Queue attribute.
37 """
41 """
38 def __init__(self, cmd_q=Queue.Queue(), reply_q=Queue.Queue()):
42 def __init__(self, cmd_q=Queue.Queue(), reply_q=Queue.Queue()):
39 super(CommCtrlProcessThread, self).__init__()
43 super(CommCtrlProcessThread, self).__init__()
40 self.cmd_q = cmd_q
44 self.cmd_q = cmd_q
41 # self.reply_q = reply_q
45 # self.reply_q = reply_q
42
46
43 # self.print_q = Queue.Queue()
47 # self.print_q = Queue.Queue()
44 # self.data_q = Queue.Queue()
48 # self.data_q = Queue.Queue()
45
49
46
50
47 self.alive = threading.Event()
51 self.alive = threading.Event()
48 self.setDaemon(True)
52 self.setDaemon(True)
49 self.alive.set()
53 self.alive.set()
50 self.socket = None
54 self.socket = None
51
55
52 self.socketIO = None
56 self.socketIO = None
53 self.mySocket = None
57 self.mySocket = None
54
58
55 self.controllerObj = None
59 self.controllerObj = None
56
60
57 self.handlers = {
61 self.handlers = {
58 ProcessCommand.PROCESS: self._handle_ioPROCESSTHREAD,
62 ProcessCommand.PROCESS: self._handle_ioPROCESSTHREAD,
59 ProcessCommand.MESSAGE: self._handle_ioMESSAGE,
63 ProcessCommand.MESSAGE: self._handle_ioMESSAGE,
60 ProcessCommand.DATA: self._handle_ioDATA,
64 ProcessCommand.DATA: self._handle_ioDATA,
61 ProcessCommand.STOP: self._handle_ioSTOP,
65 ProcessCommand.STOP: self._handle_ioSTOP,
62 ProcessCommand.PAUSE: self._handle_ioPAUSE
66 ProcessCommand.PAUSE: self._handle_ioPAUSE
63 }
67 }
64
68
65 def run(self):
69 def run(self):
66
70
67 while self.alive.isSet():
71 while self.alive.isSet():
68 try:
72 try:
69 cmd = self.cmd_q.get(True, 0.1)
73 cmd = self.cmd_q.get(True, 0.1)
70 self.handlers[cmd.type](cmd)
74 self.handlers[cmd.type](cmd)
71 except Queue.Empty as e:
75 except Queue.Empty as e:
72 sleep(0.1)
73 continue
76 continue
74
77
75 def isRunning(self):
78 def isRunning(self):
76
79
77 if self.controllerObj == None:
80 if self.controllerObj == None:
78 return False
81 return False
79
82
80 if self.controllerObj.isAlive():
83 if self.controllerObj.isAlive():
81 return True
84 return True
82
85
83 return False
86 return False
84
87
85 def _handle_ioPROCESSTHREAD(self, cmd):
88 def _handle_ioPROCESSTHREAD(self, cmd):
86 filename = cmd.data
89 filename = cmd.data
87 self.controllerObj = ControllerThread(filename=filename)
90 self.controllerObj = ControllerThread(filename=filename)
88 self.controllerObj.start()
91 self.controllerObj.start()
89
92
90 def _handle_ioPAUSE(self, cmd):
93 def _handle_ioPAUSE(self, cmd):
91 self.controllerObj.pause()
94 self.controllerObj.pause()
92
95
93 def _handle_ioSTOP(self, cmd):
96 def _handle_ioSTOP(self, cmd):
94 self.controllerObj.stop()
97 self.controllerObj.stop()
98
99 while self.controllerObj.isAlive():
100 self.console.clear()
101 self.console.append("Close graphics before continue...")
102 sleep(0.1)
103
104
95 self.controllerObj.join()
105 self.controllerObj.join()
96 # print "Process thread finished"
106 # print "Process thread finished"
97
107
98 def _handle_ioDATA(self, cmd):
108 def _handle_ioDATA(self, cmd):
99 self.reply_q.put(self._success_reply_data(data=cmd.data))
109 self.reply_q.put(self._success_reply_data(data=cmd.data))
100
110
101 def _handle_ioMESSAGE(self, cmd):
111 def _handle_ioMESSAGE(self, cmd):
102 self.reply_q.put(self._success_reply_message(data=cmd.data))
112 self.reply_q.put(self._success_reply_message(data=cmd.data))
103
113
104 def _success_reply_data(self, data=None):
114 def _success_reply_data(self, data=None):
105 return ClientReply(ClientReply.DATA, data)
115 return ClientReply(ClientReply.DATA, data)
106
116
107 def _success_reply_message(self, data=None):
117 def _success_reply_message(self, data=None):
108 return ClientReply(ClientReply.MESSAGE, data)
118 return ClientReply(ClientReply.MESSAGE, data)
109
119
110 def join(self, timeout=None):
120 def join(self, timeout=None):
111 self.alive.clear()
121 self.alive.clear()
112 threading.Thread.join(self, timeout)
122 threading.Thread.join(self, timeout)
113
123
114
124
115 No newline at end of file
125
@@ -1,171 +1,173
1
1
2 from PyQt4 import QtCore, QtGui
2 from PyQt4 import QtCore, QtGui
3
3
4 try:
4 try:
5 _fromUtf8 = QtCore.QString.fromUtf8
5 _fromUtf8 = QtCore.QString.fromUtf8
6 except AttributeError:
6 except AttributeError:
7 def _fromUtf8(s):
7 def _fromUtf8(s):
8 return s
8 return s
9
9
10 try:
10 try:
11 _encoding = QtGui.QApplication.UnicodeUTF8
11 _encoding = QtGui.QApplication.UnicodeUTF8
12 def _translate(context, text, disambig):
12 def _translate(context, text, disambig):
13 return QtGui.QApplication.translate(context, text, disambig, _encoding)
13 return QtGui.QApplication.translate(context, text, disambig, _encoding)
14 except AttributeError:
14 except AttributeError:
15 def _translate(context, text, disambig):
15 def _translate(context, text, disambig):
16 return QtGui.QApplication.translate(context, text, disambig)
16 return QtGui.QApplication.translate(context, text, disambig)
17
17
18 class Ui_ProjectTab(object):
18 class Ui_ProjectTab(object):
19
19
20 def setupUi(self):
20 def setupUi(self):
21
21
22 self.tabProject = QtGui.QWidget()
22 self.tabProject = QtGui.QWidget()
23 self.tabProject.setObjectName(_fromUtf8("tabProject"))
23 self.tabProject.setObjectName(_fromUtf8("tabProject"))
24 self.gridLayout_15 = QtGui.QGridLayout(self.tabProject)
24 self.gridLayout_15 = QtGui.QGridLayout(self.tabProject)
25 self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15"))
25 self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15"))
26 self.frame = QtGui.QFrame(self.tabProject)
26 self.frame = QtGui.QFrame(self.tabProject)
27 self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
27 self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
28 self.frame.setFrameShadow(QtGui.QFrame.Raised)
28 self.frame.setFrameShadow(QtGui.QFrame.Raised)
29 self.frame.setObjectName(_fromUtf8("frame"))
29 self.frame.setObjectName(_fromUtf8("frame"))
30 self.gridLayout_2 = QtGui.QGridLayout(self.frame)
30 self.gridLayout_2 = QtGui.QGridLayout(self.frame)
31 self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
31 self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
32 self.label = QtGui.QLabel(self.frame)
32 self.label = QtGui.QLabel(self.frame)
33 self.label.setObjectName(_fromUtf8("label"))
33 self.label.setObjectName(_fromUtf8("label"))
34 self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
34 self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
35 self.proName = QtGui.QLineEdit(self.frame)
35 self.proName = QtGui.QLineEdit(self.frame)
36 self.proName.setObjectName(_fromUtf8("proName"))
36 self.proName.setObjectName(_fromUtf8("proName"))
37 self.gridLayout_2.addWidget(self.proName, 0, 1, 1, 8)
37 self.gridLayout_2.addWidget(self.proName, 0, 1, 1, 8)
38 self.label_11 = QtGui.QLabel(self.frame)
38 self.label_11 = QtGui.QLabel(self.frame)
39 self.label_11.setObjectName(_fromUtf8("label_11"))
39 self.label_11.setObjectName(_fromUtf8("label_11"))
40 self.gridLayout_2.addWidget(self.label_11, 1, 0, 1, 1)
40 self.gridLayout_2.addWidget(self.label_11, 1, 0, 1, 1)
41 self.proComDataType = QtGui.QComboBox(self.frame)
41 self.proComDataType = QtGui.QComboBox(self.frame)
42 self.proComDataType.setObjectName(_fromUtf8("proComDataType"))
42 self.proComDataType.setObjectName(_fromUtf8("proComDataType"))
43 self.proComDataType.addItem(_fromUtf8(""))
43 self.proComDataType.addItem(_fromUtf8(""))
44 self.proComDataType.addItem(_fromUtf8(""))
44 self.proComDataType.addItem(_fromUtf8(""))
45 self.proComDataType.addItem(_fromUtf8(""))
45 self.proComDataType.addItem(_fromUtf8(""))
46 self.proComDataType.addItem(_fromUtf8(""))
46 self.gridLayout_2.addWidget(self.proComDataType, 1, 1, 1, 5)
47 self.gridLayout_2.addWidget(self.proComDataType, 1, 1, 1, 5)
47 self.proDataType = QtGui.QLineEdit(self.frame)
48 self.proDataType = QtGui.QLineEdit(self.frame)
48 self.proDataType.setObjectName(_fromUtf8("proDataType"))
49 self.proDataType.setObjectName(_fromUtf8("proDataType"))
49 self.gridLayout_2.addWidget(self.proDataType, 1, 6, 1, 3)
50 self.gridLayout_2.addWidget(self.proDataType, 1, 6, 1, 3)
50 self.label_15 = QtGui.QLabel(self.frame)
51 self.label_15 = QtGui.QLabel(self.frame)
51 self.label_15.setObjectName(_fromUtf8("label_15"))
52 self.label_15.setObjectName(_fromUtf8("label_15"))
52 self.gridLayout_2.addWidget(self.label_15, 2, 0, 1, 1)
53 self.gridLayout_2.addWidget(self.label_15, 2, 0, 1, 1)
53 self.proToolPath = QtGui.QToolButton(self.frame)
54 self.proToolPath = QtGui.QToolButton(self.frame)
54 self.proToolPath.setObjectName(_fromUtf8("proToolPath"))
55 self.proToolPath.setObjectName(_fromUtf8("proToolPath"))
55 self.gridLayout_2.addWidget(self.proToolPath, 2, 1, 1, 1)
56 self.gridLayout_2.addWidget(self.proToolPath, 2, 1, 1, 1)
56 self.proDataPath = QtGui.QLineEdit(self.frame)
57 self.proDataPath = QtGui.QLineEdit(self.frame)
57 self.proDataPath.setObjectName(_fromUtf8("proDataPath"))
58 self.proDataPath.setObjectName(_fromUtf8("proDataPath"))
58 self.gridLayout_2.addWidget(self.proDataPath, 2, 2, 1, 7)
59 self.gridLayout_2.addWidget(self.proDataPath, 2, 2, 1, 7)
59 self.label_23 = QtGui.QLabel(self.frame)
60 self.label_23 = QtGui.QLabel(self.frame)
60 self.label_23.setObjectName(_fromUtf8("label_23"))
61 self.label_23.setObjectName(_fromUtf8("label_23"))
61 self.gridLayout_2.addWidget(self.label_23, 3, 0, 1, 1)
62 self.gridLayout_2.addWidget(self.label_23, 3, 0, 1, 1)
62 self.proComReadMode = QtGui.QComboBox(self.frame)
63 self.proComReadMode = QtGui.QComboBox(self.frame)
63 self.proComReadMode.setObjectName(_fromUtf8("proComReadMode"))
64 self.proComReadMode.setObjectName(_fromUtf8("proComReadMode"))
64 self.proComReadMode.addItem(_fromUtf8(""))
65 self.proComReadMode.addItem(_fromUtf8(""))
65 self.proComReadMode.addItem(_fromUtf8(""))
66 self.proComReadMode.addItem(_fromUtf8(""))
66 self.gridLayout_2.addWidget(self.proComReadMode, 3, 1, 1, 2)
67 self.gridLayout_2.addWidget(self.proComReadMode, 3, 1, 1, 2)
67 self.label_33 = QtGui.QLabel(self.frame)
68 self.label_33 = QtGui.QLabel(self.frame)
68 self.label_33.setObjectName(_fromUtf8("label_33"))
69 self.label_33.setObjectName(_fromUtf8("label_33"))
69 self.gridLayout_2.addWidget(self.label_33, 3, 5, 1, 2)
70 self.gridLayout_2.addWidget(self.label_33, 3, 5, 1, 2)
70 self.proDelay = QtGui.QLineEdit(self.frame)
71 self.proDelay = QtGui.QLineEdit(self.frame)
71 self.proDelay.setObjectName(_fromUtf8("proDelay"))
72 self.proDelay.setObjectName(_fromUtf8("proDelay"))
72 self.gridLayout_2.addWidget(self.proDelay, 3, 8, 1, 1)
73 self.gridLayout_2.addWidget(self.proDelay, 3, 8, 1, 1)
73 self.label_32 = QtGui.QLabel(self.frame)
74 self.label_32 = QtGui.QLabel(self.frame)
74 self.label_32.setObjectName(_fromUtf8("label_32"))
75 self.label_32.setObjectName(_fromUtf8("label_32"))
75 self.gridLayout_2.addWidget(self.label_32, 4, 0, 1, 1)
76 self.gridLayout_2.addWidget(self.label_32, 4, 0, 1, 1)
76 self.proComWalk = QtGui.QComboBox(self.frame)
77 self.proComWalk = QtGui.QComboBox(self.frame)
77 self.proComWalk.setObjectName(_fromUtf8("proComWalk"))
78 self.proComWalk.setObjectName(_fromUtf8("proComWalk"))
78 self.proComWalk.addItem(_fromUtf8(""))
79 self.proComWalk.addItem(_fromUtf8(""))
79 self.proComWalk.addItem(_fromUtf8(""))
80 self.proComWalk.addItem(_fromUtf8(""))
80 self.gridLayout_2.addWidget(self.proComWalk, 4, 1, 1, 8)
81 self.gridLayout_2.addWidget(self.proComWalk, 4, 1, 1, 8)
81 self.proLoadButton = QtGui.QPushButton(self.frame)
82 self.proLoadButton = QtGui.QPushButton(self.frame)
82 self.proLoadButton.setObjectName(_fromUtf8("proLoadButton"))
83 self.proLoadButton.setObjectName(_fromUtf8("proLoadButton"))
83 self.gridLayout_2.addWidget(self.proLoadButton, 5, 0, 1, 9)
84 self.gridLayout_2.addWidget(self.proLoadButton, 5, 0, 1, 9)
84 self.label_10 = QtGui.QLabel(self.frame)
85 self.label_10 = QtGui.QLabel(self.frame)
85 self.label_10.setObjectName(_fromUtf8("label_10"))
86 self.label_10.setObjectName(_fromUtf8("label_10"))
86 self.gridLayout_2.addWidget(self.label_10, 3, 3, 1, 1)
87 self.gridLayout_2.addWidget(self.label_10, 3, 3, 1, 1)
87 self.proSet = QtGui.QLineEdit(self.frame)
88 self.proSet = QtGui.QLineEdit(self.frame)
88 self.proSet.setObjectName(_fromUtf8("proSet"))
89 self.proSet.setObjectName(_fromUtf8("proSet"))
89 self.gridLayout_2.addWidget(self.proSet, 3, 4, 1, 1)
90 self.gridLayout_2.addWidget(self.proSet, 3, 4, 1, 1)
90 self.gridLayout_15.addWidget(self.frame, 0, 0, 1, 1)
91 self.gridLayout_15.addWidget(self.frame, 0, 0, 1, 1)
91 self.frame_2 = QtGui.QFrame(self.tabProject)
92 self.frame_2 = QtGui.QFrame(self.tabProject)
92 self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
93 self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
93 self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
94 self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
94 self.frame_2.setObjectName(_fromUtf8("frame_2"))
95 self.frame_2.setObjectName(_fromUtf8("frame_2"))
95 self.gridLayout_10 = QtGui.QGridLayout(self.frame_2)
96 self.gridLayout_10 = QtGui.QGridLayout(self.frame_2)
96 self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10"))
97 self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10"))
97 self.label_27 = QtGui.QLabel(self.frame_2)
98 self.label_27 = QtGui.QLabel(self.frame_2)
98 self.label_27.setObjectName(_fromUtf8("label_27"))
99 self.label_27.setObjectName(_fromUtf8("label_27"))
99 self.gridLayout_10.addWidget(self.label_27, 0, 0, 1, 1)
100 self.gridLayout_10.addWidget(self.label_27, 0, 0, 1, 1)
100 self.proComStartDate = QtGui.QComboBox(self.frame_2)
101 self.proComStartDate = QtGui.QComboBox(self.frame_2)
101 self.proComStartDate.setObjectName(_fromUtf8("proComStartDate"))
102 self.proComStartDate.setObjectName(_fromUtf8("proComStartDate"))
102 self.gridLayout_10.addWidget(self.proComStartDate, 0, 1, 1, 1)
103 self.gridLayout_10.addWidget(self.proComStartDate, 0, 1, 1, 1)
103 self.label_28 = QtGui.QLabel(self.frame_2)
104 self.label_28 = QtGui.QLabel(self.frame_2)
104 self.label_28.setObjectName(_fromUtf8("label_28"))
105 self.label_28.setObjectName(_fromUtf8("label_28"))
105 self.gridLayout_10.addWidget(self.label_28, 1, 0, 1, 1)
106 self.gridLayout_10.addWidget(self.label_28, 1, 0, 1, 1)
106 self.proComEndDate = QtGui.QComboBox(self.frame_2)
107 self.proComEndDate = QtGui.QComboBox(self.frame_2)
107 self.proComEndDate.setObjectName(_fromUtf8("proComEndDate"))
108 self.proComEndDate.setObjectName(_fromUtf8("proComEndDate"))
108 self.gridLayout_10.addWidget(self.proComEndDate, 1, 1, 1, 1)
109 self.gridLayout_10.addWidget(self.proComEndDate, 1, 1, 1, 1)
109 self.label_2 = QtGui.QLabel(self.frame_2)
110 self.label_2 = QtGui.QLabel(self.frame_2)
110 self.label_2.setObjectName(_fromUtf8("label_2"))
111 self.label_2.setObjectName(_fromUtf8("label_2"))
111 self.gridLayout_10.addWidget(self.label_2, 2, 0, 1, 1)
112 self.gridLayout_10.addWidget(self.label_2, 2, 0, 1, 1)
112 self.proStartTime = QtGui.QTimeEdit(self.frame_2)
113 self.proStartTime = QtGui.QTimeEdit(self.frame_2)
113 self.proStartTime.setObjectName(_fromUtf8("proStartTime"))
114 self.proStartTime.setObjectName(_fromUtf8("proStartTime"))
114 self.gridLayout_10.addWidget(self.proStartTime, 2, 1, 1, 1)
115 self.gridLayout_10.addWidget(self.proStartTime, 2, 1, 1, 1)
115 self.label_3 = QtGui.QLabel(self.frame_2)
116 self.label_3 = QtGui.QLabel(self.frame_2)
116 self.label_3.setObjectName(_fromUtf8("label_3"))
117 self.label_3.setObjectName(_fromUtf8("label_3"))
117 self.gridLayout_10.addWidget(self.label_3, 3, 0, 1, 1)
118 self.gridLayout_10.addWidget(self.label_3, 3, 0, 1, 1)
118 self.proEndTime = QtGui.QTimeEdit(self.frame_2)
119 self.proEndTime = QtGui.QTimeEdit(self.frame_2)
119 self.proEndTime.setObjectName(_fromUtf8("proEndTime"))
120 self.proEndTime.setObjectName(_fromUtf8("proEndTime"))
120 self.gridLayout_10.addWidget(self.proEndTime, 3, 1, 1, 1)
121 self.gridLayout_10.addWidget(self.proEndTime, 3, 1, 1, 1)
121 self.label_30 = QtGui.QLabel(self.frame_2)
122 self.label_30 = QtGui.QLabel(self.frame_2)
122 self.label_30.setObjectName(_fromUtf8("label_30"))
123 self.label_30.setObjectName(_fromUtf8("label_30"))
123 self.gridLayout_10.addWidget(self.label_30, 4, 0, 1, 1)
124 self.gridLayout_10.addWidget(self.label_30, 4, 0, 1, 1)
124 self.proDescription = QtGui.QTextEdit(self.frame_2)
125 self.proDescription = QtGui.QTextEdit(self.frame_2)
125 self.proDescription.setObjectName(_fromUtf8("proDescription"))
126 self.proDescription.setObjectName(_fromUtf8("proDescription"))
126 self.gridLayout_10.addWidget(self.proDescription, 4, 1, 1, 1)
127 self.gridLayout_10.addWidget(self.proDescription, 4, 1, 1, 1)
127 self.gridLayout_15.addWidget(self.frame_2, 1, 0, 1, 1)
128 self.gridLayout_15.addWidget(self.frame_2, 1, 0, 1, 1)
128 self.frame_3 = QtGui.QFrame(self.tabProject)
129 self.frame_3 = QtGui.QFrame(self.tabProject)
129 self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel)
130 self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel)
130 self.frame_3.setFrameShadow(QtGui.QFrame.Raised)
131 self.frame_3.setFrameShadow(QtGui.QFrame.Raised)
131 self.frame_3.setObjectName(_fromUtf8("frame_3"))
132 self.frame_3.setObjectName(_fromUtf8("frame_3"))
132 self.gridLayout_14 = QtGui.QGridLayout(self.frame_3)
133 self.gridLayout_14 = QtGui.QGridLayout(self.frame_3)
133 self.gridLayout_14.setObjectName(_fromUtf8("gridLayout_14"))
134 self.gridLayout_14.setObjectName(_fromUtf8("gridLayout_14"))
134 self.proOk = QtGui.QPushButton(self.frame_3)
135 self.proOk = QtGui.QPushButton(self.frame_3)
135 self.proOk.setObjectName(_fromUtf8("proOk"))
136 self.proOk.setObjectName(_fromUtf8("proOk"))
136 self.gridLayout_14.addWidget(self.proOk, 0, 0, 1, 1)
137 self.gridLayout_14.addWidget(self.proOk, 0, 0, 1, 1)
137 self.proClear = QtGui.QPushButton(self.frame_3)
138 self.proClear = QtGui.QPushButton(self.frame_3)
138 self.proClear.setObjectName(_fromUtf8("proClear"))
139 self.proClear.setObjectName(_fromUtf8("proClear"))
139 self.gridLayout_14.addWidget(self.proClear, 0, 1, 1, 1)
140 self.gridLayout_14.addWidget(self.proClear, 0, 1, 1, 1)
140 self.gridLayout_15.addWidget(self.frame_3, 2, 0, 1, 1)
141 self.gridLayout_15.addWidget(self.frame_3, 2, 0, 1, 1)
141
142
142 self.tabWidgetProject.addTab(self.tabProject, _fromUtf8(""))
143 self.tabWidgetProject.addTab(self.tabProject, _fromUtf8(""))
143
144
144 def retranslateUi(self):
145 def retranslateUi(self):
145
146
146 self.label.setText(_translate("MainWindow", "Project Name :", None))
147 self.label.setText(_translate("MainWindow", "Project Name :", None))
147 self.label_11.setText(_translate("MainWindow", "DataType :", None))
148 self.label_11.setText(_translate("MainWindow", "DataType :", None))
148 self.proComDataType.setItemText(0, _translate("MainWindow", "Voltage", None))
149 self.proComDataType.setItemText(0, _translate("MainWindow", "Voltage", None))
149 self.proComDataType.setItemText(1, _translate("MainWindow", "Spectra", None))
150 self.proComDataType.setItemText(1, _translate("MainWindow", "Spectra", None))
150 self.proComDataType.setItemText(2, _translate("MainWindow", "Fits", None))
151 self.proComDataType.setItemText(2, _translate("MainWindow", "Fits", None))
152 self.proComDataType.setItemText(3, _translate("MainWindow", "USRP", None))
151 self.label_15.setText(_translate("MainWindow", "DataPath :", None))
153 self.label_15.setText(_translate("MainWindow", "DataPath :", None))
152 self.proToolPath.setText(_translate("MainWindow", "...", None))
154 self.proToolPath.setText(_translate("MainWindow", "...", None))
153 self.label_23.setText(_translate("MainWindow", "Read Mode:", None))
155 self.label_23.setText(_translate("MainWindow", "Read Mode:", None))
154 self.proComReadMode.setItemText(0, _translate("MainWindow", "Offline", None))
156 self.proComReadMode.setItemText(0, _translate("MainWindow", "Offline", None))
155 self.proComReadMode.setItemText(1, _translate("MainWindow", "Online", None))
157 self.proComReadMode.setItemText(1, _translate("MainWindow", "Online", None))
156 self.label_33.setText(_translate("MainWindow", "Delay:", None))
158 self.label_33.setText(_translate("MainWindow", "Delay:", None))
157 self.label_32.setText(_translate("MainWindow", "Walk :", None))
159 self.label_32.setText(_translate("MainWindow", "Walk :", None))
158 self.proComWalk.setItemText(0, _translate("MainWindow", "On Files", None))
160 self.proComWalk.setItemText(0, _translate("MainWindow", "On Files", None))
159 self.proComWalk.setItemText(1, _translate("MainWindow", "On Folder", None))
161 self.proComWalk.setItemText(1, _translate("MainWindow", "On Folder", None))
160 self.proLoadButton.setText(_translate("MainWindow", "Load", None))
162 self.proLoadButton.setText(_translate("MainWindow", "Load", None))
161 self.label_10.setText(_translate("MainWindow", "Set:", None))
163 self.label_10.setText(_translate("MainWindow", "Set:", None))
162 self.label_27.setText(_translate("MainWindow", "Star Date:", None))
164 self.label_27.setText(_translate("MainWindow", "Star Date:", None))
163 self.label_28.setText(_translate("MainWindow", "End Date:", None))
165 self.label_28.setText(_translate("MainWindow", "End Date:", None))
164 self.label_2.setText(_translate("MainWindow", "Start Time:", None))
166 self.label_2.setText(_translate("MainWindow", "Start Time:", None))
165 self.label_3.setText(_translate("MainWindow", "End Time:", None))
167 self.label_3.setText(_translate("MainWindow", "End Time:", None))
166 self.label_30.setText(_translate("MainWindow", "Description:", None))
168 self.label_30.setText(_translate("MainWindow", "Description:", None))
167 self.proOk.setText(_translate("MainWindow", "Ok", None))
169 self.proOk.setText(_translate("MainWindow", "Ok", None))
168 self.proClear.setText(_translate("MainWindow", "Clear", None))
170 self.proClear.setText(_translate("MainWindow", "Clear", None))
169
171
170 self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabProject), _translate("MainWindow", "Project", None))
172 self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabProject), _translate("MainWindow", "Project", None))
171 No newline at end of file
173
@@ -1,903 +1,903
1 import numpy
1 import numpy
2 import time
2 import time
3 import os
3 import os
4 import h5py
4 import h5py
5 import re
5 import re
6
6
7 from schainpy.model.data.jrodata import *
7 from schainpy.model.data.jrodata import *
8 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
8 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
9 from schainpy.model.io.jroIO_base import *
9 from schainpy.model.io.jroIO_base import *
10
10
11
11
12 class HDF5Reader(ProcessingUnit):
12 class HDF5Reader(ProcessingUnit):
13
13
14 ext = ".hdf5"
14 ext = ".hdf5"
15
15
16 optchar = "D"
16 optchar = "D"
17
17
18 timezone = None
18 timezone = None
19
19
20 secStart = None
20 secStart = None
21
21
22 secEnd = None
22 secEnd = None
23
23
24 fileIndex = None
24 fileIndex = None
25
25
26 blockIndex = None
26 blockIndex = None
27
27
28 blocksPerFile = None
28 blocksPerFile = None
29
29
30 path = None
30 path = None
31
31
32 #List of Files
32 #List of Files
33
33
34 filenameList = None
34 filenameList = None
35
35
36 datetimeList = None
36 datetimeList = None
37
37
38 #Hdf5 File
38 #Hdf5 File
39
39
40 fpMetadata = None
40 fpMetadata = None
41
41
42 pathMeta = None
42 pathMeta = None
43
43
44 listMetaname = None
44 listMetaname = None
45
45
46 listMeta = None
46 listMeta = None
47
47
48 listDataname = None
48 listDataname = None
49
49
50 listData = None
50 listData = None
51
51
52 listShapes = None
52 listShapes = None
53
53
54 fp = None
54 fp = None
55
55
56 #dataOut reconstruction
56 #dataOut reconstruction
57
57
58 dataOut = None
58 dataOut = None
59
59
60 nRecords = None
60 nRecords = None
61
61
62
62
63 def __init__(self):
63 def __init__(self):
64 self.dataOut = self.__createObjByDefault()
64 self.dataOut = self.__createObjByDefault()
65 return
65 return
66
66
67 def __createObjByDefault(self):
67 def __createObjByDefault(self):
68
68
69 dataObj = Parameters()
69 dataObj = Parameters()
70
70
71 return dataObj
71 return dataObj
72
72
73 def setup(self,path=None,
73 def setup(self,path=None,
74 startDate=None,
74 startDate=None,
75 endDate=None,
75 endDate=None,
76 startTime=datetime.time(0,0,0),
76 startTime=datetime.time(0,0,0),
77 endTime=datetime.time(23,59,59),
77 endTime=datetime.time(23,59,59),
78 walk=True,
78 walk=True,
79 timezone='ut',
79 timezone='ut',
80 all=0,
80 all=0,
81 online=False,
81 online=False,
82 ext=None):
82 ext=None):
83
83
84 if ext==None:
84 if ext==None:
85 ext = self.ext
85 ext = self.ext
86 self.timezone = timezone
86 self.timezone = timezone
87 # self.all = all
87 # self.all = all
88 # self.online = online
88 # self.online = online
89 self.path = path
89 self.path = path
90
90
91 startDateTime = datetime.datetime.combine(startDate,startTime)
91 startDateTime = datetime.datetime.combine(startDate,startTime)
92 endDateTime = datetime.datetime.combine(endDate,endTime)
92 endDateTime = datetime.datetime.combine(endDate,endTime)
93 secStart = (startDateTime-datetime.datetime(1970,1,1)).total_seconds()
93 secStart = (startDateTime-datetime.datetime(1970,1,1)).total_seconds()
94 secEnd = (endDateTime-datetime.datetime(1970,1,1)).total_seconds()
94 secEnd = (endDateTime-datetime.datetime(1970,1,1)).total_seconds()
95
95
96 self.secStart = secStart
96 self.secStart = secStart
97 self.secEnd = secEnd
97 self.secEnd = secEnd
98
98
99 if not(online):
99 if not(online):
100 #Busqueda de archivos offline
100 #Busqueda de archivos offline
101 self.__searchFilesOffline(path, startDate, endDate, ext, startTime, endTime, secStart, secEnd, walk)
101 self.__searchFilesOffline(path, startDate, endDate, ext, startTime, endTime, secStart, secEnd, walk)
102 else:
102 else:
103 self.__searchFilesOnline(path, walk)
103 self.__searchFilesOnline(path, walk)
104
104
105 if not(self.filenameList):
105 if not(self.filenameList):
106 print "There is no files into the folder: %s"%(path)
106 print "There is no files into the folder: %s"%(path)
107 sys.exit(-1)
107 sys.exit(-1)
108
108
109 # self.__getExpParameters()
109 # self.__getExpParameters()
110
110
111 self.fileIndex = -1
111 self.fileIndex = -1
112
112
113 self.__setNextFileOffline()
113 self.__setNextFileOffline()
114
114
115 self.__readMetadata()
115 self.__readMetadata()
116
116
117 self.blockIndex = 0
117 self.blockIndex = 0
118
118
119 return
119 return
120
120
121 def __searchFilesOffline(self,
121 def __searchFilesOffline(self,
122 path,
122 path,
123 startDate,
123 startDate,
124 endDate,
124 endDate,
125 ext,
125 ext,
126 startTime=datetime.time(0,0,0),
126 startTime=datetime.time(0,0,0),
127 endTime=datetime.time(23,59,59),
127 endTime=datetime.time(23,59,59),
128 secStart = 0,
128 secStart = 0,
129 secEnd = numpy.inf,
129 secEnd = numpy.inf,
130 walk=True):
130 walk=True):
131
131
132 # self.__setParameters(path, startDate, endDate, startTime, endTime, walk)
132 # self.__setParameters(path, startDate, endDate, startTime, endTime, walk)
133 #
133 #
134 # self.__checkPath()
134 # self.__checkPath()
135 #
135 #
136 # self.__findDataForDates()
136 # self.__findDataForDates()
137 #
137 #
138 # self.__selectDataForTimes()
138 # self.__selectDataForTimes()
139 #
139 #
140 # for i in range(len(self.filenameList)):
140 # for i in range(len(self.filenameList)):
141 # print "%s" %(self.filenameList[i])
141 # print "%s" %(self.filenameList[i])
142
142
143 pathList = []
143 pathList = []
144
144
145 if not walk:
145 if not walk:
146 #pathList.append(path)
146 #pathList.append(path)
147 multi_path = path.split(',')
147 multi_path = path.split(',')
148 for single_path in multi_path:
148 for single_path in multi_path:
149 pathList.append(single_path)
149 pathList.append(single_path)
150
150
151 else:
151 else:
152 #dirList = []
152 #dirList = []
153 multi_path = path.split(',')
153 multi_path = path.split(',')
154 for single_path in multi_path:
154 for single_path in multi_path:
155 dirList = []
155 dirList = []
156 for thisPath in os.listdir(single_path):
156 for thisPath in os.listdir(single_path):
157 if not os.path.isdir(os.path.join(single_path,thisPath)):
157 if not os.path.isdir(os.path.join(single_path,thisPath)):
158 continue
158 continue
159 if not isDoyFolder(thisPath):
159 if not isRadarFolder(thisPath):
160 continue
160 continue
161
161
162 dirList.append(thisPath)
162 dirList.append(thisPath)
163
163
164 if not(dirList):
164 if not(dirList):
165 return None, None
165 return None, None
166
166
167 thisDate = startDate
167 thisDate = startDate
168
168
169 while(thisDate <= endDate):
169 while(thisDate <= endDate):
170 year = thisDate.timetuple().tm_year
170 year = thisDate.timetuple().tm_year
171 doy = thisDate.timetuple().tm_yday
171 doy = thisDate.timetuple().tm_yday
172
172
173 matchlist = fnmatch.filter(dirList, '?' + '%4.4d%3.3d' % (year,doy) + '*')
173 matchlist = fnmatch.filter(dirList, '?' + '%4.4d%3.3d' % (year,doy) + '*')
174 if len(matchlist) == 0:
174 if len(matchlist) == 0:
175 thisDate += datetime.timedelta(1)
175 thisDate += datetime.timedelta(1)
176 continue
176 continue
177 for match in matchlist:
177 for match in matchlist:
178 pathList.append(os.path.join(single_path,match))
178 pathList.append(os.path.join(single_path,match))
179
179
180 thisDate += datetime.timedelta(1)
180 thisDate += datetime.timedelta(1)
181
181
182 if pathList == []:
182 if pathList == []:
183 print "Any folder was found for the date range: %s-%s" %(startDate, endDate)
183 print "Any folder was found for the date range: %s-%s" %(startDate, endDate)
184 return None, None
184 return None, None
185
185
186 print "%d folder(s) was(were) found for the date range: %s - %s" %(len(pathList), startDate, endDate)
186 print "%d folder(s) was(were) found for the date range: %s - %s" %(len(pathList), startDate, endDate)
187
187
188 filenameList = []
188 filenameList = []
189 datetimeList = []
189 datetimeList = []
190 pathDict = {}
190 pathDict = {}
191 filenameList_to_sort = []
191 filenameList_to_sort = []
192
192
193 for i in range(len(pathList)):
193 for i in range(len(pathList)):
194
194
195 thisPath = pathList[i]
195 thisPath = pathList[i]
196
196
197 fileList = glob.glob1(thisPath, "*%s" %ext)
197 fileList = glob.glob1(thisPath, "*%s" %ext)
198 fileList.sort()
198 fileList.sort()
199 pathDict.setdefault(fileList[0])
199 pathDict.setdefault(fileList[0])
200 pathDict[fileList[0]] = i
200 pathDict[fileList[0]] = i
201 filenameList_to_sort.append(fileList[0])
201 filenameList_to_sort.append(fileList[0])
202
202
203 filenameList_to_sort.sort()
203 filenameList_to_sort.sort()
204
204
205 for file in filenameList_to_sort:
205 for file in filenameList_to_sort:
206 thisPath = pathList[pathDict[file]]
206 thisPath = pathList[pathDict[file]]
207
207
208 fileList = glob.glob1(thisPath, "*%s" %ext)
208 fileList = glob.glob1(thisPath, "*%s" %ext)
209 fileList.sort()
209 fileList.sort()
210
210
211 for file in fileList:
211 for file in fileList:
212
212
213 filename = os.path.join(thisPath,file)
213 filename = os.path.join(thisPath,file)
214 thisDatetime = self.__isFileinThisTime(filename, secStart, secEnd)
214 thisDatetime = self.__isFileinThisTime(filename, secStart, secEnd)
215
215
216 if not(thisDatetime):
216 if not(thisDatetime):
217 continue
217 continue
218
218
219 filenameList.append(filename)
219 filenameList.append(filename)
220 datetimeList.append(thisDatetime)
220 datetimeList.append(thisDatetime)
221
221
222 if not(filenameList):
222 if not(filenameList):
223 print "Any file was found for the time range %s - %s" %(startTime, endTime)
223 print "Any file was found for the time range %s - %s" %(startTime, endTime)
224 return None, None
224 return None, None
225
225
226 print "%d file(s) was(were) found for the time range: %s - %s" %(len(filenameList), startTime, endTime)
226 print "%d file(s) was(were) found for the time range: %s - %s" %(len(filenameList), startTime, endTime)
227 print
227 print
228
228
229 for i in range(len(filenameList)):
229 for i in range(len(filenameList)):
230 print "%s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
230 print "%s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
231
231
232 self.filenameList = filenameList
232 self.filenameList = filenameList
233 self.datetimeList = datetimeList
233 self.datetimeList = datetimeList
234
234
235 return pathList, filenameList
235 return pathList, filenameList
236
236
237 def __isFileinThisTime(self, filename, startSeconds, endSeconds):
237 def __isFileinThisTime(self, filename, startSeconds, endSeconds):
238 """
238 """
239 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
239 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
240
240
241 Inputs:
241 Inputs:
242 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
242 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
243
243
244 startTime : tiempo inicial del rango seleccionado en formato datetime.time
244 startTime : tiempo inicial del rango seleccionado en formato datetime.time
245
245
246 endTime : tiempo final del rango seleccionado en formato datetime.time
246 endTime : tiempo final del rango seleccionado en formato datetime.time
247
247
248 Return:
248 Return:
249 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
249 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
250 fecha especificado, de lo contrario retorna False.
250 fecha especificado, de lo contrario retorna False.
251
251
252 Excepciones:
252 Excepciones:
253 Si el archivo no existe o no puede ser abierto
253 Si el archivo no existe o no puede ser abierto
254 Si la cabecera no puede ser leida.
254 Si la cabecera no puede ser leida.
255
255
256 """
256 """
257
257
258 try:
258 try:
259 fp = fp = h5py.File(filename,'r')
259 fp = fp = h5py.File(filename,'r')
260 except IOError:
260 except IOError:
261 traceback.print_exc()
261 traceback.print_exc()
262 raise IOError, "The file %s can't be opened" %(filename)
262 raise IOError, "The file %s can't be opened" %(filename)
263
263
264 grp = fp['Data']
264 grp = fp['Data']
265 timeAux = grp['time']
265 timeAux = grp['time']
266 time0 = timeAux[:][0].astype(numpy.float) #Time Vector
266 time0 = timeAux[:][0].astype(numpy.float) #Time Vector
267
267
268 fp.close()
268 fp.close()
269
269
270 if self.timezone == 'lt':
270 if self.timezone == 'lt':
271 time0 -= 5*3600
271 time0 -= 5*3600
272
272
273 boolTimer = numpy.logical_and(time0 >= startSeconds,time0 < endSeconds)
273 boolTimer = numpy.logical_and(time0 >= startSeconds,time0 < endSeconds)
274
274
275 if not (numpy.any(boolTimer)):
275 if not (numpy.any(boolTimer)):
276 return None
276 return None
277
277
278 thisDatetime = datetime.datetime.utcfromtimestamp(time0[0])
278 thisDatetime = datetime.datetime.utcfromtimestamp(time0[0])
279 return thisDatetime
279 return thisDatetime
280
280
281 def __checkPath(self):
281 def __checkPath(self):
282 if os.path.exists(self.path):
282 if os.path.exists(self.path):
283 self.status = 1
283 self.status = 1
284 else:
284 else:
285 self.status = 0
285 self.status = 0
286 print 'Path:%s does not exists'%self.path
286 print 'Path:%s does not exists'%self.path
287
287
288 return
288 return
289
289
290 def __setNextFileOffline(self):
290 def __setNextFileOffline(self):
291 idFile = self.fileIndex
291 idFile = self.fileIndex
292 idFile += 1
292 idFile += 1
293
293
294 if not(idFile < len(self.filenameList)):
294 if not(idFile < len(self.filenameList)):
295 print "No more Files"
295 print "No more Files"
296 return 0
296 return 0
297
297
298 filename = self.filenameList[idFile]
298 filename = self.filenameList[idFile]
299
299
300 filePointer = h5py.File(filename,'r')
300 filePointer = h5py.File(filename,'r')
301
301
302 self.flagIsNewFile = 1
302 self.flagIsNewFile = 1
303 self.fileIndex = idFile
303 self.fileIndex = idFile
304 self.filename = filename
304 self.filename = filename
305
305
306 self.fp = filePointer
306 self.fp = filePointer
307
307
308 print "Setting the file: %s"%self.filename
308 print "Setting the file: %s"%self.filename
309
309
310 self.__readMetadata()
310 self.__readMetadata()
311 self.__setBlockList()
311 self.__setBlockList()
312 # self.nRecords = self.fp['Data'].attrs['blocksPerFile']
312 # self.nRecords = self.fp['Data'].attrs['blocksPerFile']
313 self.nRecords = self.fp['Data'].attrs['nRecords']
313 self.nRecords = self.fp['Data'].attrs['nRecords']
314 self.blockIndex = 0
314 self.blockIndex = 0
315 return 1
315 return 1
316
316
317 def __setBlockList(self):
317 def __setBlockList(self):
318 '''
318 '''
319 self.fp
319 self.fp
320 self.startDateTime
320 self.startDateTime
321 self.endDateTime
321 self.endDateTime
322
322
323 self.blockList
323 self.blockList
324 self.blocksPerFile
324 self.blocksPerFile
325
325
326 '''
326 '''
327 filePointer = self.fp
327 filePointer = self.fp
328 secStart = self.secStart
328 secStart = self.secStart
329 secEnd = self.secEnd
329 secEnd = self.secEnd
330
330
331 grp = filePointer['Data']
331 grp = filePointer['Data']
332 timeVector = grp['time'].value.astype(numpy.float)[0]
332 timeVector = grp['time'].value.astype(numpy.float)[0]
333
333
334 if self.timezone == 'lt':
334 if self.timezone == 'lt':
335 timeVector -= 5*3600
335 timeVector -= 5*3600
336
336
337 ind = numpy.where(numpy.logical_and(timeVector >= secStart , timeVector < secEnd))[0]
337 ind = numpy.where(numpy.logical_and(timeVector >= secStart , timeVector < secEnd))[0]
338
338
339 self.blockList = ind
339 self.blockList = ind
340 self.blocksPerFile = len(ind)
340 self.blocksPerFile = len(ind)
341
341
342 return
342 return
343
343
344 def __readMetadata(self):
344 def __readMetadata(self):
345 '''
345 '''
346 self.pathMeta
346 self.pathMeta
347
347
348 self.listShapes
348 self.listShapes
349 self.listMetaname
349 self.listMetaname
350 self.listMeta
350 self.listMeta
351
351
352 '''
352 '''
353
353
354 grp = self.fp['Data']
354 grp = self.fp['Data']
355 pathMeta = os.path.join(self.path, grp.attrs['metadata'])
355 pathMeta = os.path.join(self.path, grp.attrs['metadata'])
356
356
357 if pathMeta == self.pathMeta:
357 if pathMeta == self.pathMeta:
358 return
358 return
359 else:
359 else:
360 self.pathMeta = pathMeta
360 self.pathMeta = pathMeta
361
361
362 filePointer = h5py.File(self.pathMeta,'r')
362 filePointer = h5py.File(self.pathMeta,'r')
363 groupPointer = filePointer['Metadata']
363 groupPointer = filePointer['Metadata']
364
364
365 listMetaname = []
365 listMetaname = []
366 listMetadata = []
366 listMetadata = []
367 for item in groupPointer.items():
367 for item in groupPointer.items():
368 name = item[0]
368 name = item[0]
369
369
370 if name=='array dimensions':
370 if name=='array dimensions':
371 table = groupPointer[name][:]
371 table = groupPointer[name][:]
372 listShapes = {}
372 listShapes = {}
373 for shapes in table:
373 for shapes in table:
374 listShapes[shapes[0]] = numpy.array([shapes[1],shapes[2],shapes[3],shapes[4]])
374 listShapes[shapes[0]] = numpy.array([shapes[1],shapes[2],shapes[3],shapes[4]])
375 else:
375 else:
376 data = groupPointer[name].value
376 data = groupPointer[name].value
377 listMetaname.append(name)
377 listMetaname.append(name)
378 listMetadata.append(data)
378 listMetadata.append(data)
379
379
380 if name=='type':
380 if name=='type':
381 self.__initDataOut(data)
381 self.__initDataOut(data)
382
382
383 filePointer.close()
383 filePointer.close()
384
384
385 self.listShapes = listShapes
385 self.listShapes = listShapes
386 self.listMetaname = listMetaname
386 self.listMetaname = listMetaname
387 self.listMeta = listMetadata
387 self.listMeta = listMetadata
388
388
389 return
389 return
390
390
391 def __readData(self):
391 def __readData(self):
392 grp = self.fp['Data']
392 grp = self.fp['Data']
393 listdataname = []
393 listdataname = []
394 listdata = []
394 listdata = []
395
395
396 for item in grp.items():
396 for item in grp.items():
397 name = item[0]
397 name = item[0]
398
398
399 if name == 'time':
399 if name == 'time':
400 listdataname.append('utctime')
400 listdataname.append('utctime')
401 timeAux = grp[name].value.astype(numpy.float)[0]
401 timeAux = grp[name].value.astype(numpy.float)[0]
402 listdata.append(timeAux)
402 listdata.append(timeAux)
403 continue
403 continue
404
404
405 listdataname.append(name)
405 listdataname.append(name)
406 array = self.__setDataArray(self.nRecords, grp[name],self.listShapes[name])
406 array = self.__setDataArray(self.nRecords, grp[name],self.listShapes[name])
407 listdata.append(array)
407 listdata.append(array)
408
408
409 self.listDataname = listdataname
409 self.listDataname = listdataname
410 self.listData = listdata
410 self.listData = listdata
411 return
411 return
412
412
413 def __setDataArray(self, nRecords, dataset, shapes):
413 def __setDataArray(self, nRecords, dataset, shapes):
414
414
415 nChannels = shapes[0] #Dimension 0
415 nChannels = shapes[0] #Dimension 0
416
416
417 nPoints = shapes[1] #Dimension 1, number of Points or Parameters
417 nPoints = shapes[1] #Dimension 1, number of Points or Parameters
418
418
419 nSamples = shapes[2] #Dimension 2, number of samples or ranges
419 nSamples = shapes[2] #Dimension 2, number of samples or ranges
420
420
421 mode = shapes[3]
421 mode = shapes[3]
422
422
423 # if nPoints>1:
423 # if nPoints>1:
424 # arrayData = numpy.zeros((nRecords,nChannels,nPoints,nSamples))
424 # arrayData = numpy.zeros((nRecords,nChannels,nPoints,nSamples))
425 # else:
425 # else:
426 # arrayData = numpy.zeros((nRecords,nChannels,nSamples))
426 # arrayData = numpy.zeros((nRecords,nChannels,nSamples))
427 #
427 #
428 # chn = 'channel'
428 # chn = 'channel'
429 #
429 #
430 # for i in range(nChannels):
430 # for i in range(nChannels):
431 #
431 #
432 # data = dataset[chn + str(i)].value
432 # data = dataset[chn + str(i)].value
433 #
433 #
434 # if nPoints>1:
434 # if nPoints>1:
435 # data = numpy.rollaxis(data,2)
435 # data = numpy.rollaxis(data,2)
436 #
436 #
437 # arrayData[:,i,:] = data
437 # arrayData[:,i,:] = data
438
438
439 arrayData = numpy.zeros((nRecords,nChannels,nPoints,nSamples))
439 arrayData = numpy.zeros((nRecords,nChannels,nPoints,nSamples))
440 doSqueeze = False
440 doSqueeze = False
441 if mode == 0:
441 if mode == 0:
442 strds = 'channel'
442 strds = 'channel'
443 nDatas = nChannels
443 nDatas = nChannels
444 newShapes = (nRecords,nPoints,nSamples)
444 newShapes = (nRecords,nPoints,nSamples)
445 if nPoints == 1:
445 if nPoints == 1:
446 doSqueeze = True
446 doSqueeze = True
447 axisSqueeze = 2
447 axisSqueeze = 2
448 else:
448 else:
449 strds = 'param'
449 strds = 'param'
450 nDatas = nPoints
450 nDatas = nPoints
451 newShapes = (nRecords,nChannels,nSamples)
451 newShapes = (nRecords,nChannels,nSamples)
452 if nChannels == 1:
452 if nChannels == 1:
453 doSqueeze = True
453 doSqueeze = True
454 axisSqueeze = 1
454 axisSqueeze = 1
455
455
456 for i in range(nDatas):
456 for i in range(nDatas):
457
457
458 data = dataset[strds + str(i)].value
458 data = dataset[strds + str(i)].value
459 data = data.reshape(newShapes)
459 data = data.reshape(newShapes)
460
460
461 if mode == 0:
461 if mode == 0:
462 arrayData[:,i,:,:] = data
462 arrayData[:,i,:,:] = data
463 else:
463 else:
464 arrayData[:,:,i,:] = data
464 arrayData[:,:,i,:] = data
465
465
466 if doSqueeze:
466 if doSqueeze:
467 arrayData = numpy.squeeze(arrayData, axis=axisSqueeze)
467 arrayData = numpy.squeeze(arrayData, axis=axisSqueeze)
468
468
469 return arrayData
469 return arrayData
470
470
471 def __initDataOut(self, type):
471 def __initDataOut(self, type):
472
472
473 # if type =='Parameters':
473 # if type =='Parameters':
474 # self.dataOut = Parameters()
474 # self.dataOut = Parameters()
475 # elif type =='Spectra':
475 # elif type =='Spectra':
476 # self.dataOut = Spectra()
476 # self.dataOut = Spectra()
477 # elif type =='Voltage':
477 # elif type =='Voltage':
478 # self.dataOut = Voltage()
478 # self.dataOut = Voltage()
479 # elif type =='Correlation':
479 # elif type =='Correlation':
480 # self.dataOut = Correlation()
480 # self.dataOut = Correlation()
481
481
482 return
482 return
483
483
484 def __setDataOut(self):
484 def __setDataOut(self):
485 listMeta = self.listMeta
485 listMeta = self.listMeta
486 listMetaname = self.listMetaname
486 listMetaname = self.listMetaname
487 listDataname = self.listDataname
487 listDataname = self.listDataname
488 listData = self.listData
488 listData = self.listData
489
489
490 blockIndex = self.blockIndex
490 blockIndex = self.blockIndex
491 blockList = self.blockList
491 blockList = self.blockList
492
492
493 for i in range(len(listMeta)):
493 for i in range(len(listMeta)):
494 setattr(self.dataOut,listMetaname[i],listMeta[i])
494 setattr(self.dataOut,listMetaname[i],listMeta[i])
495
495
496 for j in range(len(listData)):
496 for j in range(len(listData)):
497 if listDataname[j]=='utctime':
497 if listDataname[j]=='utctime':
498 # setattr(self.dataOut,listDataname[j],listData[j][blockList[blockIndex]])
498 # setattr(self.dataOut,listDataname[j],listData[j][blockList[blockIndex]])
499 setattr(self.dataOut,'utctimeInit',listData[j][blockList[blockIndex]])
499 setattr(self.dataOut,'utctimeInit',listData[j][blockList[blockIndex]])
500 continue
500 continue
501
501
502 setattr(self.dataOut,listDataname[j],listData[j][blockList[blockIndex],:])
502 setattr(self.dataOut,listDataname[j],listData[j][blockList[blockIndex],:])
503
503
504 return self.dataOut.data_param
504 return self.dataOut.data_param
505
505
506 def getData(self):
506 def getData(self):
507
507
508 # if self.flagNoMoreFiles:
508 # if self.flagNoMoreFiles:
509 # self.dataOut.flagNoData = True
509 # self.dataOut.flagNoData = True
510 # print 'Process finished'
510 # print 'Process finished'
511 # return 0
511 # return 0
512 #
512 #
513 if self.blockIndex==self.blocksPerFile:
513 if self.blockIndex==self.blocksPerFile:
514 if not( self.__setNextFileOffline() ):
514 if not( self.__setNextFileOffline() ):
515 self.dataOut.flagNoData = True
515 self.dataOut.flagNoData = True
516 return 0
516 return 0
517
517
518 #
518 #
519 # if self.datablock == None: # setear esta condicion cuando no hayan datos por leers
519 # if self.datablock == None: # setear esta condicion cuando no hayan datos por leers
520 # self.dataOut.flagNoData = True
520 # self.dataOut.flagNoData = True
521 # return 0
521 # return 0
522
522
523 self.__readData()
523 self.__readData()
524 self.__setDataOut()
524 self.__setDataOut()
525 self.dataOut.flagNoData = False
525 self.dataOut.flagNoData = False
526
526
527 self.blockIndex += 1
527 self.blockIndex += 1
528
528
529 return
529 return
530
530
531 def run(self, **kwargs):
531 def run(self, **kwargs):
532
532
533 if not(self.isConfig):
533 if not(self.isConfig):
534 self.setup(**kwargs)
534 self.setup(**kwargs)
535 # self.setObjProperties()
535 # self.setObjProperties()
536 self.isConfig = True
536 self.isConfig = True
537
537
538 self.getData()
538 self.getData()
539
539
540 return
540 return
541
541
542 class HDF5Writer(Operation):
542 class HDF5Writer(Operation):
543
543
544 ext = ".hdf5"
544 ext = ".hdf5"
545
545
546 optchar = "D"
546 optchar = "D"
547
547
548 metaoptchar = "M"
548 metaoptchar = "M"
549
549
550 metaFile = None
550 metaFile = None
551
551
552 path = None
552 path = None
553
553
554 setFile = None
554 setFile = None
555
555
556 fp = None
556 fp = None
557
557
558 grp = None
558 grp = None
559
559
560 ds = None
560 ds = None
561
561
562 firsttime = True
562 firsttime = True
563
563
564 #Configurations
564 #Configurations
565
565
566 blocksPerFile = None
566 blocksPerFile = None
567
567
568 blockIndex = None
568 blockIndex = None
569
569
570 dataOut = None
570 dataOut = None
571
571
572 #Data Arrays
572 #Data Arrays
573
573
574 dataList = None
574 dataList = None
575
575
576 metadataList = None
576 metadataList = None
577
577
578 arrayDim = None
578 arrayDim = None
579
579
580 tableDim = None
580 tableDim = None
581
581
582 # dtype = [('arrayName', 'S20'),('nChannels', 'i'), ('nPoints', 'i'), ('nSamples', 'i'),('mode', 'b')]
582 # dtype = [('arrayName', 'S20'),('nChannels', 'i'), ('nPoints', 'i'), ('nSamples', 'i'),('mode', 'b')]
583
583
584 dtype = [('arrayName', 'S20'),('nDimensions', 'i'), ('dim2', 'i'), ('dim1', 'i'),('dim0', 'i'),('mode', 'b')]
584 dtype = [('arrayName', 'S20'),('nDimensions', 'i'), ('dim2', 'i'), ('dim1', 'i'),('dim0', 'i'),('mode', 'b')]
585
585
586 mode = None
586 mode = None
587
587
588 nDatas = None #Number of datasets to be stored per array
588 nDatas = None #Number of datasets to be stored per array
589
589
590 nDims = None #Number Dimensions in each dataset
590 nDims = None #Number Dimensions in each dataset
591
591
592 def __init__(self):
592 def __init__(self):
593
593
594 Operation.__init__(self)
594 Operation.__init__(self)
595 self.isConfig = False
595 self.isConfig = False
596 return
596 return
597
597
598
598
599 def setup(self, dataOut, **kwargs):
599 def setup(self, dataOut, **kwargs):
600
600
601 self.path = kwargs['path']
601 self.path = kwargs['path']
602
602
603 if kwargs.has_key('ext'):
603 if kwargs.has_key('ext'):
604 self.ext = kwargs['ext']
604 self.ext = kwargs['ext']
605
605
606 if kwargs.has_key('blocksPerFile'):
606 if kwargs.has_key('blocksPerFile'):
607 self.blocksPerFile = kwargs['blocksPerFile']
607 self.blocksPerFile = kwargs['blocksPerFile']
608 else:
608 else:
609 self.blocksPerFile = 10
609 self.blocksPerFile = 10
610
610
611 self.metadataList = kwargs['metadataList']
611 self.metadataList = kwargs['metadataList']
612
612
613 self.dataList = kwargs['dataList']
613 self.dataList = kwargs['dataList']
614
614
615 self.dataOut = dataOut
615 self.dataOut = dataOut
616
616
617 if kwargs.has_key('mode'):
617 if kwargs.has_key('mode'):
618 mode = kwargs['mode']
618 mode = kwargs['mode']
619
619
620 if type(mode) == int:
620 if type(mode) == int:
621 mode = numpy.zeros(len(self.dataList)) + mode
621 mode = numpy.zeros(len(self.dataList)) + mode
622 else:
622 else:
623 mode = numpy.zeros(len(self.dataList))
623 mode = numpy.zeros(len(self.dataList))
624
624
625 self.mode = mode
625 self.mode = mode
626
626
627 arrayDim = numpy.zeros((len(self.dataList),5))
627 arrayDim = numpy.zeros((len(self.dataList),5))
628
628
629 #Table dimensions
629 #Table dimensions
630
630
631 dtype0 = self.dtype
631 dtype0 = self.dtype
632
632
633 tableList = []
633 tableList = []
634
634
635 for i in range(len(self.dataList)):
635 for i in range(len(self.dataList)):
636
636
637 dataAux = getattr(self.dataOut, self.dataList[i])
637 dataAux = getattr(self.dataOut, self.dataList[i])
638
638
639 if type(dataAux)==float or type(dataAux)==int:
639 if type(dataAux)==float or type(dataAux)==int:
640 arrayDim[i,0] = 1
640 arrayDim[i,0] = 1
641 else:
641 else:
642 arrayDim0 = dataAux.shape
642 arrayDim0 = dataAux.shape
643 arrayDim[i,0] = len(arrayDim0)
643 arrayDim[i,0] = len(arrayDim0)
644 arrayDim[i,4] = mode[i]
644 arrayDim[i,4] = mode[i]
645
645
646 if len(arrayDim0) == 3:
646 if len(arrayDim0) == 3:
647 arrayDim[i,1:-1] = numpy.array(arrayDim0)
647 arrayDim[i,1:-1] = numpy.array(arrayDim0)
648 elif len(arrayDim0) == 2:
648 elif len(arrayDim0) == 2:
649 arrayDim[i,2:-1] = numpy.array(arrayDim0) #nHeights
649 arrayDim[i,2:-1] = numpy.array(arrayDim0) #nHeights
650 elif len(arrayDim0) == 1:
650 elif len(arrayDim0) == 1:
651 arrayDim[i,3] = arrayDim0
651 arrayDim[i,3] = arrayDim0
652 elif len(arrayDim0) == 0:
652 elif len(arrayDim0) == 0:
653 arrayDim[i,0] = 1
653 arrayDim[i,0] = 1
654 arrayDim[i,3] = 1
654 arrayDim[i,3] = 1
655
655
656 table = numpy.array((self.dataList[i],) + tuple(arrayDim[i,:]),dtype = dtype0)
656 table = numpy.array((self.dataList[i],) + tuple(arrayDim[i,:]),dtype = dtype0)
657 tableList.append(table)
657 tableList.append(table)
658
658
659 self.arrayDim = arrayDim
659 self.arrayDim = arrayDim
660 self.tableDim = numpy.array(tableList, dtype = dtype0)
660 self.tableDim = numpy.array(tableList, dtype = dtype0)
661 self.blockIndex = 0
661 self.blockIndex = 0
662
662
663 return
663 return
664
664
665 def putMetadata(self):
665 def putMetadata(self):
666
666
667 fp = self.createMetadataFile()
667 fp = self.createMetadataFile()
668 self.writeMetadata(fp)
668 self.writeMetadata(fp)
669 fp.close()
669 fp.close()
670 return
670 return
671
671
672 def createMetadataFile(self):
672 def createMetadataFile(self):
673 ext = self.ext
673 ext = self.ext
674 path = self.path
674 path = self.path
675 setFile = self.setFile
675 setFile = self.setFile
676
676
677 timeTuple = time.localtime(self.dataOut.utctime)
677 timeTuple = time.localtime(self.dataOut.utctime)
678 subfolder = ''
678 subfolder = ''
679
679
680 fullpath = os.path.join( path, subfolder )
680 fullpath = os.path.join( path, subfolder )
681 if not( os.path.exists(fullpath) ):
681 if not( os.path.exists(fullpath) ):
682 os.mkdir(fullpath)
682 os.mkdir(fullpath)
683 setFile = -1 #inicializo mi contador de seteo
683 setFile = -1 #inicializo mi contador de seteo
684 else:
684 else:
685 filesList = os.listdir( fullpath )
685 filesList = os.listdir( fullpath )
686 if len( filesList ) > 0:
686 if len( filesList ) > 0:
687 filesList = sorted( filesList, key=str.lower )
687 filesList = sorted( filesList, key=str.lower )
688 filen = filesList[-1]
688 filen = filesList[-1]
689 # el filename debera tener el siguiente formato
689 # el filename debera tener el siguiente formato
690 # 0 1234 567 89A BCDE (hex)
690 # 0 1234 567 89A BCDE (hex)
691 # x YYYY DDD SSS .ext
691 # x YYYY DDD SSS .ext
692 if isNumber( filen[8:11] ):
692 if isNumber( filen[8:11] ):
693 setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
693 setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
694 else:
694 else:
695 setFile = -1
695 setFile = -1
696 else:
696 else:
697 setFile = -1 #inicializo mi contador de seteo
697 setFile = -1 #inicializo mi contador de seteo
698
698
699 setFile += 1
699 setFile += 1
700
700
701 file = '%s%4.4d%3.3d%3.3d%s' % (self.metaoptchar,
701 file = '%s%4.4d%3.3d%3.3d%s' % (self.metaoptchar,
702 timeTuple.tm_year,
702 timeTuple.tm_year,
703 timeTuple.tm_yday,
703 timeTuple.tm_yday,
704 setFile,
704 setFile,
705 ext )
705 ext )
706
706
707 filename = os.path.join( path, subfolder, file )
707 filename = os.path.join( path, subfolder, file )
708 self.metaFile = file
708 self.metaFile = file
709 #Setting HDF5 File
709 #Setting HDF5 File
710 fp = h5py.File(filename,'w')
710 fp = h5py.File(filename,'w')
711
711
712 return fp
712 return fp
713
713
714 def writeMetadata(self, fp):
714 def writeMetadata(self, fp):
715
715
716 grp = fp.create_group("Metadata")
716 grp = fp.create_group("Metadata")
717 grp.create_dataset('array dimensions', data = self.tableDim, dtype = self.dtype)
717 grp.create_dataset('array dimensions', data = self.tableDim, dtype = self.dtype)
718
718
719 for i in range(len(self.metadataList)):
719 for i in range(len(self.metadataList)):
720 grp.create_dataset(self.metadataList[i], data=getattr(self.dataOut, self.metadataList[i]))
720 grp.create_dataset(self.metadataList[i], data=getattr(self.dataOut, self.metadataList[i]))
721 return
721 return
722
722
723 def setNextFile(self):
723 def setNextFile(self):
724
724
725 ext = self.ext
725 ext = self.ext
726 path = self.path
726 path = self.path
727 setFile = self.setFile
727 setFile = self.setFile
728 mode = self.mode
728 mode = self.mode
729
729
730 if self.fp != None:
730 if self.fp != None:
731 self.fp.close()
731 self.fp.close()
732
732
733 timeTuple = time.localtime(self.dataOut.utctime)
733 timeTuple = time.localtime(self.dataOut.utctime)
734 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
734 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
735
735
736 fullpath = os.path.join( path, subfolder )
736 fullpath = os.path.join( path, subfolder )
737 if not( os.path.exists(fullpath) ):
737 if not( os.path.exists(fullpath) ):
738 os.mkdir(fullpath)
738 os.mkdir(fullpath)
739 setFile = -1 #inicializo mi contador de seteo
739 setFile = -1 #inicializo mi contador de seteo
740 else:
740 else:
741 filesList = os.listdir( fullpath )
741 filesList = os.listdir( fullpath )
742 if len( filesList ) > 0:
742 if len( filesList ) > 0:
743 filesList = sorted( filesList, key=str.lower )
743 filesList = sorted( filesList, key=str.lower )
744 filen = filesList[-1]
744 filen = filesList[-1]
745 # el filename debera tener el siguiente formato
745 # el filename debera tener el siguiente formato
746 # 0 1234 567 89A BCDE (hex)
746 # 0 1234 567 89A BCDE (hex)
747 # x YYYY DDD SSS .ext
747 # x YYYY DDD SSS .ext
748 if isNumber( filen[8:11] ):
748 if isNumber( filen[8:11] ):
749 setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
749 setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
750 else:
750 else:
751 setFile = -1
751 setFile = -1
752 else:
752 else:
753 setFile = -1 #inicializo mi contador de seteo
753 setFile = -1 #inicializo mi contador de seteo
754
754
755 setFile += 1
755 setFile += 1
756
756
757 file = '%s%4.4d%3.3d%3.3d%s' % (self.optchar,
757 file = '%s%4.4d%3.3d%3.3d%s' % (self.optchar,
758 timeTuple.tm_year,
758 timeTuple.tm_year,
759 timeTuple.tm_yday,
759 timeTuple.tm_yday,
760 setFile,
760 setFile,
761 ext )
761 ext )
762
762
763 filename = os.path.join( path, subfolder, file )
763 filename = os.path.join( path, subfolder, file )
764
764
765 #Setting HDF5 File
765 #Setting HDF5 File
766 fp = h5py.File(filename,'w')
766 fp = h5py.File(filename,'w')
767 grp = fp.create_group("Data")
767 grp = fp.create_group("Data")
768 grp.attrs['metadata'] = self.metaFile
768 grp.attrs['metadata'] = self.metaFile
769
769
770 # grp.attrs['blocksPerFile'] = 0
770 # grp.attrs['blocksPerFile'] = 0
771
771
772 ds = []
772 ds = []
773 data = []
773 data = []
774
774
775 nDatas = numpy.zeros(len(self.dataList))
775 nDatas = numpy.zeros(len(self.dataList))
776 nDims = self.arrayDim[:,0]
776 nDims = self.arrayDim[:,0]
777
777
778 for i in range(len(self.dataList)):
778 for i in range(len(self.dataList)):
779
779
780 if nDims[i]==1:
780 if nDims[i]==1:
781 ds0 = grp.create_dataset(self.dataList[i], (1,1), maxshape=(1,None) , chunks = True, dtype='S20')
781 ds0 = grp.create_dataset(self.dataList[i], (1,1), maxshape=(1,None) , chunks = True, dtype='S20')
782 ds.append(ds0)
782 ds.append(ds0)
783 data.append([])
783 data.append([])
784
784
785 else:
785 else:
786
786
787 if mode[i]==0:
787 if mode[i]==0:
788 strMode = "channel"
788 strMode = "channel"
789 nDatas[i] = self.arrayDim[i,1]
789 nDatas[i] = self.arrayDim[i,1]
790 else:
790 else:
791 strMode = "param"
791 strMode = "param"
792 nDatas[i] = self.arrayDim[i,2]
792 nDatas[i] = self.arrayDim[i,2]
793
793
794 if nDims[i]==2:
794 if nDims[i]==2:
795 nDatas[i] = self.arrayDim[i,2]
795 nDatas[i] = self.arrayDim[i,2]
796
796
797 grp0 = grp.create_group(self.dataList[i])
797 grp0 = grp.create_group(self.dataList[i])
798
798
799 for j in range(int(nDatas[i])):
799 for j in range(int(nDatas[i])):
800 tableName = strMode + str(j)
800 tableName = strMode + str(j)
801
801
802 if nDims[i] == 3:
802 if nDims[i] == 3:
803 ds0 = grp0.create_dataset(tableName, (1,1,1) , maxshape=(None,None,None), chunks=True)
803 ds0 = grp0.create_dataset(tableName, (1,1,1) , maxshape=(None,None,None), chunks=True)
804 else:
804 else:
805 ds0 = grp0.create_dataset(tableName, (1,1) , maxshape=(None,None), chunks=True)
805 ds0 = grp0.create_dataset(tableName, (1,1) , maxshape=(None,None), chunks=True)
806
806
807 ds.append(ds0)
807 ds.append(ds0)
808 data.append([])
808 data.append([])
809
809
810 self.nDatas = nDatas
810 self.nDatas = nDatas
811 self.nDims = nDims
811 self.nDims = nDims
812
812
813 #Saving variables
813 #Saving variables
814 print 'Writing the file: %s'%filename
814 print 'Writing the file: %s'%filename
815 self.fp = fp
815 self.fp = fp
816 self.grp = grp
816 self.grp = grp
817 self.ds = ds
817 self.ds = ds
818 self.data = data
818 self.data = data
819
819
820 self.setFile = setFile
820 self.setFile = setFile
821 self.firsttime = True
821 self.firsttime = True
822 self.blockIndex = 0
822 self.blockIndex = 0
823 return
823 return
824
824
825 def putData(self):
825 def putData(self):
826 self.setBlock()
826 self.setBlock()
827 self.writeBlock()
827 self.writeBlock()
828
828
829 if self.blockIndex == self.blocksPerFile:
829 if self.blockIndex == self.blocksPerFile:
830 self.setNextFile()
830 self.setNextFile()
831 return
831 return
832
832
833 def setBlock(self):
833 def setBlock(self):
834 '''
834 '''
835 data Array configured
835 data Array configured
836
836
837
837
838 self.data
838 self.data
839 '''
839 '''
840 #Creating Arrays
840 #Creating Arrays
841 data = self.data
841 data = self.data
842 nDatas = self.nDatas
842 nDatas = self.nDatas
843 nDims = self.nDims
843 nDims = self.nDims
844 mode = self.mode
844 mode = self.mode
845 ind = 0
845 ind = 0
846
846
847 for i in range(len(self.dataList)):
847 for i in range(len(self.dataList)):
848 dataAux = getattr(self.dataOut,self.dataList[i])
848 dataAux = getattr(self.dataOut,self.dataList[i])
849
849
850 if nDims[i] == 1:
850 if nDims[i] == 1:
851 data[ind] = numpy.array([str(dataAux)]).reshape((1,1))
851 data[ind] = numpy.array([str(dataAux)]).reshape((1,1))
852 if not self.firsttime:
852 if not self.firsttime:
853 data[ind] = numpy.hstack((self.ds[ind][:], self.data[ind]))
853 data[ind] = numpy.hstack((self.ds[ind][:], self.data[ind]))
854 ind += 1
854 ind += 1
855
855
856 else:
856 else:
857 for j in range(int(nDatas[i])):
857 for j in range(int(nDatas[i])):
858 if (mode[i] == 0) or (nDims[i] == 2): #In case division per channel or Dimensions is only 1
858 if (mode[i] == 0) or (nDims[i] == 2): #In case division per channel or Dimensions is only 1
859 data[ind] = dataAux[j,:]
859 data[ind] = dataAux[j,:]
860 else:
860 else:
861 data[ind] = dataAux[:,j,:]
861 data[ind] = dataAux[:,j,:]
862
862
863 if nDims[i] == 3:
863 if nDims[i] == 3:
864 data[ind] = data[ind].reshape((data[ind].shape[0],data[ind].shape[1],1))
864 data[ind] = data[ind].reshape((data[ind].shape[0],data[ind].shape[1],1))
865
865
866 if not self.firsttime:
866 if not self.firsttime:
867 data[ind] = numpy.dstack((self.ds[ind][:], data[ind]))
867 data[ind] = numpy.dstack((self.ds[ind][:], data[ind]))
868
868
869 else:
869 else:
870 data[ind] = data[ind].reshape((1,data[ind].shape[0]))
870 data[ind] = data[ind].reshape((1,data[ind].shape[0]))
871
871
872 if not self.firsttime:
872 if not self.firsttime:
873 data[ind] = numpy.vstack((self.ds[ind][:], data[ind]))
873 data[ind] = numpy.vstack((self.ds[ind][:], data[ind]))
874 ind += 1
874 ind += 1
875
875
876 self.data = data
876 self.data = data
877 return
877 return
878
878
879 def writeBlock(self):
879 def writeBlock(self):
880 '''
880 '''
881 Saves the block in the HDF5 file
881 Saves the block in the HDF5 file
882 '''
882 '''
883 for i in range(len(self.ds)):
883 for i in range(len(self.ds)):
884 self.ds[i].resize(self.data[i].shape)
884 self.ds[i].resize(self.data[i].shape)
885 self.ds[i][:] = self.data[i]
885 self.ds[i][:] = self.data[i]
886
886
887 self.blockIndex += 1
887 self.blockIndex += 1
888
888
889 self.grp.attrs.modify('nRecords', self.blockIndex)
889 self.grp.attrs.modify('nRecords', self.blockIndex)
890
890
891 self.firsttime = False
891 self.firsttime = False
892 return
892 return
893
893
894 def run(self, dataOut, **kwargs):
894 def run(self, dataOut, **kwargs):
895 if not(self.isConfig):
895 if not(self.isConfig):
896 self.setup(dataOut, **kwargs)
896 self.setup(dataOut, **kwargs)
897 self.isConfig = True
897 self.isConfig = True
898 self.putMetadata()
898 self.putMetadata()
899 self.setNextFile()
899 self.setNextFile()
900
900
901 self.putData()
901 self.putData()
902 return
902 return
903
903
@@ -1,1348 +1,1451
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
22
23 LOCALTIME = True
23 LOCALTIME = True
24
24
25 def isNumber(cad):
25 def isNumber(cad):
26 """
26 """
27 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
27 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
28
28
29 Excepciones:
29 Excepciones:
30 Si un determinado string no puede ser convertido a numero
30 Si un determinado string no puede ser convertido a numero
31 Input:
31 Input:
32 str, string al cual se le analiza para determinar si convertible a un numero o no
32 str, string al cual se le analiza para determinar si convertible a un numero o no
33
33
34 Return:
34 Return:
35 True : si el string es uno numerico
35 True : si el string es uno numerico
36 False : no es un string numerico
36 False : no es un string numerico
37 """
37 """
38 try:
38 try:
39 float( cad )
39 float( cad )
40 return True
40 return True
41 except:
41 except:
42 return False
42 return False
43
43
44 def isThisFileinRange(filename, startUTSeconds, endUTSeconds):
44 def isThisFileinRange(filename, startUTSeconds, endUTSeconds):
45 """
45 """
46 Esta funcion determina si un archivo de datos se encuentra o no dentro del rango de fecha especificado.
46 Esta funcion determina si un archivo de datos se encuentra o no dentro del rango de fecha especificado.
47
47
48 Inputs:
48 Inputs:
49 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
49 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
50
50
51 startUTSeconds : fecha inicial del rango seleccionado. La fecha esta dada en
51 startUTSeconds : fecha inicial del rango seleccionado. La fecha esta dada en
52 segundos contados desde 01/01/1970.
52 segundos contados desde 01/01/1970.
53 endUTSeconds : fecha final del rango seleccionado. La fecha esta dada en
53 endUTSeconds : fecha final del rango seleccionado. La fecha esta dada en
54 segundos contados desde 01/01/1970.
54 segundos contados desde 01/01/1970.
55
55
56 Return:
56 Return:
57 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
57 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
58 fecha especificado, de lo contrario retorna False.
58 fecha especificado, de lo contrario retorna False.
59
59
60 Excepciones:
60 Excepciones:
61 Si el archivo no existe o no puede ser abierto
61 Si el archivo no existe o no puede ser abierto
62 Si la cabecera no puede ser leida.
62 Si la cabecera no puede ser leida.
63
63
64 """
64 """
65 basicHeaderObj = BasicHeader(LOCALTIME)
65 basicHeaderObj = BasicHeader(LOCALTIME)
66
66
67 try:
67 try:
68 fp = open(filename,'rb')
68 fp = open(filename,'rb')
69 except IOError:
69 except IOError:
70 traceback.print_exc()
70 traceback.print_exc()
71 raise IOError, "The file %s can't be opened" %(filename)
71 raise IOError, "The file %s can't be opened" %(filename)
72
72
73 sts = basicHeaderObj.read(fp)
73 sts = basicHeaderObj.read(fp)
74 fp.close()
74 fp.close()
75
75
76 if not(sts):
76 if not(sts):
77 print "Skipping the file %s because it has not a valid header" %(filename)
77 print "Skipping the file %s because it has not a valid header" %(filename)
78 return 0
78 return 0
79
79
80 if not ((startUTSeconds <= basicHeaderObj.utc) and (endUTSeconds > basicHeaderObj.utc)):
80 if not ((startUTSeconds <= basicHeaderObj.utc) and (endUTSeconds > basicHeaderObj.utc)):
81 return 0
81 return 0
82
82
83 return 1
83 return 1
84
84
85 def isFileinThisTime(filename, startTime, endTime):
85 def isFileinThisTime(filename, startTime, endTime):
86 """
86 """
87 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
87 Retorna 1 si el archivo de datos se encuentra dentro del rango de horas especificado.
88
88
89 Inputs:
89 Inputs:
90 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
90 filename : nombre completo del archivo de datos en formato Jicamarca (.r)
91
91
92 startTime : tiempo inicial del rango seleccionado en formato datetime.time
92 startTime : tiempo inicial del rango seleccionado en formato datetime.time
93
93
94 endTime : tiempo final del rango seleccionado en formato datetime.time
94 endTime : tiempo final del rango seleccionado en formato datetime.time
95
95
96 Return:
96 Return:
97 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
97 Boolean : Retorna True si el archivo de datos contiene datos en el rango de
98 fecha especificado, de lo contrario retorna False.
98 fecha especificado, de lo contrario retorna False.
99
99
100 Excepciones:
100 Excepciones:
101 Si el archivo no existe o no puede ser abierto
101 Si el archivo no existe o no puede ser abierto
102 Si la cabecera no puede ser leida.
102 Si la cabecera no puede ser leida.
103
103
104 """
104 """
105
105
106
106
107 try:
107 try:
108 fp = open(filename,'rb')
108 fp = open(filename,'rb')
109 except IOError:
109 except IOError:
110 traceback.print_exc()
110 traceback.print_exc()
111 raise IOError, "The file %s can't be opened" %(filename)
111 raise IOError, "The file %s can't be opened" %(filename)
112
112
113 basicHeaderObj = BasicHeader(LOCALTIME)
113 basicHeaderObj = BasicHeader(LOCALTIME)
114 sts = basicHeaderObj.read(fp)
114 sts = basicHeaderObj.read(fp)
115 fp.close()
115 fp.close()
116
116
117 thisDatetime = basicHeaderObj.datatime
117 thisDatetime = basicHeaderObj.datatime
118 thisTime = thisDatetime.time()
118 thisTime = thisDatetime.time()
119
119
120 if not(sts):
120 if not(sts):
121 print "Skipping the file %s because it has not a valid header" %(filename)
121 print "Skipping the file %s because it has not a valid header" %(filename)
122 return None
122 return None
123
123
124 if not ((startTime <= thisTime) and (endTime > thisTime)):
124 if not ((startTime <= thisTime) and (endTime > thisTime)):
125 return None
125 return None
126
126
127 return thisDatetime
127 return thisDatetime
128
128
129 def getFileFromSet(path, ext, set):
129 def getFileFromSet(path, ext, set):
130 validFilelist = []
130 validFilelist = []
131 fileList = os.listdir(path)
131 fileList = os.listdir(path)
132
132
133 # 0 1234 567 89A BCDE
133 # 0 1234 567 89A BCDE
134 # H YYYY DDD SSS .ext
134 # H YYYY DDD SSS .ext
135
135
136 for thisFile in fileList:
136 for thisFile in fileList:
137 try:
137 try:
138 year = int(thisFile[1:5])
138 year = int(thisFile[1:5])
139 doy = int(thisFile[5:8])
139 doy = int(thisFile[5:8])
140 except:
140 except:
141 continue
141 continue
142
142
143 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
143 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
144 continue
144 continue
145
145
146 validFilelist.append(thisFile)
146 validFilelist.append(thisFile)
147
147
148 myfile = fnmatch.filter(validFilelist,'*%4.4d%3.3d%3.3d*'%(year,doy,set))
148 myfile = fnmatch.filter(validFilelist,'*%4.4d%3.3d%3.3d*'%(year,doy,set))
149
149
150 if len(myfile)!= 0:
150 if len(myfile)!= 0:
151 return myfile[0]
151 return myfile[0]
152 else:
152 else:
153 filename = '*%4.4d%3.3d%3.3d%s'%(year,doy,set,ext.lower())
153 filename = '*%4.4d%3.3d%3.3d%s'%(year,doy,set,ext.lower())
154 print 'the filename %s does not exist'%filename
154 print 'the filename %s does not exist'%filename
155 print '...going to the last file: '
155 print '...going to the last file: '
156
156
157 if validFilelist:
157 if validFilelist:
158 validFilelist = sorted( validFilelist, key=str.lower )
158 validFilelist = sorted( validFilelist, key=str.lower )
159 return validFilelist[-1]
159 return validFilelist[-1]
160
160
161 return None
161 return None
162
162
163 def getlastFileFromPath(path, ext):
163 def getlastFileFromPath(path, ext):
164 """
164 """
165 Depura el fileList dejando solo los que cumplan el formato de "PYYYYDDDSSS.ext"
165 Depura el fileList dejando solo los que cumplan el formato de "PYYYYDDDSSS.ext"
166 al final de la depuracion devuelve el ultimo file de la lista que quedo.
166 al final de la depuracion devuelve el ultimo file de la lista que quedo.
167
167
168 Input:
168 Input:
169 fileList : lista conteniendo todos los files (sin path) que componen una determinada carpeta
169 fileList : lista conteniendo todos los files (sin path) que componen una determinada carpeta
170 ext : extension de los files contenidos en una carpeta
170 ext : extension de los files contenidos en una carpeta
171
171
172 Return:
172 Return:
173 El ultimo file de una determinada carpeta, no se considera el path.
173 El ultimo file de una determinada carpeta, no se considera el path.
174 """
174 """
175 validFilelist = []
175 validFilelist = []
176 fileList = os.listdir(path)
176 fileList = os.listdir(path)
177
177
178 # 0 1234 567 89A BCDE
178 # 0 1234 567 89A BCDE
179 # H YYYY DDD SSS .ext
179 # H YYYY DDD SSS .ext
180
180
181 for thisFile in fileList:
181 for thisFile in fileList:
182
182
183 year = thisFile[1:5]
183 year = thisFile[1:5]
184 if not isNumber(year):
184 if not isNumber(year):
185 continue
185 continue
186
186
187 doy = thisFile[5:8]
187 doy = thisFile[5:8]
188 if not isNumber(doy):
188 if not isNumber(doy):
189 continue
189 continue
190
190
191 year = int(year)
191 year = int(year)
192 doy = int(doy)
192 doy = int(doy)
193
193
194 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
194 if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
195 continue
195 continue
196
196
197 validFilelist.append(thisFile)
197 validFilelist.append(thisFile)
198
198
199 if validFilelist:
199 if validFilelist:
200 validFilelist = sorted( validFilelist, key=str.lower )
200 validFilelist = sorted( validFilelist, key=str.lower )
201 return validFilelist[-1]
201 return validFilelist[-1]
202
202
203 return None
203 return None
204
204
205 def checkForRealPath(path, foldercounter, year, doy, set, ext):
205 def checkForRealPath(path, foldercounter, year, doy, set, ext):
206 """
206 """
207 Por ser Linux Case Sensitive entonces checkForRealPath encuentra el nombre correcto de un path,
207 Por ser Linux Case Sensitive entonces checkForRealPath encuentra el nombre correcto de un path,
208 Prueba por varias combinaciones de nombres entre mayusculas y minusculas para determinar
208 Prueba por varias combinaciones de nombres entre mayusculas y minusculas para determinar
209 el path exacto de un determinado file.
209 el path exacto de un determinado file.
210
210
211 Example :
211 Example :
212 nombre correcto del file es .../.../D2009307/P2009307367.ext
212 nombre correcto del file es .../.../D2009307/P2009307367.ext
213
213
214 Entonces la funcion prueba con las siguientes combinaciones
214 Entonces la funcion prueba con las siguientes combinaciones
215 .../.../y2009307367.ext
215 .../.../y2009307367.ext
216 .../.../Y2009307367.ext
216 .../.../Y2009307367.ext
217 .../.../x2009307/y2009307367.ext
217 .../.../x2009307/y2009307367.ext
218 .../.../x2009307/Y2009307367.ext
218 .../.../x2009307/Y2009307367.ext
219 .../.../X2009307/y2009307367.ext
219 .../.../X2009307/y2009307367.ext
220 .../.../X2009307/Y2009307367.ext
220 .../.../X2009307/Y2009307367.ext
221 siendo para este caso, la ultima combinacion de letras, identica al file buscado
221 siendo para este caso, la ultima combinacion de letras, identica al file buscado
222
222
223 Return:
223 Return:
224 Si encuentra la cobinacion adecuada devuelve el path completo y el nombre del file
224 Si encuentra la cobinacion adecuada devuelve el path completo y el nombre del file
225 caso contrario devuelve None como path y el la ultima combinacion de nombre en mayusculas
225 caso contrario devuelve None como path y el la ultima combinacion de nombre en mayusculas
226 para el filename
226 para el filename
227 """
227 """
228 fullfilename = None
228 fullfilename = None
229 find_flag = False
229 find_flag = False
230 filename = None
230 filename = None
231
231
232 prefixDirList = [None,'d','D']
232 prefixDirList = [None,'d','D']
233 if ext.lower() == ".r": #voltage
233 if ext.lower() == ".r": #voltage
234 prefixFileList = ['d','D']
234 prefixFileList = ['d','D']
235 elif ext.lower() == ".pdata": #spectra
235 elif ext.lower() == ".pdata": #spectra
236 prefixFileList = ['p','P']
236 prefixFileList = ['p','P']
237 else:
237 else:
238 return None, filename
238 return None, filename
239
239
240 #barrido por las combinaciones posibles
240 #barrido por las combinaciones posibles
241 for prefixDir in prefixDirList:
241 for prefixDir in prefixDirList:
242 thispath = path
242 thispath = path
243 if prefixDir != None:
243 if prefixDir != None:
244 #formo el nombre del directorio xYYYYDDD (x=d o x=D)
244 #formo el nombre del directorio xYYYYDDD (x=d o x=D)
245 if foldercounter == 0:
245 if foldercounter == 0:
246 thispath = os.path.join(path, "%s%04d%03d" % ( prefixDir, year, doy ))
246 thispath = os.path.join(path, "%s%04d%03d" % ( prefixDir, year, doy ))
247 else:
247 else:
248 thispath = os.path.join(path, "%s%04d%03d_%02d" % ( prefixDir, year, doy , foldercounter))
248 thispath = os.path.join(path, "%s%04d%03d_%02d" % ( prefixDir, year, doy , foldercounter))
249 for prefixFile in prefixFileList: #barrido por las dos combinaciones posibles de "D"
249 for prefixFile in prefixFileList: #barrido por las dos combinaciones posibles de "D"
250 filename = "%s%04d%03d%03d%s" % ( prefixFile, year, doy, set, ext ) #formo el nombre del file xYYYYDDDSSS.ext
250 filename = "%s%04d%03d%03d%s" % ( prefixFile, year, doy, set, ext ) #formo el nombre del file xYYYYDDDSSS.ext
251 fullfilename = os.path.join( thispath, filename ) #formo el path completo
251 fullfilename = os.path.join( thispath, filename ) #formo el path completo
252
252
253 if os.path.exists( fullfilename ): #verifico que exista
253 if os.path.exists( fullfilename ): #verifico que exista
254 find_flag = True
254 find_flag = True
255 break
255 break
256 if find_flag:
256 if find_flag:
257 break
257 break
258
258
259 if not(find_flag):
259 if not(find_flag):
260 return None, filename
260 return None, filename
261
261
262 return fullfilename, filename
262 return fullfilename, filename
263
263
264 def isDoyFolder(folder):
264 def isRadarFolder(folder):
265 try:
265 try:
266 year = int(folder[1:5])
266 year = int(folder[1:5])
267 except:
268 return 0
269
270 try:
271 doy = int(folder[5:8])
267 doy = int(folder[5:8])
272 except:
268 except:
273 return 0
269 return 0
274
270
275 return 1
271 return 1
276
272
273 def isRadarFile(file):
274 try:
275 year = int(file[1:5])
276 doy = int(file[5:8])
277 set = int(file[8:11])
278 except:
279 return 0
280
281 return 1
282
283 def getDateFromRadarFile(file):
284 try:
285 year = int(file[1:5])
286 doy = int(file[5:8])
287 set = int(file[8:11])
288 except:
289 return None
290
291 thisDate = datetime.date(year, 1, 1) + datetime.timedelta(doy-1)
292 return thisDate
293
277 class JRODataIO:
294 class JRODataIO:
278
295
279 c = 3E8
296 c = 3E8
280
297
281 isConfig = False
298 isConfig = False
282
299
283 basicHeaderObj = None
300 basicHeaderObj = None
284
301
285 systemHeaderObj = None
302 systemHeaderObj = None
286
303
287 radarControllerHeaderObj = None
304 radarControllerHeaderObj = None
288
305
289 processingHeaderObj = None
306 processingHeaderObj = None
290
307
291 online = 0
308 online = 0
292
309
293 dtype = None
310 dtype = None
294
311
295 pathList = []
312 pathList = []
296
313
297 filenameList = []
314 filenameList = []
298
315
299 filename = None
316 filename = None
300
317
301 ext = None
318 ext = None
302
319
303 flagIsNewFile = 1
320 flagIsNewFile = 1
304
321
305 flagDiscontinuousBlock = 0
322 flagDiscontinuousBlock = 0
306
323
307 flagIsNewBlock = 0
324 flagIsNewBlock = 0
308
325
309 fp = None
326 fp = None
310
327
311 firstHeaderSize = 0
328 firstHeaderSize = 0
312
329
313 basicHeaderSize = 24
330 basicHeaderSize = 24
314
331
315 versionFile = 1103
332 versionFile = 1103
316
333
317 fileSize = None
334 fileSize = None
318
335
319 # ippSeconds = None
336 # ippSeconds = None
320
337
321 fileSizeByHeader = None
338 fileSizeByHeader = None
322
339
323 fileIndex = None
340 fileIndex = None
324
341
325 profileIndex = None
342 profileIndex = None
326
343
327 blockIndex = None
344 blockIndex = None
328
345
329 nTotalBlocks = None
346 nTotalBlocks = None
330
347
331 maxTimeStep = 30
348 maxTimeStep = 30
332
349
333 lastUTTime = None
350 lastUTTime = None
334
351
335 datablock = None
352 datablock = None
336
353
337 dataOut = None
354 dataOut = None
338
355
339 blocksize = None
356 blocksize = None
340
357
341 getByBlock = False
358 getByBlock = False
342
359
343 def __init__(self):
360 def __init__(self):
344
361
345 raise ValueError, "Not implemented"
362 raise ValueError, "Not implemented"
346
363
347 def run(self):
364 def run(self):
348
365
349 raise ValueError, "Not implemented"
366 raise ValueError, "Not implemented"
350
367
351 class JRODataReader(JRODataIO):
368 class JRODataReader(JRODataIO):
352
369
353 nReadBlocks = 0
370 nReadBlocks = 0
354
371
355 delay = 10 #number of seconds waiting a new file
372 delay = 10 #number of seconds waiting a new file
356
373
357 nTries = 3 #quantity tries
374 nTries = 3 #quantity tries
358
375
359 nFiles = 3 #number of files for searching
376 nFiles = 3 #number of files for searching
360
377
361 path = None
378 path = None
362
379
363 foldercounter = 0
380 foldercounter = 0
364
381
365 flagNoMoreFiles = 0
382 flagNoMoreFiles = 0
366
383
367 datetimeList = []
384 datetimeList = []
368
385
369 __isFirstTimeOnline = 1
386 __isFirstTimeOnline = 1
370
387
371 __printInfo = True
388 __printInfo = True
372
389
373 profileIndex = None
390 profileIndex = None
374
391
375 nTxs = 1
392 nTxs = 1
376
393
377 txIndex = None
394 txIndex = None
378
395
379 def __init__(self):
396 def __init__(self):
380
397
381 """
398 """
382
399
383 """
400 """
384
401
385 raise ValueError, "This method has not been implemented"
402 # raise NotImplementedError, "This method has not been implemented"
386
403
387
404
388 def createObjByDefault(self):
405 def createObjByDefault(self):
389 """
406 """
390
407
391 """
408 """
392 raise ValueError, "This method has not been implemented"
409 raise NotImplementedError, "This method has not been implemented"
393
410
394 def getBlockDimension(self):
411 def getBlockDimension(self):
395
412
396 raise ValueError, "No implemented"
413 raise NotImplementedError, "No implemented"
397
414
398 def __searchFilesOffLine(self,
415 def __searchFilesOffLine(self,
399 path,
416 path,
400 startDate,
417 startDate=None,
401 endDate,
418 endDate=None,
402 startTime=datetime.time(0,0,0),
419 startTime=datetime.time(0,0,0),
403 endTime=datetime.time(23,59,59),
420 endTime=datetime.time(23,59,59),
404 set=None,
421 set=None,
405 expLabel='',
422 expLabel='',
406 ext='.r',
423 ext='.r',
407 walk=True):
424 walk=True):
408
425
426 self.filenameList = []
427 self.datetimeList = []
428
409 pathList = []
429 pathList = []
410
430
411 if not walk:
431 if not walk:
412 #pathList.append(path)
432 #pathList.append(path)
413 multi_path = path.split(',')
433 multi_path = path.split(',')
414 for single_path in multi_path:
434 for single_path in multi_path:
415 pathList.append(single_path)
435 pathList.append(single_path)
416
436
417 else:
437 else:
418 #dirList = []
438 #dirList = []
419 multi_path = path.split(',')
439 multi_path = path.split(',')
420 for single_path in multi_path:
440 for single_path in multi_path:
421 dirList = []
441 dirList = []
422 for thisPath in os.listdir(single_path):
442 for thisPath in os.listdir(single_path):
423 if not os.path.isdir(os.path.join(single_path,thisPath)):
443 if not os.path.isdir(os.path.join(single_path,thisPath)):
424 continue
444 continue
425 if not isDoyFolder(thisPath):
445 if not isRadarFolder(thisPath):
426 continue
446 continue
427
447
428 dirList.append(thisPath)
448 dirList.append(thisPath)
429
449
430 if not(dirList):
450 if not(dirList):
431 return None, None
451 return None, None
432
452
433 thisDate = startDate
453 if startDate and endDate:
434
454 thisDate = startDate
435 while(thisDate <= endDate):
455
436 year = thisDate.timetuple().tm_year
456 while(thisDate <= endDate):
437 doy = thisDate.timetuple().tm_yday
457 year = thisDate.timetuple().tm_year
438
458 doy = thisDate.timetuple().tm_yday
439 matchlist = fnmatch.filter(dirList, '?' + '%4.4d%3.3d' % (year,doy) + '*')
459
440 if len(matchlist) == 0:
460 matchlist = fnmatch.filter(dirList, '?' + '%4.4d%3.3d' % (year,doy) + '*')
461 if len(matchlist) == 0:
462 thisDate += datetime.timedelta(1)
463 continue
464 for match in matchlist:
465 pathList.append(os.path.join(single_path,match,expLabel))
466
441 thisDate += datetime.timedelta(1)
467 thisDate += datetime.timedelta(1)
442 continue
468 else:
443 for match in matchlist:
469 for thiDir in dirList:
444 pathList.append(os.path.join(single_path,match,expLabel))
470 pathList.append(os.path.join(single_path,thiDir,expLabel))
445
446 thisDate += datetime.timedelta(1)
447
471
448 if pathList == []:
472 if pathList == []:
449 print "Any folder was found for the date range: %s-%s" %(startDate, endDate)
473 print "Any folder was found for the date range: %s-%s" %(startDate, endDate)
450 return None, None
474 return None, None
451
475
452 print "%d folder(s) was(were) found for the date range: %s - %s" %(len(pathList), startDate, endDate)
476 print "%d folder(s) was(were) found for the date range: %s - %s" %(len(pathList), startDate, endDate)
453
477
454 filenameList = []
478 filenameList = []
455 datetimeList = []
479 datetimeList = []
456 pathDict = {}
480 pathDict = {}
457 filenameList_to_sort = []
481 filenameList_to_sort = []
458
482
459 for i in range(len(pathList)):
483 for i in range(len(pathList)):
460
484
461 thisPath = pathList[i]
485 thisPath = pathList[i]
462
486
463 fileList = glob.glob1(thisPath, "*%s" %ext)
487 fileList = glob.glob1(thisPath, "*%s" %ext)
464 if len(fileList) < 1:
488 if len(fileList) < 1:
465 continue
489 continue
466 fileList.sort()
490 fileList.sort()
467 pathDict.setdefault(fileList[0])
491 pathDict.setdefault(fileList[0])
468 pathDict[fileList[0]] = i
492 pathDict[fileList[0]] = i
469 filenameList_to_sort.append(fileList[0])
493 filenameList_to_sort.append(fileList[0])
470
494
471 filenameList_to_sort.sort()
495 filenameList_to_sort.sort()
472
496
473 for file in filenameList_to_sort:
497 for file in filenameList_to_sort:
474 thisPath = pathList[pathDict[file]]
498 thisPath = pathList[pathDict[file]]
475
499
476 fileList = glob.glob1(thisPath, "*%s" %ext)
500 fileList = glob.glob1(thisPath, "*%s" %ext)
477 fileList.sort()
501 fileList.sort()
478
502
479 for file in fileList:
503 for file in fileList:
480
504
481 filename = os.path.join(thisPath,file)
505 filename = os.path.join(thisPath,file)
482 thisDatetime = isFileinThisTime(filename, startTime, endTime)
506 thisDatetime = isFileinThisTime(filename, startTime, endTime)
483
507
484 if not(thisDatetime):
508 if not(thisDatetime):
485 continue
509 continue
486
510
487 filenameList.append(filename)
511 filenameList.append(filename)
488 datetimeList.append(thisDatetime)
512 datetimeList.append(thisDatetime)
489
513
490 if not(filenameList):
514 if not(filenameList):
491 print "Any file was found for the time range %s - %s" %(startTime, endTime)
515 print "Any file was found for the time range %s - %s" %(startTime, endTime)
492 return None, None
516 return None, None
493
517
494 print "%d file(s) was(were) found for the time range: %s - %s" %(len(filenameList), startTime, endTime)
518 print "%d file(s) was(were) found for the time range: %s - %s" %(len(filenameList), startTime, endTime)
495 print
519 print
496
520
497 for i in range(len(filenameList)):
521 for i in range(len(filenameList)):
498 print "%s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
522 print "%s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
499
523
500 self.filenameList = filenameList
524 self.filenameList = filenameList
501 self.datetimeList = datetimeList
525 self.datetimeList = datetimeList
502
526
503 return pathList, filenameList
527 return pathList, filenameList
504
528
505 def __searchFilesOnLine(self, path, expLabel = "", ext = None, walk=True, set=None):
529 def __searchFilesOnLine(self, path, expLabel = "", ext = None, walk=True, set=None):
506
530
507 """
531 """
508 Busca el ultimo archivo de la ultima carpeta (determinada o no por startDateTime) y
532 Busca el ultimo archivo de la ultima carpeta (determinada o no por startDateTime) y
509 devuelve el archivo encontrado ademas de otros datos.
533 devuelve el archivo encontrado ademas de otros datos.
510
534
511 Input:
535 Input:
512 path : carpeta donde estan contenidos los files que contiene data
536 path : carpeta donde estan contenidos los files que contiene data
513
537
514 expLabel : Nombre del subexperimento (subfolder)
538 expLabel : Nombre del subexperimento (subfolder)
515
539
516 ext : extension de los files
540 ext : extension de los files
517
541
518 walk : Si es habilitado no realiza busquedas dentro de los ubdirectorios (doypath)
542 walk : Si es habilitado no realiza busquedas dentro de los ubdirectorios (doypath)
519
543
520 Return:
544 Return:
521 directory : eL directorio donde esta el file encontrado
545 directory : eL directorio donde esta el file encontrado
522 filename : el ultimo file de una determinada carpeta
546 filename : el ultimo file de una determinada carpeta
523 year : el anho
547 year : el anho
524 doy : el numero de dia del anho
548 doy : el numero de dia del anho
525 set : el set del archivo
549 set : el set del archivo
526
550
527
551
528 """
552 """
529 dirList = []
553 dirList = []
530
554
531 if not walk:
555 if not walk:
532 fullpath = path
556 fullpath = path
533 foldercounter = 0
557 foldercounter = 0
534 else:
558 else:
535 #Filtra solo los directorios
559 #Filtra solo los directorios
536 for thisPath in os.listdir(path):
560 for thisPath in os.listdir(path):
537 if not os.path.isdir(os.path.join(path,thisPath)):
561 if not os.path.isdir(os.path.join(path,thisPath)):
538 continue
562 continue
539 if not isDoyFolder(thisPath):
563 if not isRadarFolder(thisPath):
540 continue
564 continue
541
565
542 dirList.append(thisPath)
566 dirList.append(thisPath)
543
567
544 if not(dirList):
568 if not(dirList):
545 return None, None, None, None, None, None
569 return None, None, None, None, None, None
546
570
547 dirList = sorted( dirList, key=str.lower )
571 dirList = sorted( dirList, key=str.lower )
548
572
549 doypath = dirList[-1]
573 doypath = dirList[-1]
550 foldercounter = int(doypath.split('_')[1]) if len(doypath.split('_'))>1 else 0
574 foldercounter = int(doypath.split('_')[1]) if len(doypath.split('_'))>1 else 0
551 fullpath = os.path.join(path, doypath, expLabel)
575 fullpath = os.path.join(path, doypath, expLabel)
552
576
553
577
554 print "%s folder was found: " %(fullpath )
578 print "%s folder was found: " %(fullpath )
555
579
556 if set == None:
580 if set == None:
557 filename = getlastFileFromPath(fullpath, ext)
581 filename = getlastFileFromPath(fullpath, ext)
558 else:
582 else:
559 filename = getFileFromSet(fullpath, ext, set)
583 filename = getFileFromSet(fullpath, ext, set)
560
584
561 if not(filename):
585 if not(filename):
562 return None, None, None, None, None, None
586 return None, None, None, None, None, None
563
587
564 print "%s file was found" %(filename)
588 print "%s file was found" %(filename)
565
589
566 if not(self.__verifyFile(os.path.join(fullpath, filename))):
590 if not(self.__verifyFile(os.path.join(fullpath, filename))):
567 return None, None, None, None, None, None
591 return None, None, None, None, None, None
568
592
569 year = int( filename[1:5] )
593 year = int( filename[1:5] )
570 doy = int( filename[5:8] )
594 doy = int( filename[5:8] )
571 set = int( filename[8:11] )
595 set = int( filename[8:11] )
572
596
573 return fullpath, foldercounter, filename, year, doy, set
597 return fullpath, foldercounter, filename, year, doy, set
574
598
575 def __setNextFileOffline(self):
599 def __setNextFileOffline(self):
576
600
577 idFile = self.fileIndex
601 idFile = self.fileIndex
578
602
579 while (True):
603 while (True):
580 idFile += 1
604 idFile += 1
581 if not(idFile < len(self.filenameList)):
605 if not(idFile < len(self.filenameList)):
582 self.flagNoMoreFiles = 1
606 self.flagNoMoreFiles = 1
583 # print "[Reading] No more Files"
607 # print "[Reading] No more Files"
584 return 0
608 return 0
585
609
586 filename = self.filenameList[idFile]
610 filename = self.filenameList[idFile]
587
611
588 if not(self.__verifyFile(filename)):
612 if not(self.__verifyFile(filename)):
589 continue
613 continue
590
614
591 fileSize = os.path.getsize(filename)
615 fileSize = os.path.getsize(filename)
592 fp = open(filename,'rb')
616 fp = open(filename,'rb')
593 break
617 break
594
618
595 self.flagIsNewFile = 1
619 self.flagIsNewFile = 1
596 self.fileIndex = idFile
620 self.fileIndex = idFile
597 self.filename = filename
621 self.filename = filename
598 self.fileSize = fileSize
622 self.fileSize = fileSize
599 self.fp = fp
623 self.fp = fp
600
624
601 # print "[Reading] Setting the file: %s"%self.filename
625 # print "[Reading] Setting the file: %s"%self.filename
602
626
603 return 1
627 return 1
604
628
605 def __setNextFileOnline(self):
629 def __setNextFileOnline(self):
606 """
630 """
607 Busca el siguiente file que tenga suficiente data para ser leida, dentro de un folder especifico, si
631 Busca el siguiente file que tenga suficiente data para ser leida, dentro de un folder especifico, si
608 no encuentra un file valido espera un tiempo determinado y luego busca en los posibles n files
632 no encuentra un file valido espera un tiempo determinado y luego busca en los posibles n files
609 siguientes.
633 siguientes.
610
634
611 Affected:
635 Affected:
612 self.flagIsNewFile
636 self.flagIsNewFile
613 self.filename
637 self.filename
614 self.fileSize
638 self.fileSize
615 self.fp
639 self.fp
616 self.set
640 self.set
617 self.flagNoMoreFiles
641 self.flagNoMoreFiles
618
642
619 Return:
643 Return:
620 0 : si luego de una busqueda del siguiente file valido este no pudo ser encontrado
644 0 : si luego de una busqueda del siguiente file valido este no pudo ser encontrado
621 1 : si el file fue abierto con exito y esta listo a ser leido
645 1 : si el file fue abierto con exito y esta listo a ser leido
622
646
623 Excepciones:
647 Excepciones:
624 Si un determinado file no puede ser abierto
648 Si un determinado file no puede ser abierto
625 """
649 """
626 nFiles = 0
650 nFiles = 0
627 fileOk_flag = False
651 fileOk_flag = False
628 firstTime_flag = True
652 firstTime_flag = True
629
653
630 self.set += 1
654 self.set += 1
631
655
632 if self.set > 999:
656 if self.set > 999:
633 self.set = 0
657 self.set = 0
634 self.foldercounter += 1
658 self.foldercounter += 1
635
659
636 #busca el 1er file disponible
660 #busca el 1er file disponible
637 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
661 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
638 if fullfilename:
662 if fullfilename:
639 if self.__verifyFile(fullfilename, False):
663 if self.__verifyFile(fullfilename, False):
640 fileOk_flag = True
664 fileOk_flag = True
641
665
642 #si no encuentra un file entonces espera y vuelve a buscar
666 #si no encuentra un file entonces espera y vuelve a buscar
643 if not(fileOk_flag):
667 if not(fileOk_flag):
644 for nFiles in range(self.nFiles+1): #busco en los siguientes self.nFiles+1 files posibles
668 for nFiles in range(self.nFiles+1): #busco en los siguientes self.nFiles+1 files posibles
645
669
646 if firstTime_flag: #si es la 1era vez entonces hace el for self.nTries veces
670 if firstTime_flag: #si es la 1era vez entonces hace el for self.nTries veces
647 tries = self.nTries
671 tries = self.nTries
648 else:
672 else:
649 tries = 1 #si no es la 1era vez entonces solo lo hace una vez
673 tries = 1 #si no es la 1era vez entonces solo lo hace una vez
650
674
651 for nTries in range( tries ):
675 for nTries in range( tries ):
652 if firstTime_flag:
676 if firstTime_flag:
653 print "\t[Reading] Waiting %0.2f sec for the file \"%s\" , try %03d ..." % ( self.delay, filename, nTries+1 )
677 print "\t[Reading] Waiting %0.2f sec for the file \"%s\" , try %03d ..." % ( self.delay, filename, nTries+1 )
654 sleep( self.delay )
678 sleep( self.delay )
655 else:
679 else:
656 print "\t[Reading] Searching the next \"%s%04d%03d%03d%s\" file ..." % (self.optchar, self.year, self.doy, self.set, self.ext)
680 print "\t[Reading] Searching the next \"%s%04d%03d%03d%s\" file ..." % (self.optchar, self.year, self.doy, self.set, self.ext)
657
681
658 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
682 fullfilename, filename = checkForRealPath( self.path, self.foldercounter, self.year, self.doy, self.set, self.ext )
659 if fullfilename:
683 if fullfilename:
660 if self.__verifyFile(fullfilename):
684 if self.__verifyFile(fullfilename):
661 fileOk_flag = True
685 fileOk_flag = True
662 break
686 break
663
687
664 if fileOk_flag:
688 if fileOk_flag:
665 break
689 break
666
690
667 firstTime_flag = False
691 firstTime_flag = False
668
692
669 print "\t[Reading] Skipping the file \"%s\" due to this file doesn't exist" % filename
693 print "\t[Reading] Skipping the file \"%s\" due to this file doesn't exist" % filename
670 self.set += 1
694 self.set += 1
671
695
672 if nFiles == (self.nFiles-1): #si no encuentro el file buscado cambio de carpeta y busco en la siguiente carpeta
696 if nFiles == (self.nFiles-1): #si no encuentro el file buscado cambio de carpeta y busco en la siguiente carpeta
673 self.set = 0
697 self.set = 0
674 self.doy += 1
698 self.doy += 1
675 self.foldercounter = 0
699 self.foldercounter = 0
676
700
677 if fileOk_flag:
701 if fileOk_flag:
678 self.fileSize = os.path.getsize( fullfilename )
702 self.fileSize = os.path.getsize( fullfilename )
679 self.filename = fullfilename
703 self.filename = fullfilename
680 self.flagIsNewFile = 1
704 self.flagIsNewFile = 1
681 if self.fp != None: self.fp.close()
705 if self.fp != None: self.fp.close()
682 self.fp = open(fullfilename, 'rb')
706 self.fp = open(fullfilename, 'rb')
683 self.flagNoMoreFiles = 0
707 self.flagNoMoreFiles = 0
684 # print '[Reading] Setting the file: %s' % fullfilename
708 # print '[Reading] Setting the file: %s' % fullfilename
685 else:
709 else:
686 self.fileSize = 0
710 self.fileSize = 0
687 self.filename = None
711 self.filename = None
688 self.flagIsNewFile = 0
712 self.flagIsNewFile = 0
689 self.fp = None
713 self.fp = None
690 self.flagNoMoreFiles = 1
714 self.flagNoMoreFiles = 1
691 # print '[Reading] No more files to read'
715 # print '[Reading] No more files to read'
692
716
693 return fileOk_flag
717 return fileOk_flag
694
718
695 def setNextFile(self):
719 def setNextFile(self):
696 if self.fp != None:
720 if self.fp != None:
697 self.fp.close()
721 self.fp.close()
698
722
699 if self.online:
723 if self.online:
700 newFile = self.__setNextFileOnline()
724 newFile = self.__setNextFileOnline()
701 else:
725 else:
702 newFile = self.__setNextFileOffline()
726 newFile = self.__setNextFileOffline()
703
727
704 if not(newFile):
728 if not(newFile):
705 print '[Reading] No more files to read'
729 print '[Reading] No more files to read'
706 return 0
730 return 0
707
731
708 print '[Reading] Setting the file: %s' % self.filename
732 print '[Reading] Setting the file: %s' % self.filename
709
733
710 self.__readFirstHeader()
734 self.__readFirstHeader()
711 self.nReadBlocks = 0
735 self.nReadBlocks = 0
712 return 1
736 return 1
713
737
714 def __waitNewBlock(self):
738 def __waitNewBlock(self):
715 """
739 """
716 Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
740 Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
717
741
718 Si el modo de lectura es OffLine siempre retorn 0
742 Si el modo de lectura es OffLine siempre retorn 0
719 """
743 """
720 if not self.online:
744 if not self.online:
721 return 0
745 return 0
722
746
723 if (self.nReadBlocks >= self.processingHeaderObj.dataBlocksPerFile):
747 if (self.nReadBlocks >= self.processingHeaderObj.dataBlocksPerFile):
724 return 0
748 return 0
725
749
726 currentPointer = self.fp.tell()
750 currentPointer = self.fp.tell()
727
751
728 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
752 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
729
753
730 for nTries in range( self.nTries ):
754 for nTries in range( self.nTries ):
731
755
732 self.fp.close()
756 self.fp.close()
733 self.fp = open( self.filename, 'rb' )
757 self.fp = open( self.filename, 'rb' )
734 self.fp.seek( currentPointer )
758 self.fp.seek( currentPointer )
735
759
736 self.fileSize = os.path.getsize( self.filename )
760 self.fileSize = os.path.getsize( self.filename )
737 currentSize = self.fileSize - currentPointer
761 currentSize = self.fileSize - currentPointer
738
762
739 if ( currentSize >= neededSize ):
763 if ( currentSize >= neededSize ):
740 self.basicHeaderObj.read(self.fp)
764 self.basicHeaderObj.read(self.fp)
741 return 1
765 return 1
742
766
743 if self.fileSize == self.fileSizeByHeader:
767 if self.fileSize == self.fileSizeByHeader:
744 # self.flagEoF = True
768 # self.flagEoF = True
745 return 0
769 return 0
746
770
747 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
771 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
748 sleep( self.delay )
772 sleep( self.delay )
749
773
750
774
751 return 0
775 return 0
752
776
753 def waitDataBlock(self,pointer_location):
777 def waitDataBlock(self,pointer_location):
754
778
755 currentPointer = pointer_location
779 currentPointer = pointer_location
756
780
757 neededSize = self.processingHeaderObj.blockSize #+ self.basicHeaderSize
781 neededSize = self.processingHeaderObj.blockSize #+ self.basicHeaderSize
758
782
759 for nTries in range( self.nTries ):
783 for nTries in range( self.nTries ):
760 self.fp.close()
784 self.fp.close()
761 self.fp = open( self.filename, 'rb' )
785 self.fp = open( self.filename, 'rb' )
762 self.fp.seek( currentPointer )
786 self.fp.seek( currentPointer )
763
787
764 self.fileSize = os.path.getsize( self.filename )
788 self.fileSize = os.path.getsize( self.filename )
765 currentSize = self.fileSize - currentPointer
789 currentSize = self.fileSize - currentPointer
766
790
767 if ( currentSize >= neededSize ):
791 if ( currentSize >= neededSize ):
768 return 1
792 return 1
769
793
770 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
794 print "[Reading] Waiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
771 sleep( self.delay )
795 sleep( self.delay )
772
796
773 return 0
797 return 0
774
798
775 def __jumpToLastBlock(self):
799 def __jumpToLastBlock(self):
776
800
777 if not(self.__isFirstTimeOnline):
801 if not(self.__isFirstTimeOnline):
778 return
802 return
779
803
780 csize = self.fileSize - self.fp.tell()
804 csize = self.fileSize - self.fp.tell()
781 blocksize = self.processingHeaderObj.blockSize
805 blocksize = self.processingHeaderObj.blockSize
782
806
783 #salta el primer bloque de datos
807 #salta el primer bloque de datos
784 if csize > self.processingHeaderObj.blockSize:
808 if csize > self.processingHeaderObj.blockSize:
785 self.fp.seek(self.fp.tell() + blocksize)
809 self.fp.seek(self.fp.tell() + blocksize)
786 else:
810 else:
787 return
811 return
788
812
789 csize = self.fileSize - self.fp.tell()
813 csize = self.fileSize - self.fp.tell()
790 neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
814 neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
791 while True:
815 while True:
792
816
793 if self.fp.tell()<self.fileSize:
817 if self.fp.tell()<self.fileSize:
794 self.fp.seek(self.fp.tell() + neededsize)
818 self.fp.seek(self.fp.tell() + neededsize)
795 else:
819 else:
796 self.fp.seek(self.fp.tell() - neededsize)
820 self.fp.seek(self.fp.tell() - neededsize)
797 break
821 break
798
822
799 # csize = self.fileSize - self.fp.tell()
823 # csize = self.fileSize - self.fp.tell()
800 # neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
824 # neededsize = self.processingHeaderObj.blockSize + self.basicHeaderSize
801 # factor = int(csize/neededsize)
825 # factor = int(csize/neededsize)
802 # if factor > 0:
826 # if factor > 0:
803 # self.fp.seek(self.fp.tell() + factor*neededsize)
827 # self.fp.seek(self.fp.tell() + factor*neededsize)
804
828
805 self.flagIsNewFile = 0
829 self.flagIsNewFile = 0
806 self.__isFirstTimeOnline = 0
830 self.__isFirstTimeOnline = 0
807
831
808 def __setNewBlock(self):
832 def __setNewBlock(self):
809
833
810 if self.fp == None:
834 if self.fp == None:
811 return 0
835 return 0
812
836
813 if self.online:
837 if self.online:
814 self.__jumpToLastBlock()
838 self.__jumpToLastBlock()
815
839
816 if self.flagIsNewFile:
840 if self.flagIsNewFile:
817 return 1
841 return 1
818
842
819 self.lastUTTime = self.basicHeaderObj.utc
843 self.lastUTTime = self.basicHeaderObj.utc
820 currentSize = self.fileSize - self.fp.tell()
844 currentSize = self.fileSize - self.fp.tell()
821 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
845 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
822
846
823 if (currentSize >= neededSize):
847 if (currentSize >= neededSize):
824 self.basicHeaderObj.read(self.fp)
848 self.basicHeaderObj.read(self.fp)
825 return 1
849 return 1
826
850
827 if self.__waitNewBlock():
851 if self.__waitNewBlock():
828 return 1
852 return 1
829
853
830 if not(self.setNextFile()):
854 if not(self.setNextFile()):
831 return 0
855 return 0
832
856
833 deltaTime = self.basicHeaderObj.utc - self.lastUTTime #
857 deltaTime = self.basicHeaderObj.utc - self.lastUTTime #
834
858
835 self.flagDiscontinuousBlock = 0
859 self.flagDiscontinuousBlock = 0
836
860
837 if deltaTime > self.maxTimeStep:
861 if deltaTime > self.maxTimeStep:
838 self.flagDiscontinuousBlock = 1
862 self.flagDiscontinuousBlock = 1
839
863
840 return 1
864 return 1
841
865
842 def readNextBlock(self):
866 def readNextBlock(self):
843 if not(self.__setNewBlock()):
867 if not(self.__setNewBlock()):
844 return 0
868 return 0
845
869
846 if not(self.readBlock()):
870 if not(self.readBlock()):
847 return 0
871 return 0
848
872
849 return 1
873 return 1
850
874
851 def __readFirstHeader(self):
875 def __readFirstHeader(self):
852
876
853 self.basicHeaderObj.read(self.fp)
877 self.basicHeaderObj.read(self.fp)
854 self.systemHeaderObj.read(self.fp)
878 self.systemHeaderObj.read(self.fp)
855 self.radarControllerHeaderObj.read(self.fp)
879 self.radarControllerHeaderObj.read(self.fp)
856 self.processingHeaderObj.read(self.fp)
880 self.processingHeaderObj.read(self.fp)
857
881
858 self.firstHeaderSize = self.basicHeaderObj.size
882 self.firstHeaderSize = self.basicHeaderObj.size
859
883
860 datatype = int(numpy.log2((self.processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
884 datatype = int(numpy.log2((self.processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
861 if datatype == 0:
885 if datatype == 0:
862 datatype_str = numpy.dtype([('real','<i1'),('imag','<i1')])
886 datatype_str = numpy.dtype([('real','<i1'),('imag','<i1')])
863 elif datatype == 1:
887 elif datatype == 1:
864 datatype_str = numpy.dtype([('real','<i2'),('imag','<i2')])
888 datatype_str = numpy.dtype([('real','<i2'),('imag','<i2')])
865 elif datatype == 2:
889 elif datatype == 2:
866 datatype_str = numpy.dtype([('real','<i4'),('imag','<i4')])
890 datatype_str = numpy.dtype([('real','<i4'),('imag','<i4')])
867 elif datatype == 3:
891 elif datatype == 3:
868 datatype_str = numpy.dtype([('real','<i8'),('imag','<i8')])
892 datatype_str = numpy.dtype([('real','<i8'),('imag','<i8')])
869 elif datatype == 4:
893 elif datatype == 4:
870 datatype_str = numpy.dtype([('real','<f4'),('imag','<f4')])
894 datatype_str = numpy.dtype([('real','<f4'),('imag','<f4')])
871 elif datatype == 5:
895 elif datatype == 5:
872 datatype_str = numpy.dtype([('real','<f8'),('imag','<f8')])
896 datatype_str = numpy.dtype([('real','<f8'),('imag','<f8')])
873 else:
897 else:
874 raise ValueError, 'Data type was not defined'
898 raise ValueError, 'Data type was not defined'
875
899
876 self.dtype = datatype_str
900 self.dtype = datatype_str
877 #self.ippSeconds = 2 * 1000 * self.radarControllerHeaderObj.ipp / self.c
901 #self.ippSeconds = 2 * 1000 * self.radarControllerHeaderObj.ipp / self.c
878 self.fileSizeByHeader = self.processingHeaderObj.dataBlocksPerFile * self.processingHeaderObj.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.processingHeaderObj.dataBlocksPerFile - 1)
902 self.fileSizeByHeader = self.processingHeaderObj.dataBlocksPerFile * self.processingHeaderObj.blockSize + self.firstHeaderSize + self.basicHeaderSize*(self.processingHeaderObj.dataBlocksPerFile - 1)
879 # self.dataOut.channelList = numpy.arange(self.systemHeaderObj.numChannels)
903 # self.dataOut.channelList = numpy.arange(self.systemHeaderObj.numChannels)
880 # self.dataOut.channelIndexList = numpy.arange(self.systemHeaderObj.numChannels)
904 # self.dataOut.channelIndexList = numpy.arange(self.systemHeaderObj.numChannels)
881 self.getBlockDimension()
905 self.getBlockDimension()
882
906
883 def __verifyFile(self, filename, msgFlag=True):
907 def __verifyFile(self, filename, msgFlag=True):
884 msg = None
908 msg = None
885 try:
909 try:
886 fp = open(filename, 'rb')
910 fp = open(filename, 'rb')
887 currentPosition = fp.tell()
911 currentPosition = fp.tell()
888 except IOError:
912 except IOError:
889 traceback.print_exc()
913 traceback.print_exc()
890 if msgFlag:
914 if msgFlag:
891 print "[Reading] The file %s can't be opened" % (filename)
915 print "[Reading] The file %s can't be opened" % (filename)
892 return False
916 return False
893
917
894 neededSize = self.processingHeaderObj.blockSize + self.firstHeaderSize
918 neededSize = self.processingHeaderObj.blockSize + self.firstHeaderSize
895
919
896 if neededSize == 0:
920 if neededSize == 0:
897 basicHeaderObj = BasicHeader(LOCALTIME)
921 basicHeaderObj = BasicHeader(LOCALTIME)
898 systemHeaderObj = SystemHeader()
922 systemHeaderObj = SystemHeader()
899 radarControllerHeaderObj = RadarControllerHeader()
923 radarControllerHeaderObj = RadarControllerHeader()
900 processingHeaderObj = ProcessingHeader()
924 processingHeaderObj = ProcessingHeader()
901
925
902 try:
926 try:
903 if not( basicHeaderObj.read(fp) ): raise IOError
927 if not( basicHeaderObj.read(fp) ): raise IOError
904 if not( systemHeaderObj.read(fp) ): raise IOError
928 if not( systemHeaderObj.read(fp) ): raise IOError
905 if not( radarControllerHeaderObj.read(fp) ): raise IOError
929 if not( radarControllerHeaderObj.read(fp) ): raise IOError
906 if not( processingHeaderObj.read(fp) ): raise IOError
930 if not( processingHeaderObj.read(fp) ): raise IOError
907 # data_type = int(numpy.log2((processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
931 # data_type = int(numpy.log2((processingHeaderObj.processFlags & PROCFLAG.DATATYPE_MASK))-numpy.log2(PROCFLAG.DATATYPE_CHAR))
908
932
909 neededSize = processingHeaderObj.blockSize + basicHeaderObj.size
933 neededSize = processingHeaderObj.blockSize + basicHeaderObj.size
910
934
911 except IOError:
935 except IOError:
912 traceback.print_exc()
936 traceback.print_exc()
913 if msgFlag:
937 if msgFlag:
914 print "[Reading] The file %s is empty or it hasn't enough data" % filename
938 print "[Reading] The file %s is empty or it hasn't enough data" % filename
915
939
916 fp.close()
940 fp.close()
917 return False
941 return False
918 else:
942 else:
919 msg = "[Reading] Skipping the file %s due to it hasn't enough data" %filename
943 msg = "[Reading] Skipping the file %s due to it hasn't enough data" %filename
920
944
921 fp.close()
945 fp.close()
922 fileSize = os.path.getsize(filename)
946 fileSize = os.path.getsize(filename)
923 currentSize = fileSize - currentPosition
947 currentSize = fileSize - currentPosition
924 if currentSize < neededSize:
948 if currentSize < neededSize:
925 if msgFlag and (msg != None):
949 if msgFlag and (msg != None):
926 print msg #print"\tSkipping the file %s due to it hasn't enough data" %filename
950 print msg #print"\tSkipping the file %s due to it hasn't enough data" %filename
927 return False
951 return False
928
952
929 return True
953 return True
930
954
955 def findDatafiles(self, path, startDate=None, endDate=None, expLabel='', ext='.r', walk=True):
956
957 dateList = []
958 pathList = []
959
960 if not walk:
961 #pathList.append(path)
962 multi_path = path.split(',')
963 for single_path in multi_path:
964
965 ok = False
966 fileList = glob.glob1(single_path, "*"+ext)
967
968 for thisFile in fileList:
969
970 if not os.path.isfile(os.path.join(single_path, thisFile)):
971 continue
972
973 if not isRadarFile(thisFile):
974 continue
975
976 ok = True
977 thisDate = getDateFromRadarFile(thisFile)
978
979 if thisDate not in dateList:
980 dateList.append(thisDate)
981
982 if ok:
983 pathList.append(single_path)
984
985 return dateList
986
987 multi_path = path.split(',')
988 for single_path in multi_path:
989
990 dirList = []
991
992 for thisPath in os.listdir(single_path):
993
994 if not os.path.isdir(os.path.join(single_path,thisPath)):
995 continue
996
997 if not isRadarFolder(thisPath):
998 continue
999
1000 dirList.append(thisPath)
1001
1002 if not dirList:
1003 return dateList
1004
1005 if startDate and endDate:
1006 thisDate = startDate
1007
1008 while(thisDate <= endDate):
1009 year = thisDate.timetuple().tm_year
1010 doy = thisDate.timetuple().tm_yday
1011
1012 matchlist = fnmatch.filter(dirList, '?' + '%4.4d%3.3d' % (year,doy) + '*')
1013 if len(matchlist) == 0:
1014 thisDate += datetime.timedelta(1)
1015 continue
1016
1017 for match in matchlist:
1018 pathList.append(os.path.join(single_path,match,expLabel))
1019 dateList.append(thisDate)
1020
1021 thisDate += datetime.timedelta(1)
1022 else:
1023 for thiDir in dirList:
1024 year = int(folder[1:5])
1025 doy = int(folder[5:8])
1026 thisDate = datetime.date(year,1,1) + datetime.timedelta(doy-1)
1027
1028 pathList.append(os.path.join(single_path,thiDir,expLabel))
1029 dateList.append(thisDate)
1030
1031 return dateList
1032
1033
931 def setup(self,
1034 def setup(self,
932 path=None,
1035 path=None,
933 startDate=None,
1036 startDate=None,
934 endDate=None,
1037 endDate=None,
935 startTime=datetime.time(0,0,0),
1038 startTime=datetime.time(0,0,0),
936 endTime=datetime.time(23,59,59),
1039 endTime=datetime.time(23,59,59),
937 set=None,
1040 set=None,
938 expLabel = "",
1041 expLabel = "",
939 ext = None,
1042 ext = None,
940 online = False,
1043 online = False,
941 delay = 60,
1044 delay = 60,
942 walk = True,
1045 walk = True,
943 getblock = False,
1046 getblock = False,
944 nTxs = 1):
1047 nTxs = 1):
945
1048
946 if path == None:
1049 if path == None:
947 raise ValueError, "[Reading] The path is not valid"
1050 raise ValueError, "[Reading] The path is not valid"
948
1051
949 if ext == None:
1052 if ext == None:
950 ext = self.ext
1053 ext = self.ext
951
1054
952 if online:
1055 if online:
953 print "[Reading] Searching files in online mode..."
1056 print "[Reading] Searching files in online mode..."
954
1057
955 for nTries in range( self.nTries ):
1058 for nTries in range( self.nTries ):
956 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set)
1059 fullpath, foldercounter, file, year, doy, set = self.__searchFilesOnLine(path=path, expLabel=expLabel, ext=ext, walk=walk, set=set)
957
1060
958 if fullpath:
1061 if fullpath:
959 break
1062 break
960
1063
961 print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
1064 print '[Reading] Waiting %0.2f sec for an valid file in %s: try %02d ...' % (self.delay, path, nTries+1)
962 sleep( self.delay )
1065 sleep( self.delay )
963
1066
964 if not(fullpath):
1067 if not(fullpath):
965 print "[Reading] There 'isn't any valid file in %s" % path
1068 print "[Reading] There 'isn't any valid file in %s" % path
966 return None
1069 return None
967
1070
968 self.year = year
1071 self.year = year
969 self.doy = doy
1072 self.doy = doy
970 self.set = set - 1
1073 self.set = set - 1
971 self.path = path
1074 self.path = path
972 self.foldercounter = foldercounter
1075 self.foldercounter = foldercounter
973 last_set = None
1076 last_set = None
974
1077
975 else:
1078 else:
976 print "[Reading] Searching files in offline mode ..."
1079 print "[Reading] Searching files in offline mode ..."
977 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
1080 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
978 startTime=startTime, endTime=endTime,
1081 startTime=startTime, endTime=endTime,
979 set=set, expLabel=expLabel, ext=ext,
1082 set=set, expLabel=expLabel, ext=ext,
980 walk=walk)
1083 walk=walk)
981
1084
982 if not(pathList):
1085 if not(pathList):
983 print "[Reading] No *%s files into the folder %s \nfor the range: %s - %s"%(ext, path,
1086 print "[Reading] No *%s files into the folder %s \nfor the range: %s - %s"%(ext, path,
984 datetime.datetime.combine(startDate,startTime).ctime(),
1087 datetime.datetime.combine(startDate,startTime).ctime(),
985 datetime.datetime.combine(endDate,endTime).ctime())
1088 datetime.datetime.combine(endDate,endTime).ctime())
986
1089
987 sys.exit(-1)
1090 sys.exit(-1)
988
1091
989
1092
990 self.fileIndex = -1
1093 self.fileIndex = -1
991 self.pathList = pathList
1094 self.pathList = pathList
992 self.filenameList = filenameList
1095 self.filenameList = filenameList
993 file_name = os.path.basename(filenameList[-1])
1096 file_name = os.path.basename(filenameList[-1])
994 basename, ext = os.path.splitext(file_name)
1097 basename, ext = os.path.splitext(file_name)
995 last_set = int(basename[-3:])
1098 last_set = int(basename[-3:])
996
1099
997 self.online = online
1100 self.online = online
998 self.delay = delay
1101 self.delay = delay
999 ext = ext.lower()
1102 ext = ext.lower()
1000 self.ext = ext
1103 self.ext = ext
1001 self.getByBlock = getblock
1104 self.getByBlock = getblock
1002 self.nTxs = int(nTxs)
1105 self.nTxs = int(nTxs)
1003
1106
1004 if not(self.setNextFile()):
1107 if not(self.setNextFile()):
1005 if (startDate!=None) and (endDate!=None):
1108 if (startDate!=None) and (endDate!=None):
1006 print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
1109 print "[Reading] No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
1007 elif startDate != None:
1110 elif startDate != None:
1008 print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
1111 print "[Reading] No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
1009 else:
1112 else:
1010 print "[Reading] No files"
1113 print "[Reading] No files"
1011
1114
1012 sys.exit(-1)
1115 sys.exit(-1)
1013
1116
1014 # self.updateDataHeader()
1117 # self.updateDataHeader()
1015 if last_set != None:
1118 if last_set != None:
1016 self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock
1119 self.dataOut.last_block = last_set * self.processingHeaderObj.dataBlocksPerFile + self.basicHeaderObj.dataBlock
1017 return
1120 return
1018
1121
1019 def getBasicHeader(self):
1122 def getBasicHeader(self):
1020
1123
1021 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000. + self.profileIndex * self.radarControllerHeaderObj.ippSeconds
1124 self.dataOut.utctime = self.basicHeaderObj.utc + self.basicHeaderObj.miliSecond/1000. + self.profileIndex * self.radarControllerHeaderObj.ippSeconds
1022
1125
1023 self.dataOut.flagDiscontinuousBlock = self.flagDiscontinuousBlock
1126 self.dataOut.flagDiscontinuousBlock = self.flagDiscontinuousBlock
1024
1127
1025 self.dataOut.timeZone = self.basicHeaderObj.timeZone
1128 self.dataOut.timeZone = self.basicHeaderObj.timeZone
1026
1129
1027 self.dataOut.dstFlag = self.basicHeaderObj.dstFlag
1130 self.dataOut.dstFlag = self.basicHeaderObj.dstFlag
1028
1131
1029 self.dataOut.errorCount = self.basicHeaderObj.errorCount
1132 self.dataOut.errorCount = self.basicHeaderObj.errorCount
1030
1133
1031 self.dataOut.useLocalTime = self.basicHeaderObj.useLocalTime
1134 self.dataOut.useLocalTime = self.basicHeaderObj.useLocalTime
1032
1135
1033 self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds/self.nTxs
1136 self.dataOut.ippSeconds = self.radarControllerHeaderObj.ippSeconds/self.nTxs
1034
1137
1035 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs
1138 self.dataOut.nProfiles = self.processingHeaderObj.profilesPerBlock*self.nTxs
1036
1139
1037
1140
1038 def getFirstHeader(self):
1141 def getFirstHeader(self):
1039
1142
1040 raise ValueError, "This method has not been implemented"
1143 raise ValueError, "This method has not been implemented"
1041
1144
1042 def getData(self):
1145 def getData(self):
1043
1146
1044 raise ValueError, "This method has not been implemented"
1147 raise ValueError, "This method has not been implemented"
1045
1148
1046 def hasNotDataInBuffer(self):
1149 def hasNotDataInBuffer(self):
1047
1150
1048 raise ValueError, "This method has not been implemented"
1151 raise ValueError, "This method has not been implemented"
1049
1152
1050 def readBlock(self):
1153 def readBlock(self):
1051
1154
1052 raise ValueError, "This method has not been implemented"
1155 raise ValueError, "This method has not been implemented"
1053
1156
1054 def isEndProcess(self):
1157 def isEndProcess(self):
1055
1158
1056 return self.flagNoMoreFiles
1159 return self.flagNoMoreFiles
1057
1160
1058 def printReadBlocks(self):
1161 def printReadBlocks(self):
1059
1162
1060 print "[Reading] Number of read blocks per file %04d" %self.nReadBlocks
1163 print "[Reading] Number of read blocks per file %04d" %self.nReadBlocks
1061
1164
1062 def printTotalBlocks(self):
1165 def printTotalBlocks(self):
1063
1166
1064 print "[Reading] Number of read blocks %04d" %self.nTotalBlocks
1167 print "[Reading] Number of read blocks %04d" %self.nTotalBlocks
1065
1168
1066 def printNumberOfBlock(self):
1169 def printNumberOfBlock(self):
1067
1170
1068 if self.flagIsNewBlock:
1171 if self.flagIsNewBlock:
1069 print "[Reading] Block No. %04d, Total blocks %04d -> %s" %(self.basicHeaderObj.dataBlock, self.nTotalBlocks, self.dataOut.datatime.ctime())
1172 print "[Reading] Block No. %04d, Total blocks %04d -> %s" %(self.basicHeaderObj.dataBlock, self.nTotalBlocks, self.dataOut.datatime.ctime())
1070 self.dataOut.blocknow = self.basicHeaderObj.dataBlock
1173 self.dataOut.blocknow = self.basicHeaderObj.dataBlock
1071
1174
1072 def printInfo(self):
1175 def printInfo(self):
1073
1176
1074 if self.__printInfo == False:
1177 if self.__printInfo == False:
1075 return
1178 return
1076
1179
1077 self.basicHeaderObj.printInfo()
1180 self.basicHeaderObj.printInfo()
1078 self.systemHeaderObj.printInfo()
1181 self.systemHeaderObj.printInfo()
1079 self.radarControllerHeaderObj.printInfo()
1182 self.radarControllerHeaderObj.printInfo()
1080 self.processingHeaderObj.printInfo()
1183 self.processingHeaderObj.printInfo()
1081
1184
1082 self.__printInfo = False
1185 self.__printInfo = False
1083
1186
1084
1187
1085 def run(self, **kwargs):
1188 def run(self, **kwargs):
1086
1189
1087 if not(self.isConfig):
1190 if not(self.isConfig):
1088
1191
1089 # self.dataOut = dataOut
1192 # self.dataOut = dataOut
1090 self.setup(**kwargs)
1193 self.setup(**kwargs)
1091 self.isConfig = True
1194 self.isConfig = True
1092
1195
1093 self.getData()
1196 self.getData()
1094
1197
1095 class JRODataWriter(JRODataIO):
1198 class JRODataWriter(JRODataIO):
1096
1199
1097 """
1200 """
1098 Esta clase permite escribir datos a archivos procesados (.r o ,pdata). La escritura
1201 Esta clase permite escribir datos a archivos procesados (.r o ,pdata). La escritura
1099 de los datos siempre se realiza por bloques.
1202 de los datos siempre se realiza por bloques.
1100 """
1203 """
1101
1204
1102 blockIndex = 0
1205 blockIndex = 0
1103
1206
1104 path = None
1207 path = None
1105
1208
1106 setFile = None
1209 setFile = None
1107
1210
1108 profilesPerBlock = None
1211 profilesPerBlock = None
1109
1212
1110 blocksPerFile = None
1213 blocksPerFile = None
1111
1214
1112 nWriteBlocks = 0
1215 nWriteBlocks = 0
1113
1216
1114 def __init__(self, dataOut=None):
1217 def __init__(self, dataOut=None):
1115 raise ValueError, "Not implemented"
1218 raise ValueError, "Not implemented"
1116
1219
1117
1220
1118 def hasAllDataInBuffer(self):
1221 def hasAllDataInBuffer(self):
1119 raise ValueError, "Not implemented"
1222 raise ValueError, "Not implemented"
1120
1223
1121
1224
1122 def setBlockDimension(self):
1225 def setBlockDimension(self):
1123 raise ValueError, "Not implemented"
1226 raise ValueError, "Not implemented"
1124
1227
1125
1228
1126 def writeBlock(self):
1229 def writeBlock(self):
1127 raise ValueError, "No implemented"
1230 raise ValueError, "No implemented"
1128
1231
1129
1232
1130 def putData(self):
1233 def putData(self):
1131 raise ValueError, "No implemented"
1234 raise ValueError, "No implemented"
1132
1235
1133
1236
1134 def setBasicHeader(self):
1237 def setBasicHeader(self):
1135
1238
1136 self.basicHeaderObj.size = self.basicHeaderSize #bytes
1239 self.basicHeaderObj.size = self.basicHeaderSize #bytes
1137 self.basicHeaderObj.version = self.versionFile
1240 self.basicHeaderObj.version = self.versionFile
1138 self.basicHeaderObj.dataBlock = self.nTotalBlocks
1241 self.basicHeaderObj.dataBlock = self.nTotalBlocks
1139
1242
1140 utc = numpy.floor(self.dataOut.utctime)
1243 utc = numpy.floor(self.dataOut.utctime)
1141 milisecond = (self.dataOut.utctime - utc)* 1000.0
1244 milisecond = (self.dataOut.utctime - utc)* 1000.0
1142
1245
1143 self.basicHeaderObj.utc = utc
1246 self.basicHeaderObj.utc = utc
1144 self.basicHeaderObj.miliSecond = milisecond
1247 self.basicHeaderObj.miliSecond = milisecond
1145 self.basicHeaderObj.timeZone = self.dataOut.timeZone
1248 self.basicHeaderObj.timeZone = self.dataOut.timeZone
1146 self.basicHeaderObj.dstFlag = self.dataOut.dstFlag
1249 self.basicHeaderObj.dstFlag = self.dataOut.dstFlag
1147 self.basicHeaderObj.errorCount = self.dataOut.errorCount
1250 self.basicHeaderObj.errorCount = self.dataOut.errorCount
1148
1251
1149 def setFirstHeader(self):
1252 def setFirstHeader(self):
1150 """
1253 """
1151 Obtiene una copia del First Header
1254 Obtiene una copia del First Header
1152
1255
1153 Affected:
1256 Affected:
1154
1257
1155 self.basicHeaderObj
1258 self.basicHeaderObj
1156 self.systemHeaderObj
1259 self.systemHeaderObj
1157 self.radarControllerHeaderObj
1260 self.radarControllerHeaderObj
1158 self.processingHeaderObj self.
1261 self.processingHeaderObj self.
1159
1262
1160 Return:
1263 Return:
1161 None
1264 None
1162 """
1265 """
1163
1266
1164 raise ValueError, "No implemented"
1267 raise ValueError, "No implemented"
1165
1268
1166 def __writeFirstHeader(self):
1269 def __writeFirstHeader(self):
1167 """
1270 """
1168 Escribe el primer header del file es decir el Basic header y el Long header (SystemHeader, RadarControllerHeader, ProcessingHeader)
1271 Escribe el primer header del file es decir el Basic header y el Long header (SystemHeader, RadarControllerHeader, ProcessingHeader)
1169
1272
1170 Affected:
1273 Affected:
1171 __dataType
1274 __dataType
1172
1275
1173 Return:
1276 Return:
1174 None
1277 None
1175 """
1278 """
1176
1279
1177 # CALCULAR PARAMETROS
1280 # CALCULAR PARAMETROS
1178
1281
1179 sizeLongHeader = self.systemHeaderObj.size + self.radarControllerHeaderObj.size + self.processingHeaderObj.size
1282 sizeLongHeader = self.systemHeaderObj.size + self.radarControllerHeaderObj.size + self.processingHeaderObj.size
1180 self.basicHeaderObj.size = self.basicHeaderSize + sizeLongHeader
1283 self.basicHeaderObj.size = self.basicHeaderSize + sizeLongHeader
1181
1284
1182 self.basicHeaderObj.write(self.fp)
1285 self.basicHeaderObj.write(self.fp)
1183 self.systemHeaderObj.write(self.fp)
1286 self.systemHeaderObj.write(self.fp)
1184 self.radarControllerHeaderObj.write(self.fp)
1287 self.radarControllerHeaderObj.write(self.fp)
1185 self.processingHeaderObj.write(self.fp)
1288 self.processingHeaderObj.write(self.fp)
1186
1289
1187 self.dtype = self.dataOut.dtype
1290 self.dtype = self.dataOut.dtype
1188
1291
1189 def __setNewBlock(self):
1292 def __setNewBlock(self):
1190 """
1293 """
1191 Si es un nuevo file escribe el First Header caso contrario escribe solo el Basic Header
1294 Si es un nuevo file escribe el First Header caso contrario escribe solo el Basic Header
1192
1295
1193 Return:
1296 Return:
1194 0 : si no pudo escribir nada
1297 0 : si no pudo escribir nada
1195 1 : Si escribio el Basic el First Header
1298 1 : Si escribio el Basic el First Header
1196 """
1299 """
1197 if self.fp == None:
1300 if self.fp == None:
1198 self.setNextFile()
1301 self.setNextFile()
1199
1302
1200 if self.flagIsNewFile:
1303 if self.flagIsNewFile:
1201 return 1
1304 return 1
1202
1305
1203 if self.blockIndex < self.processingHeaderObj.dataBlocksPerFile:
1306 if self.blockIndex < self.processingHeaderObj.dataBlocksPerFile:
1204 self.basicHeaderObj.write(self.fp)
1307 self.basicHeaderObj.write(self.fp)
1205 return 1
1308 return 1
1206
1309
1207 if not( self.setNextFile() ):
1310 if not( self.setNextFile() ):
1208 return 0
1311 return 0
1209
1312
1210 return 1
1313 return 1
1211
1314
1212
1315
1213 def writeNextBlock(self):
1316 def writeNextBlock(self):
1214 """
1317 """
1215 Selecciona el bloque siguiente de datos y los escribe en un file
1318 Selecciona el bloque siguiente de datos y los escribe en un file
1216
1319
1217 Return:
1320 Return:
1218 0 : Si no hizo pudo escribir el bloque de datos
1321 0 : Si no hizo pudo escribir el bloque de datos
1219 1 : Si no pudo escribir el bloque de datos
1322 1 : Si no pudo escribir el bloque de datos
1220 """
1323 """
1221 if not( self.__setNewBlock() ):
1324 if not( self.__setNewBlock() ):
1222 return 0
1325 return 0
1223
1326
1224 self.writeBlock()
1327 self.writeBlock()
1225
1328
1226 return 1
1329 return 1
1227
1330
1228 def setNextFile(self):
1331 def setNextFile(self):
1229 """
1332 """
1230 Determina el siguiente file que sera escrito
1333 Determina el siguiente file que sera escrito
1231
1334
1232 Affected:
1335 Affected:
1233 self.filename
1336 self.filename
1234 self.subfolder
1337 self.subfolder
1235 self.fp
1338 self.fp
1236 self.setFile
1339 self.setFile
1237 self.flagIsNewFile
1340 self.flagIsNewFile
1238
1341
1239 Return:
1342 Return:
1240 0 : Si el archivo no puede ser escrito
1343 0 : Si el archivo no puede ser escrito
1241 1 : Si el archivo esta listo para ser escrito
1344 1 : Si el archivo esta listo para ser escrito
1242 """
1345 """
1243 ext = self.ext
1346 ext = self.ext
1244 path = self.path
1347 path = self.path
1245
1348
1246 if self.fp != None:
1349 if self.fp != None:
1247 self.fp.close()
1350 self.fp.close()
1248
1351
1249 timeTuple = time.localtime( self.dataOut.utctime)
1352 timeTuple = time.localtime( self.dataOut.utctime)
1250 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
1353 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
1251
1354
1252 fullpath = os.path.join( path, subfolder )
1355 fullpath = os.path.join( path, subfolder )
1253 if not( os.path.exists(fullpath) ):
1356 if not( os.path.exists(fullpath) ):
1254 os.mkdir(fullpath)
1357 os.mkdir(fullpath)
1255 self.setFile = -1 #inicializo mi contador de seteo
1358 self.setFile = -1 #inicializo mi contador de seteo
1256 else:
1359 else:
1257 filesList = os.listdir( fullpath )
1360 filesList = os.listdir( fullpath )
1258 if len( filesList ) > 0:
1361 if len( filesList ) > 0:
1259 filesList = sorted( filesList, key=str.lower )
1362 filesList = sorted( filesList, key=str.lower )
1260 filen = filesList[-1]
1363 filen = filesList[-1]
1261 # el filename debera tener el siguiente formato
1364 # el filename debera tener el siguiente formato
1262 # 0 1234 567 89A BCDE (hex)
1365 # 0 1234 567 89A BCDE (hex)
1263 # x YYYY DDD SSS .ext
1366 # x YYYY DDD SSS .ext
1264 if isNumber( filen[8:11] ):
1367 if isNumber( filen[8:11] ):
1265 self.setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
1368 self.setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
1266 else:
1369 else:
1267 self.setFile = -1
1370 self.setFile = -1
1268 else:
1371 else:
1269 self.setFile = -1 #inicializo mi contador de seteo
1372 self.setFile = -1 #inicializo mi contador de seteo
1270
1373
1271 setFile = self.setFile
1374 setFile = self.setFile
1272 setFile += 1
1375 setFile += 1
1273
1376
1274 filen = '%s%4.4d%3.3d%3.3d%s' % (self.optchar,
1377 filen = '%s%4.4d%3.3d%3.3d%s' % (self.optchar,
1275 timeTuple.tm_year,
1378 timeTuple.tm_year,
1276 timeTuple.tm_yday,
1379 timeTuple.tm_yday,
1277 setFile,
1380 setFile,
1278 ext )
1381 ext )
1279
1382
1280 filename = os.path.join( path, subfolder, filen )
1383 filename = os.path.join( path, subfolder, filen )
1281
1384
1282 fp = open( filename,'wb' )
1385 fp = open( filename,'wb' )
1283
1386
1284 self.blockIndex = 0
1387 self.blockIndex = 0
1285
1388
1286 #guardando atributos
1389 #guardando atributos
1287 self.filename = filename
1390 self.filename = filename
1288 self.subfolder = subfolder
1391 self.subfolder = subfolder
1289 self.fp = fp
1392 self.fp = fp
1290 self.setFile = setFile
1393 self.setFile = setFile
1291 self.flagIsNewFile = 1
1394 self.flagIsNewFile = 1
1292
1395
1293 self.setFirstHeader()
1396 self.setFirstHeader()
1294
1397
1295 print '[Writing] file: %s'%self.filename
1398 print '[Writing] file: %s'%self.filename
1296
1399
1297 self.__writeFirstHeader()
1400 self.__writeFirstHeader()
1298
1401
1299 return 1
1402 return 1
1300
1403
1301 def setup(self, dataOut, path, blocksPerFile, profilesPerBlock=64, set=0, ext=None):
1404 def setup(self, dataOut, path, blocksPerFile, profilesPerBlock=64, set=0, ext=None):
1302 """
1405 """
1303 Setea el tipo de formato en la cual sera guardada la data y escribe el First Header
1406 Setea el tipo de formato en la cual sera guardada la data y escribe el First Header
1304
1407
1305 Inputs:
1408 Inputs:
1306 path : el path destino en el cual se escribiran los files a crear
1409 path : el path destino en el cual se escribiran los files a crear
1307 format : formato en el cual sera salvado un file
1410 format : formato en el cual sera salvado un file
1308 set : el setebo del file
1411 set : el setebo del file
1309
1412
1310 Return:
1413 Return:
1311 0 : Si no realizo un buen seteo
1414 0 : Si no realizo un buen seteo
1312 1 : Si realizo un buen seteo
1415 1 : Si realizo un buen seteo
1313 """
1416 """
1314
1417
1315 if ext == None:
1418 if ext == None:
1316 ext = self.ext
1419 ext = self.ext
1317
1420
1318 ext = ext.lower()
1421 ext = ext.lower()
1319
1422
1320 self.ext = ext
1423 self.ext = ext
1321
1424
1322 self.path = path
1425 self.path = path
1323
1426
1324 self.setFile = set - 1
1427 self.setFile = set - 1
1325
1428
1326 self.blocksPerFile = blocksPerFile
1429 self.blocksPerFile = blocksPerFile
1327
1430
1328 self.profilesPerBlock = profilesPerBlock
1431 self.profilesPerBlock = profilesPerBlock
1329
1432
1330 self.dataOut = dataOut
1433 self.dataOut = dataOut
1331
1434
1332 if not(self.setNextFile()):
1435 if not(self.setNextFile()):
1333 print "[Writing] There isn't a next file"
1436 print "[Writing] There isn't a next file"
1334 return 0
1437 return 0
1335
1438
1336 self.setBlockDimension()
1439 self.setBlockDimension()
1337
1440
1338 return 1
1441 return 1
1339
1442
1340 def run(self, dataOut, **kwargs):
1443 def run(self, dataOut, **kwargs):
1341
1444
1342 if not(self.isConfig):
1445 if not(self.isConfig):
1343
1446
1344 self.setup(dataOut, **kwargs)
1447 self.setup(dataOut, **kwargs)
1345 self.isConfig = True
1448 self.isConfig = True
1346
1449
1347 self.putData()
1450 self.putData()
1348
1451
@@ -1,849 +1,849
1 '''
1 '''
2 Created on Jul 3, 2014
2 Created on Jul 3, 2014
3
3
4 @author: roj-idl71
4 @author: roj-idl71
5 '''
5 '''
6
6
7 import os, sys
7 import os, sys
8 import time, datetime
8 import time, datetime
9 import numpy
9 import numpy
10 import fnmatch
10 import fnmatch
11 import glob
11 import glob
12
12
13 try:
13 try:
14 from gevent import sleep
14 from gevent import sleep
15 except:
15 except:
16 from time import sleep
16 from time import sleep
17
17
18 try:
18 try:
19 import pyfits
19 import pyfits
20 except:
20 except:
21 """
21 """
22 """
22 """
23
23
24 from xml.etree.ElementTree import ElementTree
24 from xml.etree.ElementTree import ElementTree
25
25
26 from jroIO_base import isDoyFolder, isNumber
26 from jroIO_base import isRadarFolder, isNumber
27 from schainpy.model.proc.jroproc_base import Operation, ProcessingUnit
27 from schainpy.model.proc.jroproc_base import Operation, ProcessingUnit
28
28
29 class Fits:
29 class Fits:
30 name=None
30 name=None
31 format=None
31 format=None
32 array =None
32 array =None
33 data =None
33 data =None
34 thdulist=None
34 thdulist=None
35 prihdr=None
35 prihdr=None
36 hdu=None
36 hdu=None
37
37
38 def __init__(self):
38 def __init__(self):
39
39
40 pass
40 pass
41
41
42 def setColF(self,name,format,array):
42 def setColF(self,name,format,array):
43 self.name=name
43 self.name=name
44 self.format=format
44 self.format=format
45 self.array=array
45 self.array=array
46 a1=numpy.array([self.array],dtype=numpy.float32)
46 a1=numpy.array([self.array],dtype=numpy.float32)
47 self.col1 = pyfits.Column(name=self.name, format=self.format, array=a1)
47 self.col1 = pyfits.Column(name=self.name, format=self.format, array=a1)
48 return self.col1
48 return self.col1
49
49
50 # def setColP(self,name,format,data):
50 # def setColP(self,name,format,data):
51 # self.name=name
51 # self.name=name
52 # self.format=format
52 # self.format=format
53 # self.data=data
53 # self.data=data
54 # a2=numpy.array([self.data],dtype=numpy.float32)
54 # a2=numpy.array([self.data],dtype=numpy.float32)
55 # self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
55 # self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
56 # return self.col2
56 # return self.col2
57
57
58
58
59 def writeData(self,name,format,data):
59 def writeData(self,name,format,data):
60 self.name=name
60 self.name=name
61 self.format=format
61 self.format=format
62 self.data=data
62 self.data=data
63 a2=numpy.array([self.data],dtype=numpy.float32)
63 a2=numpy.array([self.data],dtype=numpy.float32)
64 self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
64 self.col2 = pyfits.Column(name=self.name, format=self.format, array=a2)
65 return self.col2
65 return self.col2
66
66
67 def cFImage(self,idblock,year,month,day,hour,minute,second):
67 def cFImage(self,idblock,year,month,day,hour,minute,second):
68 self.hdu= pyfits.PrimaryHDU(idblock)
68 self.hdu= pyfits.PrimaryHDU(idblock)
69 self.hdu.header.set("Year",year)
69 self.hdu.header.set("Year",year)
70 self.hdu.header.set("Month",month)
70 self.hdu.header.set("Month",month)
71 self.hdu.header.set("Day",day)
71 self.hdu.header.set("Day",day)
72 self.hdu.header.set("Hour",hour)
72 self.hdu.header.set("Hour",hour)
73 self.hdu.header.set("Minute",minute)
73 self.hdu.header.set("Minute",minute)
74 self.hdu.header.set("Second",second)
74 self.hdu.header.set("Second",second)
75 return self.hdu
75 return self.hdu
76
76
77
77
78 def Ctable(self,colList):
78 def Ctable(self,colList):
79 self.cols=pyfits.ColDefs(colList)
79 self.cols=pyfits.ColDefs(colList)
80 self.tbhdu = pyfits.new_table(self.cols)
80 self.tbhdu = pyfits.new_table(self.cols)
81 return self.tbhdu
81 return self.tbhdu
82
82
83
83
84 def CFile(self,hdu,tbhdu):
84 def CFile(self,hdu,tbhdu):
85 self.thdulist=pyfits.HDUList([hdu,tbhdu])
85 self.thdulist=pyfits.HDUList([hdu,tbhdu])
86
86
87 def wFile(self,filename):
87 def wFile(self,filename):
88 if os.path.isfile(filename):
88 if os.path.isfile(filename):
89 os.remove(filename)
89 os.remove(filename)
90 self.thdulist.writeto(filename)
90 self.thdulist.writeto(filename)
91
91
92
92
93 class ParameterConf:
93 class ParameterConf:
94 ELEMENTNAME = 'Parameter'
94 ELEMENTNAME = 'Parameter'
95 def __init__(self):
95 def __init__(self):
96 self.name = ''
96 self.name = ''
97 self.value = ''
97 self.value = ''
98
98
99 def readXml(self, parmElement):
99 def readXml(self, parmElement):
100 self.name = parmElement.get('name')
100 self.name = parmElement.get('name')
101 self.value = parmElement.get('value')
101 self.value = parmElement.get('value')
102
102
103 def getElementName(self):
103 def getElementName(self):
104 return self.ELEMENTNAME
104 return self.ELEMENTNAME
105
105
106 class Metadata:
106 class Metadata:
107
107
108 def __init__(self, filename):
108 def __init__(self, filename):
109 self.parmConfObjList = []
109 self.parmConfObjList = []
110 self.readXml(filename)
110 self.readXml(filename)
111
111
112 def readXml(self, filename):
112 def readXml(self, filename):
113 self.projectElement = None
113 self.projectElement = None
114 self.procUnitConfObjDict = {}
114 self.procUnitConfObjDict = {}
115 self.projectElement = ElementTree().parse(filename)
115 self.projectElement = ElementTree().parse(filename)
116 self.project = self.projectElement.tag
116 self.project = self.projectElement.tag
117
117
118 parmElementList = self.projectElement.getiterator(ParameterConf().getElementName())
118 parmElementList = self.projectElement.getiterator(ParameterConf().getElementName())
119
119
120 for parmElement in parmElementList:
120 for parmElement in parmElementList:
121 parmConfObj = ParameterConf()
121 parmConfObj = ParameterConf()
122 parmConfObj.readXml(parmElement)
122 parmConfObj.readXml(parmElement)
123 self.parmConfObjList.append(parmConfObj)
123 self.parmConfObjList.append(parmConfObj)
124
124
125 class FitsWriter(Operation):
125 class FitsWriter(Operation):
126
126
127 def __init__(self):
127 def __init__(self):
128 self.isConfig = False
128 self.isConfig = False
129 self.dataBlocksPerFile = None
129 self.dataBlocksPerFile = None
130 self.blockIndex = 0
130 self.blockIndex = 0
131 self.flagIsNewFile = 1
131 self.flagIsNewFile = 1
132 self.fitsObj = None
132 self.fitsObj = None
133 self.optchar = 'P'
133 self.optchar = 'P'
134 self.ext = '.fits'
134 self.ext = '.fits'
135 self.setFile = 0
135 self.setFile = 0
136
136
137 def setFitsHeader(self, dataOut, metadatafile):
137 def setFitsHeader(self, dataOut, metadatafile):
138
138
139 header_data = pyfits.PrimaryHDU()
139 header_data = pyfits.PrimaryHDU()
140
140
141 metadata4fits = Metadata(metadatafile)
141 metadata4fits = Metadata(metadatafile)
142 for parameter in metadata4fits.parmConfObjList:
142 for parameter in metadata4fits.parmConfObjList:
143 parm_name = parameter.name
143 parm_name = parameter.name
144 parm_value = parameter.value
144 parm_value = parameter.value
145
145
146 # if parm_value == 'fromdatadatetime':
146 # if parm_value == 'fromdatadatetime':
147 # value = time.strftime("%b %d %Y %H:%M:%S", dataOut.datatime.timetuple())
147 # value = time.strftime("%b %d %Y %H:%M:%S", dataOut.datatime.timetuple())
148 # elif parm_value == 'fromdataheights':
148 # elif parm_value == 'fromdataheights':
149 # value = dataOut.nHeights
149 # value = dataOut.nHeights
150 # elif parm_value == 'fromdatachannel':
150 # elif parm_value == 'fromdatachannel':
151 # value = dataOut.nChannels
151 # value = dataOut.nChannels
152 # elif parm_value == 'fromdatasamples':
152 # elif parm_value == 'fromdatasamples':
153 # value = dataOut.nFFTPoints
153 # value = dataOut.nFFTPoints
154 # else:
154 # else:
155 # value = parm_value
155 # value = parm_value
156
156
157 header_data.header[parm_name] = parm_value
157 header_data.header[parm_name] = parm_value
158
158
159
159
160 header_data.header['DATETIME'] = time.strftime("%b %d %Y %H:%M:%S", dataOut.datatime.timetuple())
160 header_data.header['DATETIME'] = time.strftime("%b %d %Y %H:%M:%S", dataOut.datatime.timetuple())
161 header_data.header['CHANNELLIST'] = str(dataOut.channelList)
161 header_data.header['CHANNELLIST'] = str(dataOut.channelList)
162 header_data.header['NCHANNELS'] = dataOut.nChannels
162 header_data.header['NCHANNELS'] = dataOut.nChannels
163 #header_data.header['HEIGHTS'] = dataOut.heightList
163 #header_data.header['HEIGHTS'] = dataOut.heightList
164 header_data.header['NHEIGHTS'] = dataOut.nHeights
164 header_data.header['NHEIGHTS'] = dataOut.nHeights
165
165
166 header_data.header['IPPSECONDS'] = dataOut.ippSeconds
166 header_data.header['IPPSECONDS'] = dataOut.ippSeconds
167 header_data.header['NCOHINT'] = dataOut.nCohInt
167 header_data.header['NCOHINT'] = dataOut.nCohInt
168 header_data.header['NINCOHINT'] = dataOut.nIncohInt
168 header_data.header['NINCOHINT'] = dataOut.nIncohInt
169 header_data.header['TIMEZONE'] = dataOut.timeZone
169 header_data.header['TIMEZONE'] = dataOut.timeZone
170 header_data.header['NBLOCK'] = self.blockIndex
170 header_data.header['NBLOCK'] = self.blockIndex
171
171
172 header_data.writeto(self.filename)
172 header_data.writeto(self.filename)
173
173
174 self.addExtension(dataOut.heightList,'HEIGHTLIST')
174 self.addExtension(dataOut.heightList,'HEIGHTLIST')
175
175
176
176
177 def setup(self, dataOut, path, dataBlocksPerFile, metadatafile):
177 def setup(self, dataOut, path, dataBlocksPerFile, metadatafile):
178
178
179 self.path = path
179 self.path = path
180 self.dataOut = dataOut
180 self.dataOut = dataOut
181 self.metadatafile = metadatafile
181 self.metadatafile = metadatafile
182 self.dataBlocksPerFile = dataBlocksPerFile
182 self.dataBlocksPerFile = dataBlocksPerFile
183
183
184 def open(self):
184 def open(self):
185 self.fitsObj = pyfits.open(self.filename, mode='update')
185 self.fitsObj = pyfits.open(self.filename, mode='update')
186
186
187
187
188 def addExtension(self, data, tagname):
188 def addExtension(self, data, tagname):
189 self.open()
189 self.open()
190 extension = pyfits.ImageHDU(data=data, name=tagname)
190 extension = pyfits.ImageHDU(data=data, name=tagname)
191 #extension.header['TAG'] = tagname
191 #extension.header['TAG'] = tagname
192 self.fitsObj.append(extension)
192 self.fitsObj.append(extension)
193 self.write()
193 self.write()
194
194
195 def addData(self, data):
195 def addData(self, data):
196 self.open()
196 self.open()
197 extension = pyfits.ImageHDU(data=data, name=self.fitsObj[0].header['DATATYPE'])
197 extension = pyfits.ImageHDU(data=data, name=self.fitsObj[0].header['DATATYPE'])
198 extension.header['UTCTIME'] = self.dataOut.utctime
198 extension.header['UTCTIME'] = self.dataOut.utctime
199 self.fitsObj.append(extension)
199 self.fitsObj.append(extension)
200 self.blockIndex += 1
200 self.blockIndex += 1
201 self.fitsObj[0].header['NBLOCK'] = self.blockIndex
201 self.fitsObj[0].header['NBLOCK'] = self.blockIndex
202
202
203 self.write()
203 self.write()
204
204
205 def write(self):
205 def write(self):
206
206
207 self.fitsObj.flush(verbose=True)
207 self.fitsObj.flush(verbose=True)
208 self.fitsObj.close()
208 self.fitsObj.close()
209
209
210
210
211 def setNextFile(self):
211 def setNextFile(self):
212
212
213 ext = self.ext
213 ext = self.ext
214 path = self.path
214 path = self.path
215
215
216 timeTuple = time.localtime( self.dataOut.utctime)
216 timeTuple = time.localtime( self.dataOut.utctime)
217 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
217 subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday)
218
218
219 fullpath = os.path.join( path, subfolder )
219 fullpath = os.path.join( path, subfolder )
220 if not( os.path.exists(fullpath) ):
220 if not( os.path.exists(fullpath) ):
221 os.mkdir(fullpath)
221 os.mkdir(fullpath)
222 self.setFile = -1 #inicializo mi contador de seteo
222 self.setFile = -1 #inicializo mi contador de seteo
223 else:
223 else:
224 filesList = os.listdir( fullpath )
224 filesList = os.listdir( fullpath )
225 if len( filesList ) > 0:
225 if len( filesList ) > 0:
226 filesList = sorted( filesList, key=str.lower )
226 filesList = sorted( filesList, key=str.lower )
227 filen = filesList[-1]
227 filen = filesList[-1]
228
228
229 if isNumber( filen[8:11] ):
229 if isNumber( filen[8:11] ):
230 self.setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
230 self.setFile = int( filen[8:11] ) #inicializo mi contador de seteo al seteo del ultimo file
231 else:
231 else:
232 self.setFile = -1
232 self.setFile = -1
233 else:
233 else:
234 self.setFile = -1 #inicializo mi contador de seteo
234 self.setFile = -1 #inicializo mi contador de seteo
235
235
236 setFile = self.setFile
236 setFile = self.setFile
237 setFile += 1
237 setFile += 1
238
238
239 thisFile = '%s%4.4d%3.3d%3.3d%s' % (self.optchar,
239 thisFile = '%s%4.4d%3.3d%3.3d%s' % (self.optchar,
240 timeTuple.tm_year,
240 timeTuple.tm_year,
241 timeTuple.tm_yday,
241 timeTuple.tm_yday,
242 setFile,
242 setFile,
243 ext )
243 ext )
244
244
245 filename = os.path.join( path, subfolder, thisFile )
245 filename = os.path.join( path, subfolder, thisFile )
246
246
247 self.blockIndex = 0
247 self.blockIndex = 0
248 self.filename = filename
248 self.filename = filename
249 self.setFile = setFile
249 self.setFile = setFile
250 self.flagIsNewFile = 1
250 self.flagIsNewFile = 1
251
251
252 print 'Writing the file: %s'%self.filename
252 print 'Writing the file: %s'%self.filename
253
253
254 self.setFitsHeader(self.dataOut, self.metadatafile)
254 self.setFitsHeader(self.dataOut, self.metadatafile)
255
255
256 return 1
256 return 1
257
257
258 def writeBlock(self):
258 def writeBlock(self):
259 self.addData(self.dataOut.data_spc)
259 self.addData(self.dataOut.data_spc)
260 self.flagIsNewFile = 0
260 self.flagIsNewFile = 0
261
261
262
262
263 def __setNewBlock(self):
263 def __setNewBlock(self):
264
264
265 if self.flagIsNewFile:
265 if self.flagIsNewFile:
266 return 1
266 return 1
267
267
268 if self.blockIndex < self.dataBlocksPerFile:
268 if self.blockIndex < self.dataBlocksPerFile:
269 return 1
269 return 1
270
270
271 if not( self.setNextFile() ):
271 if not( self.setNextFile() ):
272 return 0
272 return 0
273
273
274 return 1
274 return 1
275
275
276 def writeNextBlock(self):
276 def writeNextBlock(self):
277 if not( self.__setNewBlock() ):
277 if not( self.__setNewBlock() ):
278 return 0
278 return 0
279 self.writeBlock()
279 self.writeBlock()
280 return 1
280 return 1
281
281
282 def putData(self):
282 def putData(self):
283 if self.flagIsNewFile:
283 if self.flagIsNewFile:
284 self.setNextFile()
284 self.setNextFile()
285 self.writeNextBlock()
285 self.writeNextBlock()
286
286
287 def run(self, dataOut, **kwargs):
287 def run(self, dataOut, **kwargs):
288 if not(self.isConfig):
288 if not(self.isConfig):
289 self.setup(dataOut, **kwargs)
289 self.setup(dataOut, **kwargs)
290 self.isConfig = True
290 self.isConfig = True
291 self.putData()
291 self.putData()
292
292
293
293
294 class FitsReader(ProcessingUnit):
294 class FitsReader(ProcessingUnit):
295
295
296 # __TIMEZONE = time.timezone
296 # __TIMEZONE = time.timezone
297
297
298 expName = None
298 expName = None
299 datetimestr = None
299 datetimestr = None
300 utc = None
300 utc = None
301 nChannels = None
301 nChannels = None
302 nSamples = None
302 nSamples = None
303 dataBlocksPerFile = None
303 dataBlocksPerFile = None
304 comments = None
304 comments = None
305 lastUTTime = None
305 lastUTTime = None
306 header_dict = None
306 header_dict = None
307 data = None
307 data = None
308 data_header_dict = None
308 data_header_dict = None
309
309
310 def __init__(self):
310 def __init__(self):
311 self.isConfig = False
311 self.isConfig = False
312 self.ext = '.fits'
312 self.ext = '.fits'
313 self.setFile = 0
313 self.setFile = 0
314 self.flagNoMoreFiles = 0
314 self.flagNoMoreFiles = 0
315 self.flagIsNewFile = 1
315 self.flagIsNewFile = 1
316 self.flagDiscontinuousBlock = None
316 self.flagDiscontinuousBlock = None
317 self.fileIndex = None
317 self.fileIndex = None
318 self.filename = None
318 self.filename = None
319 self.fileSize = None
319 self.fileSize = None
320 self.fitsObj = None
320 self.fitsObj = None
321 self.timeZone = None
321 self.timeZone = None
322 self.nReadBlocks = 0
322 self.nReadBlocks = 0
323 self.nTotalBlocks = 0
323 self.nTotalBlocks = 0
324 self.dataOut = self.createObjByDefault()
324 self.dataOut = self.createObjByDefault()
325 self.maxTimeStep = 10# deberia ser definido por el usuario usando el metodo setup()
325 self.maxTimeStep = 10# deberia ser definido por el usuario usando el metodo setup()
326 self.blockIndex = 1
326 self.blockIndex = 1
327
327
328 def createObjByDefault(self):
328 def createObjByDefault(self):
329
329
330 dataObj = Fits()
330 dataObj = Fits()
331
331
332 return dataObj
332 return dataObj
333
333
334 def isFileinThisTime(self, filename, startTime, endTime, useLocalTime=False):
334 def isFileinThisTime(self, filename, startTime, endTime, useLocalTime=False):
335 try:
335 try:
336 fitsObj = pyfits.open(filename,'readonly')
336 fitsObj = pyfits.open(filename,'readonly')
337 except:
337 except:
338 raise IOError, "The file %s can't be opened" %(filename)
338 raise IOError, "The file %s can't be opened" %(filename)
339
339
340 header = fitsObj[0].header
340 header = fitsObj[0].header
341 struct_time = time.strptime(header['DATETIME'], "%b %d %Y %H:%M:%S")
341 struct_time = time.strptime(header['DATETIME'], "%b %d %Y %H:%M:%S")
342 utc = time.mktime(struct_time) - time.timezone #TIMEZONE debe ser un parametro del header FITS
342 utc = time.mktime(struct_time) - time.timezone #TIMEZONE debe ser un parametro del header FITS
343
343
344 ltc = utc
344 ltc = utc
345 if useLocalTime:
345 if useLocalTime:
346 ltc -= time.timezone
346 ltc -= time.timezone
347 thisDatetime = datetime.datetime.utcfromtimestamp(ltc)
347 thisDatetime = datetime.datetime.utcfromtimestamp(ltc)
348 thisTime = thisDatetime.time()
348 thisTime = thisDatetime.time()
349
349
350 if not ((startTime <= thisTime) and (endTime > thisTime)):
350 if not ((startTime <= thisTime) and (endTime > thisTime)):
351 return None
351 return None
352
352
353 return thisDatetime
353 return thisDatetime
354
354
355 def __setNextFileOnline(self):
355 def __setNextFileOnline(self):
356 raise ValueError, "No implemented"
356 raise ValueError, "No implemented"
357
357
358 def __setNextFileOffline(self):
358 def __setNextFileOffline(self):
359 idFile = self.fileIndex
359 idFile = self.fileIndex
360
360
361 while (True):
361 while (True):
362 idFile += 1
362 idFile += 1
363 if not(idFile < len(self.filenameList)):
363 if not(idFile < len(self.filenameList)):
364 self.flagNoMoreFiles = 1
364 self.flagNoMoreFiles = 1
365 print "No more Files"
365 print "No more Files"
366 return 0
366 return 0
367
367
368 filename = self.filenameList[idFile]
368 filename = self.filenameList[idFile]
369
369
370 # if not(self.__verifyFile(filename)):
370 # if not(self.__verifyFile(filename)):
371 # continue
371 # continue
372
372
373 fileSize = os.path.getsize(filename)
373 fileSize = os.path.getsize(filename)
374 fitsObj = pyfits.open(filename,'readonly')
374 fitsObj = pyfits.open(filename,'readonly')
375 break
375 break
376
376
377 self.flagIsNewFile = 1
377 self.flagIsNewFile = 1
378 self.fileIndex = idFile
378 self.fileIndex = idFile
379 self.filename = filename
379 self.filename = filename
380 self.fileSize = fileSize
380 self.fileSize = fileSize
381 self.fitsObj = fitsObj
381 self.fitsObj = fitsObj
382 self.blockIndex = 0
382 self.blockIndex = 0
383 print "Setting the file: %s"%self.filename
383 print "Setting the file: %s"%self.filename
384
384
385 return 1
385 return 1
386
386
387 def __setValuesFromHeader(self):
387 def __setValuesFromHeader(self):
388
388
389 self.dataOut.header = self.header_dict
389 self.dataOut.header = self.header_dict
390 self.dataOut.expName = self.expName
390 self.dataOut.expName = self.expName
391 self.dataOut.nChannels = self.nChannels
391 self.dataOut.nChannels = self.nChannels
392 self.dataOut.timeZone = self.timeZone
392 self.dataOut.timeZone = self.timeZone
393 self.dataOut.dataBlocksPerFile = self.dataBlocksPerFile
393 self.dataOut.dataBlocksPerFile = self.dataBlocksPerFile
394 self.dataOut.comments = self.comments
394 self.dataOut.comments = self.comments
395 # self.dataOut.timeInterval = self.timeInterval
395 # self.dataOut.timeInterval = self.timeInterval
396 self.dataOut.channelList = self.channelList
396 self.dataOut.channelList = self.channelList
397 self.dataOut.heightList = self.heightList
397 self.dataOut.heightList = self.heightList
398
398
399 self.dataOut.nCohInt = self.nCohInt
399 self.dataOut.nCohInt = self.nCohInt
400 self.dataOut.nIncohInt = self.nIncohInt
400 self.dataOut.nIncohInt = self.nIncohInt
401
401
402 def readHeader(self):
402 def readHeader(self):
403 headerObj = self.fitsObj[0]
403 headerObj = self.fitsObj[0]
404
404
405 self.header_dict = headerObj.header
405 self.header_dict = headerObj.header
406 if 'EXPNAME' in headerObj.header.keys():
406 if 'EXPNAME' in headerObj.header.keys():
407 self.expName = headerObj.header['EXPNAME']
407 self.expName = headerObj.header['EXPNAME']
408
408
409 if 'DATATYPE' in headerObj.header.keys():
409 if 'DATATYPE' in headerObj.header.keys():
410 self.dataType = headerObj.header['DATATYPE']
410 self.dataType = headerObj.header['DATATYPE']
411
411
412 self.datetimestr = headerObj.header['DATETIME']
412 self.datetimestr = headerObj.header['DATETIME']
413 channelList = headerObj.header['CHANNELLIST']
413 channelList = headerObj.header['CHANNELLIST']
414 channelList = channelList.split('[')
414 channelList = channelList.split('[')
415 channelList = channelList[1].split(']')
415 channelList = channelList[1].split(']')
416 channelList = channelList[0].split(',')
416 channelList = channelList[0].split(',')
417 channelList = [int(ch) for ch in channelList]
417 channelList = [int(ch) for ch in channelList]
418 self.channelList = channelList
418 self.channelList = channelList
419 self.nChannels = headerObj.header['NCHANNELS']
419 self.nChannels = headerObj.header['NCHANNELS']
420 self.nHeights = headerObj.header['NHEIGHTS']
420 self.nHeights = headerObj.header['NHEIGHTS']
421 self.ippSeconds = headerObj.header['IPPSECONDS']
421 self.ippSeconds = headerObj.header['IPPSECONDS']
422 self.nCohInt = headerObj.header['NCOHINT']
422 self.nCohInt = headerObj.header['NCOHINT']
423 self.nIncohInt = headerObj.header['NINCOHINT']
423 self.nIncohInt = headerObj.header['NINCOHINT']
424 self.dataBlocksPerFile = headerObj.header['NBLOCK']
424 self.dataBlocksPerFile = headerObj.header['NBLOCK']
425 self.timeZone = headerObj.header['TIMEZONE']
425 self.timeZone = headerObj.header['TIMEZONE']
426
426
427 # self.timeInterval = self.ippSeconds * self.nCohInt * self.nIncohInt
427 # self.timeInterval = self.ippSeconds * self.nCohInt * self.nIncohInt
428
428
429 if 'COMMENT' in headerObj.header.keys():
429 if 'COMMENT' in headerObj.header.keys():
430 self.comments = headerObj.header['COMMENT']
430 self.comments = headerObj.header['COMMENT']
431
431
432 self.readHeightList()
432 self.readHeightList()
433
433
434 def readHeightList(self):
434 def readHeightList(self):
435 self.blockIndex = self.blockIndex + 1
435 self.blockIndex = self.blockIndex + 1
436 obj = self.fitsObj[self.blockIndex]
436 obj = self.fitsObj[self.blockIndex]
437 self.heightList = obj.data
437 self.heightList = obj.data
438 self.blockIndex = self.blockIndex + 1
438 self.blockIndex = self.blockIndex + 1
439
439
440 def readExtension(self):
440 def readExtension(self):
441 obj = self.fitsObj[self.blockIndex]
441 obj = self.fitsObj[self.blockIndex]
442 self.heightList = obj.data
442 self.heightList = obj.data
443 self.blockIndex = self.blockIndex + 1
443 self.blockIndex = self.blockIndex + 1
444
444
445 def setNextFile(self):
445 def setNextFile(self):
446
446
447 if self.online:
447 if self.online:
448 newFile = self.__setNextFileOnline()
448 newFile = self.__setNextFileOnline()
449 else:
449 else:
450 newFile = self.__setNextFileOffline()
450 newFile = self.__setNextFileOffline()
451
451
452 if not(newFile):
452 if not(newFile):
453 return 0
453 return 0
454
454
455 self.readHeader()
455 self.readHeader()
456 self.__setValuesFromHeader()
456 self.__setValuesFromHeader()
457 self.nReadBlocks = 0
457 self.nReadBlocks = 0
458 # self.blockIndex = 1
458 # self.blockIndex = 1
459 return 1
459 return 1
460
460
461 def __searchFilesOffLine(self,
461 def __searchFilesOffLine(self,
462 path,
462 path,
463 startDate,
463 startDate,
464 endDate,
464 endDate,
465 startTime=datetime.time(0,0,0),
465 startTime=datetime.time(0,0,0),
466 endTime=datetime.time(23,59,59),
466 endTime=datetime.time(23,59,59),
467 set=None,
467 set=None,
468 expLabel='',
468 expLabel='',
469 ext='.fits',
469 ext='.fits',
470 walk=True):
470 walk=True):
471
471
472 pathList = []
472 pathList = []
473
473
474 if not walk:
474 if not walk:
475 pathList.append(path)
475 pathList.append(path)
476
476
477 else:
477 else:
478 dirList = []
478 dirList = []
479 for thisPath in os.listdir(path):
479 for thisPath in os.listdir(path):
480 if not os.path.isdir(os.path.join(path,thisPath)):
480 if not os.path.isdir(os.path.join(path,thisPath)):
481 continue
481 continue
482 if not isDoyFolder(thisPath):
482 if not isRadarFolder(thisPath):
483 continue
483 continue
484
484
485 dirList.append(thisPath)
485 dirList.append(thisPath)
486
486
487 if not(dirList):
487 if not(dirList):
488 return None, None
488 return None, None
489
489
490 thisDate = startDate
490 thisDate = startDate
491
491
492 while(thisDate <= endDate):
492 while(thisDate <= endDate):
493 year = thisDate.timetuple().tm_year
493 year = thisDate.timetuple().tm_year
494 doy = thisDate.timetuple().tm_yday
494 doy = thisDate.timetuple().tm_yday
495
495
496 matchlist = fnmatch.filter(dirList, '?' + '%4.4d%3.3d' % (year,doy) + '*')
496 matchlist = fnmatch.filter(dirList, '?' + '%4.4d%3.3d' % (year,doy) + '*')
497 if len(matchlist) == 0:
497 if len(matchlist) == 0:
498 thisDate += datetime.timedelta(1)
498 thisDate += datetime.timedelta(1)
499 continue
499 continue
500 for match in matchlist:
500 for match in matchlist:
501 pathList.append(os.path.join(path,match,expLabel))
501 pathList.append(os.path.join(path,match,expLabel))
502
502
503 thisDate += datetime.timedelta(1)
503 thisDate += datetime.timedelta(1)
504
504
505 if pathList == []:
505 if pathList == []:
506 print "Any folder was found for the date range: %s-%s" %(startDate, endDate)
506 print "Any folder was found for the date range: %s-%s" %(startDate, endDate)
507 return None, None
507 return None, None
508
508
509 print "%d folder(s) was(were) found for the date range: %s - %s" %(len(pathList), startDate, endDate)
509 print "%d folder(s) was(were) found for the date range: %s - %s" %(len(pathList), startDate, endDate)
510
510
511 filenameList = []
511 filenameList = []
512 datetimeList = []
512 datetimeList = []
513
513
514 for i in range(len(pathList)):
514 for i in range(len(pathList)):
515
515
516 thisPath = pathList[i]
516 thisPath = pathList[i]
517
517
518 fileList = glob.glob1(thisPath, "*%s" %ext)
518 fileList = glob.glob1(thisPath, "*%s" %ext)
519 fileList.sort()
519 fileList.sort()
520
520
521 for thisFile in fileList:
521 for thisFile in fileList:
522
522
523 filename = os.path.join(thisPath,thisFile)
523 filename = os.path.join(thisPath,thisFile)
524 thisDatetime = self.isFileinThisTime(filename, startTime, endTime)
524 thisDatetime = self.isFileinThisTime(filename, startTime, endTime)
525
525
526 if not(thisDatetime):
526 if not(thisDatetime):
527 continue
527 continue
528
528
529 filenameList.append(filename)
529 filenameList.append(filename)
530 datetimeList.append(thisDatetime)
530 datetimeList.append(thisDatetime)
531
531
532 if not(filenameList):
532 if not(filenameList):
533 print "Any file was found for the time range %s - %s" %(startTime, endTime)
533 print "Any file was found for the time range %s - %s" %(startTime, endTime)
534 return None, None
534 return None, None
535
535
536 print "%d file(s) was(were) found for the time range: %s - %s" %(len(filenameList), startTime, endTime)
536 print "%d file(s) was(were) found for the time range: %s - %s" %(len(filenameList), startTime, endTime)
537 print
537 print
538
538
539 for i in range(len(filenameList)):
539 for i in range(len(filenameList)):
540 print "%s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
540 print "%s -> [%s]" %(filenameList[i], datetimeList[i].ctime())
541
541
542 self.filenameList = filenameList
542 self.filenameList = filenameList
543 self.datetimeList = datetimeList
543 self.datetimeList = datetimeList
544
544
545 return pathList, filenameList
545 return pathList, filenameList
546
546
547 def setup(self, path=None,
547 def setup(self, path=None,
548 startDate=None,
548 startDate=None,
549 endDate=None,
549 endDate=None,
550 startTime=datetime.time(0,0,0),
550 startTime=datetime.time(0,0,0),
551 endTime=datetime.time(23,59,59),
551 endTime=datetime.time(23,59,59),
552 set=0,
552 set=0,
553 expLabel = "",
553 expLabel = "",
554 ext = None,
554 ext = None,
555 online = False,
555 online = False,
556 delay = 60,
556 delay = 60,
557 walk = True):
557 walk = True):
558
558
559 if path == None:
559 if path == None:
560 raise ValueError, "The path is not valid"
560 raise ValueError, "The path is not valid"
561
561
562 if ext == None:
562 if ext == None:
563 ext = self.ext
563 ext = self.ext
564
564
565 if not(online):
565 if not(online):
566 print "Searching files in offline mode ..."
566 print "Searching files in offline mode ..."
567 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
567 pathList, filenameList = self.__searchFilesOffLine(path, startDate=startDate, endDate=endDate,
568 startTime=startTime, endTime=endTime,
568 startTime=startTime, endTime=endTime,
569 set=set, expLabel=expLabel, ext=ext,
569 set=set, expLabel=expLabel, ext=ext,
570 walk=walk)
570 walk=walk)
571
571
572 if not(pathList):
572 if not(pathList):
573 print "No *%s files into the folder %s \nfor the range: %s - %s"%(ext, path,
573 print "No *%s files into the folder %s \nfor the range: %s - %s"%(ext, path,
574 datetime.datetime.combine(startDate,startTime).ctime(),
574 datetime.datetime.combine(startDate,startTime).ctime(),
575 datetime.datetime.combine(endDate,endTime).ctime())
575 datetime.datetime.combine(endDate,endTime).ctime())
576
576
577 sys.exit(-1)
577 sys.exit(-1)
578
578
579 self.fileIndex = -1
579 self.fileIndex = -1
580 self.pathList = pathList
580 self.pathList = pathList
581 self.filenameList = filenameList
581 self.filenameList = filenameList
582
582
583 self.online = online
583 self.online = online
584 self.delay = delay
584 self.delay = delay
585 ext = ext.lower()
585 ext = ext.lower()
586 self.ext = ext
586 self.ext = ext
587
587
588 if not(self.setNextFile()):
588 if not(self.setNextFile()):
589 if (startDate!=None) and (endDate!=None):
589 if (startDate!=None) and (endDate!=None):
590 print "No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
590 print "No files in range: %s - %s" %(datetime.datetime.combine(startDate,startTime).ctime(), datetime.datetime.combine(endDate,endTime).ctime())
591 elif startDate != None:
591 elif startDate != None:
592 print "No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
592 print "No files in range: %s" %(datetime.datetime.combine(startDate,startTime).ctime())
593 else:
593 else:
594 print "No files"
594 print "No files"
595
595
596 sys.exit(-1)
596 sys.exit(-1)
597
597
598
598
599
599
600 def readBlock(self):
600 def readBlock(self):
601 dataObj = self.fitsObj[self.blockIndex]
601 dataObj = self.fitsObj[self.blockIndex]
602
602
603 self.data = dataObj.data
603 self.data = dataObj.data
604 self.data_header_dict = dataObj.header
604 self.data_header_dict = dataObj.header
605 self.utc = self.data_header_dict['UTCTIME']
605 self.utc = self.data_header_dict['UTCTIME']
606
606
607 self.flagIsNewFile = 0
607 self.flagIsNewFile = 0
608 self.blockIndex += 1
608 self.blockIndex += 1
609 self.nTotalBlocks += 1
609 self.nTotalBlocks += 1
610 self.nReadBlocks += 1
610 self.nReadBlocks += 1
611
611
612 return 1
612 return 1
613
613
614 def __jumpToLastBlock(self):
614 def __jumpToLastBlock(self):
615 raise ValueError, "No implemented"
615 raise ValueError, "No implemented"
616
616
617 def __waitNewBlock(self):
617 def __waitNewBlock(self):
618 """
618 """
619 Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
619 Return 1 si se encontro un nuevo bloque de datos, 0 de otra forma.
620
620
621 Si el modo de lectura es OffLine siempre retorn 0
621 Si el modo de lectura es OffLine siempre retorn 0
622 """
622 """
623 if not self.online:
623 if not self.online:
624 return 0
624 return 0
625
625
626 if (self.nReadBlocks >= self.dataBlocksPerFile):
626 if (self.nReadBlocks >= self.dataBlocksPerFile):
627 return 0
627 return 0
628
628
629 currentPointer = self.fp.tell()
629 currentPointer = self.fp.tell()
630
630
631 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
631 neededSize = self.processingHeaderObj.blockSize + self.basicHeaderSize
632
632
633 for nTries in range( self.nTries ):
633 for nTries in range( self.nTries ):
634
634
635 self.fp.close()
635 self.fp.close()
636 self.fp = open( self.filename, 'rb' )
636 self.fp = open( self.filename, 'rb' )
637 self.fp.seek( currentPointer )
637 self.fp.seek( currentPointer )
638
638
639 self.fileSize = os.path.getsize( self.filename )
639 self.fileSize = os.path.getsize( self.filename )
640 currentSize = self.fileSize - currentPointer
640 currentSize = self.fileSize - currentPointer
641
641
642 if ( currentSize >= neededSize ):
642 if ( currentSize >= neededSize ):
643 self.__rdBasicHeader()
643 self.__rdBasicHeader()
644 return 1
644 return 1
645
645
646 print "\tWaiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
646 print "\tWaiting %0.2f seconds for the next block, try %03d ..." % (self.delay, nTries+1)
647 sleep( self.delay )
647 sleep( self.delay )
648
648
649
649
650 return 0
650 return 0
651
651
652 def __setNewBlock(self):
652 def __setNewBlock(self):
653
653
654 if self.online:
654 if self.online:
655 self.__jumpToLastBlock()
655 self.__jumpToLastBlock()
656
656
657 if self.flagIsNewFile:
657 if self.flagIsNewFile:
658 return 1
658 return 1
659
659
660 self.lastUTTime = self.utc
660 self.lastUTTime = self.utc
661
661
662 if self.online:
662 if self.online:
663 if self.__waitNewBlock():
663 if self.__waitNewBlock():
664 return 1
664 return 1
665
665
666 if self.nReadBlocks < self.dataBlocksPerFile:
666 if self.nReadBlocks < self.dataBlocksPerFile:
667 return 1
667 return 1
668
668
669 if not(self.setNextFile()):
669 if not(self.setNextFile()):
670 return 0
670 return 0
671
671
672 deltaTime = self.utc - self.lastUTTime
672 deltaTime = self.utc - self.lastUTTime
673
673
674 self.flagDiscontinuousBlock = 0
674 self.flagDiscontinuousBlock = 0
675
675
676 if deltaTime > self.maxTimeStep:
676 if deltaTime > self.maxTimeStep:
677 self.flagDiscontinuousBlock = 1
677 self.flagDiscontinuousBlock = 1
678
678
679 return 1
679 return 1
680
680
681
681
682 def readNextBlock(self):
682 def readNextBlock(self):
683 if not(self.__setNewBlock()):
683 if not(self.__setNewBlock()):
684 return 0
684 return 0
685
685
686 if not(self.readBlock()):
686 if not(self.readBlock()):
687 return 0
687 return 0
688
688
689 return 1
689 return 1
690
690
691
691
692 def getData(self):
692 def getData(self):
693
693
694 if self.flagNoMoreFiles:
694 if self.flagNoMoreFiles:
695 self.dataOut.flagNoData = True
695 self.dataOut.flagNoData = True
696 print 'Process finished'
696 print 'Process finished'
697 return 0
697 return 0
698
698
699 self.flagDiscontinuousBlock = 0
699 self.flagDiscontinuousBlock = 0
700 self.flagIsNewBlock = 0
700 self.flagIsNewBlock = 0
701
701
702 if not(self.readNextBlock()):
702 if not(self.readNextBlock()):
703 return 0
703 return 0
704
704
705 if self.data == None:
705 if self.data == None:
706 self.dataOut.flagNoData = True
706 self.dataOut.flagNoData = True
707 return 0
707 return 0
708
708
709 self.dataOut.data = self.data
709 self.dataOut.data = self.data
710 self.dataOut.data_header = self.data_header_dict
710 self.dataOut.data_header = self.data_header_dict
711 self.dataOut.utctime = self.utc
711 self.dataOut.utctime = self.utc
712
712
713 # self.dataOut.header = self.header_dict
713 # self.dataOut.header = self.header_dict
714 # self.dataOut.expName = self.expName
714 # self.dataOut.expName = self.expName
715 # self.dataOut.nChannels = self.nChannels
715 # self.dataOut.nChannels = self.nChannels
716 # self.dataOut.timeZone = self.timeZone
716 # self.dataOut.timeZone = self.timeZone
717 # self.dataOut.dataBlocksPerFile = self.dataBlocksPerFile
717 # self.dataOut.dataBlocksPerFile = self.dataBlocksPerFile
718 # self.dataOut.comments = self.comments
718 # self.dataOut.comments = self.comments
719 # # self.dataOut.timeInterval = self.timeInterval
719 # # self.dataOut.timeInterval = self.timeInterval
720 # self.dataOut.channelList = self.channelList
720 # self.dataOut.channelList = self.channelList
721 # self.dataOut.heightList = self.heightList
721 # self.dataOut.heightList = self.heightList
722 self.dataOut.flagNoData = False
722 self.dataOut.flagNoData = False
723
723
724 return self.dataOut.data
724 return self.dataOut.data
725
725
726 def run(self, **kwargs):
726 def run(self, **kwargs):
727
727
728 if not(self.isConfig):
728 if not(self.isConfig):
729 self.setup(**kwargs)
729 self.setup(**kwargs)
730 self.isConfig = True
730 self.isConfig = True
731
731
732 self.getData()
732 self.getData()
733
733
734 class SpectraHeisWriter(Operation):
734 class SpectraHeisWriter(Operation):
735 # set = None
735 # set = None
736 setFile = None
736 setFile = None
737 idblock = None
737 idblock = None
738 doypath = None
738 doypath = None
739 subfolder = None
739 subfolder = None
740
740
741 def __init__(self):
741 def __init__(self):
742 self.wrObj = Fits()
742 self.wrObj = Fits()
743 # self.dataOut = dataOut
743 # self.dataOut = dataOut
744 self.nTotalBlocks=0
744 self.nTotalBlocks=0
745 # self.set = None
745 # self.set = None
746 self.setFile = None
746 self.setFile = None
747 self.idblock = 0
747 self.idblock = 0
748 self.wrpath = None
748 self.wrpath = None
749 self.doypath = None
749 self.doypath = None
750 self.subfolder = None
750 self.subfolder = None
751 self.isConfig = False
751 self.isConfig = False
752
752
753 def isNumber(str):
753 def isNumber(str):
754 """
754 """
755 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
755 Chequea si el conjunto de caracteres que componen un string puede ser convertidos a un numero.
756
756
757 Excepciones:
757 Excepciones:
758 Si un determinado string no puede ser convertido a numero
758 Si un determinado string no puede ser convertido a numero
759 Input:
759 Input:
760 str, string al cual se le analiza para determinar si convertible a un numero o no
760 str, string al cual se le analiza para determinar si convertible a un numero o no
761
761
762 Return:
762 Return:
763 True : si el string es uno numerico
763 True : si el string es uno numerico
764 False : no es un string numerico
764 False : no es un string numerico
765 """
765 """
766 try:
766 try:
767 float( str )
767 float( str )
768 return True
768 return True
769 except:
769 except:
770 return False
770 return False
771
771
772 def setup(self, dataOut, wrpath):
772 def setup(self, dataOut, wrpath):
773
773
774 if not(os.path.exists(wrpath)):
774 if not(os.path.exists(wrpath)):
775 os.mkdir(wrpath)
775 os.mkdir(wrpath)
776
776
777 self.wrpath = wrpath
777 self.wrpath = wrpath
778 # self.setFile = 0
778 # self.setFile = 0
779 self.dataOut = dataOut
779 self.dataOut = dataOut
780
780
781 def putData(self):
781 def putData(self):
782 name= time.localtime( self.dataOut.utctime)
782 name= time.localtime( self.dataOut.utctime)
783 ext=".fits"
783 ext=".fits"
784
784
785 if self.doypath == None:
785 if self.doypath == None:
786 self.subfolder = 'F%4.4d%3.3d_%d' % (name.tm_year,name.tm_yday,time.mktime(datetime.datetime.now().timetuple()))
786 self.subfolder = 'F%4.4d%3.3d_%d' % (name.tm_year,name.tm_yday,time.mktime(datetime.datetime.now().timetuple()))
787 self.doypath = os.path.join( self.wrpath, self.subfolder )
787 self.doypath = os.path.join( self.wrpath, self.subfolder )
788 os.mkdir(self.doypath)
788 os.mkdir(self.doypath)
789
789
790 if self.setFile == None:
790 if self.setFile == None:
791 # self.set = self.dataOut.set
791 # self.set = self.dataOut.set
792 self.setFile = 0
792 self.setFile = 0
793 # if self.set != self.dataOut.set:
793 # if self.set != self.dataOut.set:
794 ## self.set = self.dataOut.set
794 ## self.set = self.dataOut.set
795 # self.setFile = 0
795 # self.setFile = 0
796
796
797 #make the filename
797 #make the filename
798 thisFile = 'D%4.4d%3.3d_%3.3d%s' % (name.tm_year,name.tm_yday,self.setFile,ext)
798 thisFile = 'D%4.4d%3.3d_%3.3d%s' % (name.tm_year,name.tm_yday,self.setFile,ext)
799
799
800 filename = os.path.join(self.wrpath,self.subfolder, thisFile)
800 filename = os.path.join(self.wrpath,self.subfolder, thisFile)
801
801
802 idblock = numpy.array([self.idblock],dtype="int64")
802 idblock = numpy.array([self.idblock],dtype="int64")
803 header=self.wrObj.cFImage(idblock=idblock,
803 header=self.wrObj.cFImage(idblock=idblock,
804 year=time.gmtime(self.dataOut.utctime).tm_year,
804 year=time.gmtime(self.dataOut.utctime).tm_year,
805 month=time.gmtime(self.dataOut.utctime).tm_mon,
805 month=time.gmtime(self.dataOut.utctime).tm_mon,
806 day=time.gmtime(self.dataOut.utctime).tm_mday,
806 day=time.gmtime(self.dataOut.utctime).tm_mday,
807 hour=time.gmtime(self.dataOut.utctime).tm_hour,
807 hour=time.gmtime(self.dataOut.utctime).tm_hour,
808 minute=time.gmtime(self.dataOut.utctime).tm_min,
808 minute=time.gmtime(self.dataOut.utctime).tm_min,
809 second=time.gmtime(self.dataOut.utctime).tm_sec)
809 second=time.gmtime(self.dataOut.utctime).tm_sec)
810
810
811 c=3E8
811 c=3E8
812 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
812 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
813 freq=numpy.arange(-1*self.dataOut.nHeights/2.,self.dataOut.nHeights/2.)*(c/(2*deltaHeight*1000))
813 freq=numpy.arange(-1*self.dataOut.nHeights/2.,self.dataOut.nHeights/2.)*(c/(2*deltaHeight*1000))
814
814
815 colList = []
815 colList = []
816
816
817 colFreq=self.wrObj.setColF(name="freq", format=str(self.dataOut.nFFTPoints)+'E', array=freq)
817 colFreq=self.wrObj.setColF(name="freq", format=str(self.dataOut.nFFTPoints)+'E', array=freq)
818
818
819 colList.append(colFreq)
819 colList.append(colFreq)
820
820
821 nchannel=self.dataOut.nChannels
821 nchannel=self.dataOut.nChannels
822
822
823 for i in range(nchannel):
823 for i in range(nchannel):
824 col = self.wrObj.writeData(name="PCh"+str(i+1),
824 col = self.wrObj.writeData(name="PCh"+str(i+1),
825 format=str(self.dataOut.nFFTPoints)+'E',
825 format=str(self.dataOut.nFFTPoints)+'E',
826 data=10*numpy.log10(self.dataOut.data_spc[i,:]))
826 data=10*numpy.log10(self.dataOut.data_spc[i,:]))
827
827
828 colList.append(col)
828 colList.append(col)
829
829
830 data=self.wrObj.Ctable(colList=colList)
830 data=self.wrObj.Ctable(colList=colList)
831
831
832 self.wrObj.CFile(header,data)
832 self.wrObj.CFile(header,data)
833
833
834 self.wrObj.wFile(filename)
834 self.wrObj.wFile(filename)
835
835
836 #update the setFile
836 #update the setFile
837 self.setFile += 1
837 self.setFile += 1
838 self.idblock += 1
838 self.idblock += 1
839
839
840 return 1
840 return 1
841
841
842 def run(self, dataOut, **kwargs):
842 def run(self, dataOut, **kwargs):
843
843
844 if not(self.isConfig):
844 if not(self.isConfig):
845
845
846 self.setup(dataOut, **kwargs)
846 self.setup(dataOut, **kwargs)
847 self.isConfig = True
847 self.isConfig = True
848
848
849 self.putData() No newline at end of file
849 self.putData()
@@ -1,517 +1,577
1 '''
1 '''
2 Created on Jul 3, 2014
2 Created on Jul 3, 2014
3
3
4 @author: roj-idl71
4 @author: roj-idl71
5 '''
5 '''
6 import datetime
6 import datetime
7 import numpy
7 import numpy
8
8
9 try:
9 try:
10 from gevent import sleep
10 from gevent import sleep
11 except:
11 except:
12 from time import sleep
12 from time import sleep
13
13
14 from schainpy.model.data.jroheaderIO import RadarControllerHeader, SystemHeader
14 from schainpy.model.data.jroheaderIO import RadarControllerHeader, SystemHeader
15 from schainpy.model.data.jrodata import Voltage
15 from schainpy.model.data.jrodata import Voltage
16 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
16 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
17
17
18 try:
18 try:
19 import digital_rf_hdf5
19 import digital_rf_hdf5
20 except:
20 except:
21 print 'You should install "digital_rf_hdf5" module if you want to read USRP data'
21 print 'You should install "digital_rf_hdf5" module if you want to read USRP data'
22
22
23 class USRPReader(ProcessingUnit):
23 class USRPReader(ProcessingUnit):
24 '''
24 '''
25 classdocs
25 classdocs
26 '''
26 '''
27
27
28 def __init__(self):
28 def __init__(self):
29 '''
29 '''
30 Constructor
30 Constructor
31 '''
31 '''
32
32
33 ProcessingUnit.__init__(self)
33 ProcessingUnit.__init__(self)
34
34
35 self.dataOut = Voltage()
35 self.dataOut = Voltage()
36 self.__printInfo = True
36 self.__printInfo = True
37 self.__flagDiscontinuousBlock = False
37 self.__flagDiscontinuousBlock = False
38 self.__bufferIndex = 9999999
38 self.__bufferIndex = 9999999
39
39
40 self.__ippKm = None
40 self.__ippKm = None
41 self.__codeType = 0
41 self.__codeType = 0
42 self.__nCode = None
42 self.__nCode = None
43 self.__nBaud = None
43 self.__nBaud = None
44 self.__code = None
44 self.__code = None
45
45
46 def __getCurrentSecond(self):
46 def __getCurrentSecond(self):
47
47
48 return self.__thisUnixSample/self.__sample_rate
48 return self.__thisUnixSample/self.__sample_rate
49
49
50 thisSecond = property(__getCurrentSecond, "I'm the 'thisSecond' property.")
50 thisSecond = property(__getCurrentSecond, "I'm the 'thisSecond' property.")
51
51
52 def __setFileHeader(self):
52 def __setFileHeader(self):
53 '''
53 '''
54 In this method will be initialized every parameter of dataOut object (header, no data)
54 In this method will be initialized every parameter of dataOut object (header, no data)
55 '''
55 '''
56
56
57 self.dataOut.radarControllerHeaderObj = RadarControllerHeader(ippKm=self.__ippKm,
57 self.dataOut.radarControllerHeaderObj = RadarControllerHeader(ippKm=self.__ippKm,
58 txA=0,
58 txA=0,
59 txB=0,
59 txB=0,
60 nWindows=1,
60 nWindows=1,
61 nHeights=self.__nSamples,
61 nHeights=self.__nSamples,
62 firstHeight=self.__firstHeigth,
62 firstHeight=self.__firstHeigth,
63 deltaHeight=self.__deltaHeigth,
63 deltaHeight=self.__deltaHeigth,
64 codeType=self.__codeType,
64 codeType=self.__codeType,
65 nCode=self.__nCode, nBaud=self.__nBaud,
65 nCode=self.__nCode, nBaud=self.__nBaud,
66 code = self.__code)
66 code = self.__code)
67
67
68 self.dataOut.systemHeaderObj = SystemHeader(nSamples=self.__nSamples,
68 self.dataOut.systemHeaderObj = SystemHeader(nSamples=self.__nSamples,
69 nProfiles=1024,
69 nProfiles=1024,
70 nChannels=len(self.__channelList),
70 nChannels=len(self.__channelList),
71 adcResolution=14)
71 adcResolution=14)
72
72
73 self.dataOut.type = "Voltage"
73 self.dataOut.type = "Voltage"
74
74
75 self.dataOut.data = None
75 self.dataOut.data = None
76
76
77 self.dataOut.dtype = numpy.dtype([('real','<i8'),('imag','<i8')])
77 self.dataOut.dtype = numpy.dtype([('real','<i8'),('imag','<i8')])
78
78
79 # self.dataOut.nChannels = 0
79 # self.dataOut.nChannels = 0
80
80
81 # self.dataOut.nHeights = 0
81 # self.dataOut.nHeights = 0
82
82
83 self.dataOut.nProfiles = 1
83 self.dataOut.nProfiles = 1
84
84
85 self.dataOut.heightList = self.__firstHeigth + numpy.arange(self.__nSamples, dtype = numpy.float)*self.__deltaHeigth
85 self.dataOut.heightList = self.__firstHeigth + numpy.arange(self.__nSamples, dtype = numpy.float)*self.__deltaHeigth
86
86
87 self.dataOut.channelList = self.__channelList
87 self.dataOut.channelList = self.__channelList
88
88
89 self.dataOut.blocksize = self.dataOut.getNChannels() * self.dataOut.getNHeights()
89 self.dataOut.blocksize = self.dataOut.getNChannels() * self.dataOut.getNHeights()
90
90
91 # self.dataOut.channelIndexList = None
91 # self.dataOut.channelIndexList = None
92
92
93 self.dataOut.flagNoData = True
93 self.dataOut.flagNoData = True
94
94
95 #Set to TRUE if the data is discontinuous
95 #Set to TRUE if the data is discontinuous
96 self.dataOut.flagDiscontinuousBlock = False
96 self.dataOut.flagDiscontinuousBlock = False
97
97
98 self.dataOut.utctime = None
98 self.dataOut.utctime = None
99
99
100 self.dataOut.timeZone = self.__timezone/60 #timezone like jroheader, difference in minutes between UTC and localtime
100 self.dataOut.timeZone = self.__timezone/60 #timezone like jroheader, difference in minutes between UTC and localtime
101
101
102 self.dataOut.dstFlag = 0
102 self.dataOut.dstFlag = 0
103
103
104 self.dataOut.errorCount = 0
104 self.dataOut.errorCount = 0
105
105
106 self.dataOut.nCohInt = 1
106 self.dataOut.nCohInt = 1
107
107
108 self.dataOut.flagDecodeData = False #asumo que la data esta decodificada
108 self.dataOut.flagDecodeData = False #asumo que la data esta decodificada
109
109
110 self.dataOut.flagDeflipData = False #asumo que la data esta sin flip
110 self.dataOut.flagDeflipData = False #asumo que la data esta sin flip
111
111
112 self.dataOut.flagShiftFFT = False
112 self.dataOut.flagShiftFFT = False
113
113
114 self.dataOut.ippSeconds = 1.0*self.__nSamples/self.__sample_rate
114 self.dataOut.ippSeconds = 1.0*self.__nSamples/self.__sample_rate
115
115
116 #Time interval between profiles
116 #Time interval between profiles
117 #self.dataOut.timeInterval = self.dataOut.ippSeconds * self.dataOut.nCohInt
117 #self.dataOut.timeInterval = self.dataOut.ippSeconds * self.dataOut.nCohInt
118
118
119 self.dataOut.frequency = self.__frequency
119 self.dataOut.frequency = self.__frequency
120
120
121 self.dataOut.realtime = self.__online
121 self.dataOut.realtime = self.__online
122
123 def findDatafiles(self, path, startDate=None, endDate=None):
124
125 try:
126 digitalReadObj = digital_rf_hdf5.read_hdf5(path, load_all_metadata=True)
127 except:
128 digitalReadObj = digital_rf_hdf5.read_hdf5(path)
129
130 channelNameList = digitalReadObj.get_channels()
131
132 metadata_dict = digitalReadObj.get_rf_file_metadata(channelNameList[0])
133
134 sample_rate = metadata_dict['sample_rate'][0]
135
136 this_metadata_file = digitalReadObj.get_metadata(channelNameList[0])
137
138 try:
139 timezone = this_metadata_file['timezone'].value
140 except:
141 timezone = 0
142
143 startUTCSecond, endUTCSecond = digitalReadObj.get_bounds(channelNameList[0])/sample_rate - timezone
144
145 startDatetime = datetime.datetime.utcfromtimestamp(startUTCSecond)
146 endDatatime = datetime.datetime.utcfromtimestamp(endUTCSecond)
147
148 if not startDate:
149 startDate = startDatetime.date()
150
151 if not endDate:
152 endDate = endDatatime.date()
153
154 dateList = []
155
156 thisDatetime = startDatetime
157
158 while(thisDatetime<=endDatatime):
159
160 thisDate = thisDatetime.date()
161
162 if thisDate < startDate:
163 continue
164
165 if thisDate > endDate:
166 break
167
168 dateList.append(thisDate)
169 thisDatetime += datetime.timedelta(1)
122
170
171 return dateList
172
123 def setup(self, path = None,
173 def setup(self, path = None,
124 startDate = None,
174 startDate = None,
125 endDate = None,
175 endDate = None,
126 startTime = datetime.time(0,0,0),
176 startTime = datetime.time(0,0,0),
127 endTime = datetime.time(23,59,59),
177 endTime = datetime.time(23,59,59),
128 channelList = None,
178 channelList = None,
129 nSamples = None,
179 nSamples = None,
130 ippKm = None,
180 ippKm = 60,
131 online = False,
181 online = False,
132 wait = 60,
182 delay = 60,
133 nbuffer = 1024*4):
183 buffer_size = None,
184 nbuffer = 1024,
185 **kwargs):
134 '''
186 '''
135 In this method we should set all initial parameters.
187 In this method we should set all initial parameters.
136
188
137 Inputs:
189 Inputs:
138 path
190 path
139 startDate
191 startDate
140 endDate
192 endDate
141 startTime
193 startTime
142 endTime
194 endTime
143 set
195 set
144 expLabel
196 expLabel
145 ext
197 ext
146 online
198 online
147 wait
199 delay
148 '''
200 '''
201
202 if not buffer_size:
203 buffer_size = nbuffer
204
149 try:
205 try:
150 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path, load_all_metadata=True)
206 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path, load_all_metadata=True)
151 except:
207 except:
152 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path)
208 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path)
153
209
154 channelNameList = self.digitalReadObj.get_channels()
210 channelNameList = self.digitalReadObj.get_channels()
155
211
156 if not channelNameList:
212 if not channelNameList:
157 raise IOError, "[Reading] The path doesn,t have any files .. "
213 raise IOError, "[Reading] The path doesn,t have any files .. "
158
214
159 if not channelList:
215 if not channelList:
160 channelList = range(len(channelNameList))
216 channelList = range(len(channelNameList))
161
217
162 ########## Reading metadata ######################
218 ########## Reading metadata ######################
163
219
164 metadata_dict = self.digitalReadObj.get_rf_file_metadata(channelNameList[channelList[0]])
220 metadata_dict = self.digitalReadObj.get_rf_file_metadata(channelNameList[channelList[0]])
165
221
166 self.__sample_rate = metadata_dict['sample_rate'][0]
222 self.__sample_rate = metadata_dict['sample_rate'][0]
167 self.__samples_per_file = metadata_dict['samples_per_file'][0]
223 self.__samples_per_file = metadata_dict['samples_per_file'][0]
168 self.__deltaHeigth = 1e6*0.15/self.__sample_rate
224 self.__deltaHeigth = 1e6*0.15/self.__sample_rate
169
225
170 this_metadata_file = self.digitalReadObj.get_metadata(channelNameList[channelList[0]])
226 this_metadata_file = self.digitalReadObj.get_metadata(channelNameList[channelList[0]])
171
227
172 self.__frequency = this_metadata_file['center_frequencies'].value
228 self.__frequency = this_metadata_file['center_frequencies'].value
173 try:
229 try:
174 self.__timezone = this_metadata_file['timezone'].value
230 self.__timezone = this_metadata_file['timezone'].value
175 except:
231 except:
176 self.__timezone = 0
232 self.__timezone = 0
177
233
178 self.__firstHeigth = 0
234 self.__firstHeigth = 0
179
235
180 try:
236 try:
181 codeType = this_metadata_file['codeType'].value
237 codeType = this_metadata_file['codeType'].value
182 except:
238 except:
183 codeType = 0
239 codeType = 0
184
240
185 nCode = 0
241 nCode = 0
186 nBaud = 0
242 nBaud = 0
187 code = None
243 code = None
188
244
189 if codeType:
245 if codeType:
190 nCode = this_metadata_file['nCode'].value
246 nCode = this_metadata_file['nCode'].value
191 nBaud = this_metadata_file['nBaud'].value
247 nBaud = this_metadata_file['nBaud'].value
192 code = this_metadata_file['code'].value
248 code = this_metadata_file['code'].value
193
249
194 if not ippKm:
250 if not ippKm:
195 try:
251 try:
196 #seconds to km
252 #seconds to km
197 ippKm = 1e6*0.15*this_metadata_file['ipp'].value
253 ippKm = 1e6*0.15*this_metadata_file['ipp'].value
198 except:
254 except:
199 ippKm = None
255 ippKm = None
200
256
201 ####################################################
257 ####################################################
202 startUTCSecond = None
258 startUTCSecond = None
203 endUTCSecond = None
259 endUTCSecond = None
204
260
205 if startDate:
261 if startDate:
206 startDatetime = datetime.datetime.combine(startDate, startTime)
262 startDatetime = datetime.datetime.combine(startDate, startTime)
207 startUTCSecond = (startDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
263 startUTCSecond = (startDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
208
264
209 if endDate:
265 if endDate:
210 endDatetime = datetime.datetime.combine(endDate, endTime)
266 endDatetime = datetime.datetime.combine(endDate, endTime)
211 endUTCSecond = (endDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
267 endUTCSecond = (endDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
212
268
213 start_index, end_index = self.digitalReadObj.get_bounds(channelNameList[channelList[0]])
269 start_index, end_index = self.digitalReadObj.get_bounds(channelNameList[channelList[0]])
214
270
215 if not startUTCSecond:
271 if not startUTCSecond:
216 startUTCSecond = start_index/self.__sample_rate
272 startUTCSecond = start_index/self.__sample_rate
217
273
218 if start_index > startUTCSecond*self.__sample_rate:
274 if start_index > startUTCSecond*self.__sample_rate:
219 startUTCSecond = start_index/self.__sample_rate
275 startUTCSecond = start_index/self.__sample_rate
220
276
221 if not endUTCSecond:
277 if not endUTCSecond:
222 endUTCSecond = end_index/self.__sample_rate
278 endUTCSecond = end_index/self.__sample_rate
223
279
224 if end_index < endUTCSecond*self.__sample_rate:
280 if end_index < endUTCSecond*self.__sample_rate:
225 endUTCSecond = end_index/self.__sample_rate
281 endUTCSecond = end_index/self.__sample_rate
226
282
227 if not nSamples:
283 if not nSamples:
228 if not ippKm:
284 if not ippKm:
229 raise ValueError, "[Reading] nSamples or ippKm should be defined"
285 raise ValueError, "[Reading] nSamples or ippKm should be defined"
230
286
231 nSamples = ippKm / (1e6*0.15/self.__sample_rate)
287 nSamples = ippKm / (1e6*0.15/self.__sample_rate)
232
288
233 channelBoundList = []
289 channelBoundList = []
234 channelNameListFiltered = []
290 channelNameListFiltered = []
235
291
236 for thisIndexChannel in channelList:
292 for thisIndexChannel in channelList:
237 thisChannelName = channelNameList[thisIndexChannel]
293 thisChannelName = channelNameList[thisIndexChannel]
238 start_index, end_index = self.digitalReadObj.get_bounds(thisChannelName)
294 start_index, end_index = self.digitalReadObj.get_bounds(thisChannelName)
239 channelBoundList.append((start_index, end_index))
295 channelBoundList.append((start_index, end_index))
240 channelNameListFiltered.append(thisChannelName)
296 channelNameListFiltered.append(thisChannelName)
241
297
242 self.profileIndex = 0
298 self.profileIndex = 0
243
299
300 self.__delay = delay
244 self.__ippKm = ippKm
301 self.__ippKm = ippKm
245 self.__codeType = codeType
302 self.__codeType = codeType
246 self.__nCode = nCode
303 self.__nCode = nCode
247 self.__nBaud = nBaud
304 self.__nBaud = nBaud
248 self.__code = code
305 self.__code = code
249
306
250 self.__datapath = path
307 self.__datapath = path
251 self.__online = online
308 self.__online = online
252 self.__channelList = channelList
309 self.__channelList = channelList
253 self.__channelNameList = channelNameListFiltered
310 self.__channelNameList = channelNameListFiltered
254 self.__channelBoundList = channelBoundList
311 self.__channelBoundList = channelBoundList
255 self.__nSamples = nSamples
312 self.__nSamples = nSamples
256 self.__samples_to_read = nbuffer*nSamples
313 self.__samples_to_read = buffer_size*nSamples
257 self.__nChannels = len(self.__channelList)
314 self.__nChannels = len(self.__channelList)
258
315
259 self.__startUTCSecond = startUTCSecond
316 self.__startUTCSecond = startUTCSecond
260 self.__endUTCSecond = endUTCSecond
317 self.__endUTCSecond = endUTCSecond
261
318
262 self.__timeInterval = 1.0 * self.__samples_to_read/self.__sample_rate #Time interval
319 self.__timeInterval = 1.0 * self.__samples_to_read/self.__sample_rate #Time interval
263
320
264 if online:
321 if online:
265 # self.__thisUnixSample = int(endUTCSecond*self.__sample_rate - 4*self.__samples_to_read)
322 # self.__thisUnixSample = int(endUTCSecond*self.__sample_rate - 4*self.__samples_to_read)
266 startUTCSecond = numpy.floor(endUTCSecond)
323 startUTCSecond = numpy.floor(endUTCSecond)
267
324
268 self.__thisUnixSample = int(startUTCSecond*self.__sample_rate) - self.__samples_to_read
325 self.__thisUnixSample = int(startUTCSecond*self.__sample_rate) - self.__samples_to_read
269
326
270 self.__data_buffer = numpy.zeros((self.__nChannels, self.__samples_to_read), dtype = numpy.complex)
327 self.__data_buffer = numpy.zeros((self.__nChannels, self.__samples_to_read), dtype = numpy.complex)
271
328
272 self.__setFileHeader()
329 self.__setFileHeader()
273 self.isConfig = True
330 self.isConfig = True
274
331
275 print "[Reading] USRP Data was found from %s to %s " %(
332 print "[Reading] USRP Data was found from %s to %s " %(
276 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
333 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
277 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
334 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
278 )
335 )
279
336
280 print "[Reading] Starting process from ", datetime.datetime.utcfromtimestamp(startUTCSecond - self.__timezone), " to ", datetime.datetime.utcfromtimestamp(endUTCSecond - self.__timezone)
337 print "[Reading] Starting process from ", datetime.datetime.utcfromtimestamp(startUTCSecond - self.__timezone), " to ", datetime.datetime.utcfromtimestamp(endUTCSecond - self.__timezone)
281
338
282 def __reload(self):
339 def __reload(self):
283
340
284 if not self.__online:
341 if not self.__online:
285 return
342 return
286
343
287 # print
344 # print
288 # print "%s not in range [%s, %s]" %(
345 # print "%s not in range [%s, %s]" %(
289 # datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
346 # datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
290 # datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
347 # datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
291 # datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
348 # datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
292 # )
349 # )
293 print "[Reading] reloading metadata ..."
350 print "[Reading] reloading metadata ..."
294
351
295 self.digitalReadObj.reload(complete_update=True)
352 try:
353 self.digitalReadObj.reload(complete_update=True)
354 except:
355 self.digitalReadObj.reload()
296
356
297 start_index, end_index = self.digitalReadObj.get_bounds(self.__channelNameList[self.__channelList[0]])
357 start_index, end_index = self.digitalReadObj.get_bounds(self.__channelNameList[self.__channelList[0]])
298
358
299 if start_index > self.__startUTCSecond*self.__sample_rate:
359 if start_index > self.__startUTCSecond*self.__sample_rate:
300 self.__startUTCSecond = 1.0*start_index/self.__sample_rate
360 self.__startUTCSecond = 1.0*start_index/self.__sample_rate
301
361
302 if end_index > self.__endUTCSecond*self.__sample_rate:
362 if end_index > self.__endUTCSecond*self.__sample_rate:
303 self.__endUTCSecond = 1.0*end_index/self.__sample_rate
363 self.__endUTCSecond = 1.0*end_index/self.__sample_rate
304 print
364 print
305 print "[Reading] New timerange found [%s, %s] " %(
365 print "[Reading] New timerange found [%s, %s] " %(
306 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
366 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
307 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
367 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
308 )
368 )
309
369
310 return True
370 return True
311
371
312 return False
372 return False
313
373
314 def __readNextBlock(self, seconds=30, volt_scale = 218776):
374 def __readNextBlock(self, seconds=30, volt_scale = 218776):
315 '''
375 '''
316 '''
376 '''
317
377
318 #Set the next data
378 #Set the next data
319 self.__flagDiscontinuousBlock = False
379 self.__flagDiscontinuousBlock = False
320 self.__thisUnixSample += self.__samples_to_read
380 self.__thisUnixSample += self.__samples_to_read
321
381
322 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
382 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
323 print "[Reading] There are no more data into selected timerange"
383 print "[Reading] There are no more data into selected timerange"
324
384
325 self.__reload()
385 self.__reload()
326
386
327 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
387 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
328 self.__thisUnixSample -= self.__samples_to_read
388 self.__thisUnixSample -= self.__samples_to_read
329 return False
389 return False
330
390
331 indexChannel = 0
391 indexChannel = 0
332
392
333 dataOk = False
393 dataOk = False
334
394
335 for thisChannelName in self.__channelNameList:
395 for thisChannelName in self.__channelNameList:
336
396
337 try:
397 try:
338 result = self.digitalReadObj.read_vector_c81d(self.__thisUnixSample,
398 result = self.digitalReadObj.read_vector_c81d(self.__thisUnixSample,
339 self.__samples_to_read,
399 self.__samples_to_read,
340 thisChannelName)
400 thisChannelName)
341
401
342 except IOError, e:
402 except IOError, e:
343 #read next profile
403 #read next profile
344 self.__flagDiscontinuousBlock = True
404 self.__flagDiscontinuousBlock = True
345 print e
405 print e
346 break
406 break
347
407
348 if result.shape[0] != self.__samples_to_read:
408 if result.shape[0] != self.__samples_to_read:
349 self.__flagDiscontinuousBlock = True
409 self.__flagDiscontinuousBlock = True
350 print "[Reading] %s: Too few samples were found, just %d samples" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
410 print "[Reading] %s: Too few samples were found, just %d samples" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
351 result.shape[0])
411 result.shape[0])
352 break
412 break
353
413
354 self.__data_buffer[indexChannel,:] = result*volt_scale
414 self.__data_buffer[indexChannel,:] = result*volt_scale
355
415
356 indexChannel += 1
416 indexChannel += 1
357
417
358 dataOk = True
418 dataOk = True
359
419
360 self.__utctime = self.__thisUnixSample/self.__sample_rate
420 self.__utctime = self.__thisUnixSample/self.__sample_rate
361
421
362 if not dataOk:
422 if not dataOk:
363 return False
423 return False
364
424
365 print "[Reading] %s: %d samples <> %f sec" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
425 print "[Reading] %s: %d samples <> %f sec" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
366 self.__samples_to_read,
426 self.__samples_to_read,
367 self.__timeInterval)
427 self.__timeInterval)
368
428
369 self.__bufferIndex = 0
429 self.__bufferIndex = 0
370
430
371 return True
431 return True
372
432
373 def __isBufferEmpty(self):
433 def __isBufferEmpty(self):
374
434
375 if self.__bufferIndex <= self.__samples_to_read - self.__nSamples:
435 if self.__bufferIndex <= self.__samples_to_read - self.__nSamples:
376 return False
436 return False
377
437
378 return True
438 return True
379
439
380 def getData(self, seconds=30, nTries=5):
440 def getData(self, seconds=30, nTries=5):
381
441
382 '''
442 '''
383 This method gets the data from files and put the data into the dataOut object
443 This method gets the data from files and put the data into the dataOut object
384
444
385 In addition, increase el the buffer counter in one.
445 In addition, increase el the buffer counter in one.
386
446
387 Return:
447 Return:
388 data : retorna un perfil de voltages (alturas * canales) copiados desde el
448 data : retorna un perfil de voltages (alturas * canales) copiados desde el
389 buffer. Si no hay mas archivos a leer retorna None.
449 buffer. Si no hay mas archivos a leer retorna None.
390
450
391 Affected:
451 Affected:
392 self.dataOut
452 self.dataOut
393 self.profileIndex
453 self.profileIndex
394 self.flagDiscontinuousBlock
454 self.flagDiscontinuousBlock
395 self.flagIsNewBlock
455 self.flagIsNewBlock
396 '''
456 '''
397
457
398 err_counter = 0
458 err_counter = 0
399 self.dataOut.flagNoData = True
459 self.dataOut.flagNoData = True
400
460
401 if self.__isBufferEmpty():
461 if self.__isBufferEmpty():
402
462
403 self.__flagDiscontinuousBlock = False
463 self.__flagDiscontinuousBlock = False
404
464
405 while True:
465 while True:
406 if self.__readNextBlock():
466 if self.__readNextBlock():
407 break
467 break
408
468
409 if self.__thisUnixSample > self.__endUTCSecond*self.__sample_rate:
469 if self.__thisUnixSample > self.__endUTCSecond*self.__sample_rate:
410 return False
470 return False
411
471
412 if self.__flagDiscontinuousBlock:
472 if self.__flagDiscontinuousBlock:
413 print '[Reading] discontinuous block found ... continue with the next block'
473 print '[Reading] discontinuous block found ... continue with the next block'
414 continue
474 continue
415
475
416 if not self.__online:
476 if not self.__online:
417 return False
477 return False
418
478
419 err_counter += 1
479 err_counter += 1
420 if err_counter > nTries:
480 if err_counter > nTries:
421 return False
481 return False
422
482
423 print '[Reading] waiting %d seconds to read a new block' %seconds
483 print '[Reading] waiting %d seconds to read a new block' %seconds
424 sleep(seconds)
484 sleep(seconds)
425
485
426 self.dataOut.data = self.__data_buffer[:,self.__bufferIndex:self.__bufferIndex+self.__nSamples]
486 self.dataOut.data = self.__data_buffer[:,self.__bufferIndex:self.__bufferIndex+self.__nSamples]
427 self.dataOut.utctime = (self.__thisUnixSample + self.__bufferIndex)/self.__sample_rate
487 self.dataOut.utctime = (self.__thisUnixSample + self.__bufferIndex)/self.__sample_rate
428 self.dataOut.flagNoData = False
488 self.dataOut.flagNoData = False
429 self.dataOut.flagDiscontinuousBlock = self.__flagDiscontinuousBlock
489 self.dataOut.flagDiscontinuousBlock = self.__flagDiscontinuousBlock
430
490
431 self.__bufferIndex += self.__nSamples
491 self.__bufferIndex += self.__nSamples
432 self.profileIndex += 1
492 self.profileIndex += 1
433
493
434 return True
494 return True
435
495
436 def printInfo(self):
496 def printInfo(self):
437 '''
497 '''
438 '''
498 '''
439 if self.__printInfo == False:
499 if self.__printInfo == False:
440 return
500 return
441
501
442 # self.systemHeaderObj.printInfo()
502 # self.systemHeaderObj.printInfo()
443 # self.radarControllerHeaderObj.printInfo()
503 # self.radarControllerHeaderObj.printInfo()
444
504
445 self.__printInfo = False
505 self.__printInfo = False
446
506
447 def printNumberOfBlock(self):
507 def printNumberOfBlock(self):
448 '''
508 '''
449 '''
509 '''
450
510
451 print self.profileIndex
511 print self.profileIndex
452
512
453 def run(self, **kwargs):
513 def run(self, **kwargs):
454 '''
514 '''
455 This method will be called many times so here you should put all your code
515 This method will be called many times so here you should put all your code
456 '''
516 '''
457
517
458 if not self.isConfig:
518 if not self.isConfig:
459 self.setup(**kwargs)
519 self.setup(**kwargs)
460
520
461 self.getData()
521 self.getData(seconds=self.__delay)
462
522
463 return
523 return
464
524
465 class USRPWriter(Operation):
525 class USRPWriter(Operation):
466 '''
526 '''
467 classdocs
527 classdocs
468 '''
528 '''
469
529
470 def __init__(self):
530 def __init__(self):
471 '''
531 '''
472 Constructor
532 Constructor
473 '''
533 '''
474 self.dataOut = None
534 self.dataOut = None
475
535
476 def setup(self, dataIn, path, blocksPerFile, set=0, ext=None):
536 def setup(self, dataIn, path, blocksPerFile, set=0, ext=None):
477 '''
537 '''
478 In this method we should set all initial parameters.
538 In this method we should set all initial parameters.
479
539
480 Input:
540 Input:
481 dataIn : Input data will also be outputa data
541 dataIn : Input data will also be outputa data
482
542
483 '''
543 '''
484 self.dataOut = dataIn
544 self.dataOut = dataIn
485
545
486
546
487
547
488
548
489
549
490 self.isConfig = True
550 self.isConfig = True
491
551
492 return
552 return
493
553
494 def run(self, dataIn, **kwargs):
554 def run(self, dataIn, **kwargs):
495 '''
555 '''
496 This method will be called many times so here you should put all your code
556 This method will be called many times so here you should put all your code
497
557
498 Inputs:
558 Inputs:
499
559
500 dataIn : object with the data
560 dataIn : object with the data
501
561
502 '''
562 '''
503
563
504 if not self.isConfig:
564 if not self.isConfig:
505 self.setup(dataIn, **kwargs)
565 self.setup(dataIn, **kwargs)
506
566
507
567
508 if __name__ == '__main__':
568 if __name__ == '__main__':
509
569
510 readObj = USRPReader()
570 readObj = USRPReader()
511
571
512 while True:
572 while True:
513 readObj.run(path='/Volumes/DATA/haystack/passive_radar/')
573 readObj.run(path='/Volumes/DATA/haystack/passive_radar/')
514 # readObj.printInfo()
574 # readObj.printInfo()
515 readObj.printNumberOfBlock()
575 readObj.printNumberOfBlock()
516
576
517 No newline at end of file
577
General Comments 0
You need to be logged in to leave comments. Login now