##// END OF EJS Templates
Signal Chain GUI v2.1
Miguel Valdez -
r596:bf27846f03e1
parent child
Show More
@@ -1,1088 +1,1166
1 1 '''
2 2 Created on September , 2012
3 3 @author:
4 4 '''
5 5 from xml.etree.ElementTree import Element, SubElement
6 6 from xml.etree import ElementTree as ET
7 7 from xml.dom import minidom
8 8
9 9 #import datetime
10 10 from model import *
11 11
12 12 try:
13 13 from gevent import sleep
14 14 except:
15 15 from time import sleep
16 16
17 17 import ast
18 18
19 19 def prettify(elem):
20 20 """Return a pretty-printed XML string for the Element.
21 21 """
22 22 rough_string = ET.tostring(elem, 'utf-8')
23 23 reparsed = minidom.parseString(rough_string)
24 24 return reparsed.toprettyxml(indent=" ")
25 25
26 26 class ParameterConf():
27 27
28 28 id = None
29 29 name = None
30 30 value = None
31 31 format = None
32 32
33 33 __formated_value = None
34 34
35 35 ELEMENTNAME = 'Parameter'
36 36
37 37 def __init__(self):
38 38
39 39 self.format = 'str'
40 40
41 41 def getElementName(self):
42 42
43 43 return self.ELEMENTNAME
44 44
45 45 def getValue(self):
46 46
47 47 if self.__formated_value != None:
48 48
49 49 return self.__formated_value
50 50
51 51 value = self.value
52 52
53 if self.format == 'str':
54 self.__formated_value = str(value)
55 return self.__formated_value
56
57 if value == '':
58 raise ValueError, "%s: This parameter value is empty" %self.name
59
53 60 if self.format == 'bool':
54 61 value = int(value)
55 62
56 63 if self.format == 'list':
57 64 strList = value.split(',')
58 65
59 66 self.__formated_value = strList
60 67
61 68 return self.__formated_value
62 69
63 70 if self.format == 'intlist':
64 71 """
65 72 Example:
66 73 value = (0,1,2)
67 74 """
68 value = value.replace('(', '')
69 value = value.replace(')', '')
70
71 value = value.replace('[', '')
72 value = value.replace(']', '')
73
74 strList = value.split(',')
75 intList = [int(x) for x in strList]
75 intList = ast.literal_eval(value)
76 76
77 77 self.__formated_value = intList
78 78
79 79 return self.__formated_value
80 80
81 81 if self.format == 'floatlist':
82 82 """
83 83 Example:
84 84 value = (0.5, 1.4, 2.7)
85 85 """
86 86
87 value = value.replace('(', '')
88 value = value.replace(')', '')
89
90 value = value.replace('[', '')
91 value = value.replace(']', '')
92
93 strList = value.split(',')
94 floatList = [float(x) for x in strList]
87 floatList = ast.literal_eval(value)
95 88
96 89 self.__formated_value = floatList
97 90
98 91 return self.__formated_value
99 92
100 93 if self.format == 'date':
101 94 strList = value.split('/')
102 95 intList = [int(x) for x in strList]
103 96 date = datetime.date(intList[0], intList[1], intList[2])
104 97
105 98 self.__formated_value = date
106 99
107 100 return self.__formated_value
108 101
109 102 if self.format == 'time':
110 103 strList = value.split(':')
111 104 intList = [int(x) for x in strList]
112 105 time = datetime.time(intList[0], intList[1], intList[2])
113 106
114 107 self.__formated_value = time
115 108
116 109 return self.__formated_value
117 110
118 111 if self.format == 'pairslist':
119 112 """
120 113 Example:
121 114 value = (0,1),(1,2)
122 115 """
123 116
124 value = value.replace('(', '')
125 value = value.replace(')', '')
126
127 value = value.replace('[', '')
128 value = value.replace(']', '')
129
130 strList = value.split(',')
131 intList = [int(item) for item in strList]
132 pairList = []
133 for i in range(len(intList)/2):
134 pairList.append((intList[i*2], intList[i*2 + 1]))
117 pairList = ast.literal_eval(value)
135 118
136 119 self.__formated_value = pairList
137 120
138 121 return self.__formated_value
139 122
140 123 if self.format == 'multilist':
141 124 """
142 125 Example:
143 126 value = (0,1,2),(3,4,5)
144 127 """
145 128 multiList = ast.literal_eval(value)
146 129
147 130 self.__formated_value = multiList
148 131
149 132 return self.__formated_value
150 133
151 134 format_func = eval(self.format)
152 135
153 136 self.__formated_value = format_func(value)
154 137
155 138 return self.__formated_value
156 139
140 def updateId(self, new_id):
141
142 self.id = str(new_id)
143
157 144 def setup(self, id, name, value, format='str'):
158 145
159 self.id = id
146 self.id = str(id)
160 147 self.name = name
161 148 self.value = str(value)
162 149 self.format = str.lower(format)
163 150
164 151 def update(self, name, value, format='str'):
165 152
166 153 self.name = name
167 154 self.value = str(value)
168 155 self.format = format
169 156
170 157 def makeXml(self, opElement):
171 158
172 159 parmElement = SubElement(opElement, self.ELEMENTNAME)
173 160 parmElement.set('id', str(self.id))
174 161 parmElement.set('name', self.name)
175 162 parmElement.set('value', self.value)
176 163 parmElement.set('format', self.format)
177 164
178 165 def readXml(self, parmElement):
179 166
180 167 self.id = parmElement.get('id')
181 168 self.name = parmElement.get('name')
182 169 self.value = parmElement.get('value')
183 170 self.format = str.lower(parmElement.get('format'))
184 171
185 172 #Compatible with old signal chain version
186 173 if self.format == 'int' and self.name == 'idfigure':
187 174 self.name = 'id'
188 175
189 176 def printattr(self):
190 177
191 178 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
192 179
193 180 class OperationConf():
194 181
195 182 id = None
196 183 name = None
197 184 priority = None
198 185 type = None
199 186
200 187 parmConfObjList = []
201 188
202 189 ELEMENTNAME = 'Operation'
203 190
204 191 def __init__(self):
205 192
206 193 self.id = '0'
207 194 self.name = None
208 195 self.priority = None
209 196 self.type = 'self'
210 197
211 198
212 199 def __getNewId(self):
213 200
214 201 return int(self.id)*10 + len(self.parmConfObjList) + 1
215 202
203 def updateId(self, new_id):
204
205 self.id = str(new_id)
206
207 n = 1
208 for parmObj in self.parmConfObjList:
209
210 idParm = str(int(new_id)*10 + n)
211 parmObj.updateId(idParm)
212
213 n += 1
214
216 215 def getElementName(self):
217 216
218 217 return self.ELEMENTNAME
219 218
220 219 def getParameterObjList(self):
221 220
222 221 return self.parmConfObjList
223 222
224 223 def getParameterObj(self, parameterName):
225 224
226 225 for parmConfObj in self.parmConfObjList:
227 226
228 227 if parmConfObj.name != parameterName:
229 228 continue
230 229
231 230 return parmConfObj
232 231
233 232 return None
234 233
235 234 def getParameterObjfromValue(self,parameterValue):
236 235 for parmConfObj in self.parmConfObjList:
237 236
238 237 if parmConfObj.getValue() != parameterValue:
239 238 continue
240 239
241 240 return parmConfObj.getValue()
242 241
243 242 return None
244 243
245 244 def getParameterValue(self, parameterName):
246 245
247 246 parameterObj = self.getParameterObj(parameterName)
248 247 value = parameterObj.getValue()
249 248
250 249 return value
251 250
252 251 def setup(self, id, name, priority, type):
253 252
254 self.id = id
253 self.id = str(id)
255 254 self.name = name
256 255 self.type = type
257 256 self.priority = priority
258 257
259 258 self.parmConfObjList = []
260 259
261 260 def removeParameters(self):
262 261
263 262 for obj in self.parmConfObjList:
264 263 del obj
265 264
266 265 self.parmConfObjList = []
267 266
268 267 def addParameter(self, name, value, format='str'):
269 268
270 269 id = self.__getNewId()
271 270
272 271 parmConfObj = ParameterConf()
273 272 parmConfObj.setup(id, name, value, format)
274 273
275 274 self.parmConfObjList.append(parmConfObj)
276 275
277 276 return parmConfObj
278 277
279 278 def changeParameter(self, name, value, format='str'):
280 279
281 280 parmConfObj = self.getParameterObj(name)
282 281 parmConfObj.update(name, value, format)
283 282
284 283 return parmConfObj
285 284
286 285 def makeXml(self, upElement):
287 286
288 287 opElement = SubElement(upElement, self.ELEMENTNAME)
289 288 opElement.set('id', str(self.id))
290 289 opElement.set('name', self.name)
291 290 opElement.set('type', self.type)
292 291 opElement.set('priority', str(self.priority))
293 292
294 293 for parmConfObj in self.parmConfObjList:
295 294 parmConfObj.makeXml(opElement)
296 295
297 296 def readXml(self, opElement):
298 297
299 298 self.id = opElement.get('id')
300 299 self.name = opElement.get('name')
301 300 self.type = opElement.get('type')
302 301 self.priority = opElement.get('priority')
303 302
304 303 #Compatible with old signal chain version
305 304 #Use of 'run' method instead 'init'
306 305 if self.type == 'self' and self.name == 'init':
307 306 self.name = 'run'
308 307
309 308 self.parmConfObjList = []
310 309
311 310 parmElementList = opElement.getiterator(ParameterConf().getElementName())
312 311
313 312 for parmElement in parmElementList:
314 313 parmConfObj = ParameterConf()
315 314 parmConfObj.readXml(parmElement)
316 315
317 316 #Compatible with old signal chain version
318 317 #If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
319 318 if self.type != 'self' and self.name == 'Plot':
320 319 if parmConfObj.format == 'str' and parmConfObj.name == 'type':
321 320 self.name = parmConfObj.value
322 321 continue
323 322
324 323 self.parmConfObjList.append(parmConfObj)
325 324
326 325 def printattr(self):
327 326
328 327 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
329 328 self.id,
330 329 self.name,
331 330 self.type,
332 331 self.priority)
333 332
334 333 for parmConfObj in self.parmConfObjList:
335 334 parmConfObj.printattr()
336 335
337 336 def createObject(self):
338 337
339 338 if self.type == 'self':
340 339 raise ValueError, "This operation type cannot be created"
341 340
342 341 if self.type == 'external' or self.type == 'other':
343 342 className = eval(self.name)
344 343 opObj = className()
345 344
346 345 return opObj
347 346
348 347 class ProcUnitConf():
349 348
350 349 id = None
351 350 name = None
352 351 datatype = None
353 352 inputId = None
354 353 parentId = None
355 354
356 355 opConfObjList = []
357 356
358 357 procUnitObj = None
359 358 opObjList = []
360 359
361 360 ELEMENTNAME = 'ProcUnit'
362 361
363 362 def __init__(self):
364 363
365 364 self.id = None
366 365 self.datatype = None
367 366 self.name = None
368 367 self.inputId = None
369 368
370 369 self.opConfObjList = []
371 370
372 371 self.procUnitObj = None
373 372 self.opObjDict = {}
374 373
375 374 def __getPriority(self):
376 375
377 376 return len(self.opConfObjList)+1
378 377
379 378 def __getNewId(self):
380 379
381 380 return int(self.id)*10 + len(self.opConfObjList) + 1
382 381
383 382 def getElementName(self):
384 383
385 384 return self.ELEMENTNAME
386 385
387 386 def getId(self):
388 387
389 388 return self.id
390 389
390 def updateId(self, new_id, parentId=parentId):
391
392
393 new_id = int(parentId)*10 + (int(self.id) % 10)
394 new_inputId = int(parentId)*10 + (int(self.inputId) % 10)
395
396 #If this proc unit has not inputs
397 if self.inputId == '0':
398 new_inputId = 0
399
400 n = 1
401 for opConfObj in self.opConfObjList:
402
403 idOp = str(int(new_id)*10 + n)
404 opConfObj.updateId(idOp)
405
406 n += 1
407
408 self.parentId = str(parentId)
409 self.id = str(new_id)
410 self.inputId = str(new_inputId)
411
412
391 413 def getInputId(self):
392 414
393 415 return self.inputId
394 416
395 417 def getOperationObjList(self):
396 418
397 419 return self.opConfObjList
398 420
399 421 def getOperationObj(self, name=None):
400 422
401 423 for opConfObj in self.opConfObjList:
402 424
403 425 if opConfObj.name != name:
404 426 continue
405 427
406 428 return opConfObj
407 429
408 430 return None
409 431
410 432 def getOpObjfromParamValue(self,value=None):
411 433
412 434 for opConfObj in self.opConfObjList:
413 435 if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
414 436 continue
415 437 return opConfObj
416 438 return None
417 439
418 440 def getProcUnitObj(self):
419 441
420 442 return self.procUnitObj
421 443
422 444 def setup(self, id, name, datatype, inputId, parentId=None):
423 445
424 self.id = id
446 #Compatible with old signal chain version
447 if datatype==None and name==None:
448 raise ValueError, "datatype or name should be defined"
449
450 if name==None:
451 if 'Proc' in datatype:
452 name = datatype
453 else:
454 name = '%sProc' %(datatype)
455
456 if datatype==None:
457 datatype = name.replace('Proc','')
458
459 self.id = str(id)
425 460 self.name = name
426 461 self.datatype = datatype
427 462 self.inputId = inputId
428 463 self.parentId = parentId
429 464
430 465 self.opConfObjList = []
431 466
432 467 self.addOperation(name='run', optype='self')
433 468
434 469 def removeOperations(self):
435 470
436 471 for obj in self.opConfObjList:
437 472 del obj
438 473
439 474 self.opConfObjList = []
440 475 self.addOperation(name='run')
441 476
442 477 def addParameter(self, **kwargs):
443 478 '''
444 479 Add parameters to "run" operation
445 480 '''
446 481 opObj = self.opConfObjList[0]
447 482
448 483 opObj.addParameter(**kwargs)
449 484
450 485 return opObj
451 486
452 487 def addOperation(self, name, optype='self'):
453 488
454 489 id = self.__getNewId()
455 490 priority = self.__getPriority()
456 491
457 492 opConfObj = OperationConf()
458 493 opConfObj.setup(id, name=name, priority=priority, type=optype)
459 494
460 495 self.opConfObjList.append(opConfObj)
461 496
462 497 return opConfObj
463 498
464 499 def makeXml(self, procUnitElement):
465 500
466 501 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
467 502 upElement.set('id', str(self.id))
468 503 upElement.set('name', self.name)
469 504 upElement.set('datatype', self.datatype)
470 505 upElement.set('inputId', str(self.inputId))
471 506
472 507 for opConfObj in self.opConfObjList:
473 508 opConfObj.makeXml(upElement)
474 509
475 510 def readXml(self, upElement):
476 511
477 512 self.id = upElement.get('id')
478 513 self.name = upElement.get('name')
479 514 self.datatype = upElement.get('datatype')
480 515 self.inputId = upElement.get('inputId')
481 516
517 if self.ELEMENTNAME == "ReadUnit":
518 self.datatype = self.datatype.replace("Reader", "")
519
520 if self.ELEMENTNAME == "ProcUnit":
521 self.datatype = self.datatype.replace("Proc", "")
522
482 523 if self.inputId == 'None':
483 524 self.inputId = '0'
484 525
485 526 self.opConfObjList = []
486 527
487 528 opElementList = upElement.getiterator(OperationConf().getElementName())
488 529
489 530 for opElement in opElementList:
490 531 opConfObj = OperationConf()
491 532 opConfObj.readXml(opElement)
492 533 self.opConfObjList.append(opConfObj)
493 534
494 535 def printattr(self):
495 536
496 537 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
497 538 self.id,
498 539 self.name,
499 540 self.datatype,
500 541 self.inputId)
501 542
502 543 for opConfObj in self.opConfObjList:
503 544 opConfObj.printattr()
504 545
505 546 def createObjects(self):
506 547
507 548 className = eval(self.name)
508 549 procUnitObj = className()
509 550
510 551 for opConfObj in self.opConfObjList:
511 552
512 553 if opConfObj.type == 'self':
513 554 continue
514 555
515 556 opObj = opConfObj.createObject()
516 557
517 558 self.opObjDict[opConfObj.id] = opObj
518 559 procUnitObj.addOperation(opObj, opConfObj.id)
519 560
520 561 self.procUnitObj = procUnitObj
521 562
522 563 return procUnitObj
523 564
524 565 def run(self):
525 566
526 567 finalSts = False
527 568
528 569 for opConfObj in self.opConfObjList:
529 570
530 571 kwargs = {}
531 572 for parmConfObj in opConfObj.getParameterObjList():
532 573 if opConfObj.name == 'run' and parmConfObj.name == 'datatype':
533 574 continue
534 575
535 576 kwargs[parmConfObj.name] = parmConfObj.getValue()
536 577
537 578 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
538 579 sts = self.procUnitObj.call(opType = opConfObj.type,
539 580 opName = opConfObj.name,
540 581 opId = opConfObj.id,
541 582 **kwargs)
542 583 finalSts = finalSts or sts
543 584
544 585 return finalSts
545 586
546 587 def close(self):
547 588
548 589 for opConfObj in self.opConfObjList:
549 590 if opConfObj.type == 'self':
550 591 continue
551 592
552 593 opObj = self.procUnitObj.getOperationObj(opConfObj.id)
553 594 opObj.close()
554 595
555 596 self.procUnitObj.close()
556 597
557 598 return
558 599
559 600 class ReadUnitConf(ProcUnitConf):
560 601
561 602 path = None
562 603 startDate = None
563 604 endDate = None
564 605 startTime = None
565 606 endTime = None
566 607
567 608 ELEMENTNAME = 'ReadUnit'
568 609
569 610 def __init__(self):
570 611
571 612 self.id = None
572 613 self.datatype = None
573 614 self.name = None
574 615 self.inputId = None
575 616
576 617 self.parentId = None
577 618
578 619 self.opConfObjList = []
579 620 self.opObjList = []
580 621
581 622 def getElementName(self):
582 623
583 624 return self.ELEMENTNAME
584 625
585 626 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs):
586 627
628 #Compatible with old signal chain version
629 if datatype==None and name==None:
630 raise ValueError, "datatype or name should be defined"
631
632 if name==None:
633 if 'Reader' in datatype:
634 name = datatype
635 else:
636 name = '%sReader' %(datatype)
637
638 if datatype==None:
639 datatype = name.replace('Reader','')
640
587 641 self.id = id
588 642 self.name = name
589 643 self.datatype = datatype
590 644
591 645 self.path = path
592 646 self.startDate = startDate
593 647 self.endDate = endDate
594 648 self.startTime = startTime
595 649 self.endTime = endTime
596 650
597 651 self.inputId = '0'
598 652 self.parentId = parentId
599 653
600 654 self.addRunOperation(**kwargs)
601 655
602 656 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
603 657
658 #Compatible with old signal chain version
659 if datatype==None and name==None:
660 raise ValueError, "datatype or name should be defined"
661
604 662 if name==None:
605 663 if 'Reader' in datatype:
606 664 name = datatype
607 665 else:
608 666 name = '%sReader' %(datatype)
609 667
610 668 if datatype==None:
611 669 datatype = name.replace('Reader','')
612 670
613 671 self.datatype = datatype
614 672 self.name = name
615 673 self.path = path
616 674 self.startDate = startDate
617 675 self.endDate = endDate
618 676 self.startTime = startTime
619 677 self.endTime = endTime
620 678
621 self.inputId = None
679 self.inputId = '0'
622 680 self.parentId = parentId
623 681
624 682 self.updateRunOperation(**kwargs)
625 683
626 684 def addRunOperation(self, **kwargs):
627 685
628 686 opObj = self.addOperation(name = 'run', optype = 'self')
629 687
630 688 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
631 689 opObj.addParameter(name='path' , value=self.path, format='str')
632 690 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
633 691 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
634 692 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
635 693 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
636 694
637 695 for key, value in kwargs.items():
638 696 opObj.addParameter(name=key, value=value, format=type(value).__name__)
639 697
640 698 return opObj
641 699
642 700 def updateRunOperation(self, **kwargs):
643 701
644 702 opObj = self.getOperationObj(name = 'run')
645 703 opObj.removeParameters()
646 704
647 705 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
648 706 opObj.addParameter(name='path' , value=self.path, format='str')
649 707 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
650 708 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
651 709 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
652 710 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
653 711
654 712 for key, value in kwargs.items():
655 713 opObj.addParameter(name=key, value=value, format=type(value).__name__)
656 714
657 715 return opObj
658 716
659 717 class Project():
660 718
661 719 id = None
662 720 name = None
663 721 description = None
664 722 # readUnitConfObjList = None
665 723 procUnitConfObjDict = None
666 724
667 725 ELEMENTNAME = 'Project'
668 726
669 727 def __init__(self, control=None, dataq=None):
670 728
671 729 self.id = None
672 730 self.name = None
673 731 self.description = None
674 732
675 733 self.procUnitConfObjDict = {}
676 734
677 735 #global data_q
678 736 #data_q = dataq
679 737
680 738 if control==None:
681 control = {}
682 control['stop'] = False
683 control['pause'] = False
739 control = {'stop':False,'pause':False}
684 740
685 741 self.control = control
686 742
687 743 def __getNewId(self):
688 744
689 745 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
690 746
691 747 return str(id)
692 748
693 749 def getElementName(self):
694 750
695 751 return self.ELEMENTNAME
696 752
697 753 def getId(self):
698 754
699 755 return self.id
700 756
757 def updateId(self, new_id):
758
759 self.id = str(new_id)
760
761 keyList = self.procUnitConfObjDict.keys()
762 keyList.sort()
763
764 n = 1
765 newProcUnitConfObjDict = {}
766
767 for procKey in keyList:
768
769 procUnitConfObj = self.procUnitConfObjDict[procKey]
770 idProcUnit = str(int(self.id)*10 + n)
771 procUnitConfObj.updateId(idProcUnit, parentId = self.id)
772
773 newProcUnitConfObjDict[idProcUnit] = procUnitConfObj
774 n += 1
775
776 self.procUnitConfObjDict = newProcUnitConfObjDict
777
701 778 def setup(self, id, name, description):
702 779
703 self.id = id
780 self.id = str(id)
704 781 self.name = name
705 782 self.description = description
706 783
707 784 def update(self, name, description):
708 785
709 786 self.name = name
710 787 self.description = description
711 788
712 789 def addReadUnit(self, datatype=None, name=None, **kwargs):
713 790
714 #Compatible with old signal chain version
715 if datatype==None and name==None:
716 raise ValueError, "datatype or name should be defined"
717
718 if name==None:
719 if 'Reader' in datatype:
720 name = datatype
721 else:
722 name = '%sReader' %(datatype)
723
724 if datatype==None:
725 datatype = name.replace('Reader','')
726
727 791 idReadUnit = self.__getNewId()
728 792
729 793 readUnitConfObj = ReadUnitConf()
730 794 readUnitConfObj.setup(idReadUnit, name, datatype, parentId=self.id, **kwargs)
731 795
732 796 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
733 797
734 798 return readUnitConfObj
735 799
736 800 def addProcUnit(self, inputId='0', datatype=None, name=None):
737 801
738 #Compatible with old signal chain version
739 if datatype==None and name==None:
740 raise ValueError, "datatype or name should be defined"
741
742 if name==None:
743 if 'Proc' in datatype:
744 name = datatype
745 else:
746 name = '%sProc' %(datatype)
747
748 if datatype==None:
749 datatype = name.replace('Proc','')
750
751 802 idProcUnit = self.__getNewId()
752 803
753 804 procUnitConfObj = ProcUnitConf()
754 805 procUnitConfObj.setup(idProcUnit, name, datatype, inputId, parentId=self.id)
755 806
756 807 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
757 808
758 809 return procUnitConfObj
759 810
760 811 def removeProcUnit(self, id):
761 812
762 813 if id in self.procUnitConfObjDict.keys():
763 814 self.procUnitConfObjDict.pop(id)
764 815
765 816 def getReadUnitId(self):
766 817
767 818 readUnitConfObj = self.getReadUnitObj()
768 819
769 820 return readUnitConfObj.id
770 821
771 822 def getReadUnitObj(self):
772 823
773 824 for obj in self.procUnitConfObjDict.values():
774 825 if obj.getElementName() == "ReadUnit":
775 826 return obj
776 827
777 828 return None
778 829
779 830 def getProcUnitObj(self, id):
780 831
781 832 return self.procUnitConfObjDict[id]
782 833
783 834 def getProcUnitObjByName(self, name):
784 835
785 836 for obj in self.procUnitConfObjDict.values():
786 837 if obj.name == name:
787 838 return obj
788 839
789 840 return None
790 841
791 842 def makeXml(self):
792 843
793 844 projectElement = Element('Project')
794 845 projectElement.set('id', str(self.id))
795 846 projectElement.set('name', self.name)
796 847 projectElement.set('description', self.description)
797 848
798 849 # for readUnitConfObj in self.readUnitConfObjList:
799 850 # readUnitConfObj.makeXml(projectElement)
800 851
801 852 for procUnitConfObj in self.procUnitConfObjDict.values():
802 853 procUnitConfObj.makeXml(projectElement)
803 854
804 855 self.projectElement = projectElement
805 856
806 857 def writeXml(self, filename):
807 858
808 859 self.makeXml()
809 860
810 861 #print prettify(self.projectElement)
811 862
812 863 ElementTree(self.projectElement).write(filename, method='xml')
813 864
814 865 def readXml(self, filename):
815 866
816 867 #tree = ET.parse(filename)
817 868 self.projectElement = None
818 869 # self.readUnitConfObjList = []
819 870 self.procUnitConfObjDict = {}
820 871
821 872 self.projectElement = ElementTree().parse(filename)
822 873
823 874 self.project = self.projectElement.tag
824 875
825 876 self.id = self.projectElement.get('id')
826 877 self.name = self.projectElement.get('name')
827 878 self.description = self.projectElement.get('description')
828 879
829 880 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
830 881
831 882 for readUnitElement in readUnitElementList:
832 883 readUnitConfObj = ReadUnitConf()
833 884 readUnitConfObj.readXml(readUnitElement)
834 885
835 886 if readUnitConfObj.parentId == None:
836 887 readUnitConfObj.parentId = self.id
837 888
838 889 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
839 890
840 891 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
841 892
842 893 for procUnitElement in procUnitElementList:
843 894 procUnitConfObj = ProcUnitConf()
844 895 procUnitConfObj.readXml(procUnitElement)
845 896
846 897 if procUnitConfObj.parentId == None:
847 898 procUnitConfObj.parentId = self.id
848 899
849 900 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
850 901
851 902 def printattr(self):
852 903
853 904 print "Project[%s]: name = %s, description = %s" %(self.id,
854 905 self.name,
855 906 self.description)
856 907
857 908 # for readUnitConfObj in self.readUnitConfObjList:
858 909 # readUnitConfObj.printattr()
859 910
860 911 for procUnitConfObj in self.procUnitConfObjDict.values():
861 912 procUnitConfObj.printattr()
862 913
863 914 def createObjects(self):
864 915
865 916 # for readUnitConfObj in self.readUnitConfObjList:
866 917 # readUnitConfObj.createObjects()
867 918
868 919 for procUnitConfObj in self.procUnitConfObjDict.values():
869 920 procUnitConfObj.createObjects()
870 921
871 922 def __connect(self, objIN, thisObj):
872 923
873 924 thisObj.setInput(objIN.getOutputObj())
874 925
875 926 def connectObjects(self):
876 927
877 928 for thisPUConfObj in self.procUnitConfObjDict.values():
878 929
879 930 inputId = thisPUConfObj.getInputId()
880 931
881 932 if int(inputId) == 0:
882 933 continue
883 934
884 935 #Get input object
885 936 puConfINObj = self.procUnitConfObjDict[inputId]
886 937 puObjIN = puConfINObj.getProcUnitObj()
887 938
888 939 #Get current object
889 940 thisPUObj = thisPUConfObj.getProcUnitObj()
890 941
891 942 self.__connect(puObjIN, thisPUObj)
892 943
893 944 def run(self):
894 945
895 946 # for readUnitConfObj in self.readUnitConfObjList:
896 947 # readUnitConfObj.run()
897 948 print
898 949 print "*"*40
899 950 print " Starting SIGNAL CHAIN PROCESSING "
900 951 print "*"*40
901 952 print
902 953
903 954 keyList = self.procUnitConfObjDict.keys()
904 955 keyList.sort()
905 956
906 957 while(True):
907 958
908 959 finalSts = False
909 960
910 961 for procKey in keyList:
911 962 # print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
912 963
913 964 procUnitConfObj = self.procUnitConfObjDict[procKey]
914 965 sts = procUnitConfObj.run()
915 966 finalSts = finalSts or sts
916 967
917 968 #If every process unit finished so end process
918 969 if not(finalSts):
919 970 print "Every process unit have finished"
920 971 break
921 972
922 973 if self.control['pause']:
923 974 print "Process suspended"
924 975
925 976 while True:
926 977 sleep(0.1)
927 978
928 979 if not self.control['pause']:
929 980 break
930 981
931 982 if self.control['stop']:
932 983 break
933 984 print "Process reinitialized"
934 985
935 986 if self.control['stop']:
936 987 print "Process stopped"
937 988 break
938 989
939 990 #Closing every process
940 991 for procKey in keyList:
941 992 procUnitConfObj = self.procUnitConfObjDict[procKey]
942 993 procUnitConfObj.close()
943 994
944 995 print "Process finished"
945 996
946 997 def start(self, filename):
947 998
948 999 self.writeXml(filename)
949 1000 self.readXml(filename)
950 1001
951 1002 self.createObjects()
952 1003 self.connectObjects()
953 1004 self.run()
954 1005
1006 class ControllerThread(threading.Thread, Project):
1007
1008 def __init__(self, filename):
1009
1010 threading.Thread.__init__(self)
1011 Project.__init__(self)
1012
1013 self.setDaemon(True)
1014
1015 self.filename = filename
1016 self.control = {'stop':False, 'pause':False}
1017
1018 def stop(self):
1019 self.control['stop'] = True
1020
1021 def pause(self):
1022 self.control['pause'] = not(self.control['pause'])
1023
1024 def run(self):
1025 self.control['stop'] = False
1026 self.control['pause'] = False
1027
1028 self.readXml(self.filename)
1029 self.createObjects()
1030 self.connectObjects()
1031 Project.run(self)
1032
955 1033 if __name__ == '__main__':
956 1034
957 1035 desc = "Segundo Test"
958 1036 filename = "schain.xml"
959 1037
960 1038 controllerObj = Project()
961 1039
962 1040 controllerObj.setup(id = '191', name='test01', description=desc)
963 1041
964 1042 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
965 1043 path='data/rawdata/',
966 1044 startDate='2011/01/01',
967 1045 endDate='2012/12/31',
968 1046 startTime='00:00:00',
969 1047 endTime='23:59:59',
970 1048 online=1,
971 1049 walk=1)
972 1050
973 1051 # opObj00 = readUnitConfObj.addOperation(name='printInfo')
974 1052
975 1053 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
976 1054
977 1055 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
978 1056 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
979 1057
980 1058 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
981 1059 opObj10.addParameter(name='minHei', value='90', format='float')
982 1060 opObj10.addParameter(name='maxHei', value='180', format='float')
983 1061
984 1062 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='external')
985 1063 opObj12.addParameter(name='n', value='10', format='int')
986 1064
987 1065 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
988 1066 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
989 1067 # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='')
990 1068
991 1069
992 1070 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
993 1071 opObj11.addParameter(name='idfigure', value='1', format='int')
994 1072 opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str')
995 1073 opObj11.addParameter(name='zmin', value='40', format='int')
996 1074 opObj11.addParameter(name='zmax', value='90', format='int')
997 1075 opObj11.addParameter(name='showprofile', value='1', format='int')
998 1076
999 1077 # opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='external')
1000 1078 # opObj11.addParameter(name='idfigure', value='2', format='int')
1001 1079 # opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str')
1002 1080 # opObj11.addParameter(name='zmin', value='40', format='int')
1003 1081 # opObj11.addParameter(name='zmax', value='90', format='int')
1004 1082
1005 1083
1006 1084 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Voltage', inputId=procUnitConfObj0.getId())
1007 1085 #
1008 1086 # opObj12 = procUnitConfObj2.addOperation(name='CohInt', optype='external')
1009 1087 # opObj12.addParameter(name='n', value='2', format='int')
1010 1088 # opObj12.addParameter(name='overlapping', value='1', format='int')
1011 1089 #
1012 1090 # procUnitConfObj3 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj2.getId())
1013 1091 # procUnitConfObj3.addParameter(name='nFFTPoints', value='32', format='int')
1014 1092 #
1015 1093 # opObj11 = procUnitConfObj3.addOperation(name='SpectraPlot', optype='external')
1016 1094 # opObj11.addParameter(name='idfigure', value='2', format='int')
1017 1095 # opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str')
1018 1096 # opObj11.addParameter(name='zmin', value='40', format='int')
1019 1097 # opObj11.addParameter(name='zmax', value='90', format='int')
1020 1098 # opObj11.addParameter(name='showprofile', value='1', format='int')
1021 1099
1022 1100 # opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='external')
1023 1101 # opObj11.addParameter(name='idfigure', value='10', format='int')
1024 1102 # opObj11.addParameter(name='wintitle', value='RTI', format='str')
1025 1103 ## opObj11.addParameter(name='xmin', value='21', format='float')
1026 1104 ## opObj11.addParameter(name='xmax', value='22', format='float')
1027 1105 # opObj11.addParameter(name='zmin', value='40', format='int')
1028 1106 # opObj11.addParameter(name='zmax', value='90', format='int')
1029 1107 # opObj11.addParameter(name='showprofile', value='1', format='int')
1030 1108 # opObj11.addParameter(name='timerange', value=str(60), format='int')
1031 1109
1032 1110 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1033 1111 # opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist')
1034 1112 #
1035 1113 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1036 1114 # opObj12.addParameter(name='n', value='2', format='int')
1037 1115 #
1038 1116 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1039 1117 # opObj11.addParameter(name='idfigure', value='2', format='int')
1040 1118 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1041 1119 # opObj11.addParameter(name='zmin', value='70', format='int')
1042 1120 # opObj11.addParameter(name='zmax', value='90', format='int')
1043 1121 #
1044 1122 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1045 1123 # opObj10.addParameter(name='channelList', value='2,6', format='intlist')
1046 1124 #
1047 1125 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1048 1126 # opObj12.addParameter(name='n', value='2', format='int')
1049 1127 #
1050 1128 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1051 1129 # opObj11.addParameter(name='idfigure', value='3', format='int')
1052 1130 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1053 1131 # opObj11.addParameter(name='zmin', value='70', format='int')
1054 1132 # opObj11.addParameter(name='zmax', value='90', format='int')
1055 1133
1056 1134
1057 1135 # opObj12 = procUnitConfObj1.addOperation(name='decoder')
1058 1136 # opObj12.addParameter(name='ncode', value='2', format='int')
1059 1137 # opObj12.addParameter(name='nbauds', value='8', format='int')
1060 1138 # opObj12.addParameter(name='code0', value='001110011', format='int')
1061 1139 # opObj12.addParameter(name='code1', value='001110011', format='int')
1062 1140
1063 1141
1064 1142
1065 1143 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId())
1066 1144 #
1067 1145 # opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='external')
1068 1146 # opObj21.addParameter(name='n', value='2', format='int')
1069 1147 #
1070 1148 # opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='external')
1071 1149 # opObj11.addParameter(name='idfigure', value='4', format='int')
1072 1150 # opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str')
1073 1151 # opObj11.addParameter(name='zmin', value='70', format='int')
1074 1152 # opObj11.addParameter(name='zmax', value='90', format='int')
1075 1153
1076 1154 print "Escribiendo el archivo XML"
1077 1155
1078 1156 controllerObj.writeXml(filename)
1079 1157
1080 1158 print "Leyendo el archivo XML"
1081 1159 controllerObj.readXml(filename)
1082 1160 #controllerObj.printattr()
1083 1161
1084 1162 controllerObj.createObjects()
1085 1163 controllerObj.connectObjects()
1086 1164 controllerObj.run()
1087 1165
1088 1166 No newline at end of file
This diff has been collapsed as it changes many lines, (1760 lines changed) Show them Hide them
@@ -1,7053 +1,7261
1 1 # -*- coding: utf-8 -*-
2 2 """
3 3 Module implementing MainWindow.
4 4 #+++++++++++++GUI V1++++++++++++++#
5 5 @author: AlexanderValdezPortocarrero Γ±_Γ±
6 6 """
7 7 import os, sys, time
8 8 import datetime
9 9 import numpy
10 10 import Queue
11 11
12 12 from collections import OrderedDict
13 13 from os.path import expanduser
14 14 from time import sleep
15 import ast
15 16
16 17 from PyQt4.QtGui import QMainWindow
17 18 from PyQt4.QtCore import pyqtSignature
18 19 from PyQt4.QtCore import pyqtSignal
19 20 from PyQt4 import QtCore
20 21 from PyQt4 import QtGui
21 22
22 23 from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess
23 24 from schainpy.gui.viewer.ui_ftp import Ui_Ftp
24 25 from schainpy.gui.viewer.ui_mainwindow import Ui_BasicWindow
25 from schainpy.controller import Project
26 from schainpy.controller import Project, ControllerThread
26 27
27 28 from propertiesViewModel import TreeModel, PropertyBuffer
28 29 from parametersModel import ProjectParms
29 30
30 31 from schainpy.gui.figures import tools
31 from schainpy.gui.viewcontroller.comm import ControllerThread
32 # from schainpy.gui.viewcontroller.comm import ControllerThread
32 33
33 34 FIGURES_PATH = tools.get_path()
35 TEMPORAL_FILE = "./.temp.xml"
34 36
35 37 def isRadarFile(file):
36 38 try:
37 39 year = int(file[1:5])
38 40 doy = int(file[5:8])
39 41 set = int(file[8:11])
40 42 except:
41 43 return 0
42 44
43 45 return 1
44 46
45 47 def isRadarPath(path):
46 48 try:
47 49 year = int(path[1:5])
48 50 doy = int(path[5:8])
49 51 except:
50 52 return 0
51 53
52 54 return 1
53 55
54 56 class BasicWindow(QMainWindow, Ui_BasicWindow):
55 57 """
56 58 """
57 59 def __init__(self, parent=None):
58 60 """
59 61
60 62 """
61 63 QMainWindow.__init__(self, parent)
62 64 self.setupUi(self)
63 65 self.__puObjDict = {}
64 66 self.__itemTreeDict = {}
65 67 self.readUnitConfObjList = []
66 68 self.operObjList = []
67 69 self.projecObjView = None
68 70 self.idProject = 0
69 71 # self.idImag = 0
70 72
71 73 self.idImagscope = 0
72 74 self.idImagspectra = 0
73 75 self.idImagcross = 0
74 76 self.idImagrti = 0
75 77 self.idImagcoherence = 0
76 78 self.idImagpower = 0
77 79 self.idImagrtinoise = 0
78 80 self.idImagspectraHeis = 0
79 81 self.idImagrtiHeis = 0
80 82
83 self.dataPath = None
81 84 self.online = 0
82 85 self.walk = 0
83 86 self.create = False
84 87 self.selectedItemTree = None
85 88 self.controllerObj = None
86 89 # self.commCtrlPThread = None
87 90 # self.create_figure()
88 91 self.temporalFTP = ftpBuffer()
89 92 self.projectProperCaracteristica = []
90 93 self.projectProperPrincipal = []
91 94 self.projectProperDescripcion = []
92 95 self.volProperCaracteristica = []
93 96 self.volProperPrincipal = []
94 97 self.volProperDescripcion = []
95 98 self.specProperCaracteristica = []
96 99 self.specProperPrincipal = []
97 100 self.specProperDescripcion = []
98 101
99 102 self.specHeisProperCaracteristica = []
100 103 self.specHeisProperPrincipal = []
101 104 self.specHeisProperDescripcion = []
102 105
103 106 # self.pathWorkSpace = './'
104 107
105 108 self.__projectObjDict = {}
106 109 self.__operationObjDict = {}
107 110
108 111 self.__ftpProcUnitAdded = False
109 112 self.__ftpProcUnitId = None
110 113 self.__initialized = False
111 114
112 115 # self.create_comm()
113 116 self.create_updating_timer()
114 117 self.setParameter()
115 118
116 119 @pyqtSignature("")
117 120 def on_actionOpen_triggered(self):
118 121 """
119 122 Slot documentation goes here.
120 123 """
121 124 self.openProject()
122 125
123 126 @pyqtSignature("")
124 127 def on_actionCreate_triggered(self):
125 128 """
126 129 Slot documentation goes here.
127 130 """
128 131 self.setInputsProject_View()
129 132 self.create = True
130 133
131 134 @pyqtSignature("")
132 135 def on_actionSave_triggered(self):
133 136 """
134 137 Slot documentation goes here.
135 138 """
136 139 self.saveProject()
137 140
138 141 @pyqtSignature("")
139 142 def on_actionClose_triggered(self):
140 143 """
141 144 Slot documentation goes here.
142 145 """
143 146 self.close()
144 147
145 148 @pyqtSignature("")
146 149 def on_actionStart_triggered(self):
147 150 """
148 151 """
149 152 self.playProject()
150 153
151 154 @pyqtSignature("")
152 155 def on_actionPause_triggered(self):
153 156 """
154 157 """
155 158 self.pauseProject()
156 159
157 160 @pyqtSignature("")
158 161 def on_actionStop_triggered(self):
159 162 """
160 163 """
161 164 self.stopProject()
162 165
163 166 @pyqtSignature("")
164 167 def on_actionFTP_triggered(self):
165 168 """
166 169 """
167 170 self.configFTPWindowObj = Ftp(self)
168 171 # if self.temporalFTP.create:
169 172 if self.temporalFTP.createforView:
170 173 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
171 174 self.configFTPWindowObj.setParmsfromTemporal(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
172 175 self.configFTPWindowObj.show()
173 176 self.configFTPWindowObj.closed.connect(self.createFTPConfig)
174 177
175 178 def createFTPConfig(self):
176 self.console.clear()
179
177 180 if not self.configFTPWindowObj.create:
181 self.console.clear()
178 182 self.console.append("There is no FTP configuration")
179 183 return
180 184 self.console.append("Push Ok in Spectra view to Add FTP Configuration")
181 185 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.configFTPWindowObj.getParmsFromFtpWindow()
182 186 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
183 187
184 188 @pyqtSignature("")
185 189 def on_actionOpenToolbar_triggered(self):
186 190 """
187 191 Slot documentation goes here.
188 192 """
189 193 self.openProject()
190 194
191 195 @pyqtSignature("")
192 196 def on_actionCreateToolbar_triggered(self):
193 197 """
194 198 Slot documentation goes here.
195 199 """
196 200 self.setInputsProject_View()
197 201 self.create = True
198 202
199 203 @pyqtSignature("")
200 204 def on_actionAddPU_triggered(self):
201 205 if len(self.__projectObjDict) == 0:
202 206 outputstr = "First Create a Project then add Processing Unit"
203 207 self.console.clear()
204 208 self.console.append(outputstr)
205 209 return 0
206 210 else:
207 211 self.addPUWindow()
208 212 self.console.clear()
209 213 self.console.append("Please, Choose the type of Processing Unit")
210 214 self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
211 215 self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
212 216 self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
213 217
214 218
215 219 @pyqtSignature("")
216 220 def on_actionSaveToolbar_triggered(self):
217 221 """
218 222 Slot documentation goes here.
219 223 """
220 224 self.saveProject()
221 225
222 226 @pyqtSignature("")
223 227 def on_actionStarToolbar_triggered(self):
224 228 """
225 229 Slot documentation goes here.
226 230 """
227 231 self.playProject()
228 232
229 233 @pyqtSignature("")
230 234 def on_actionPauseToolbar_triggered(self):
231 235
232 236 self.pauseProject()
233 237
234 238 @pyqtSignature("")
235 239 def on_actionStopToolbar_triggered(self):
236 240 """
237 241 Slot documentation goes here.
238 242 """
239 243 self.stopProject()
240 244
241 245 @pyqtSignature("int")
242 246 def on_proComReadMode_activated(self, index):
243 247 """
244 248 SELECCION DEL MODO DE LECTURA ON=1, OFF=0
245 249 """
246 250 if index == 0:
247 251 self.online = 0
248 252 self.proDelay.setText("0")
249 self.proSet.setText("0")
253 self.proSet.setText("")
250 254 self.proSet.setEnabled(False)
251 255 self.proDelay.setEnabled(False)
252 256 elif index == 1:
253 257 self.online = 1
254 258 self.proSet.setText(" ")
255 259 self.proDelay.setText("5")
256 260 self.proSet.setEnabled(True)
257 261 self.proDelay.setEnabled(True)
258 262
259 263 @pyqtSignature("int")
260 264 def on_proComDataType_activated(self, index):
261 265 """
262 266 Voltage or Spectra
263 267 """
268 self.labelSet.show()
269 self.proSet.show()
270
271 self.labelIPPKm.hide()
272 self.proIPPKm.hide()
273
264 274 if index == 0:
265 275 extension = '.r'
266 276 elif index == 1:
267 277 extension = '.pdata'
268 278 elif index == 2:
269 279 extension = '.fits'
270 280 elif index == 3:
271 281 extension = '.hdf5'
272 282
283 self.labelSet.hide()
284 self.proSet.hide()
285 self.labelIPPKm.show()
286 self.proIPPKm.show()
287
273 288 self.proDataType.setText(extension)
274 self.console.clear()
275 289
276 290 @pyqtSignature("int")
277 291 def on_proComWalk_activated(self, index):
278 292 """
279 293
280 294 """
281 295 if index == 0:
282 296 self.walk = 0
283 297 elif index == 1:
284 298 self.walk = 1
285 299
286 300 @pyqtSignature("")
287 301 def on_proToolPath_clicked(self):
288 302 """
289 303 Choose your path
290 304 """
291 self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
292 self.proDataPath.setText(self.dataPath)
305
306 current_dpath = './'
307 if self.dataPath:
308 current_dpath = self.dataPath
309
310 datapath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', current_dpath, QtGui.QFileDialog.ShowDirsOnly))
311
312 #If it was canceled
313 if not datapath:
314 return
315
316 #If any change was done
317 if datapath == self.dataPath:
318 return
319
320 self.proDataPath.setText(datapath)
321
322 self.actionStart.setEnabled(False)
323 self.actionStarToolbar.setEnabled(False)
324 self.proOk.setEnabled(False)
293 325
294 326 self.proComStartDate.clear()
295 327 self.proComEndDate.clear()
296 328
297 if not os.path.exists(self.dataPath):
298 self.proOk.setEnabled(False)
329 if not os.path.exists(datapath):
330
299 331 self.console.clear()
300 332 self.console.append("Write a correct a path")
301 333 return
334
335 self.dataPath = datapath
336
302 337 self.console.clear()
303 self.console.append("Select the read mode")
338 self.console.append("Select the read mode and press 'load button'")
304 339
305 340
306 341 @pyqtSignature("")
307 342 def on_proLoadButton_clicked(self):
308 343
309 344 self.console.clear()
310 345
311 346 parameter_list = self.checkInputsProject()
312 347
313 348 if not parameter_list[0]:
314 349 return
315 350
316 351 parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set = parameter_list
317 352
318 353 if read_mode == "Offline":
319 354 self.proComStartDate.clear()
320 355 self.proComEndDate.clear()
321 356 self.proComStartDate.setEnabled(True)
322 357 self.proComEndDate.setEnabled(True)
323 358 self.proStartTime.setEnabled(True)
324 359 self.proEndTime.setEnabled(True)
325 360 self.frame_2.setEnabled(True)
326 361
327 362 if read_mode == "Online":
328 363 self.proComStartDate.addItem("2000/01/30")
329 364 self.proComEndDate.addItem("2016/12/31")
330 365 self.proComStartDate.setEnabled(False)
331 366 self.proComEndDate.setEnabled(False)
332 367 self.proStartTime.setEnabled(False)
333 368 self.proEndTime.setEnabled(False)
334 369 self.frame_2.setEnabled(True)
335 370
336 371 self.loadDays(data_path, ext, walk)
337 372
338 373 @pyqtSignature("int")
339 374 def on_proComStartDate_activated(self, index):
340 375 """
341 376 SELECCION DEL RANGO DE FECHAS -START DATE
342 377 """
343 378 stopIndex = self.proComEndDate.count() - self.proComEndDate.currentIndex()
344 379 self.proComEndDate.clear()
345 380 for i in self.dateList[index:]:
346 381 self.proComEndDate.addItem(i)
347 382 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - stopIndex)
348 383
349 384 @pyqtSignature("int")
350 385 def on_proComEndDate_activated(self, index):
351 386 """
352 387 SELECCION DEL RANGO DE FECHAS-END DATE
353 388 """
354 389 startIndex = self.proComStartDate.currentIndex()
355 390 stopIndex = self.proComEndDate.count() - index
356 391 self.proComStartDate.clear()
357 392 for i in self.dateList[:len(self.dateList) - stopIndex + 1]:
358 393 self.proComStartDate.addItem(i)
359 394 self.proComStartDate.setCurrentIndex(startIndex)
360 395
361 396 @pyqtSignature("")
362 397 def on_proOk_clicked(self):
363 398 """
364 399 AΓ±ade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml.
365 400 Prepara la configuraciΓ³n del diΓ‘grama del Arbol del treeView numero 2
366 401 """
402
403 self.actionStart.setEnabled(False)
404 self.actionStarToolbar.setEnabled(False)
405
367 406 if self.create:
368 self.idProject += 1
369 projectId = self.idProject
407
408 projectId = self.__getNewProjectId()
409
410 if not projectId:
411 return 0
412
370 413 projectObjView = self.createProjectView(projectId)
414
415 if not projectObjView:
416 return 0
417
371 418 readUnitObj = self.createReadUnitView(projectObjView)
372 self.addProject2ProjectExplorer(id=projectId, name=projectObjView.name)
419
420 if not readUnitObj:
421 return 0
422
373 423 else:
374 424 projectObjView = self.updateProjectView()
425
426 if not projectObjView:
427 return 0
428
375 429 projectId = projectObjView.getId()
376 430 idReadUnit = projectObjView.getReadUnitId()
377 431 readUnitObj = self.updateReadUnitView(projectObjView, idReadUnit)
378 432
433 if not readUnitObj:
434 return 0
435
379 436 self.__itemTreeDict[projectId].setText(projectObjView.name)
380 437 # Project Properties
381 438 self.refreshProjectProperties(projectObjView)
382 439 # Disable tabProject after finish the creation
383 self.tabProject.setEnabled(True)
440
441 self.actionStart.setEnabled(True)
442 self.actionStarToolbar.setEnabled(True)
443 self.console.clear()
444 self.console.append("The project parameters were validated")
445
446 return 1
384 447
385 448 @pyqtSignature("")
386 449 def on_proClear_clicked(self):
387 self.setInputsProject_View()
388 projectObj = self.getSelectedProjectObj()
450
451 self.console.clear()
389 452
390 453 @pyqtSignature("int")
391 454 def on_volOpCebChannels_stateChanged(self, p0):
392 455 """
393 456 Check Box habilita operaciones de SelecciοΏ½n de Canales
394 457 """
395 458 if p0 == 2:
396 459 self.volOpComChannels.setEnabled(True)
397 460 self.volOpChannel.setEnabled(True)
398 461
399 462 if p0 == 0:
400 463 self.volOpComChannels.setEnabled(False)
401 464 self.volOpChannel.setEnabled(False)
402 465 self.volOpChannel.clear()
403 466
404 467 @pyqtSignature("int")
405 468 def on_volOpCebHeights_stateChanged(self, p0):
406 469 """
407 470 Check Box habilita operaciones de SelecciοΏ½n de Alturas
408 471 """
409 472 if p0 == 2:
410 473 self.volOpHeights.setEnabled(True)
411 474 self.volOpComHeights.setEnabled(True)
412 475
413 476 if p0 == 0:
414 477 self.volOpHeights.setEnabled(False)
415 478 self.volOpHeights.clear()
416 479 self.volOpComHeights.setEnabled(False)
417 480
418 481 @pyqtSignature("int")
419 482 def on_volOpCebFilter_stateChanged(self, p0):
420 483 """
421 484 Name='Decoder', optype='other'
422 485 """
423 486 if p0 == 2:
424 487 self.volOpFilter.setEnabled(True)
425 488
426 489 if p0 == 0:
427 490 self.volOpFilter.setEnabled(False)
428 491 self.volOpFilter.clear()
429 492
430 493 @pyqtSignature("int")
431 494 def on_volOpCebProfile_stateChanged(self, p0):
432 495 """
433 496 Check Box habilita ingreso del rango de Perfiles
434 497 """
435 498 if p0 == 2:
436 499 self.volOpComProfile.setEnabled(True)
437 500 self.volOpProfile.setEnabled(True)
438 501
439 502 if p0 == 0:
440 503 self.volOpComProfile.setEnabled(False)
441 504 self.volOpProfile.setEnabled(False)
442 505 self.volOpProfile.clear()
443 506
444 507 @pyqtSignature("int")
508 def on_volOpComProfile_activated(self, index):
509 """
510 Check Box habilita ingreso del rango de Perfiles
511 """
512 #Profile List
513 if index == 0:
514 self.volOpProfile.setToolTip('List of selected profiles. Example: 0, 1, 2, 3, 4, 5, 6, 7')
515
516 #Profile Range
517 if index == 1:
518 self.volOpProfile.setToolTip('Minimum and maximum profile index. Example: 0, 7')
519
520 #Profile Range List
521 if index == 2:
522 self.volOpProfile.setToolTip('List of profile ranges. Example: (0, 7), (12, 19), (100, 200)')
523
524 @pyqtSignature("int")
445 525 def on_volOpCebDecodification_stateChanged(self, p0):
446 526 """
447 527 Check Box habilita
448 528 """
449 529 if p0 == 2:
450 530 self.volOpComCode.setEnabled(True)
451 531 self.volOpComMode.setEnabled(True)
452 532 if p0 == 0:
453 533 self.volOpComCode.setEnabled(False)
454 534 self.volOpComMode.setEnabled(False)
455 535
456 536 @pyqtSignature("int")
537 def on_volOpComCode_activated(self, index):
538 """
539 Check Box habilita ingreso
540 """
541 if index == 13:
542 self.volOpCode.setEnabled(True)
543 else:
544 self.volOpCode.setEnabled(False)
545
546 if index == 0:
547 code = ''
548 self.volOpCode.setText(str(code))
549 return
550
551 if index == 1:
552 code = '(1,1,-1)'
553 nCode = '1'
554 nBaud = '3'
555 if index == 2:
556 code = '(1,1,-1,1)'
557 nCode = '1'
558 nBaud = '4'
559 if index == 3:
560 code = '(1,1,1,-1,1)'
561 nCode = '1'
562 nBaud = '5'
563 if index == 4:
564 code = '(1,1,1,-1,-1,1,-1)'
565 nCode = '1'
566 nBaud = '7'
567 if index == 5:
568 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1)'
569 nCode = '1'
570 nBaud = '11'
571 if index == 6:
572 code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1)'
573 nCode = '1'
574 nBaud = '13'
575 if index == 7:
576 code = '(1,1,-1,-1,-1,1)'
577 nCode = '2'
578 nBaud = '3'
579 if index == 8:
580 code = '(1,1,-1,1,-1,-1,1,-1)'
581 nCode = '2'
582 nBaud = '4'
583 if index == 9:
584 code = '(1,1,1,-1,1,-1,-1,-1,1,-1)'
585 nCode = '2'
586 nBaud = '5'
587 if index == 10:
588 code = '(1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1)'
589 nCode = '2'
590 nBaud = '7'
591 if index == 11:
592 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1 ,-1 ,-1 ,1 ,1,1,-1 ,1 ,1 ,-1 ,1)'
593 nCode = '2'
594 nBaud = '11'
595 if index == 12:
596 code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1)'
597 nCode = '2'
598 nBaud = '13'
599
600 code = ast.literal_eval(code)
601 nCode = int(nCode)
602 nBaud = int(nBaud)
603
604 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
605
606 self.volOpCode.setText(str(code))
607
608 @pyqtSignature("int")
457 609 def on_volOpCebFlip_stateChanged(self, p0):
458 610 """
459 611 Check Box habilita ingresode del numero de Integraciones a realizar
460 612 """
461 613 if p0 == 2:
462 614 self.volOpFlip.setEnabled(True)
463 615 if p0 == 0:
464 616 self.volOpFlip.setEnabled(False)
465 617 self.volOpFlip.clear()
466 618
467 619 @pyqtSignature("int")
468 620 def on_volOpCebCohInt_stateChanged(self, p0):
469 621 """
470 622 Check Box habilita ingresode del numero de Integraciones a realizar
471 623 """
472 624 if p0 == 2:
473 625 self.volOpCohInt.setEnabled(True)
474 626 if p0 == 0:
475 627 self.volOpCohInt.setEnabled(False)
476 628 self.volOpCohInt.clear()
477 629
478 630 @pyqtSignature("int")
479 631 def on_volOpCebRadarfrequency_stateChanged(self, p0):
480 632 """
481 633 Check Box habilita ingresode del numero de Integraciones a realizar
482 634 """
483 635 if p0 == 2:
484 636 self.volOpRadarfrequency.setEnabled(True)
485 637 if p0 == 0:
486 638 self.volOpRadarfrequency.clear()
487 639 self.volOpRadarfrequency.setEnabled(False)
488 640
489 641 @pyqtSignature("")
490 642 def on_volOutputToolPath_clicked(self):
491 643 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
492 644 self.volOutputPath.setText(dirOutPath)
493 645
494 646 @pyqtSignature("")
495 647 def on_specOutputToolPath_clicked(self):
496 648 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
497 649 self.specOutputPath.setText(dirOutPath)
498 650
499 651 @pyqtSignature("")
500 652 def on_specHeisOutputToolPath_clicked(self):
501 653 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
502 654 self.specHeisOutputPath.setText(dirOutPath)
503 655
504 656 @pyqtSignature("")
505 657 def on_specHeisOutputMetadaToolPath_clicked(self):
506 658
507 659 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
508 660 self.specHeisOutputMetada.setText(filename)
509 661
510 662 @pyqtSignature("")
511 663 def on_volOpOk_clicked(self):
512 664 """
513 665 BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES AοΏ½ADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO
514 666 PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML
515 667 """
516 668
517 669 checkPath = False
518 670
519 671 self.actionSaveToolbar.setEnabled(False)
520 672 self.actionStarToolbar.setEnabled(False)
521 673
522 674 puObj = self.getSelectedItemObj()
523 675 puObj.removeOperations()
524 676
525 677 if self.volOpCebRadarfrequency.isChecked():
526 678 value = str(self.volOpRadarfrequency.text())
527 679 format = 'float'
528 680 name_operation = 'setRadarFrequency'
529 681 name_parameter = 'frequency'
530 682 if not value == "":
531 683 try:
532 684 radarfreq = float(self.volOpRadarfrequency.text())
533 685 except:
534 686 self.console.clear()
535 687 self.console.append("Write the parameter Radar Frequency type float")
536 688 return 0
537 689 opObj = puObj.addOperation(name=name_operation)
538 690 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
539 691
540 692 if self.volOpCebChannels.isChecked():
541 693 value = str(self.volOpChannel.text())
542 694
543 695 if value == "":
544 696 print "Please fill channel list"
545 697 return 0
546 698
547 699 format = 'intlist'
548 700 if self.volOpComChannels.currentIndex() == 0:
549 701 name_operation = "selectChannels"
550 702 name_parameter = 'channelList'
551 703 else:
552 704 name_operation = "selectChannelsByIndex"
553 705 name_parameter = 'channelIndexList'
554 706
555 707 opObj = puObj.addOperation(name=name_operation)
556 708 opObj.addParameter(name=name_parameter, value=value, format=format)
557 709
558 710 if self.volOpCebHeights.isChecked():
559 711 value = str(self.volOpHeights.text())
560 712
561 713 if value == "":
562 714 print "Please fill height range"
563 715 return 0
564 716
565 717 valueList = value.split(',')
566 718 format = 'float'
567 719 if self.volOpComHeights.currentIndex() == 0:
568 720 name_operation = 'selectHeights'
569 721 name_parameter1 = 'minHei'
570 722 name_parameter2 = 'maxHei'
571 723 else:
572 724 name_operation = 'selectHeightsByIndex'
573 725 name_parameter1 = 'minIndex'
574 726 name_parameter2 = 'maxIndex'
575 727
576 728 opObj = puObj.addOperation(name=name_operation)
577 729 opObj.addParameter(name=name_parameter1, value=valueList[0], format=format)
578 730 opObj.addParameter(name=name_parameter2, value=valueList[1], format=format)
579 731
580 732 if self.volOpCebFilter.isChecked():
581 733 value = str(self.volOpFilter.text())
582 734 if value == "":
583 735 print "Please fill filter value"
584 736 return 0
585 737
586 738 format = 'int'
587 739 name_operation = 'filterByHeights'
588 740 name_parameter = 'window'
589 741 opObj = puObj.addOperation(name=name_operation)
590 742 opObj.addParameter(name=name_parameter, value=value, format=format)
591 743
592 744 if self.volOpCebProfile.isChecked():
593 745 value = str(self.volOpProfile.text())
594 746
595 747 if value == "":
596 748 print "Please fill profile value"
597 749 return 0
598 750
599 751 format = 'intlist'
600 752 optype = 'other'
601 753 name_operation = 'ProfileSelector'
602 754 if self.volOpComProfile.currentIndex() == 0:
603 755 name_parameter = 'profileList'
604 else:
756 if self.volOpComProfile.currentIndex() == 1:
605 757 name_parameter = 'profileRangeList'
758 if self.volOpComProfile.currentIndex() == 2:
759 name_parameter = 'rangeList'
760
606 761 opObj = puObj.addOperation(name='ProfileSelector', optype='other')
607 762 opObj.addParameter(name=name_parameter, value=value, format=format)
608 763
609 764 if self.volOpCebDecodification.isChecked():
610 name_operation = 'Decoder'
611 optype = 'other'
612 format1 = 'floatlist'
613 format2 = 'int'
614 format3 = 'int'
615 format4 = 'int'
616 name_parameter1 = 'code'
617 name_parameter2 = 'nCode'
618 name_parameter3 = 'nBaud'
619 name_parameter4 = 'mode'
620 765
621 if self.volOpComCode.currentIndex() == 0:
622 value1 = '1,1,-1'
623 value2 = '1'
624 value3 = '3'
625 if self.volOpComCode.currentIndex() == 1:
626 value1 = '1,1,-1,1'
627 value2 = '1'
628 value3 = '4'
629 if self.volOpComCode.currentIndex() == 2:
630 value1 = '1,1,1,-1,1'
631 value2 = '1'
632 value3 = '5'
633 if self.volOpComCode.currentIndex() == 3:
634 value1 = '1,1,1,-1,-1,1,-1'
635 value2 = '1'
636 value3 = '7'
637 if self.volOpComCode.currentIndex() == 4:
638 value1 = '1,1,1,-1,-1,-1,1,-1,-1,1,-1'
639 value2 = '1'
640 value3 = '11'
641 if self.volOpComCode.currentIndex() == 5:
642 value1 = '1,1,1,1,1,-1,-1,1,1,-1,1,-1,1'
643 value2 = '1'
644 value3 = '13'
645 if self.volOpComCode.currentIndex() == 6:
646 value1 = '1,1,-1,-1,-1,1'
647 value2 = '2'
648 value3 = '3'
649 if self.volOpComCode.currentIndex() == 7:
650 value1 = '1,1,-1,1,-1,-1,1,-1'
651 value2 = '2'
652 value3 = '4'
653 if self.volOpComCode.currentIndex() == 8:
654 value1 = '1,1,1,-1,1,-1,-1,-1,1,-1'
655 value2 = '2'
656 value3 = '5'
657 if self.volOpComCode.currentIndex() == 9:
658 value1 = '1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1'
659 value2 = '2'
660 value3 = '7'
661 if self.volOpComCode.currentIndex() == 10:
662 value1 = '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'
664 value3 = '11'
665 if self.volOpComCode.currentIndex() == 11:
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'
667 value2 = '2'
668 value3 = '13'
669 766 if self.volOpComMode.currentIndex() == 0:
670 value4 = '0'
767 mode = '0'
671 768 if self.volOpComMode.currentIndex() == 1:
672 value4 = '1'
769 mode = '1'
673 770 if self.volOpComMode.currentIndex() == 2:
674 value4 = '2'
675 opObj = puObj.addOperation(name=name_operation, optype='other')
676 if self.volOpComCode.currentIndex() == 12:
677 pass
771 mode = '2'
772
773 if self.volOpComCode.currentIndex() == 0:
774 opObj = puObj.addOperation(name='Decoder', optype='other')
775 opObj.addParameter(name='mode', value=mode, format='int')
678 776 else:
679 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
680 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
681 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
682 opObj.addParameter(name=name_parameter4, value=value4, format=format4)
777 #User defined
778 code = str(self.volOpCode.text())
779 try:
780 code_tmp = ast.literal_eval(code)
781 except:
782 code_tmp = []
783
784 if len(code_tmp) < 1:
785 self.console.append("Please fill the code value")
786 return 0
787
788 if len(code_tmp) == 1 or type(code_tmp[0]) != int:
789 nBaud = len(code_tmp[0])
790 nCode = len(code_tmp)
791 else:
792 nBaud = len(code_tmp)
793 nCode = 1
794
795 opObj = puObj.addOperation(name='Decoder', optype='other')
796
797 code = code.replace("(", "")
798 code = code.replace(")", "")
799 code = code.replace("[", "")
800 code = code.replace("]", "")
801 opObj.addParameter(name='code', value=code, format='intlist')
802 opObj.addParameter(name='nCode', value=nCode, format='int')
803 opObj.addParameter(name='nBaud', value=nBaud, format='int')
804 opObj.addParameter(name='mode', value=mode, format='int')
683 805
684 806 if self.volOpCebFlip.isChecked():
685 807 name_operation = 'deFlip'
686 808 optype = 'self'
687 809 value = str(self.volOpFlip.text())
688 810 name_parameter = 'channelList'
689 811 format = 'intlist'
690 812
691 813 opObj = puObj.addOperation(name=name_operation, optype=optype)
692 814 if value:
693 815 opObj.addParameter(name=name_parameter, value=value, format=format)
694 816
695 817 if self.volOpCebCohInt.isChecked():
696 818 name_operation = 'CohInt'
697 819 optype = 'other'
698 820 value = str(self.volOpCohInt.text())
821
822 if value == "":
823 print "Please fill number of coherent integrations"
824 return 0
825
699 826 name_parameter = 'n'
700 827 format = 'float'
701 828
702 829 opObj = puObj.addOperation(name=name_operation, optype=optype)
703 830 opObj.addParameter(name=name_parameter, value=value, format=format)
704 831
705 832 if self.volGraphCebshow.isChecked():
706 833 name_operation = 'Scope'
707 834 optype = 'other'
708 835 name_parameter = 'type'
709 836 value = 'Scope'
710 837 if self.idImagscope == 0:
711 838 self.idImagscope = 100
712 839 else:
713 840 self.idImagscope = self.idImagscope + 1
714 841
715 842 name_parameter1 = 'id'
716 843 value1 = int(self.idImagscope)
717 844 format1 = 'int'
718 845 format = 'str'
719 846
720 847 opObj = puObj.addOperation(name=name_operation, optype=optype)
721 848 # opObj.addParameter(name=name_parameter, value=value, format=format)
722 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
849 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
723 850
724 channelList = str(self.volGraphChannelList.text())
725 xvalue = str(self.volGraphfreqrange.text())
726 yvalue = str(self.volGraphHeightrange.text())
851 channelList = str(self.volGraphChannelList.text()).replace(" ","")
852 xvalue = str(self.volGraphfreqrange.text()).replace(" ","")
853 yvalue = str(self.volGraphHeightrange.text()).replace(" ","")
727 854
728 if self.volGraphChannelList.isModified():
729 try:
730 value = str(channelList)
731 except:
732 return 0
733 opObj.addParameter(name='channelList', value=value, format='intlist')
855 if channelList:
856 opObj.addParameter(name='channelList', value=channelList, format='intlist')
734 857
735 if not xvalue == "":
858 if xvalue:
736 859 xvalueList = xvalue.split(',')
737 860 try:
738 value0 = int(xvalueList[0])
739 value1 = int(xvalueList[1])
861 value0 = float(xvalueList[0])
862 value1 = float(xvalueList[1])
740 863 except:
741 864 return 0
742 opObj.addParameter(name='xmin', value=value0, format='int')
743 opObj.addParameter(name='xmax', value=value1, format='int')
865 opObj.addParameter(name='xmin', value=value0, format='float')
866 opObj.addParameter(name='xmax', value=value1, format='float')
744 867
745 868
746 869 if not yvalue == "":
747 870 yvalueList = yvalue.split(",")
748 871 try:
749 value = yvalueList[0]
750 value = yvalueList[1]
872 value0 = int(yvalueList[0])
873 value1 = int(yvalueList[1])
751 874 except:
752 875 return 0
753 opObj.addParameter(name='ymin', value=yvalueList[0], format='int')
754 opObj.addParameter(name='ymax', value=yvalueList[1], format='int')
876
877 opObj.addParameter(name='ymin', value=value0, format='int')
878 opObj.addParameter(name='ymax', value=value1, format='int')
755 879
756 880 if self.volGraphCebSave.isChecked():
757 881 checkPath = True
758 882 opObj.addParameter(name='save', value='1', format='int')
759 883 opObj.addParameter(name='figpath', value=self.volGraphPath.text(), format='str')
760 value = str(self.volGraphPrefix.text())
761 if not value == "":
762 try:
763 value = str(self.volGraphPrefix.text())
764 except:
765 self.console.clear()
766 self.console.append("Please Write prefix")
767 return 0
768 opObj.addParameter(name='figfile', value=self.volGraphPrefix.text(), format='str')
884 value = str(self.volGraphPrefix.text()).replace(" ","")
885 if value:
886 opObj.addParameter(name='figfile', value=value, format='str')
769 887
770 888 localfolder = None
771 889 if checkPath:
772 localfolder = str(self.specGraphPath.text())
890 localfolder = str(self.volGraphPath.text())
773 891 if localfolder == '':
774 892 self.console.clear()
775 893 self.console.append("Graphic path should be defined")
776 894 return 0
777 895
778 896 # if something happend
779 897 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Voltage')
780 898 if parms_ok:
781 899 name_operation = 'VoltageWriter'
782 900 optype = 'other'
783 901 name_parameter1 = 'path'
784 902 name_parameter2 = 'blocksPerFile'
785 903 name_parameter3 = 'profilesPerBlock'
786 904 value1 = output_path
787 905 value2 = blocksperfile
788 906 value3 = profilesperblock
789 907 format = "int"
790 908 opObj = puObj.addOperation(name=name_operation, optype=optype)
791 909 opObj.addParameter(name=name_parameter1, value=value1)
792 910 opObj.addParameter(name=name_parameter2, value=value2, format=format)
793 911 opObj.addParameter(name=name_parameter3, value=value3, format=format)
794 912
795 913 #---------NEW VOLTAGE PROPERTIES
796 914 self.refreshPUProperties(puObj)
797 915
798 916 self.console.clear()
799 917 self.console.append("If you want to save your project")
800 918 self.console.append("click on your project name in the Tree Project Explorer")
801 919
802 920 self.actionSaveToolbar.setEnabled(True)
803 921 self.actionStarToolbar.setEnabled(True)
804 922
805 923 return 1
806 924
807 925 """
808 926 Voltage Graph
809 927 """
810 928 @pyqtSignature("int")
811 929 def on_volGraphCebSave_stateChanged(self, p0):
812 930 """
813 931 Check Box habilita ingresode del numero de Integraciones a realizar
814 932 """
815 933 if p0 == 2:
816 934 self.volGraphPath.setEnabled(True)
817 935 self.volGraphPrefix.setEnabled(True)
818 936 self.volGraphToolPath.setEnabled(True)
819 937
820 938 if p0 == 0:
821 939 self.volGraphPath.setEnabled(False)
822 940 self.volGraphPrefix.setEnabled(False)
823 941 self.volGraphToolPath.setEnabled(False)
824 942
825 943 @pyqtSignature("")
826 944 def on_volGraphToolPath_clicked(self):
827 945 """
828 946 Donde se guardan los DATOS
829 947 """
830 948 self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
831 949 self.volGraphPath.setText(self.dataPath)
832 950
833 951 # if not os.path.exists(self.dataPath):
834 952 # self.volGraphOk.setEnabled(False)
835 953 # return
836 954
837 955 @pyqtSignature("int")
838 956 def on_volGraphCebshow_stateChanged(self, p0):
839 957 """
840 958 Check Box habilita ingresode del numero de Integraciones a realizar
841 959 """
842 960 if p0 == 0:
843 961
844 962 self.volGraphChannelList.setEnabled(False)
845 963 self.volGraphfreqrange.setEnabled(False)
846 964 self.volGraphHeightrange.setEnabled(False)
847 965 if p0 == 2:
848 966
849 967 self.volGraphChannelList.setEnabled(True)
850 968 self.volGraphfreqrange.setEnabled(True)
851 969 self.volGraphHeightrange.setEnabled(True)
852 970
853 971 """
854 972 Spectra operation
855 973 """
856 974 @pyqtSignature("int")
857 975 def on_specOpCebRadarfrequency_stateChanged(self, p0):
858 976 """
859 977 Check Box habilita ingresode del numero de Integraciones a realizar
860 978 """
861 979 if p0 == 2:
862 980 self.specOpRadarfrequency.setEnabled(True)
863 981 if p0 == 0:
864 982 self.specOpRadarfrequency.clear()
865 983 self.specOpRadarfrequency.setEnabled(False)
866 984
867 985
868 986 @pyqtSignature("int")
869 987 def on_specOpCebCrossSpectra_stateChanged(self, p0):
870 988 """
871 989 Habilita la opcion de aοΏ½adir el parοΏ½metro CrossSpectra a la Unidad de Procesamiento .
872 990 """
873 991 if p0 == 2:
874 992 # self.specOpnFFTpoints.setEnabled(True)
875 993 self.specOppairsList.setEnabled(True)
876 994 if p0 == 0:
877 995 # self.specOpnFFTpoints.setEnabled(False)
878 996 self.specOppairsList.setEnabled(False)
879 997
880 998 @pyqtSignature("int")
881 999 def on_specOpCebChannel_stateChanged(self, p0):
882 1000 """
883 1001 Habilita la opcion de aοΏ½adir el parοΏ½metro numero de Canales a la Unidad de Procesamiento .
884 1002 """
885 1003 if p0 == 2:
886 1004 self.specOpChannel.setEnabled(True)
887 1005 self.specOpComChannel.setEnabled(True)
888 1006 if p0 == 0:
889 1007 self.specOpChannel.setEnabled(False)
890 1008 self.specOpComChannel.setEnabled(False)
891 1009
892 1010 @pyqtSignature("int")
893 1011 def on_specOpCebHeights_stateChanged(self, p0):
894 1012 """
895 1013 Habilita la opcion de aοΏ½adir el parοΏ½metro de alturas a la Unidad de Procesamiento .
896 1014 """
897 1015 if p0 == 2:
898 1016 self.specOpComHeights.setEnabled(True)
899 1017 self.specOpHeights.setEnabled(True)
900 1018 if p0 == 0:
901 1019 self.specOpComHeights.setEnabled(False)
902 1020 self.specOpHeights.setEnabled(False)
903 1021
904 1022
905 1023 @pyqtSignature("int")
906 1024 def on_specOpCebIncoherent_stateChanged(self, p0):
907 1025 """
908 1026 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
909 1027 """
910 1028 if p0 == 2:
911 1029 self.specOpIncoherent.setEnabled(True)
912 1030 if p0 == 0:
913 1031 self.specOpIncoherent.setEnabled(False)
914 1032
915 1033 @pyqtSignature("int")
916 1034 def on_specOpCebRemoveDC_stateChanged(self, p0):
917 1035 """
918 1036 Habilita la opcion de aοΏ½adir el parοΏ½metro remover DC a la Unidad de Procesamiento .
919 1037 """
920 1038 if p0 == 2:
921 1039 self.specOpComRemoveDC.setEnabled(True)
922 1040 if p0 == 0:
923 1041 self.specOpComRemoveDC.setEnabled(False)
924 1042
925 1043 @pyqtSignature("int")
926 1044 def on_specOpCebgetNoise_stateChanged(self, p0):
927 1045 """
928 1046 Habilita la opcion de aοΏ½adir la estimacion de ruido a la Unidad de Procesamiento .
929 1047 """
930 1048 if p0 == 2:
931 1049 self.specOpgetNoise.setEnabled(True)
932 1050
933 1051 if p0 == 0:
934 1052 self.specOpgetNoise.setEnabled(False)
935 1053
1054
936 1055 def refreshID(self, puObj):
937 1056 opObj = puObj.getOperationObj(name='Scope')
938 1057 # opObj = puObj.getOpObjfromParamValue(value="Scope")
939 1058 if opObj == None:
940 1059 pass
941 1060 else:
942 1061 name_parameter1 = 'id'
943 1062 format1 = 'int'
944 1063 if self.idImagscope == 0:
945 1064 self.idImagscope = 100
946 1065 else:
947 1066 self.idImagscope = self.idImagscope + 1
948 1067 value1 = int(self.idImagscope)
949 1068 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
950 1069
951 1070 opObj = puObj.getOperationObj(name='SpectraPlot')
952 1071 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
953 1072 if opObj == None:
954 1073 pass
955 1074 else:
956 1075 name_parameter1 = 'id'
957 1076 format1 = 'int'
958 1077 if self.idImagspectra == 0:
959 1078 self.idImagspectra = 200
960 1079 else:
961 1080 self.idImagspectra = self.idImagspectra + 1
962 1081 value1 = int(self.idImagspectra)
963 1082 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
964 1083
965 1084 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
966 1085 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
967 1086 if opObj == None:
968 1087 pass
969 1088 else:
970 1089 name_parameter1 = 'id'
971 1090 format1 = 'int'
972 1091 if self.idImagcross == 0:
973 1092 self.idImagcross = 300
974 1093 else:
975 1094 self.idImagcross = self.idImagcross + 1
976 1095 value1 = int(self.idImagcross)
977 1096 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
978 1097
979 1098 opObj = puObj.getOperationObj(name='RTIPlot')
980 1099 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
981 1100 if opObj == None:
982 1101 pass
983 1102 else:
984 1103 name_parameter1 = 'id'
985 1104 format1 = 'int'
986 1105 if self.idImagrti == 0:
987 1106 self.idImagrti = 400
988 1107 else:
989 1108 self.idImagrti = self.idImagrti + 1
990 1109 value1 = int(self.idImagrti)
991 1110 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
992 1111
993 1112 opObj = puObj.getOperationObj(name='CoherenceMap')
994 1113 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
995 1114 if opObj == None:
996 1115 pass
997 1116 else:
998 1117 name_parameter1 = 'id'
999 1118 format1 = 'int'
1000 1119 if self.idImagcoherence == 0:
1001 1120 self.idImagcoherence = 500
1002 1121 else:
1003 1122 self.idImagcoherence = self.idImagcoherence + 1
1004 1123 value1 = int(self.idImagcoherence)
1005 1124 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1006 1125
1007 1126 opObj = puObj.getOperationObj(name='PowerProfilePlot')
1008 1127 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
1009 1128 if opObj == None:
1010 1129 pass
1011 1130 else:
1012 1131 name_parameter1 = 'id'
1013 1132 format1 = 'int'
1014 1133 if self.idImagpower == 0:
1015 1134 self.idImagpower = 600
1016 1135 else:
1017 1136 self.idImagpower = self.idImagpower + 1
1018 1137 value1 = int(self.idImagpower)
1019 1138 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1020 1139
1021 1140 opObj = puObj.getOperationObj(name='Noise')
1022 1141 # opObj = puObj.getOpObjfromParamValue(value="Noise")
1023 1142 if opObj == None:
1024 1143 pass
1025 1144 else:
1026 1145 name_parameter1 = 'id'
1027 1146 format1 = 'int'
1028 1147 if self.idImagrtinoise == 0:
1029 1148 self.idImagrtinoise = 700
1030 1149 else:
1031 1150 self.idImagrtinoise = self.idImagrtinoise + 1
1032 1151 value1 = int(self.idImagrtinoise)
1033 1152 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1034 1153
1035 1154 opObj = puObj.getOperationObj(name='SpectraHeisScope')
1036 1155 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
1037 1156 if opObj == None:
1038 1157 pass
1039 1158 else:
1040 1159 name_parameter1 = 'id'
1041 1160 format1 = 'int'
1042 1161 if self.idImagspectraHeis == 0:
1043 1162 self.idImagspectraHeis = 800
1044 1163 else:
1045 1164 self.idImagspectraHeis = self.idImagspectraHeis + 1
1046 1165 value1 = int(self.idImagspectraHeis)
1047 1166 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1048 1167
1049 1168 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
1050 1169 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
1051 1170 if opObj == None:
1052 1171 pass
1053 1172 else:
1054 1173 name_parameter1 = 'id'
1055 1174 format1 = 'int'
1056 1175 if self.idImagrtiHeis == 0:
1057 1176 self.idImagrtiHeis = 900
1058 1177 else:
1059 1178 self.idImagrtiHeis = self.idImagrtiHeis + 1
1060 1179 value1 = int(self.idImagrtiHeis)
1061 1180 opObj.changeParameter(name=name_parameter1, value=value1, format=format1)
1062 1181
1063 1182 @pyqtSignature("")
1064 1183 def on_specOpOk_clicked(self):
1065 1184 """
1066 1185 AΓ‘ADE OPERACION SPECTRA
1067 1186 """
1068 1187
1069 1188 addFTP = False
1070 1189 checkPath = False
1071 1190
1072 1191 self.actionSaveToolbar.setEnabled(False)
1073 1192 self.actionStarToolbar.setEnabled(False)
1074 1193
1075 1194 projectObj = self.getSelectedProjectObj()
1076 1195 puObj = self.getSelectedItemObj()
1077 1196
1078 1197 puObj.removeOperations()
1079 1198
1080 1199 if self.specOpCebRadarfrequency.isChecked():
1081 1200 value = self.specOpRadarfrequency.text()
1082 1201 format = 'float'
1083 1202 name_operation = 'setRadarFrequency'
1084 1203 name_parameter = 'frequency'
1085 1204 if not value == "":
1086 1205 try:
1087 1206 radarfreq = float(self.specOpRadarfrequency.text())
1088 1207 except:
1089 1208 self.console.clear()
1090 1209 self.console.append("Write the parameter Radar Frequency type float")
1091 1210 return 0
1092 1211 opObj = puObj.addOperation(name=name_operation)
1093 1212 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
1094 1213
1095 1214 inputId = puObj.getInputId()
1096 1215 inputPuObj = projectObj.getProcUnitObj(inputId)
1097 1216
1098 1217 if inputPuObj.datatype == 'Voltage' or inputPuObj.datatype == 'USRP':
1099 1218
1100 1219 try:
1101 1220 value = int(self.specOpnFFTpoints.text())
1102 1221 puObj.addParameter(name='nFFTPoints', value=value, format='int')
1103 1222 except:
1104 1223 self.console.clear()
1105 1224 self.console.append("Please write the number of FFT")
1106 1225 return 0
1107 1226
1108 1227 try:
1109 1228 value1 = int(self.specOpProfiles.text())
1110 1229 puObj.addParameter(name='nProfiles', value=value1, format='int')
1111 1230 except:
1112 1231 self.console.append("Please Write the number of Profiles")
1113 1232
1114 1233 try:
1115 1234 value2 = int(self.specOpippFactor.text())
1116 1235 puObj.addParameter(name='ippFactor' , value=value2 , format='int')
1117 1236 except:
1118 1237 self.console.append("Please Write the Number of IppFactor")
1119 1238
1120 1239
1121 1240 if self.specOpCebCrossSpectra.isChecked():
1122 1241 name_parameter = 'pairsList'
1123 1242 format = 'pairslist'
1124 1243 value2 = self.specOppairsList.text()
1244
1245 if value2 == "":
1246 print "Please fill the pairs list field"
1247 return 0
1248
1125 1249 puObj.addParameter(name=name_parameter, value=value2, format=format)
1126 1250
1127 1251 if self.specOpCebHeights.isChecked():
1128 1252 value = str(self.specOpHeights.text())
1129 1253
1130 1254 if value == "":
1131 1255 print "Please fill height range"
1132 1256 return 0
1133 1257
1134 1258 valueList = value.split(',')
1135 1259 format = 'float'
1136 1260 value0 = valueList[0]
1137 1261 value1 = valueList[1]
1138 1262
1139 1263 if self.specOpComHeights.currentIndex() == 0:
1140 1264 name_operation = 'selectHeights'
1141 1265 name_parameter1 = 'minHei'
1142 1266 name_parameter2 = 'maxHei'
1143 1267 else:
1144 1268 name_operation = 'selectHeightsByIndex'
1145 1269 name_parameter1 = 'minIndex'
1146 1270 name_parameter2 = 'maxIndex'
1147 1271 opObj = puObj.addOperation(name=name_operation)
1148 1272 opObj.addParameter(name=name_parameter1, value=value0, format=format)
1149 1273 opObj.addParameter(name=name_parameter2, value=value1, format=format)
1150 1274
1151 1275 if self.specOpCebChannel.isChecked():
1152 1276 value = str(self.specOpChannel.text())
1153 1277
1154 1278 if value == "":
1155 1279 print "Please fill channel list"
1156 1280 return 0
1157 1281
1158 1282 format = 'intlist'
1159 1283 if self.specOpComChannel.currentIndex() == 0:
1160 1284 name_operation = "selectChannels"
1161 1285 name_parameter = 'channelList'
1162 1286 else:
1163 1287 name_operation = "selectChannelsByIndex"
1164 1288 name_parameter = 'channelIndexList'
1165 1289 opObj = puObj.addOperation(name=name_operation)
1166 1290 opObj.addParameter(name=name_parameter, value=value, format=format)
1167 1291
1168 1292 if self.specOpCebIncoherent.isChecked():
1169 1293 value = str(self.specOpIncoherent.text())
1170 1294
1171 1295 if value == "":
1172 1296 print "Please fill Incoherent integration value"
1173 1297 return 0
1174 1298
1175 1299 name_operation = 'IncohInt'
1176 1300 optype = 'other'
1177 1301 if self.specOpCobIncInt.currentIndex() == 0:
1178 1302 name_parameter = 'timeInterval'
1179 1303 format = 'float'
1180 1304 else:
1181 1305 name_parameter = 'n'
1182 1306 format = 'float'
1183 1307
1184 1308 opObj = puObj.addOperation(name=name_operation, optype=optype)
1185 1309 opObj.addParameter(name=name_parameter, value=value, format=format)
1186 1310
1187 1311 if self.specOpCebRemoveDC.isChecked():
1188 1312 name_operation = 'removeDC'
1189 1313 name_parameter = 'mode'
1190 1314 format = 'int'
1191 1315 if self.specOpComRemoveDC.currentIndex() == 0:
1192 1316 value = 1
1193 1317 else:
1194 1318 value = 2
1195 1319 opObj = puObj.addOperation(name=name_operation)
1196 1320 opObj.addParameter(name=name_parameter, value=value, format=format)
1197 1321
1198 1322 if self.specOpCebRemoveInt.isChecked():
1199 1323 name_operation = 'removeInterference'
1200 1324 opObj = puObj.addOperation(name=name_operation)
1201 1325
1202 1326
1203 1327 if self.specOpCebgetNoise.isChecked():
1204 1328 value = self.specOpgetNoise.text()
1205 1329 valueList = value.split(',')
1206 1330 format = 'float'
1207 1331 name_operation = "getNoise"
1208 1332 opObj = puObj.addOperation(name=name_operation)
1209 1333
1210 1334 if not value == '':
1211 1335 valueList = value.split(',')
1212 1336 length = len(valueList)
1213 1337 if length == 1:
1214 1338 try:
1215 1339 value1 = float(valueList[0])
1216 1340 except:
1217 1341 self.console.clear()
1218 1342 self.console.append("Please Write correct parameter Get Noise")
1219 1343 return 0
1220 1344 name1 = 'minHei'
1221 1345 opObj.addParameter(name=name1, value=value1, format=format)
1222 1346 elif length == 2:
1223 1347 try:
1224 1348 value1 = float(valueList[0])
1225 1349 value2 = float(valueList[1])
1226 1350 except:
1227 1351 self.console.clear()
1228 1352 self.console.append("Please Write corrects parameter Get Noise")
1229 1353 return 0
1230 1354 name1 = 'minHei'
1231 1355 name2 = 'maxHei'
1232 1356 opObj.addParameter(name=name1, value=value1, format=format)
1233 1357 opObj.addParameter(name=name2, value=value2, format=format)
1234 1358
1235 1359 elif length == 3:
1236 1360 try:
1237 1361 value1 = float(valueList[0])
1238 1362 value2 = float(valueList[1])
1239 1363 value3 = float(valueList[2])
1240 1364 except:
1241 1365 self.console.clear()
1242 1366 self.console.append("Please Write corrects parameter Get Noise")
1243 1367 return 0
1244 1368 name1 = 'minHei'
1245 1369 name2 = 'maxHei'
1246 1370 name3 = 'minVel'
1247 1371 opObj.addParameter(name=name1, value=value1, format=format)
1248 1372 opObj.addParameter(name=name2, value=value2, format=format)
1249 1373 opObj.addParameter(name=name3, value=value3, format=format)
1250 1374
1251 1375 elif length == 4:
1252 1376 try:
1253 1377 value1 = float(valueList[0])
1254 1378 value2 = float(valueList[1])
1255 1379 value3 = float(valueList[2])
1256 1380 value4 = float(valueList[3])
1257 1381 except:
1258 1382 self.console.clear()
1259 1383 self.console.append("Please Write corrects parameter Get Noise")
1260 1384 return 0
1261 1385 name1 = 'minHei'
1262 1386 name2 = 'maxHei'
1263 1387 name3 = 'minVel'
1264 1388 name4 = 'maxVel'
1265 1389 opObj.addParameter(name=name1, value=value1, format=format)
1266 1390 opObj.addParameter(name=name2, value=value2, format=format)
1267 1391 opObj.addParameter(name=name3, value=value3, format=format)
1268 1392 opObj.addParameter(name=name4, value=value4, format=format)
1269 1393
1270 1394 elif length > 4:
1271 1395 self.console.clear()
1272 1396 self.console.append("Get Noise Operation only accepts 4 parameters")
1273 1397 return 0
1274 1398
1275 1399 #-----Spectra Plot-----
1276 1400 if self.specGraphCebSpectraplot.isChecked():
1277 1401 name_operation = 'SpectraPlot'
1278 1402 optype = 'other'
1279 1403 name_parameter = 'type'
1280 1404 value = 'SpectraPlot'
1281 1405 format = 'str'
1282 1406 if self.idImagspectra == 0:
1283 1407 self.idImagspectra = 200
1284 1408 else:
1285 1409 self.idImagspectra = self.idImagspectra + 1
1286 1410 name_parameter1 = 'id'
1287 1411 value1 = int(self.idImagspectra)
1288 1412 format1 = 'int'
1289 1413
1290 1414 format = 'str'
1291 1415
1292 1416 channelList = self.specGgraphChannelList.text()
1293 1417 xvalue = self.specGgraphFreq.text()
1294 1418 yvalue = self.specGgraphHeight.text()
1295 1419 zvalue = self.specGgraphDbsrange.text()
1296 1420 opObj = puObj.addOperation(name=name_operation, optype=optype)
1297 1421 # opObj.addParameter(name=name_parameter, value=value, format=format)
1298 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1422 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
1299 1423
1300 1424 if not channelList == '':
1301 1425 name_parameter = 'channelList'
1302 1426 format = 'intlist'
1303 1427 opObj.addParameter(name=name_parameter, value=channelList, format=format)
1304 1428
1305 1429 if not xvalue == '':
1306 1430 xvalueList = xvalue.split(',')
1307 1431 try:
1308 1432 value1 = float(xvalueList[0])
1309 1433 value2 = float(xvalueList[1])
1310 1434 except:
1311 1435 self.console.clear()
1312 1436 self.console.append("Please Write corrects parameter freq")
1313 1437 return 0
1314 1438 name1 = 'xmin'
1315 1439 name2 = 'xmax'
1316 1440 format = 'float'
1317 1441 opObj.addParameter(name=name1, value=value1, format=format)
1318 1442 opObj.addParameter(name=name2, value=value2, format=format)
1319 1443 #------specGgraphHeight---
1320 1444 if not yvalue == '':
1321 1445 yvalueList = yvalue.split(",")
1322 1446 try:
1323 1447 value1 = float(yvalueList[0])
1324 1448 value2 = float(yvalueList[1])
1325 1449 except:
1326 1450 self.console.clear()
1327 1451 self.console.append("Please Write corrects parameter Height")
1328 1452 return 0
1329 1453 name1 = 'ymin'
1330 1454 name2 = 'ymax'
1331 1455 format = 'float'
1332 1456 opObj.addParameter(name=name1, value=value1, format=format)
1333 1457 opObj.addParameter(name=name2, value=value2, format=format)
1334 1458
1335 1459 if not zvalue == '':
1336 1460 zvalueList = zvalue.split(",")
1337 1461 try:
1338 1462 value = float(zvalueList[0])
1339 1463 value = float(zvalueList[1])
1340 1464 except:
1341 1465 self.console.clear()
1342 1466 self.console.append("Please Write corrects parameter Dbsrange")
1343 1467 return 0
1344 1468 format = 'float'
1345 1469 opObj.addParameter(name='zmin', value=zvalueList[0], format=format)
1346 1470 opObj.addParameter(name='zmax', value=zvalueList[1], format=format)
1347 1471
1348 1472 if self.specGraphSaveSpectra.isChecked():
1349 1473 checkPath = True
1350 1474 name_parameter1 = 'save'
1351 1475 name_parameter2 = 'figpath'
1352 1476 name_parameter3 = 'figfile'
1353 1477 value1 = '1'
1354 1478 value2 = self.specGraphPath.text()
1355 1479 value3 = self.specGraphPrefix.text()
1356 1480 format1 = 'bool'
1357 1481 format2 = 'str'
1358 1482 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
1359 1483 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
1360 1484 opObj.addParameter(name=name_parameter3, value=value3, format=format2)
1361 1485
1362 1486 # opObj.addParameter(name='wr_period', value='5',format='int')
1363 1487
1364 1488 if self.specGraphftpSpectra.isChecked():
1365 1489 opObj.addParameter(name='ftp', value='1', format='int')
1366 1490 self.addFTPConf2Operation(puObj, opObj)
1367 1491 addFTP = True
1368 1492
1369 1493 if self.specGraphCebCrossSpectraplot.isChecked():
1370 1494 name_operation = 'CrossSpectraPlot'
1371 1495 optype = 'other'
1372 1496 opObj = puObj.addOperation(name=name_operation, optype=optype)
1373 1497 # opObj.addParameter(name='type', value="CrossSpectraPlot", format='str')
1374 1498 opObj.addParameter(name='power_cmap', value='jet', format='str')
1375 1499 opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1376 1500 opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1377 1501
1378 1502 if self.idImagcross == 0:
1379 1503 self.idImagcross = 300
1380 1504 else:
1381 1505 self.idImagcross = self.idImagcross + 1
1382 1506 value1 = int(self.idImagcross)
1383 1507 channelList = self.specGgraphChannelList.text()
1384 1508 xvalue = self.specGgraphFreq.text()
1385 1509 yvalue = self.specGgraphHeight.text()
1386 1510 zvalue = self.specGgraphDbsrange.text()
1387 1511
1388 opObj.addParameter(name='id', value=value1, format='int')
1512 opObj.addParameter(name='id', value=opObj.id, format='int')
1389 1513
1390 1514 if self.specGgraphChannelList.isModified():
1391 1515 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1392 1516
1393 1517 if not xvalue == '':
1394 1518 xvalueList = xvalue.split(',')
1395 1519 try:
1396 1520 value = float(xvalueList[0])
1397 1521 value = float(xvalueList[1])
1398 1522 except:
1399 1523 return 0
1400 1524 format = 'float'
1401 1525 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1402 1526 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1403 1527
1404 1528 if not yvalue == '':
1405 1529 yvalueList = yvalue.split(",")
1406 1530 try:
1407 1531 value = float(yvalueList[0])
1408 1532 value = float(yvalueList[1])
1409 1533 except:
1410 1534 return 0
1411 1535 format = 'float'
1412 1536 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1413 1537 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1414 1538
1415 1539
1416 1540 if not zvalue == '':
1417 1541 zvalueList = zvalue.split(",")
1418 1542 try:
1419 1543 value = float(zvalueList[0])
1420 1544 value = float(zvalueList[1])
1421 1545 except:
1422 1546 return 0
1423 1547 opObj.addParameter(name='zmin', value=zvalueList[0], format='float')
1424 1548 opObj.addParameter(name='zmax', value=zvalueList[1], format='float')
1425 1549
1426 1550 if self.specGraphSaveCross.isChecked():
1427 1551 checkPath = True
1428 1552 opObj.addParameter(name='save', value='1', format='bool')
1429 1553 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1430 1554 value = self.specGraphPrefix.text()
1431 1555 if not value == "":
1432 1556 try:
1433 1557 value = str(self.specGraphPrefix.text())
1434 1558 except:
1435 1559 self.console.clear()
1436 1560 self.console.append("Please Write prefix")
1437 1561 return 0
1438 1562 opObj.addParameter(name='figfile', value=value, format='str')
1439 1563 # opObj.addParameter(name='figfile', value=self.specGraphPrefix.text(), format='str')
1440 1564 if self.specGraphftpCross.isChecked():
1441 1565 opObj.addParameter(name='ftp', value='1', format='int')
1442 1566 self.addFTPConf2Operation(puObj, opObj)
1443 1567 addFTP = True
1444 1568
1445 1569 if self.specGraphCebRTIplot.isChecked():
1446 1570 name_operation = 'RTIPlot'
1447 1571 optype = 'other'
1448 1572 name_parameter = 'type'
1449 1573 value = 'RTIPlot'
1450 1574 format = 'str'
1451 1575
1452 1576 if self.idImagrti == 0:
1453 1577 self.idImagrti = 400
1454 1578 else:
1455 1579 self.idImagrti = self.idImagrti + 1
1456 1580
1457 1581 name_parameter1 = 'id'
1458 1582 value1 = int(self.idImagrti)
1459 1583 format1 = 'int'
1460 1584
1461 1585 format = 'str'
1462 1586
1463 1587 opObj = puObj.addOperation(name=name_operation, optype=optype)
1464 1588 # opObj.addParameter(name=name_parameter, value=value, format=format)
1465 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1589 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
1466 1590
1467 1591 channelList = self.specGgraphChannelList.text()
1468 1592 xvalue = self.specGgraphTminTmax.text()
1469 1593 yvalue = self.specGgraphHeight.text()
1470 1594 zvalue = self.specGgraphDbsrange.text()
1471 1595 timerange = self.specGgraphTimeRange.text()
1472 1596
1473 1597 if not channelList == '':
1474 1598 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1475 1599
1476 1600 if not xvalue == '':
1477 1601 xvalueList = xvalue.split(',')
1478 1602 try:
1479 1603 value = float(xvalueList[0])
1480 1604 value = float(xvalueList[1])
1481 1605 except:
1482 1606 return 0
1483 1607 format = 'float'
1484 1608 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1485 1609 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1486 1610
1487 1611 if not timerange == '':
1488 1612 format = 'int'
1489 1613 try:
1490 1614 timerange = int(timerange)
1491 1615 except:
1492 1616 return 0
1493 1617 opObj.addParameter(name='timerange', value=timerange, format=format)
1494 1618
1495 1619
1496 1620 if not yvalue == '':
1497 1621 yvalueList = yvalue.split(",")
1498 1622 try:
1499 1623 value = float(yvalueList[0])
1500 1624 value = float(yvalueList[1])
1501 1625 except:
1502 1626 return 0
1503 1627 format = 'float'
1504 1628 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1505 1629 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1506 1630
1507 1631 if not zvalue == '':
1508 1632 zvalueList = zvalue.split(",")
1509 1633 try:
1510 1634 value = float(zvalueList[0])
1511 1635 value = float(zvalueList[1])
1512 1636 except:
1513 1637 return 0
1514 1638 format = 'float'
1515 1639 opObj.addParameter(name='zmin', value=zvalueList[0], format=format)
1516 1640 opObj.addParameter(name='zmax', value=zvalueList[1], format=format)
1517 1641
1518 1642 if self.specGraphSaveRTIplot.isChecked():
1519 1643 checkPath = True
1520 1644 opObj.addParameter(name='save', value='1', format='bool')
1521 1645 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1522 1646 value = self.specGraphPrefix.text()
1523 1647 if not value == "":
1524 1648 try:
1525 1649 value = str(self.specGraphPrefix.text())
1526 1650 except:
1527 1651 self.console.clear()
1528 1652 self.console.append("Please Write prefix")
1529 1653 return 0
1530 1654 opObj.addParameter(name='figfile', value=value, format='str')
1531 1655
1532 1656 # test_ftp
1533 1657 if self.specGraphftpRTIplot.isChecked():
1534 1658 opObj.addParameter(name='ftp', value='1', format='int')
1535 1659 self.addFTPConf2Operation(puObj, opObj)
1536 1660 addFTP = True
1537 1661
1538 1662 if self.specGraphCebCoherencmap.isChecked():
1539 1663 name_operation = 'CoherenceMap'
1540 1664 optype = 'other'
1541 1665 name_parameter = 'type'
1542 1666 value = 'CoherenceMap'
1543 1667 format = 'str'
1544 1668 if self.idImagcoherence == 0:
1545 1669 self.idImagcoherence = 500
1546 1670 else:
1547 1671 self.idImagcoherence = self.idImagcoherence + 1
1548 1672
1549 1673 name_parameter1 = 'id'
1550 1674 value1 = int(self.idImagcoherence)
1551 1675 format1 = 'int'
1552 1676
1553 1677 opObj = puObj.addOperation(name=name_operation, optype=optype)
1554 1678 # opObj.addParameter(name=name_parameter, value=value, format=format)
1555 1679 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1556 1680 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1557 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1681 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
1558 1682
1559 1683 channelList = self.specGgraphChannelList.text()
1560 1684 if not channelList == '':
1561 1685 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1562 1686
1563 1687 timerange = self.specGgraphTimeRange.text()
1564 1688 if not timerange == '':
1565 1689 try:
1566 1690 timerange = int(timerange)
1567 1691 except:
1568 1692 return 0
1569 1693 format = 'int'
1570 1694 opObj.addParameter(name='timerange', value=timerange, format=format)
1571 1695
1572 1696 xvalue = self.specGgraphTminTmax.text()
1573 1697 if not xvalue == '':
1574 1698 xvalueList = xvalue.split(',')
1575 1699 try:
1576 1700 value = float(xvalueList[0])
1577 1701 value = float(xvalueList[1])
1578 1702 except:
1579 1703 return 0
1580 1704 format = 'float'
1581 1705 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1582 1706 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1583 1707
1584 1708 yvalue = self.specGgraphHeight.text()
1585 1709 if not yvalue == '':
1586 1710 yvalueList = yvalue.split(",")
1587 1711 try:
1588 1712 value = float(yvalueList[0])
1589 1713 value = float(yvalueList[1])
1590 1714 except:
1591 1715 return 0
1592 1716 format = 'float'
1593 1717 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1594 1718 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1595 1719
1596 1720 zvalue = self.specGgraphmagnitud.text()
1597 1721 if not zvalue == '':
1598 1722 zvalueList = zvalue.split(",")
1599 1723 try:
1600 1724 value = float(zvalueList[0])
1601 1725 value = float(zvalueList[1])
1602 1726 except:
1603 1727 return 0
1604 1728 opObj.addParameter(name='zmin', value=zvalueList[0], format='float')
1605 1729 opObj.addParameter(name='zmax', value=zvalueList[1], format='float')
1606 1730
1607 1731 if self.specGraphSaveCoherencemap.isChecked():
1608 1732 checkPath = True
1609 1733 opObj.addParameter(name='save', value='1', format='bool')
1610 1734 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1611 1735 value = self.specGraphPrefix.text()
1612 1736 if not value == "":
1613 1737 try:
1614 1738 value = str(self.specGraphPrefix.text())
1615 1739 except:
1616 1740 self.console.clear()
1617 1741 self.console.append("Please Write prefix")
1618 1742 return 0
1619 1743 opObj.addParameter(name='figfile', value=value, format='str')
1620 1744
1621 1745 # test_ftp
1622 1746 if self.specGraphftpCoherencemap.isChecked():
1623 1747 opObj.addParameter(name='ftp', value='1', format='int')
1624 1748 self.addFTPConf2Operation(puObj, opObj)
1625 1749 addFTP = True
1626 1750
1627 1751 if self.specGraphPowerprofile.isChecked():
1628 1752 name_operation = 'PowerProfilePlot'
1629 1753 optype = 'other'
1630 1754 name_parameter = 'type'
1631 1755 value = 'PowerProfilePlot'
1632 1756 format = 'str'
1633 1757
1634 1758 if self.idImagpower == 0:
1635 1759 self.idImagpower = 600
1636 1760 else:
1637 1761 self.idImagpower = self.idImagpower + 1
1638 1762 value1 = int(self.idImagpower)
1639 1763 opObj = puObj.addOperation(name=name_operation, optype=optype)
1640 1764 # opObj.addParameter(name=name_parameter, value=value, format='str')
1641 opObj.addParameter(name='id', value=value1, format='int')
1765 opObj.addParameter(name='id', value=opObj.id, format='int')
1642 1766
1643 1767 channelList = self.specGgraphChannelList.text()
1644 1768 if not channelList == '':
1645 1769 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1646 1770
1647 1771 xvalue = self.specGgraphDbsrange.text()
1648 1772 if not xvalue == '':
1649 1773 xvalueList = xvalue.split(',')
1650 1774 try:
1651 1775 value = float(xvalueList[0])
1652 1776 value = float(xvalueList[1])
1653 1777 except:
1654 1778 return 0
1655 1779 format = 'float'
1656 1780 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1657 1781 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1658 1782
1659 1783 yvalue = self.specGgraphHeight.text()
1660 1784 if not yvalue == '':
1661 1785 yvalueList = yvalue.split(",")
1662 1786 try:
1663 1787 value = float(yvalueList[0])
1664 1788 value = float(yvalueList[1])
1665 1789 except:
1666 1790 return 0
1667 1791 format = 'float'
1668 1792 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1669 1793 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1670 1794
1671 1795
1672 1796 if self.specGraphSavePowerprofile.isChecked():
1673 1797 checkPath = True
1674 1798 opObj.addParameter(name='save', value='1', format='bool')
1675 1799 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1676 1800 value = self.specGraphPrefix.text()
1677 1801 if not value == "":
1678 1802 try:
1679 1803 value = str(self.specGraphPrefix.text())
1680 1804 except:
1681 1805 self.console.clear()
1682 1806 self.console.append("Please Write prefix")
1683 1807 return 0
1684 1808 opObj.addParameter(name='figfile', value=value, format='str')
1685 1809
1686 1810
1687 1811 if self.specGraphftpPowerprofile.isChecked():
1688 1812 opObj.addParameter(name='ftp', value='1', format='int')
1689 1813 self.addFTPConf2Operation(puObj, opObj)
1690 1814 addFTP = True
1691 1815 # rti noise
1692 1816
1693 1817 if self.specGraphCebRTInoise.isChecked():
1694 1818 name_operation = 'Noise'
1695 1819 optype = 'other'
1696 1820 name_parameter = 'type'
1697 1821 value = 'Noise'
1698 1822 format = 'str'
1699 1823
1700 1824 if self.idImagrtinoise == 0:
1701 1825 self.idImagrtinoise = 700
1702 1826 else:
1703 1827 self.idImagrtinoise = self.idImagrtinoise + 1
1704 1828
1705 1829 name_parameter1 = 'id'
1706 1830 value1 = int(self.idImagrtinoise)
1707 1831 format1 = 'int'
1708 1832 format = 'str'
1709 1833
1710 1834 opObj = puObj.addOperation(name=name_operation, optype=optype)
1711 1835 # opObj.addParameter(name=name_parameter, value=value, format=format)
1712 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1836 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
1713 1837
1714 1838 channelList = self.specGgraphChannelList.text()
1715 1839 xvalue = self.specGgraphTminTmax.text()
1716 1840 yvalue = self.specGgraphDbsrange.text()
1717 1841 timerange = self.specGgraphTimeRange.text()
1718 1842
1719 1843
1720 1844 if not channelList == '':
1721 1845 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1722 1846
1723 1847 if not timerange == '':
1724 1848 format = 'int'
1725 1849 try:
1726 1850 timerange = int(timerange)
1727 1851 except:
1728 1852 return 0
1729 1853 opObj.addParameter(name='timerange', value=timerange, format=format)
1730 1854
1731 1855 if not xvalue == '':
1732 1856 xvalueList = xvalue.split(',')
1733 1857 try:
1734 1858 value = float(xvalueList[0])
1735 1859 value = float(xvalueList[1])
1736 1860 except:
1737 1861 return 0
1738 1862 format = 'float'
1739 1863 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
1740 1864 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
1741 1865
1742 1866 if not yvalue == '':
1743 1867 yvalueList = yvalue.split(",")
1744 1868 try:
1745 1869 value = float(yvalueList[0])
1746 1870 value = float(yvalueList[1])
1747 1871 except:
1748 1872 return 0
1749 1873 format = 'float'
1750 1874 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
1751 1875 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
1752 1876
1753 1877 if self.specGraphSaveRTInoise.isChecked():
1754 1878 checkPath = True
1755 1879 opObj.addParameter(name='save', value='1', format='bool')
1756 1880 opObj.addParameter(name='figpath', value=self.specGraphPath.text(), format='str')
1757 1881 value = self.specGraphPrefix.text()
1758 1882 if not value == "":
1759 1883 try:
1760 1884 value = str(self.specGraphPrefix.text())
1761 1885 except:
1762 1886 self.console.clear()
1763 1887 self.console.append("Please Write prefix")
1764 1888 return 0
1765 1889 opObj.addParameter(name='figfile', value=value, format='str')
1766 1890
1767 1891 # test_ftp
1768 1892 if self.specGraphftpRTInoise.isChecked():
1769 1893 opObj.addParameter(name='ftp', value='1', format='int')
1770 1894 self.addFTPConf2Operation(puObj, opObj)
1771 1895 addFTP = True
1772 1896
1773 1897 localfolder = None
1774 1898 if checkPath:
1775 1899 localfolder = str(self.specGraphPath.text())
1776 1900 if localfolder == '':
1777 1901 self.console.clear()
1778 1902 self.console.append("Graphic path should be defined")
1779 1903 return 0
1780 1904
1781 1905 if addFTP:
1782 1906 if not localfolder:
1783 1907 self.console.clear()
1784 1908 self.console.append("You have to save the plots before sending them to FTP Server")
1785 1909 return 0
1786 1910
1787 1911 if not self.temporalFTP.create:
1788 1912 self.temporalFTP.setwithoutconfiguration()
1789 1913
1790 1914 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
1791 self.createFTPProcUnitView(server, username, password, remotefolder,
1915 self.addFTPProcUnitView(server, username, password, remotefolder,
1792 1916 ftp_wei, exp_code, sub_exp_code, plot_pos,
1793 1917 localfolder=localfolder)
1794 1918 else:
1795 1919 self.removeFTPProcUnitView()
1796 1920
1797 1921 # if something happend
1798 1922 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Spectra')
1799 1923 if parms_ok:
1800 1924 name_operation = 'SpectraWriter'
1801 1925 optype = 'other'
1802 1926 name_parameter1 = 'path'
1803 1927 name_parameter2 = 'blocksPerFile'
1804 1928 name_parameter3 = 'profilesPerBlock'
1805 1929 value1 = output_path
1806 1930 value2 = blocksperfile
1807 1931 value3 = profilesperblock
1808 1932 format = "int"
1809 1933
1810 1934 opObj = puObj.addOperation(name=name_operation, optype=optype)
1811 1935 opObj.addParameter(name=name_parameter1, value=value1)
1812 1936 opObj.addParameter(name=name_parameter2, value=value2, format=format)
1813 1937 opObj.addParameter(name=name_parameter3, value=value3, format=format)
1814 1938
1815 1939 self.refreshPUProperties(puObj)
1816 1940
1817 1941 self.console.clear()
1818 1942 self.console.append("If you want to save your project")
1819 1943 self.console.append("click on your project name in the Tree Project Explorer")
1820 1944
1821 1945 self.actionSaveToolbar.setEnabled(True)
1822 1946 self.actionStarToolbar.setEnabled(True)
1823 1947
1824 1948 return 1
1825 1949
1826 1950 """
1827 1951 Spectra Graph
1828 1952 """
1829 1953 @pyqtSignature("int")
1830 1954 def on_specGraphCebSpectraplot_stateChanged(self, p0):
1831 1955
1832 1956 if p0 == 2:
1833 1957 self.specGgraphChannelList.setEnabled(True)
1834 1958 self.specGgraphFreq.setEnabled(True)
1835 1959 self.specGgraphHeight.setEnabled(True)
1836 1960 self.specGgraphDbsrange.setEnabled(True)
1837 1961 if p0 == 0:
1838 1962 self.specGgraphFreq.setEnabled(False)
1839 1963 self.specGgraphHeight.setEnabled(False)
1840 1964 self.specGgraphDbsrange.setEnabled(False)
1841 1965
1842 1966
1843 1967 @pyqtSignature("int")
1844 1968 def on_specGraphCebCrossSpectraplot_stateChanged(self, p0):
1845 1969
1846 1970 if p0 == 2:
1847 1971 self.specGgraphFreq.setEnabled(True)
1848 1972 self.specGgraphHeight.setEnabled(True)
1849 1973 self.specGgraphDbsrange.setEnabled(True)
1850 1974 if p0 == 0:
1851 1975 self.specGgraphFreq.setEnabled(False)
1852 1976 self.specGgraphHeight.setEnabled(False)
1853 1977 self.specGgraphDbsrange.setEnabled(False)
1854 1978
1855 1979 @pyqtSignature("int")
1856 1980 def on_specGraphCebRTIplot_stateChanged(self, p0):
1857 1981
1858 1982 if p0 == 2:
1859 1983 self.specGgraphChannelList.setEnabled(True)
1860 1984 self.specGgraphTminTmax.setEnabled(True)
1861 1985 self.specGgraphHeight.setEnabled(True)
1862 1986 self.specGgraphDbsrange.setEnabled(True)
1863 1987 self.specGgraphTimeRange.setEnabled(True)
1864 1988
1865 1989 if p0 == 0:
1866 1990 self.specGgraphTminTmax.setEnabled(False)
1867 1991 self.specGgraphHeight.setEnabled(False)
1868 1992 self.specGgraphDbsrange.setEnabled(False)
1869 1993 self.specGgraphTimeRange.setEnabled(False)
1870 1994
1871 1995
1872 1996 @pyqtSignature("int")
1873 1997 def on_specGraphCebRTInoise_stateChanged(self, p0):
1874 1998 if p0 == 2:
1875 1999 self.specGgraphChannelList.setEnabled(True)
1876 2000 self.specGgraphTminTmax.setEnabled(True)
1877 2001 self.specGgraphDbsrange.setEnabled(True)
1878 2002 self.specGgraphTimeRange.setEnabled(True)
1879 2003
1880 2004 if p0 == 0:
1881 2005 self.specGgraphTminTmax.setEnabled(False)
1882 2006 self.specGgraphDbsrange.setEnabled(False)
1883 2007 self.specGgraphTimeRange.setEnabled(False)
1884 2008
1885 2009
1886 2010
1887 2011
1888 2012 @pyqtSignature("int")
1889 2013 def on_specGraphCebCoherencmap_stateChanged(self, p0):
1890 2014
1891 2015 if p0 == 2:
1892 2016 self.specGgraphTminTmax.setEnabled(True)
1893 2017 self.specGgraphHeight.setEnabled(True)
1894 2018 self.specGgraphmagnitud.setEnabled(True)
1895 2019 self.specGgraphTimeRange.setEnabled(True)
1896 2020
1897 2021 if p0 == 0:
1898 2022 self.specGgraphTminTmax.setEnabled(False)
1899 2023 self.specGgraphHeight.setEnabled(False)
1900 2024 self.specGgraphmagnitud.setEnabled(False)
1901 2025 self.specGgraphTimeRange.setEnabled(False)
1902 2026
1903 2027
1904 2028
1905 2029
1906 2030 @pyqtSignature("int")
1907 2031 def on_specGraphPowerprofile_stateChanged(self, p0):
1908 2032
1909 2033 if p0 == 2:
1910 2034
1911 2035 self.specGgraphHeight.setEnabled(True)
1912 2036 self.specGgraphDbsrange.setEnabled(True)
1913 2037 if p0 == 0:
1914 2038 self.specGgraphHeight.setEnabled(False)
1915 2039 self.specGgraphDbsrange.setEnabled(False)
1916 2040
1917 2041 @pyqtSignature("int")
1918 2042 def on_specGraphPhase_stateChanged(self, p0):
1919 2043
1920 2044 if p0 == 2:
1921 2045 self.specGgraphTminTmax.setEnabled(True)
1922 2046 self.specGgraphPhaserange.setEnabled(True)
1923 2047
1924 2048 if p0 == 0:
1925 2049 self.specGgraphTminTmax.setEnabled(False)
1926 2050 self.specGgraphPhaserange.setEnabled(False)
1927 2051
1928 2052 @pyqtSignature("int")
1929 2053 def on_specGraphSaveSpectra_stateChanged(self, p0):
1930 2054 """
1931 2055 """
1932 2056 if p0 == 2:
1933 2057 self.specGraphPath.setEnabled(True)
1934 2058 self.specGraphPrefix.setEnabled(True)
1935 2059 self.specGraphToolPath.setEnabled(True)
1936 2060 if p0 == 0:
1937 2061 self.specGraphPath.setEnabled(False)
1938 2062 self.specGraphPrefix.setEnabled(False)
1939 2063 self.specGraphToolPath.setEnabled(False)
1940 2064
1941 2065
1942 2066 @pyqtSignature("int")
1943 2067 def on_specGraphSaveCross_stateChanged(self, p0):
1944 2068 if p0 == 2:
1945 2069 self.specGraphPath.setEnabled(True)
1946 2070 self.specGraphPrefix.setEnabled(True)
1947 2071 self.specGraphToolPath.setEnabled(True)
1948 2072
1949 2073 @pyqtSignature("int")
1950 2074 def on_specGraphSaveRTIplot_stateChanged(self, p0):
1951 2075 if p0 == 2:
1952 2076 self.specGraphPath.setEnabled(True)
1953 2077 self.specGraphPrefix.setEnabled(True)
1954 2078 self.specGraphToolPath.setEnabled(True)
1955 2079
1956 2080 @pyqtSignature("int")
1957 2081 def on_specGraphSaveRTInoise_stateChanged(self, p0):
1958 2082 if p0 == 2:
1959 2083 self.specGraphPath.setEnabled(True)
1960 2084 self.specGraphPrefix.setEnabled(True)
1961 2085 self.specGraphToolPath.setEnabled(True)
1962 2086
1963 2087 @pyqtSignature("int")
1964 2088 def on_specGraphSaveCoherencemap_stateChanged(self, p0):
1965 2089 if p0 == 2:
1966 2090 self.specGraphPath.setEnabled(True)
1967 2091 self.specGraphPrefix.setEnabled(True)
1968 2092 self.specGraphToolPath.setEnabled(True)
1969 2093
1970 2094
1971 2095 @pyqtSignature("int")
1972 2096 def on_specGraphSavePowerprofile_stateChanged(self, p0):
1973 2097 if p0 == 2:
1974 2098 self.specGraphPath.setEnabled(True)
1975 2099 self.specGraphPrefix.setEnabled(True)
1976 2100 self.specGraphToolPath.setEnabled(True)
1977 2101
1978
1979 #-------ftp-----#
1980 2102 @pyqtSignature("int")
1981 2103 def on_specGraphftpSpectra_stateChanged(self, p0):
1982 2104 """
1983 2105 """
1984 2106 if p0 == 2:
1985 2107 self.specGgraphftpratio.setEnabled(True)
1986 2108
1987 2109 if p0 == 0:
1988 2110 self.specGgraphftpratio.setEnabled(False)
1989 2111
1990 2112
1991 2113 @pyqtSignature("int")
1992 2114 def on_specGraphftpCross_stateChanged(self, p0):
1993 2115 if p0 == 2:
1994 2116 self.specGgraphftpratio.setEnabled(True)
1995 2117
1996 2118 @pyqtSignature("int")
1997 2119 def on_specGraphftpRTIplot_stateChanged(self, p0):
1998 2120 if p0 == 2:
1999 2121 self.specGgraphftpratio.setEnabled(True)
2000 2122
2001 2123 @pyqtSignature("int")
2002 2124 def on_specGraphftpRTInoise_stateChanged(self, p0):
2003 2125 if p0 == 2:
2004 2126 self.specGgraphftpratio.setEnabled(True)
2005 2127
2006 2128 @pyqtSignature("int")
2007 2129 def on_specGraphftpCoherencemap_stateChanged(self, p0):
2008 2130 if p0 == 2:
2009 2131 self.specGgraphftpratio.setEnabled(True)
2010 2132
2011 2133 @pyqtSignature("int")
2012 2134 def on_specGraphftpPowerprofile_stateChanged(self, p0):
2013 2135 if p0 == 2:
2014 2136 self.specGgraphftpratio.setEnabled(True)
2015 2137
2016 #-------------------#
2017
2018
2019
2020 2138 @pyqtSignature("")
2021 2139 def on_specGraphToolPath_clicked(self):
2022 2140 """
2023 2141 """
2024 2142 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2025 2143 self.specGraphPath.setText(self.savePath)
2026 2144 if not os.path.exists(self.savePath):
2027 2145 self.console.clear()
2028 2146 self.console.append("Write a correct a path")
2029 2147 return
2030 2148
2031 2149 @pyqtSignature("")
2032 2150 def on_specHeisGraphToolPath_clicked(self):
2033 2151 """
2034 2152 """
2035 2153 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
2036 2154 self.specHeisGraphPath.setText(self.savePath)
2037 2155 if not os.path.exists(self.savePath):
2038 2156 self.console.clear()
2039 2157 self.console.append("Write a correct a path")
2040 2158 return
2041 2159
2042 2160 @pyqtSignature("")
2043 2161 def on_specGraphClear_clicked(self):
2044 2162 self.clearspecGraph()
2045 2163
2046 2164 @pyqtSignature("int")
2047 2165 def on_specHeisOpCebIncoherent_stateChanged(self, p0):
2048 2166 """
2049 2167 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
2050 2168 """
2051 2169 if p0 == 2:
2052 2170 self.specHeisOpIncoherent.setEnabled(True)
2053 2171 self.specHeisOpCobIncInt.setEnabled(True)
2054 2172 if p0 == 0:
2055 2173 self.specHeisOpIncoherent.setEnabled(False)
2056 2174 self.specHeisOpCobIncInt.setEnabled(False)
2057 2175
2058 2176 @pyqtSignature("")
2059 2177 def on_specHeisOpOk_clicked(self):
2060 2178 """
2061 2179 AΓ‘ADE OPERACION SPECTRAHEIS
2062 2180 """
2063 2181 addFTP = False
2064 2182 checkPath = False
2065 2183
2066 2184 self.actionSaveToolbar.setEnabled(False)
2067 2185 self.actionStarToolbar.setEnabled(False)
2068 2186
2069 2187 puObj = self.getSelectedItemObj()
2070 2188 puObj.removeOperations()
2071 2189
2072 2190 if self.specHeisOpCebIncoherent.isChecked():
2073 2191 value = self.specHeisOpIncoherent.text()
2074 2192 name_operation = 'IncohInt4SpectraHeis'
2075 2193 optype = 'other'
2076 2194 if self.specOpCobIncInt.currentIndex() == 0:
2077 2195 name_parameter = 'timeInterval'
2078 2196 format = 'float'
2079 2197 opObj = puObj.addOperation(name=name_operation, optype=optype)
2080 2198 opObj.addParameter(name=name_parameter, value=value, format=format)
2081 2199
2082 2200 # ---- Spectra Plot-----
2083 2201 if self.specHeisGraphCebSpectraplot.isChecked():
2084 2202 name_operation = 'SpectraHeisScope'
2085 2203 optype = 'other'
2086 2204 name_parameter = 'type'
2087 2205 value = 'SpectraHeisScope'
2088 2206 format = 'str'
2089 2207 if self.idImagspectraHeis == 0:
2090 2208 self.idImagspectraHeis = 800
2091 2209 else:
2092 2210 self.idImagspectraHeis = self.idImagspectraHeis + 1
2093 2211 name_parameter1 = 'id'
2094 2212 value1 = int(self.idImagspectraHeis)
2095 2213 format1 = 'int'
2096 2214
2097 2215 format = 'str'
2098 2216
2099 2217 channelList = self.specHeisGgraphChannelList.text()
2100 2218 xvalue = self.specHeisGgraphXminXmax.text()
2101 2219 yvalue = self.specHeisGgraphYminYmax.text()
2102 2220 opObj = puObj.addOperation(name=name_operation, optype=optype)
2103 2221 # opObj.addParameter(name=name_parameter, value=value, format=format)
2104 2222 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
2105 2223
2106 2224 if not channelList == '':
2107 2225 name_parameter = 'channelList'
2108 2226 format = 'intlist'
2109 2227 opObj.addParameter(name=name_parameter, value=channelList, format=format)
2110 2228
2111 2229 if not xvalue == '':
2112 2230 xvalueList = xvalue.split(',')
2113 2231 try:
2114 2232 value1 = float(xvalueList[0])
2115 2233 value2 = float(xvalueList[1])
2116 2234 except:
2117 2235 self.console.clear()
2118 2236 self.console.append("Please Write corrects parameter xmin-xmax")
2119 2237 return 0
2120 2238 name1 = 'xmin'
2121 2239 name2 = 'xmax'
2122 2240 format = 'float'
2123 2241 opObj.addParameter(name=name1, value=value1, format=format)
2124 2242 opObj.addParameter(name=name2, value=value2, format=format)
2125 2243 #------specHeisGgraphYmin-Ymax---
2126 2244 if not yvalue == '':
2127 2245 yvalueList = yvalue.split(",")
2128 2246 try:
2129 2247 value1 = float(yvalueList[0])
2130 2248 value2 = float(yvalueList[1])
2131 2249 except:
2132 2250 self.console.clear()
2133 2251 self.console.append("Please Write corrects parameter Ymix-Ymax")
2134 2252 return 0
2135 2253 name1 = 'ymin'
2136 2254 name2 = 'ymax'
2137 2255 format = 'float'
2138 2256 opObj.addParameter(name=name1, value=value1, format=format)
2139 2257 opObj.addParameter(name=name2, value=value2, format=format)
2140 2258
2141 2259 if self.specHeisGraphSaveSpectra.isChecked():
2142 2260 checkPath = True
2143 2261 name_parameter1 = 'save'
2144 2262 name_parameter2 = 'figpath'
2145 2263 name_parameter3 = 'figfile'
2146 2264 value1 = '1'
2147 2265 value2 = self.specHeisGraphPath.text()
2148 2266 value3 = self.specHeisGraphPrefix.text()
2149 2267 format1 = 'bool'
2150 2268 format2 = 'str'
2151 2269 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
2152 2270 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2153 2271 if not value3 == "":
2154 2272 try:
2155 2273 value3 = str(self.specHeisGraphPrefix.text())
2156 2274 except:
2157 2275 self.console.clear()
2158 2276 self.console.append("Please Write prefix")
2159 2277 return 0
2160 2278 opObj.addParameter(name='figfile', value=self.specHeisGraphPrefix.text(), format='str')
2161 2279
2162 2280 # opObj.addParameter(name=name_parameter3, value=value3, format=format2)
2163 2281 # opObj.addParameter(name='wr_period', value='5',format='int')
2164 2282
2165 2283 if self.specHeisGraphftpSpectra.isChecked():
2166 2284 opObj.addParameter(name='ftp', value='1', format='int')
2167 2285 self.addFTPConf2Operation(puObj, opObj)
2168 2286 addFTP = True
2169 2287
2170 2288 if self.specHeisGraphCebRTIplot.isChecked():
2171 2289 name_operation = 'RTIfromSpectraHeis'
2172 2290 optype = 'other'
2173 2291 name_parameter = 'type'
2174 2292 value = 'RTIfromSpectraHeis'
2175 2293 format = 'str'
2176 2294
2177 2295 if self.idImagrtiHeis == 0:
2178 2296 self.idImagrtiHeis = 900
2179 2297 else:
2180 2298 self.idImagrtiHeis = self.idImagrtiHeis + 1
2181 2299
2182 2300 name_parameter1 = 'id'
2183 2301 value1 = int(self.idImagrtiHeis)
2184 2302 format1 = 'int'
2185 2303
2186 2304 format = 'str'
2187 2305
2188 2306 opObj = puObj.addOperation(name=name_operation, optype=optype)
2189 2307 # opObj.addParameter(name=name_parameter, value=value, format=format)
2190 2308 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
2191 2309
2192 2310 channelList = self.specHeisGgraphChannelList.text()
2193 2311 xvalue = self.specHeisGgraphTminTmax.text()
2194 2312 yvalue = self.specHeisGgraphYminYmax.text()
2195 2313 timerange = self.specHeisGgraphTimeRange.text()
2196 2314
2197 2315 if not channelList == '':
2198 2316 opObj.addParameter(name='channelList', value=channelList, format='intlist')
2199 2317
2200 2318 if not xvalue == '':
2201 2319 xvalueList = xvalue.split(',')
2202 2320 try:
2203 2321 value = float(xvalueList[0])
2204 2322 value = float(xvalueList[1])
2205 2323 except:
2206 2324 return 0
2207 2325 format = 'float'
2208 2326 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
2209 2327 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
2210 2328
2211 2329 if not timerange == '':
2212 2330 format = 'int'
2213 2331 try:
2214 2332 timerange = int(timerange)
2215 2333 except:
2216 2334 return 0
2217 2335 opObj.addParameter(name='timerange', value=timerange, format=format)
2218 2336
2219 2337
2220 2338 if not yvalue == '':
2221 2339 yvalueList = yvalue.split(",")
2222 2340 try:
2223 2341 value = float(yvalueList[0])
2224 2342 value = float(yvalueList[1])
2225 2343 except:
2226 2344 return 0
2227 2345 format = 'float'
2228 2346 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
2229 2347 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
2230 2348
2231 2349 if self.specHeisGraphSaveRTIplot.isChecked():
2232 2350 checkPath = True
2233 2351 opObj.addParameter(name='save', value='1', format='bool')
2234 2352 opObj.addParameter(name='figpath', value=self.specHeisGraphPath.text(), format='str')
2235 2353 value = self.specHeisGraphPrefix.text()
2236 2354 if not value == "":
2237 2355 try:
2238 2356 value = str(self.specHeisGraphPrefix.text())
2239 2357 except:
2240 2358 self.console.clear()
2241 2359 self.console.append("Please Write prefix")
2242 2360 return 0
2243 2361 opObj.addParameter(name='figfile', value=value, format='str')
2244 2362
2245 2363 # test_ftp
2246 2364 if self.specHeisGraphftpRTIplot.isChecked():
2247 2365 opObj.addParameter(name='ftp', value='1', format='int')
2248 2366 self.addFTPConf2Operation(puObj, opObj)
2249 2367 addFTP = True
2250 2368
2251 2369 localfolder = None
2252 2370 if checkPath:
2253 2371 localfolder = str(self.specGraphPath.text())
2254 2372 if localfolder == '':
2255 2373 self.console.clear()
2256 2374 self.console.append("Graphic path should be defined")
2257 2375 return 0
2258 2376
2259 2377 if addFTP:
2260 2378 if not localfolder:
2261 2379 self.console.clear()
2262 2380 self.console.append("You have to save the plots before sending them to FTP Server")
2263 2381 return 0
2264 2382
2265 2383 if not self.temporalFTP.create:
2266 2384 self.temporalFTP.setwithoutconfiguration()
2267 2385
2268 2386 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
2269 self.createFTPProcUnitView(server, username, password, remotefolder,
2387 self.addFTPProcUnitView(server, username, password, remotefolder,
2270 2388 ftp_wei, exp_code, sub_exp_code, plot_pos,
2271 2389 localfolder=localfolder)
2272 2390 else:
2273 2391 self.removeFTPProcUnitView()
2274 2392
2275 2393 # if something happened
2276 2394 parms_ok, output_path, blocksperfile, metada = self.checkInputsPUSave(datatype='SpectraHeis')
2277 2395 if parms_ok:
2278 2396 name_operation = 'FitsWriter'
2279 2397 optype = 'other'
2280 2398 name_parameter1 = 'path'
2281 2399 name_parameter2 = 'dataBlocksPerFile'
2282 2400 name_parameter3 = 'metadatafile'
2283 2401 value1 = output_path
2284 2402 value2 = blocksperfile
2285 2403 value3 = metada
2286 2404 format2 = "int"
2287 2405 format3 = "str"
2288 2406 opObj = puObj.addOperation(name=name_operation, optype=optype)
2289 2407 opObj.addParameter(name=name_parameter1, value=value1)
2290 2408 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2291 2409 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
2292 2410
2293 2411 self.refreshPUProperties(puObj)
2294 2412
2295 2413 self.console.clear()
2296 2414 self.console.append("Click on save icon ff you want to save your project")
2297 2415
2298 2416 self.actionSaveToolbar.setEnabled(True)
2299 2417 self.actionStarToolbar.setEnabled(True)
2300 2418
2301 2419 return 1
2302 2420 @pyqtSignature("int")
2303 2421 def on_specHeisGraphCebSpectraplot_stateChanged(self, p0):
2304 2422
2305 2423 if p0 == 2:
2306 2424 self.specHeisGgraphChannelList.setEnabled(True)
2307 2425 self.specHeisGgraphXminXmax.setEnabled(True)
2308 2426 self.specHeisGgraphYminYmax.setEnabled(True)
2309 2427 if p0 == 0:
2310 2428 self.specHeisGgraphXminXmax.setEnabled(False)
2311 2429 self.specHeisGgraphYminYmax.setEnabled(False)
2312 2430
2313 2431 @pyqtSignature("int")
2314 2432 def on_specHeisGraphCebRTIplot_stateChanged(self, p0):
2315 2433
2316 2434 if p0 == 2:
2317 2435 self.specHeisGgraphChannelList.setEnabled(True)
2318 2436 self.specHeisGgraphTminTmax.setEnabled(True)
2319 2437 self.specHeisGgraphYminYmax.setEnabled(True)
2320 2438 self.specHeisGgraphTimeRange.setEnabled(True)
2321 2439
2322 2440 if p0 == 0:
2323 2441 self.specHeisGgraphTminTmax.setEnabled(False)
2324 2442 self.specHeisGgraphYminYmax.setEnabled(False)
2325 2443 self.specHeisGgraphTimeRange.setEnabled(False)
2326 2444
2327 2445 @pyqtSignature("int")
2328 2446 def on_specHeisGraphSaveSpectra_stateChanged(self, p0):
2329 2447 """
2330 2448 """
2331 2449 if p0 == 2:
2332 2450 self.specHeisGraphPath.setEnabled(True)
2333 2451 self.specHeisGraphPrefix.setEnabled(True)
2334 2452 self.specHeisGraphToolPath.setEnabled(True)
2335 2453 if p0 == 0:
2336 2454 self.specHeisGraphPath.setEnabled(False)
2337 2455 self.specHeisGraphPrefix.setEnabled(False)
2338 2456 self.specHeisGraphToolPath.setEnabled(False)
2339 2457
2340 2458 @pyqtSignature("int")
2341 2459 def on_specHeisGraphSaveRTIplot_stateChanged(self, p0):
2342 2460 if p0 == 2:
2343 2461 self.specHeisGraphPath.setEnabled(True)
2344 2462 self.specHeisGraphPrefix.setEnabled(True)
2345 2463 self.specHeisGraphToolPath.setEnabled(True)
2346 2464
2347 2465 @pyqtSignature("int")
2348 2466 def on_specHeisGraphftpSpectra_stateChanged(self, p0):
2349 2467 """
2350 2468 """
2351 2469 if p0 == 2:
2352 2470 self.specHeisGgraphftpratio.setEnabled(True)
2353 2471
2354 2472 if p0 == 0:
2355 2473 self.specHeisGgraphftpratio.setEnabled(False)
2356 2474
2357 2475 @pyqtSignature("int")
2358 2476 def on_specHeisGraphftpRTIplot_stateChanged(self, p0):
2359 2477 if p0 == 2:
2360 2478 self.specHeisGgraphftpratio.setEnabled(True)
2361 2479
2362 2480 @pyqtSignature("")
2363 2481 def on_specHeisGraphClear_clicked(self):
2364 2482 pass
2365 2483
2366 2484 def __getParmsFromProjectWindow(self):
2367 2485 """
2368 2486 Check Inputs Project:
2369 2487 - project_name
2370 2488 - datatype
2371 2489 - ext
2372 2490 - data_path
2373 2491 - readmode
2374 2492 - delay
2375 2493 - set
2376 2494 - walk
2377 2495 """
2378 2496 parms_ok = True
2379 2497
2380 2498 project_name = str(self.proName.text())
2381 2499
2382 2500 if project_name == '' or project_name == None:
2383 2501 outputstr = "Enter a project Name"
2384 2502 self.console.append(outputstr)
2385 2503 parms_ok = False
2386 2504 project_name = None
2387 2505
2506 description = str(self.proDescription.toPlainText())
2507
2388 2508 datatype = str(self.proComDataType.currentText())
2509
2389 2510 ext = str(self.proDataType.text())
2390 2511
2391 2512 dpath = str(self.proDataPath.text())
2392 2513
2393 2514 if dpath == '':
2394 2515 outputstr = 'Datapath is empty'
2395 2516 self.console.append(outputstr)
2396 2517 parms_ok = False
2397 2518 dpath = None
2398 2519
2399 2520 if dpath != None:
2400 2521 if not os.path.isdir(dpath):
2401 2522 outputstr = 'Datapath (%s) does not exist' % dpath
2402 2523 self.console.append(outputstr)
2403 2524 parms_ok = False
2404 2525 dpath = None
2405 2526
2406 online = str(self.proComReadMode.currentIndex())
2527 online = int(self.proComReadMode.currentIndex())
2407 2528
2408 2529 delay = None
2409 2530 if online==1:
2410 2531 try:
2411 2532 delay = int(str(self.proDelay.text()))
2412 2533 except:
2413 outputstr = 'Delay value (%s) must be a integer number' %str(self.proName.text())
2534 outputstr = 'Delay value (%s) must be a integer number' %str(self.proDelay.text())
2414 2535 self.console.append(outputstr)
2415 2536 parms_ok = False
2416 2537
2417 2538
2418 2539 set = None
2540 value = str(self.proSet.text())
2541 try:
2542 set = int(value)
2543 except:
2544 pass
2545
2419 2546 ippKm = None
2420 2547
2421 value = str(self.proSet.text())
2548 value = str(self.proIPPKm.text())
2422 2549
2423 if datatype.lower() == "usrp":
2424 2550 try:
2425 2551 ippKm = float(value)
2426 2552 except:
2427 outputstr = 'IPP value (%s) must be a float number' % str(self.proName.text())
2553 if datatype=="USRP":
2554 outputstr = 'IPP value (%s) must be a float number' % str(self.proIPPKm.text())
2428 2555 self.console.append(outputstr)
2429 2556 parms_ok = False
2430 else:
2431 try:
2432 set = int(value)
2433 except:
2434 pass
2435 2557
2436 walk = self.proComWalk.currentIndex()
2558 walk = int(self.proComWalk.currentIndex())
2437 2559
2438 starDate = str(self.proComStartDate.currentText())
2560 startDate = str(self.proComStartDate.currentText())
2439 2561 endDate = str(self.proComEndDate.currentText())
2440 2562
2441 # startDateList = starDate.split("/")
2563 # startDateList = startDate.split("/")
2442 2564 # endDateList = endDate.split("/")
2443 2565 #
2444 # starDate = datetime.date(int(startDateList[0]), int(startDateList[1]), int(startDateList[2]))
2566 # startDate = datetime.date(int(startDateList[0]), int(startDateList[1]), int(startDateList[2]))
2445 2567 # endDate = datetime.date(int(endDateList[0]), int(endDateList[1]), int(endDateList[2]))
2446 2568
2447 2569 startTime = self.proStartTime.time()
2448 2570 endTime = self.proEndTime.time()
2449 2571
2450 startTime = startTime.strftime("%H:%M:%S")
2451 endTime = endTime.strftime("%H:%M:%S")
2572 startTime = str(startTime.toString("H:m:s"))
2573 endTime = str(endTime.toString("H:m:s"))
2452 2574
2453 2575 projectParms = ProjectParms()
2454 2576
2455 projectParms.project_name = project_name
2577 projectParms.name = project_name
2578 projectParms.description = description
2456 2579 projectParms.datatype = datatype
2457 2580 projectParms.ext = ext
2458 2581 projectParms.dpath = dpath
2459 2582 projectParms.online = online
2460 2583 projectParms.startDate = startDate
2461 2584 projectParms.endDate = endDate
2462 2585 projectParms.startTime = startTime
2463 2586 projectParms.endTime = endTime
2464 2587 projectParms.delay=delay
2465 2588 projectParms.walk=walk
2466 2589 projectParms.set=set
2467 2590 projectParms.ippKm=ippKm
2468 2591 projectParms.parmsOk=parms_ok
2469 2592
2470 2593 return projectParms
2471 2594
2472 2595
2473 2596 def __getParmsFromProjectObj(self, projectObjView):
2474 2597
2475 2598 parms_ok = True
2476 2599
2477 2600 project_name, description = projectObjView.name, projectObjView.description
2478 2601
2479 2602 readUnitObj = projectObjView.getReadUnitObj()
2480 2603 datatype = readUnitObj.datatype
2481 2604
2482 2605 operationObj = readUnitObj.getOperationObj(name='run')
2483 2606
2484 2607 dpath = operationObj.getParameterValue(parameterName='path')
2485 2608 startDate = operationObj.getParameterValue(parameterName='startDate')
2486 2609 endDate = operationObj.getParameterValue(parameterName='endDate')
2487 2610
2488 2611 startDate = startDate.strftime("%Y/%m/%d")
2489 2612 endDate = endDate.strftime("%Y/%m/%d")
2490 2613
2491 2614 startTime = operationObj.getParameterValue(parameterName='startTime')
2492 2615 endTime = operationObj.getParameterValue(parameterName='endTime')
2493 2616
2494 2617 startTime = startTime.strftime("%H:%M:%S")
2495 2618 endTime = endTime.strftime("%H:%M:%S")
2496 2619
2497 2620 online = 0
2498 2621 try:
2499 2622 online = operationObj.getParameterValue(parameterName='online')
2500 2623 except:
2501 2624 pass
2502 2625
2503 2626 delay = ''
2504 2627 try:
2505 2628 delay = operationObj.getParameterValue(parameterName='delay')
2506 2629 except:
2507 2630 pass
2508 2631
2509 2632 walk = 0
2510 2633 try:
2511 2634 walk = operationObj.getParameterValue(parameterName='walk')
2512 2635 except:
2513 2636 pass
2514 2637
2515 2638 set = ''
2516 2639 try:
2517 2640 set = operationObj.getParameterValue(parameterName='set')
2518 2641 except:
2519 2642 pass
2520 2643
2521 2644 ippKm = ''
2522 2645 if datatype.lower() == 'usrp':
2523 2646 try:
2524 2647 ippKm = operationObj.getParameterValue(parameterName='ippKm')
2525 2648 except:
2526 2649 pass
2527 2650
2528 2651 projectParms = ProjectParms()
2529 2652
2530 projectParms.project_name = project_name
2653 projectParms.name = project_name
2654 projectParms.description = description
2531 2655 projectParms.datatype = datatype
2532 2656 projectParms.ext = None
2533 2657 projectParms.dpath = dpath
2534 2658 projectParms.online = online
2535 2659 projectParms.startDate = startDate
2536 2660 projectParms.endDate = endDate
2537 2661 projectParms.startTime = startTime
2538 2662 projectParms.endTime = endTime
2539 2663 projectParms.delay=delay
2540 2664 projectParms.walk=walk
2541 2665 projectParms.set=set
2542 2666 projectParms.ippKm=ippKm
2543 2667 projectParms.parmsOk=parms_ok
2544 2668
2545 2669 return projectParms
2546 2670
2547 2671 def refreshProjectWindow2(self, projectObjView):
2548 2672
2549 2673 projectParms = self.__getParmsFromProjectObj(projectObjView)
2550 2674
2551 2675 index = projectParms.getDatatypeIndex()
2552 2676
2553 self.proName.setText(projectObjView.name)
2677 self.proName.setText(projectParms.name)
2554 2678 self.proDescription.clear()
2555 self.proDescription.append(projectObjView.description)
2679 self.proDescription.append(projectParms.description)
2556 2680
2557 2681 self.on_proComDataType_activated(index=index)
2558 self.proDataType.setText(projectParms.getExt())
2559 2682 self.proDataPath.setText(projectParms.dpath)
2560 2683 self.proComDataType.setCurrentIndex(index)
2561 2684 self.proComReadMode.setCurrentIndex(projectParms.online)
2562 2685 self.proDelay.setText(str(projectParms.delay))
2563 2686 self.proSet.setText(str(projectParms.set))
2687 self.proIPPKm.setText(str(projectParms.ippKm))
2564 2688
2565 2689 dateList = self.loadDays(data_path = projectParms.dpath,
2566 2690 ext = projectParms.getExt(),
2567 2691 walk = projectParms.walk,
2568 2692 expLabel = projectParms.expLabel)
2569 2693
2570 2694 try:
2571 2695 startDateIndex = dateList.index(projectParms.startDate)
2572 2696 except:
2573 2697 startDateIndex = 0
2574 2698
2575 2699 try:
2576 2700 endDateIndex = dateList.index(projectParms.endDate)
2577 2701 except:
2578 endDateIndex = -1
2702 endDateIndex = int(self.proComEndDate.count()-1)
2579 2703
2580 2704 self.proComStartDate.setCurrentIndex(startDateIndex)
2581 2705 self.proComEndDate.setCurrentIndex(endDateIndex)
2582 2706
2583 2707 startlist = projectParms.startTime.split(":")
2584 2708 endlist = projectParms.endTime.split(":")
2585 2709
2586 2710 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 2711 self.proStartTime.setTime(self.time)
2590 self.proEndTime.setTime(self.time)
2591 2712
2592 def refreshProjectProperties(self, projectObjView):
2713 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2714 self.proEndTime.setTime(self.time)
2593 2715
2594 propertyBuffObj = PropertyBuffer()
2595 name = projectObjView.name
2596 2716
2597 propertyBuffObj.append("Properties", "Name", projectObjView.name),
2598 propertyBuffObj.append("Properties", "Description", projectObjView.description)
2599 propertyBuffObj.append("Properties", "Workspace", self.pathWorkSpace)
2717 def __refreshVoltageWindow(self, puObj):
2600 2718
2601 readUnitObj = projectObjView.getReadUnitObj()
2602 runOperationObj = readUnitObj.getOperationObj(name='run')
2719 opObj = puObj.getOperationObj(name='setRadarFrequency')
2720 if opObj == None:
2721 self.volOpRadarfrequency.clear()
2722 self.volOpCebRadarfrequency.setCheckState(0)
2723 else:
2724 value = opObj.getParameterValue(parameterName='frequency')
2725 value = str(value)
2726 self.volOpRadarfrequency.setText(value)
2727 self.volOpRadarfrequency.setEnabled(True)
2728 self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2603 2729
2604 for thisParmObj in runOperationObj.getParameterObjList():
2605 propertyBuffObj.append("Reading parms", thisParmObj.name, str(thisParmObj.getValue()))
2730 opObj = puObj.getOperationObj(name="selectChannels")
2606 2731
2607 propertiesModel = propertyBuffObj.getPropertyModel()
2732 if opObj == None:
2733 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2608 2734
2609 self.treeProjectProperties.setModel(propertiesModel)
2610 self.treeProjectProperties.expandAll()
2611 self.treeProjectProperties.resizeColumnToContents(0)
2612 self.treeProjectProperties.resizeColumnToContents(1)
2735 if opObj == None:
2736 self.volOpChannel.clear()
2737 self.volOpCebChannels.setCheckState(0)
2738 else:
2739 channelEnabled = False
2740 try:
2741 value = opObj.getParameterValue(parameterName='channelList')
2742 value = str(value)[1:-1]
2743 channelEnabled = True
2744 channelMode = 0
2745 except:
2746 pass
2747 try:
2748 value = opObj.getParameterValue(parameterName='channelIndexList')
2749 value = str(value)[1:-1]
2750 channelEnabled = True
2751 channelMode = 1
2752 except:
2753 pass
2613 2754
2614 def refreshPUProperties(self, puObjView):
2755 if channelEnabled:
2756 self.volOpChannel.setText(value)
2757 self.volOpChannel.setEnabled(True)
2758 self.volOpCebChannels.setCheckState(QtCore.Qt.Checked)
2759 self.volOpComChannels.setCurrentIndex(channelMode)
2615 2760
2616 propertyBuffObj = PropertyBuffer()
2761 opObj = puObj.getOperationObj(name="selectHeights")
2762 if opObj == None:
2763 self.volOpHeights.clear()
2764 self.volOpCebHeights.setCheckState(0)
2765 else:
2766 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2767 value1 = str(value1)
2768 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2769 value2 = str(value2)
2770 value = value1 + "," + value2
2771 self.volOpHeights.setText(value)
2772 self.volOpHeights.setEnabled(True)
2773 self.volOpCebHeights.setCheckState(QtCore.Qt.Checked)
2617 2774
2618 for thisOp in puObjView.getOperationObjList():
2775 opObj = puObj.getOperationObj(name="filterByHeights")
2776 if opObj == None:
2777 self.volOpFilter.clear()
2778 self.volOpCebFilter.setCheckState(0)
2779 else:
2780 value = opObj.getParameterValue(parameterName='window')
2781 value = str(value)
2782 self.volOpFilter.setText(value)
2783 self.volOpFilter.setEnabled(True)
2784 self.volOpCebFilter.setCheckState(QtCore.Qt.Checked)
2619 2785
2620 operationName = thisOp.name
2621 if operationName == 'run':
2622 operationName = 'Properties'
2786 opObj = puObj.getOperationObj(name="ProfileSelector")
2787 if opObj == None:
2788 self.volOpProfile.clear()
2789 self.volOpCebProfile.setCheckState(0)
2623 2790 else:
2624 if not thisOp.getParameterObjList():
2625 propertyBuffObj.append(operationName, '--', '--')
2791 for parmObj in opObj.getParameterObjList():
2626 2792
2627 for thisParmObj in thisOp.getParameterObjList():
2793 if parmObj.name == "profileList":
2794 value = parmObj.getValue()
2795 value = str(value)[1:-1]
2796 self.volOpProfile.setText(value)
2797 self.volOpProfile.setEnabled(True)
2798 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2799 self.volOpComProfile.setCurrentIndex(0)
2628 2800
2629 propertyBuffObj.append(operationName, thisParmObj.name, str(thisParmObj.getValue()))
2801 if parmObj.name == "profileRangeList":
2802 value = parmObj.getValue()
2803 value = str(value)[1:-1]
2804 self.volOpProfile.setText(value)
2805 self.volOpProfile.setEnabled(True)
2806 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2807 self.volOpComProfile.setCurrentIndex(1)
2630 2808
2631 propertiesModel = propertyBuffObj.getPropertyModel()
2809 if parmObj.name == "rangeList":
2810 value = parmObj.getValue()
2811 value = str(value)[1:-1]
2812 self.volOpProfile.setText(value)
2813 self.volOpProfile.setEnabled(True)
2814 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2815 self.volOpComProfile.setCurrentIndex(2)
2632 2816
2633 self.treeProjectProperties.setModel(propertiesModel)
2634 self.treeProjectProperties.expandAll()
2635 self.treeProjectProperties.resizeColumnToContents(0)
2636 self.treeProjectProperties.resizeColumnToContents(1)
2637
2638 def on_click(self, index):
2639
2640 self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index)
2641
2642 projectObjView = self.getSelectedProjectObj()
2643
2644 if not projectObjView:
2645 return
2646
2647 #A project has been selected
2648 if projectObjView == self.getSelectedItemObj():
2649
2650 self.refreshProjectWindow2(projectObjView)
2651 self.refreshProjectProperties(projectObjView)
2652
2653 self.tabProject.setEnabled(True)
2654 self.tabVoltage.setEnabled(False)
2655 self.tabSpectra.setEnabled(False)
2656 self.tabCorrelation.setEnabled(False)
2657 self.tabSpectraHeis.setEnabled(False)
2658 self.tabWidgetProject.setCurrentWidget(self.tabProject)
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
2673 if self.selectedItemTree.text() == 'Voltage':
2674 datatype = 'Voltage'
2675
2676 if len(puObj.getOperationObjList()) == 1:
2677 self.clearPUWindow(datatype)
2678 else:
2679 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2680 self.refreshPUProperties(puObj)
2681
2682 voltEnable = True
2683 tabSelected = self.tabVoltage
2684
2685 if self.selectedItemTree.text() == 'Spectra':
2686
2687 datatype = 'Spectra'
2688
2689 if inputPUObj.datatype == 'Spectra':
2690 self.specOpnFFTpoints.setEnabled(False)
2691 self.specOpProfiles.setEnabled(False)
2692 self.specOpippFactor.setEnabled(False)
2693 else:
2694 self.specOpnFFTpoints.setEnabled(True)
2695 self.specOpProfiles.setEnabled(True)
2696 self.specOpippFactor.setEnabled(True)
2697
2698 if len(puObj.getOperationObjList()) == 1:
2699 self.clearPUWindow(datatype)
2700
2701 opObj = puObj.getOperationObj(name="run")
2817 opObj = puObj.getOperationObj(name="Decoder")
2818 self.volOpCode.setText("")
2702 2819 if opObj == None:
2703 self.specOpnFFTpoints.clear()
2704 self.specOpProfiles.clear()
2705 self.specOpippFactor.clear()
2706 else:
2707 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
2708 if parmObj == None:
2709 self.specOpnFFTpoints.clear()
2820 self.volOpCebDecodification.setCheckState(0)
2710 2821 else:
2711 value = opObj.getParameterValue(parameterName='nFFTPoints')
2712 self.specOpnFFTpoints.setText(str(value))
2822 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
2713 2823
2714 parmObj = opObj.getParameterObj(parameterName='nProfiles')
2715 if parmObj == None:
2716 self.specOpProfiles.clear()
2717 else:
2718 value = opObj.getParameterValue(parameterName='nProfiles')
2719 self.specOpProfiles.setText(str(value))
2824 parmObj = opObj.getParameterObj('code')
2720 2825
2721 parmObj = opObj.getParameterObj(parameterName="ippFactor")
2722 if parmObj == None:
2723 self.specOpippFactor.clear()
2724 else:
2725 value = opObj.getParameterValue(parameterName='ippFactor')
2726 self.specOpippFactor.setText(str(value))
2727
2728 opObj = puObj.getOperationObj(name="run")
2729 if opObj == None:
2730 self.specOppairsList.clear()
2731 self.specOpCebCrossSpectra.setCheckState(0)
2732 else:
2733 parmObj = opObj.getParameterObj(parameterName='pairsList')
2734 2826 if parmObj == None:
2735 self.specOppairsList.clear()
2736 self.specOpCebCrossSpectra.setCheckState(0)
2737 else:
2738 value = opObj.getParameterValue(parameterName='pairsList')
2739 value = str(value)[1:-1]
2740 self.specOppairsList.setText(str(value))
2741 self.specOppairsList.setEnabled(True)
2742 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
2743
2744 else:
2745 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2746 self.refreshPUProperties(puObj)
2747
2748 specEnable = True
2749 tabSelected = self.tabSpectra
2750
2751 if self.selectedItemTree.text() == 'Correlation':
2752
2753 corrEnable = True
2754 tabSelected = self.tabCorrelation
2755
2756 if self.selectedItemTree.text() == 'SpectraHeis':
2757 datatype = 'SpectraHeis'
2758
2759 if len(puObj.getOperationObjList()) == 1:
2760 self.clearPUWindow(datatype)
2761 else:
2762 self.refreshPUWindow(datatype=datatype, puObj=puObj)
2763 self.refreshPUProperties(puObj)
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)
2774
2775 def on_right_click(self, pos):
2776
2777 self.menu = QtGui.QMenu()
2778 quitAction0 = self.menu.addAction("Create a New Project")
2779 quitAction1 = self.menu.addAction("Create a New Processing Unit")
2780 quitAction2 = self.menu.addAction("Delete Item")
2781 quitAction3 = self.menu.addAction("Quit")
2782
2783 if len(self.__itemTreeDict) == 0:
2784 quitAction2.setEnabled(False)
2785 else:
2786 quitAction2.setEnabled(True)
2787
2788 action = self.menu.exec_(self.mapToGlobal(pos))
2789
2790 if action == quitAction0:
2791 self. setInputsProject_View()
2792 self.create = True
2793
2794 if action == quitAction1:
2795 if len(self.__projectObjDict) == 0:
2796 outputstr = "You need to create a Project before adding a Processing Unit"
2797 self.console.clear()
2798 self.console.append(outputstr)
2799 return 0
2800 else:
2801 self.addPUWindow()
2802 self.console.clear()
2803 self.console.append("Please, Choose the type of Processing Unit")
2804 # self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
2805 # self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
2806 # self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
2807
2808 if action == quitAction2:
2809 index = self.selectedItemTree
2810 try:
2811 index.parent()
2812 except:
2813 self.console.append('Please first select a Project or Processing Unit')
2814 return 0
2815 # print index.parent(),index
2816 if index.parent() == None:
2817 self.projectExplorerModel.removeRow(index.row())
2818 else:
2819 index.parent().removeRow(index.row())
2820 self.removeItemTreeFromProject()
2821 self.console.clear()
2822 # for i in self.projectExplorerTree.selectionModel().selection().indexes():
2823 # print i.row()
2824
2825 if action == quitAction3:
2826 self.close()
2827 return 0
2828
2829 def refreshProjectWindow(self, project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set):
2830
2831 self.proName.setText(str(project_name))
2832
2833 if datatype == 'Voltage':
2834 ext = '.r'
2835 value = 0
2836 elif datatype == 'Spectra':
2837 ext = '.pdata'
2838 value = 1
2839 elif datatype == 'Fits':
2840 ext = '.fits'
2841 value = 2
2842 elif datatype == 'USRP':
2843 ext = '.hdf5'
2844 value = 3
2845
2846 self.proDataType.setText(ext)
2847 self.proDataPath.setText(str(data_path))
2848 self.proComDataType.setCurrentIndex(value)
2849 self.proComReadMode.setCurrentIndex(int(online))
2850 self.proDelay.setText(str(delay))
2851 self.proSet.setText(str(set))
2852 self.proComStartDate.clear()
2853 self.proComEndDate.clear()
2854 self.proComStartDate.addItem(str(startDate))
2855 self.proComEndDate.addItem(str(endDate))
2856 starTime = str(startTime)
2857 starlist = starTime.split(":")
2858 endTime = str(endTime)
2859 endlist = endTime.split(":")
2860 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
2861 self.proStartTime.setTime(self.time)
2862 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2863 self.proEndTime.setTime(self.time)
2864 self.proDescription.clear()
2865 self.proDescription.append(description)
2866
2867 def refreshPUWindow(self, datatype, puObj):
2868
2869 if datatype == 'Voltage':
2870 opObj = puObj.getOperationObj(name='setRadarFrequency')
2871 if opObj == None:
2872 self.volOpRadarfrequency.clear()
2873 self.volOpCebRadarfrequency.setCheckState(0)
2874 else:
2875 value = opObj.getParameterValue(parameterName='frequency')
2876 value = str(value)
2877 self.volOpRadarfrequency.setText(value)
2878 self.volOpRadarfrequency.setEnabled(True)
2879 self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2880
2881
2882 opObj = puObj.getOperationObj(name="selectChannels")
2883
2884 if opObj == None:
2885 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2886
2887 if opObj == None:
2888 self.volOpChannel.clear()
2889 self.volOpCebChannels.setCheckState(0)
2827 self.volOpComCode.setCurrentIndex(0)
2890 2828 else:
2891 channelEnabled = False
2892 try:
2893 value = opObj.getParameterValue(parameterName='channelList')
2894 value = str(value)[1:-1]
2895 channelEnabled = True
2896 channelMode = 0
2897 except:
2898 pass
2899 try:
2900 value = opObj.getParameterValue(parameterName='channelIndexList')
2901 value = str(value)[1:-1]
2902 channelEnabled = True
2903 channelMode = 1
2904 except:
2905 pass
2906 2829
2907 if channelEnabled:
2908 self.volOpChannel.setText(value)
2909 self.volOpChannel.setEnabled(True)
2910 self.volOpCebChannels.setCheckState(QtCore.Qt.Checked)
2911 self.volOpComChannels.setCurrentIndex(channelMode)
2830 parmObj1 = opObj.getParameterObj('nCode')
2831 parmObj2 = opObj.getParameterObj('nBaud')
2912 2832
2913 opObj = puObj.getOperationObj(name="selectHeights")
2914 if opObj == None:
2915 self.volOpHeights.clear()
2916 self.volOpCebHeights.setCheckState(0)
2917 else:
2918 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2919 value1 = str(value1)
2920 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2921 value2 = str(value2)
2922 value = value1 + "," + value2
2923 self.volOpHeights.setText(value)
2924 self.volOpHeights.setEnabled(True)
2925 self.volOpCebHeights.setCheckState(QtCore.Qt.Checked)
2926
2927 opObj = puObj.getOperationObj(name="filterByHeights")
2928 if opObj == None:
2929 self.volOpFilter.clear()
2930 self.volOpCebFilter.setCheckState(0)
2833 if parmObj1 == None or parmObj2 == None:
2834 self.volOpComCode.setCurrentIndex(0)
2931 2835 else:
2932 value = opObj.getParameterValue(parameterName='window')
2933 value = str(value)
2934 self.volOpFilter.setText(value)
2935 self.volOpFilter.setEnabled(True)
2936 self.volOpCebFilter.setCheckState(QtCore.Qt.Checked)
2836 code = ast.literal_eval(str(parmObj.getValue()))
2837 nCode = parmObj1.getValue()
2838 nBaud = parmObj2.getValue()
2937 2839
2938 opObj = puObj.getOperationObj(name="ProfileSelector")
2939 if opObj == None:
2940 self.volOpProfile.clear()
2941 self.volOpCebProfile.setCheckState(0)
2942 else:
2943 for parmObj in opObj.getParameterObjList():
2944 if parmObj.name == "profileRangeList":
2945 value = opObj.getParameterValue(parameterName='profileRangeList')
2946 value = str(value)[1:-1]
2947 self.volOpProfile.setText(value)
2948 self.volOpProfile.setEnabled(True)
2949 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2950 self.volOpComProfile.setCurrentIndex(1)
2951 if parmObj.name == "profileList":
2952 value = opObj.getParameterValue(parameterName='profileList')
2953 value = str(value)[1:-1]
2954 self.volOpProfile.setText(value)
2955 self.volOpProfile.setEnabled(True)
2956 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2957 self.volOpComProfile.setCurrentIndex(0)
2840 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
2958 2841
2842 #User defined by default
2843 self.volOpComCode.setCurrentIndex(13)
2844 self.volOpCode.setText(str(code))
2959 2845
2960 opObj = puObj.getOperationObj(name="Decoder")
2961 if opObj == None:
2962 self.volOpCebDecodification.setCheckState(0)
2963 else:
2964 try:
2965 valueCode = opObj.getParameterValue(parameterName='nCode')
2966 status = "on"
2967 except:
2968 status = "off"
2969 if not status == "off":
2970 if int(valueCode) == 1:
2971 valueBaud = opObj.getParameterValue(parameterName='nBaud')
2972 if int(valueBaud) == 3:
2973 self.volOpComCode.setCurrentIndex(0)
2974 if int(valueBaud) == 4:
2846 if nCode == 1:
2847 if nBaud == 3:
2975 2848 self.volOpComCode.setCurrentIndex(1)
2976 if int(valueBaud) == 5:
2849 if nBaud == 4:
2977 2850 self.volOpComCode.setCurrentIndex(2)
2978 if int(valueBaud) == 7:
2851 if nBaud == 5:
2979 2852 self.volOpComCode.setCurrentIndex(3)
2980 if int(valueBaud) == 11:
2853 if nBaud == 7:
2981 2854 self.volOpComCode.setCurrentIndex(4)
2982 if int(valueBaud) == 13:
2855 if nBaud == 11:
2983 2856 self.volOpComCode.setCurrentIndex(5)
2984 else:
2985 valueBaud = opObj.getParameterValue(parameterName='nBaud')
2986 if int(valueBaud) == 3:
2857 if nBaud == 13:
2987 2858 self.volOpComCode.setCurrentIndex(6)
2988 if int(valueBaud) == 4:
2859
2860 if nCode == 2:
2861 if nBaud == 3:
2989 2862 self.volOpComCode.setCurrentIndex(7)
2990 if int(valueBaud) == 5:
2863 if nBaud == 4:
2991 2864 self.volOpComCode.setCurrentIndex(8)
2992 if int(valueBaud) == 7:
2865 if nBaud == 5:
2993 2866 self.volOpComCode.setCurrentIndex(9)
2994 if int(valueBaud) == 11:
2867 if nBaud == 7:
2995 2868 self.volOpComCode.setCurrentIndex(10)
2996 if int(valueBaud) == 13:
2869 if nBaud == 11:
2997 2870 self.volOpComCode.setCurrentIndex(11)
2998
2999 for parmObj in opObj.getParameterObjList():
3000 if parmObj.name == "nBaud":
3001 value = opObj.getParameterValue(parameterName='nBaud')
3002 if parmObj.name == "mode":
3003 value = opObj.getParameterValue(parameterName='mode')
3004 self.volOpComMode.setCurrentIndex(value)
3005 else:
2871 if nBaud == 13:
3006 2872 self.volOpComCode.setCurrentIndex(12)
3007 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
2873
3008 2874
3009 2875 opObj = puObj.getOperationObj(name="deFlip")
3010 2876 if opObj == None:
3011 2877 self.volOpFlip.clear()
3012 2878 self.volOpFlip.setEnabled(False)
3013 2879 self.volOpCebFlip.setCheckState(0)
3014 2880 else:
3015 2881 try:
3016 2882 value = opObj.getParameterValue(parameterName='channelList')
3017 2883 value = str(value)[1:-1]
3018 2884 except:
3019 2885 value = ""
3020 2886
3021 2887 self.volOpFlip.setText(value)
3022 2888 self.volOpFlip.setEnabled(True)
3023 2889 self.volOpCebFlip.setCheckState(QtCore.Qt.Checked)
3024 2890
3025 2891 opObj = puObj.getOperationObj(name="CohInt")
3026 2892 if opObj == None:
3027 2893 self.volOpCohInt.clear()
3028 2894 self.volOpCebCohInt.setCheckState(0)
3029 2895 else:
3030 2896 value = opObj.getParameterValue(parameterName='n')
3031 2897 self.volOpCohInt.setText(str(value))
3032 2898 self.volOpCohInt.setEnabled(True)
3033 2899 self.volOpCebCohInt.setCheckState(QtCore.Qt.Checked)
3034 2900
3035 2901 opObj = puObj.getOperationObj(name='Scope')
3036 2902 if opObj == None:
3037 2903 self.volGraphCebshow.setCheckState(0)
3038 2904 else:
3039 2905 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
3040 value = opObj.getParameterObj(parameterName='channelList')
3041 if value == None:
2906
2907 parmObj = opObj.getParameterObj(parameterName='channelList')
2908
2909 if parmObj == None:
3042 2910 self.volGraphChannelList.clear()
3043 2911 else:
3044 value = opObj.getParameterValue(parameterName='channelList')
3045 value = str(value)[1:-1]
2912 value = parmObj.getValue()
2913 value = str(value)
3046 2914 self.volGraphChannelList.setText(value)
3047 2915 self.volOpProfile.setEnabled(True)
3048 2916
3049 for parmObj in opObj.getParameterObjList():
3050 if parmObj.name == "xmin":
3051 value1 = opObj.getParameterValue(parameterName='xmin')
2917 parmObj1 = opObj.getParameterObj(parameterName='xmin')
2918 parmObj2 = opObj.getParameterObj(parameterName='xmax')
2919
2920 if parmObj1 == None or parmObj2 ==None:
2921 self.volGraphfreqrange.clear()
2922 else:
2923 value1 = parmObj1.getValue()
3052 2924 value1 = str(value1)
3053 value2 = opObj.getParameterValue(parameterName='xmax')
2925 value2 = parmObj2.getValue()
3054 2926 value2 = str(value2)
3055 2927 value = value1 + "," + value2
3056 2928 self.volGraphfreqrange.setText(value)
2929
2930 parmObj1 = opObj.getParameterObj(parameterName='ymin')
2931 parmObj2 = opObj.getParameterObj(parameterName='ymax')
2932
2933 if parmObj1 == None or parmObj2 ==None:
2934 self.volGraphHeightrange.clear()
3057 2935 else:
3058 self.volGraphfreqrange.clear()
3059 for parmObj in opObj.getParameterObjList():
3060 if parmObj.name == "ymin":
3061 value1 = opObj.getParameterValue(parameterName='ymin')
2936 value1 = parmObj1.getValue()
3062 2937 value1 = str(value1)
3063 value2 = opObj.getParameterValue(parameterName='ymax')
2938 value2 = parmObj2.getValue()
3064 2939 value2 = str(value2)
3065 2940 value = value1 + "," + value2
3066 2941 value2 = str(value2)
3067 2942 self.volGraphHeightrange.setText(value)
3068 else:
3069 self.volGraphHeightrange.clear()
3070 2943
2944 parmObj = opObj.getParameterObj(parameterName='save')
3071 2945
3072 for parmObj in opObj.getParameterObjList():
3073 if parmObj.name == "save":
2946 if parmObj == None:
2947 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2948 else:
2949 value = parmObj.getValue()
2950 if int(value):
3074 2951 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
3075 2952 else:
3076 2953 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
3077 2954
2955 parmObj = opObj.getParameterObj(parameterName='figpath')
2956 if parmObj == None:
2957 self.volGraphPath.clear()
2958 else:
2959 value = parmObj.getValue()
2960 path = str(value)
2961 self.volGraphPath.setText(path)
2962
2963 parmObj = opObj.getParameterObj(parameterName='figfile')
2964 if parmObj == None:
2965 self.volGraphPrefix.clear()
2966 else:
2967 value = parmObj.getValue()
2968 figfile = str(value)
2969 self.volGraphPrefix.setText(figfile)
2970
3078 2971 # outputVoltageWrite
3079 2972 opObj = puObj.getOperationObj(name='VoltageWriter')
2973
3080 2974 if opObj == None:
3081 2975 self.volOutputPath.clear()
3082 2976 self.volOutputblocksperfile.clear()
3083 2977 self.volOutputprofilesperblock.clear()
3084 2978 else:
3085 value = opObj.getParameterObj(parameterName='path')
3086 if value == None:
2979 parmObj = opObj.getParameterObj(parameterName='path')
2980 if parmObj == None:
3087 2981 self.volOutputPath.clear()
3088 2982 else:
3089 value = opObj.getParameterValue(parameterName='path')
2983 value = parmObj.getValue()
3090 2984 path = str(value)
3091 2985 self.volOutputPath.setText(path)
3092 value = opObj.getParameterObj(parameterName='blocksPerFile')
3093 if value == None:
2986
2987 parmObj = opObj.getParameterObj(parameterName='blocksPerFile')
2988 if parmObj == None:
3094 2989 self.volOutputblocksperfile.clear()
3095 2990 else:
3096 value = opObj.getParameterValue(parameterName='blocksPerFile')
2991 value = parmObj.getValue()
3097 2992 blocksperfile = str(value)
3098 2993 self.volOutputblocksperfile.setText(blocksperfile)
3099 value = opObj.getParameterObj(parameterName='profilesPerBlock')
3100 if value == None:
2994
2995 parmObj = opObj.getParameterObj(parameterName='profilesPerBlock')
2996 if parmObj == None:
3101 2997 self.volOutputprofilesperblock.clear()
3102 2998 else:
3103 value = opObj.getParameterValue(parameterName='profilesPerBlock')
2999 value = parmObj.getValue()
3104 3000 profilesPerBlock = str(value)
3105 3001 self.volOutputprofilesperblock.setText(profilesPerBlock)
3106 3002
3107 if datatype == 'Spectra':
3003 return
3004
3005 def __refreshSpectraWindow(self, puObj):
3108 3006
3109 3007 opObj = puObj.getOperationObj(name='setRadarFrequency')
3110 3008 if opObj == None:
3111 3009 self.specOpRadarfrequency.clear()
3112 3010 self.specOpCebRadarfrequency.setCheckState(0)
3113 3011 else:
3114 3012 value = opObj.getParameterValue(parameterName='frequency')
3115 3013 value = str(value)
3116 3014 self.specOpRadarfrequency.setText(value)
3117 3015 self.specOpRadarfrequency.setEnabled(True)
3118 3016 self.specOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
3119 3017
3120 3018 opObj = puObj.getOperationObj(name="run")
3121 3019 if opObj == None:
3122 3020 self.specOpnFFTpoints.clear()
3123 3021 self.specOpProfiles.clear()
3124 3022 self.specOpippFactor.clear()
3125 3023 else:
3126 3024 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
3127 3025 if parmObj == None:
3128 3026 self.specOpnFFTpoints.clear()
3129 3027 else:
3130 3028 self.specOpnFFTpoints.setEnabled(True)
3131 3029 value = opObj.getParameterValue(parameterName='nFFTPoints')
3132 3030 self.specOpnFFTpoints.setText(str(value))
3133 3031
3134 3032 parmObj = opObj.getParameterObj(parameterName='nProfiles')
3135 3033 if parmObj == None:
3136 3034 self.specOpProfiles.clear()
3137 3035 else:
3138 3036 self.specOpProfiles.setEnabled(True)
3139 3037 value = opObj.getParameterValue(parameterName='nProfiles')
3140 3038 self.specOpProfiles.setText(str(value))
3141 3039
3142 3040 parmObj = opObj.getParameterObj(parameterName='ippFactor')
3143 3041 if parmObj == None:
3144 3042 self.specOpippFactor.clear()
3145 3043 else:
3146 3044 self.specOpippFactor.setEnabled(True)
3147 3045 value = opObj.getParameterValue(parameterName='ippFactor')
3148 3046 self.specOpippFactor.setText(str(value))
3149 3047
3150 3048 opObj = puObj.getOperationObj(name="run")
3151 3049 if opObj == None:
3152 3050 self.specOppairsList.clear()
3153 3051 self.specOpCebCrossSpectra.setCheckState(0)
3154 3052 else:
3155 3053 parmObj = opObj.getParameterObj(parameterName='pairsList')
3156 3054 if parmObj == None:
3157 3055 self.specOppairsList.clear()
3158 3056 self.specOpCebCrossSpectra.setCheckState(0)
3159 3057 else:
3160 3058 value = opObj.getParameterValue(parameterName='pairsList')
3161 3059 value = str(value)[1:-1]
3162 3060 self.specOppairsList.setText(str(value))
3163 3061 self.specOppairsList.setEnabled(True)
3164 3062 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
3165 3063
3166 3064 opObj = puObj.getOperationObj(name="selectChannels")
3167 3065
3168 3066 if opObj == None:
3169 3067 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
3170 3068
3171 3069 if opObj == None:
3172 3070 self.specOpChannel.clear()
3173 3071 self.specOpCebChannel.setCheckState(0)
3174 3072 else:
3175 3073 channelEnabled = False
3176 3074 try:
3177 3075 value = opObj.getParameterValue(parameterName='channelList')
3178 3076 value = str(value)[1:-1]
3179 3077 channelEnabled = True
3180 3078 channelMode = 0
3181 3079 except:
3182 3080 pass
3183 3081 try:
3184 3082 value = opObj.getParameterValue(parameterName='channelIndexList')
3185 3083 value = str(value)[1:-1]
3186 3084 channelEnabled = True
3187 3085 channelMode = 1
3188 3086 except:
3189 3087 pass
3190 3088
3191 3089 if channelEnabled:
3192 3090 self.specOpChannel.setText(value)
3193 3091 self.specOpChannel.setEnabled(True)
3194 3092 self.specOpCebChannel.setCheckState(QtCore.Qt.Checked)
3195 3093 self.specOpComChannel.setCurrentIndex(channelMode)
3196 3094
3197 3095 opObj = puObj.getOperationObj(name="selectHeights")
3198 3096 if opObj == None:
3199 3097 self.specOpHeights.clear()
3200 3098 self.specOpCebHeights.setCheckState(0)
3201 3099 else:
3202 3100 value1 = int(opObj.getParameterValue(parameterName='minHei'))
3203 3101 value1 = str(value1)
3204 3102 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
3205 3103 value2 = str(value2)
3206 3104 value = value1 + "," + value2
3207 3105 self.specOpHeights.setText(value)
3208 3106 self.specOpHeights.setEnabled(True)
3209 3107 self.specOpCebHeights.setCheckState(QtCore.Qt.Checked)
3210 3108
3211 3109 opObj = puObj.getOperationObj(name="IncohInt")
3212 3110 if opObj == None:
3213 3111 self.specOpIncoherent.clear()
3214 3112 self.specOpCebIncoherent.setCheckState(0)
3215 3113 else:
3216 3114 for parmObj in opObj.getParameterObjList():
3217 3115 if parmObj.name == 'timeInterval':
3218 3116 value = opObj.getParameterValue(parameterName='timeInterval')
3219 3117 value = float(value)
3220 3118 self.specOpIncoherent.setText(str(value))
3221 3119 self.specOpIncoherent.setEnabled(True)
3222 3120 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3223 3121 self.specOpCobIncInt.setCurrentIndex(0)
3224 3122
3225 3123 if parmObj.name == 'n':
3226 3124 value = opObj.getParameterValue(parameterName='n')
3227 3125 value = float(value)
3228 3126 self.specOpIncoherent.setText(str(value))
3229 3127 self.specOpIncoherent.setEnabled(True)
3230 3128 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3231 3129 self.specOpCobIncInt.setCurrentIndex(1)
3232 3130
3233 3131 opObj = puObj.getOperationObj(name="removeDC")
3234 3132 if opObj == None:
3235 3133 self.specOpCebRemoveDC.setCheckState(0)
3236 3134 else:
3237 3135 self.specOpCebRemoveDC.setCheckState(QtCore.Qt.Checked)
3238 3136 value = opObj.getParameterValue(parameterName='mode')
3239 3137 if value == 1:
3240 3138 self.specOpComRemoveDC.setCurrentIndex(0)
3241 3139 elif value == 2:
3242 3140 self.specOpComRemoveDC.setCurrentIndex(1)
3243 3141
3244 3142 opObj = puObj.getOperationObj(name="removeInterference")
3245 3143 if opObj == None:
3246 3144 self.specOpCebRemoveInt.setCheckState(0)
3247 3145 else:
3248 3146 self.specOpCebRemoveInt.setCheckState(QtCore.Qt.Checked)
3249 3147
3250 3148 opObj = puObj.getOperationObj(name='getNoise')
3251 3149 if opObj == None:
3252 3150 self.specOpCebgetNoise.setCheckState(0)
3253 3151 self.specOpgetNoise.clear()
3254 3152 else:
3255 3153 self.specOpCebgetNoise.setCheckState(QtCore.Qt.Checked)
3256 3154 parmObj = opObj.getParameterObj(parameterName='minHei')
3257 3155 if parmObj == None:
3258 3156 self.specOpgetNoise.clear()
3259 3157 value1 = None
3260 3158 else:
3261 3159 value1 = opObj.getParameterValue(parameterName='minHei')
3262 3160 value1 = str(value1)
3263 3161 parmObj = opObj.getParameterObj(parameterName='maxHei')
3264 3162 if parmObj == None:
3265 3163 value2 = None
3266 3164 value = value1
3267 3165 self.specOpgetNoise.setText(value)
3268 3166 self.specOpgetNoise.setEnabled(True)
3269 3167 else:
3270 3168 value2 = opObj.getParameterValue(parameterName='maxHei')
3271 3169 value2 = str(value2)
3272 3170 parmObj = opObj.getParameterObj(parameterName='minVel')
3273 3171 if parmObj == None:
3274 3172 value3 = None
3275 3173 value = value1 + "," + value2
3276 3174 self.specOpgetNoise.setText(value)
3277 3175 self.specOpgetNoise.setEnabled(True)
3278 3176 else:
3279 3177 value3 = opObj.getParameterValue(parameterName='minVel')
3280 3178 value3 = str(value3)
3281 3179 parmObj = opObj.getParameterObj(parameterName='maxVel')
3282 3180 if parmObj == None:
3283 3181 value4 = None
3284 3182 value = value1 + "," + value2 + "," + value3
3285 3183 self.specOpgetNoise.setText(value)
3286 3184 self.specOpgetNoise.setEnabled(True)
3287 3185 else:
3288 3186 value4 = opObj.getParameterValue(parameterName='maxVel')
3289 3187 value4 = str(value4)
3290 3188 value = value1 + "," + value2 + "," + value3 + ',' + value4
3291 3189 self.specOpgetNoise.setText(value)
3292 3190 self.specOpgetNoise.setEnabled(True)
3293 3191
3294 3192 opObj = puObj.getOperationObj(name='SpectraPlot')
3295 3193 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
3296 3194 if opObj == None:
3297 3195 self.specGraphCebSpectraplot.setCheckState(0)
3298 3196 self.specGraphSaveSpectra.setCheckState(0)
3299 3197 self.specGraphftpSpectra.setCheckState(0)
3300 3198
3301 3199 else:
3302 3200 operationSpectraPlot = "Enable"
3303 3201 self.specGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3304 3202 parmObj = opObj.getParameterObj(parameterName='channelList')
3305 3203 if parmObj == None:
3306 3204 self.specGgraphChannelList.clear()
3307 3205 else:
3308 3206 value = opObj.getParameterValue(parameterName='channelList')
3309 3207 channelListSpectraPlot = str(value)[1:-1]
3310 3208 self.specGgraphChannelList.setText(channelListSpectraPlot)
3311 3209 self.specGgraphChannelList.setEnabled(True)
3312 3210
3313 3211 parmObj = opObj.getParameterObj(parameterName='xmin')
3314 3212 if parmObj == None:
3315 3213 self.specGgraphFreq.clear()
3316 3214 else:
3317 3215 value1 = opObj.getParameterValue(parameterName='xmin')
3318 3216 value1 = str(value1)
3319 3217 value2 = opObj.getParameterValue(parameterName='xmax')
3320 3218 value2 = str(value2)
3321 3219 value = value1 + "," + value2
3322 3220 self.specGgraphFreq.setText(value)
3323 3221 self.specGgraphFreq.setEnabled(True)
3324 3222
3325 3223 parmObj = opObj.getParameterObj(parameterName='ymin')
3326 3224 if parmObj == None:
3327 3225 self.specGgraphHeight.clear()
3328 3226 else:
3329 3227 value1 = opObj.getParameterValue(parameterName='ymin')
3330 3228 value1 = str(value1)
3331 3229 value2 = opObj.getParameterValue(parameterName='ymax')
3332 3230 value2 = str(value2)
3333 3231 value = value1 + "," + value2
3334 3232 self.specGgraphHeight.setText(value)
3335 3233 self.specGgraphHeight.setEnabled(True)
3336 3234
3337 3235 parmObj = opObj.getParameterObj(parameterName='zmin')
3338 3236 if parmObj == None:
3339 3237 self.specGgraphDbsrange.clear()
3340 3238 else:
3341 3239 value1 = opObj.getParameterValue(parameterName='zmin')
3342 3240 value1 = str(value1)
3343 3241 value2 = opObj.getParameterValue(parameterName='zmax')
3344 3242 value2 = str(value2)
3345 3243 value = value1 + "," + value2
3346 3244 self.specGgraphDbsrange.setText(value)
3347 3245 self.specGgraphDbsrange.setEnabled(True)
3348 3246
3349 3247
3350 3248 parmObj = opObj.getParameterObj(parameterName="figpath")
3351 3249 if parmObj == None:
3352 3250 self.specGraphSaveSpectra.setCheckState(0)
3353 3251 else:
3354 3252 self.specGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3355 3253 value = opObj.getParameterValue(parameterName='figpath')
3356 3254 self.specGraphPath.setText(value)
3357 3255
3358 3256 parmObj = opObj.getParameterObj(parameterName="ftp")
3359 3257 if parmObj == None:
3360 3258 self.specGraphftpSpectra.setCheckState(0)
3361 3259 else:
3362 3260 self.specGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3363 3261 try:
3364 3262 value = opObj.getParameterValue(parameterName='wr_period')
3365 3263 except:
3366 3264 value = " "
3367 3265 self.specGgraphftpratio.setText(str(value))
3368 3266
3369 3267 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
3370 3268 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
3371 3269 if opObj == None:
3372 3270 self.specGraphCebCrossSpectraplot.setCheckState(0)
3373 3271 self.specGraphSaveCross.setCheckState(0)
3374 3272
3375 3273 else:
3376 3274 operationCrossSpectraPlot = "Enable"
3377 3275 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
3378 3276 parmObj = opObj.getParameterObj(parameterName='xmin')
3379 3277 if parmObj == None:
3380 3278 self.specGgraphFreq.clear()
3381 3279 else:
3382 3280 value1 = opObj.getParameterValue(parameterName='xmin')
3383 3281 value1 = str(value1)
3384 3282 value2 = opObj.getParameterValue(parameterName='xmax')
3385 3283 value2 = str(value2)
3386 3284 value = value1 + "," + value2
3387 3285 self.specGgraphFreq.setText(value)
3388 3286 self.specGgraphFreq.setEnabled(True)
3389 3287
3390 3288 parmObj = opObj.getParameterObj(parameterName='ymin')
3391 3289 if parmObj == None:
3392 3290 self.specGgraphHeight.clear()
3393 3291 else:
3394 3292 value1 = opObj.getParameterValue(parameterName='ymin')
3395 3293 value1 = str(value1)
3396 3294 value2 = opObj.getParameterValue(parameterName='ymax')
3397 3295 value2 = str(value2)
3398 3296 value = value1 + "," + value2
3399 3297 self.specGgraphHeight.setText(value)
3400 3298 self.specGgraphHeight.setEnabled(True)
3401 3299
3402 3300 parmObj = opObj.getParameterObj(parameterName='zmin')
3403 3301 if parmObj == None:
3404 3302 self.specGgraphDbsrange.clear()
3405 3303 else:
3406 3304 value1 = opObj.getParameterValue(parameterName='zmin')
3407 3305 value1 = str(value1)
3408 3306 value2 = opObj.getParameterValue(parameterName='zmax')
3409 3307 value2 = str(value2)
3410 3308 value = value1 + "," + value2
3411 3309 self.specGgraphDbsrange.setText(value)
3412 3310 self.specGgraphDbsrange.setEnabled(True)
3413 3311
3414 3312 parmObj = opObj.getParameterObj(parameterName="figpath")
3415 3313 if parmObj == None:
3416 3314 self.specGraphSaveCross.setCheckState(0)
3417 3315
3418 3316 else:
3419 3317 self.specGraphSaveCross.setCheckState(QtCore.Qt.Checked)
3420 3318 value = opObj.getParameterValue(parameterName='figpath')
3421 3319 self.specGraphPath.setText(value)
3422 3320
3423 3321 parmObj = opObj.getParameterObj(parameterName="ftp")
3424 3322 if parmObj == None:
3425 3323 self.specGraphftpCross.setCheckState(0)
3426 3324 else:
3427 3325 self.specGraphftpCross.setCheckState(QtCore.Qt.Checked)
3428 3326 try:
3429 3327 value = opObj.getParameterValue(parameterName='wr_period')
3430 3328 except:
3431 3329 value = " "
3432 3330 self.specGgraphftpratio.setText(str(value))
3433 3331
3434 3332 opObj = puObj.getOperationObj(name='RTIPlot')
3435 3333 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
3436 3334 if opObj == None:
3437 3335 self.specGraphCebRTIplot.setCheckState(0)
3438 3336 self.specGraphSaveRTIplot.setCheckState(0)
3439 3337 self.specGraphftpRTIplot.setCheckState(0)
3440 3338 else:
3441 3339 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3442 3340 parmObj = opObj.getParameterObj(parameterName='channelList')
3443 3341 if parmObj == None:
3444 3342 self.specGgraphChannelList.clear()
3445 3343 else:
3446 3344 value = opObj.getParameterValue(parameterName='channelList')
3447 3345 channelListRTIPlot = str(value)[1:-1]
3448 3346 self.specGgraphChannelList.setText(channelListRTIPlot)
3449 3347 self.specGgraphChannelList.setEnabled(True)
3450 3348
3451 3349 parmObj = opObj.getParameterObj(parameterName='xmin')
3452 3350 if parmObj == None:
3453 3351 self.specGgraphTminTmax.clear()
3454 3352 else:
3455 3353 value1 = opObj.getParameterValue(parameterName='xmin')
3456 3354 value1 = str(value1)
3457 3355 value2 = opObj.getParameterValue(parameterName='xmax')
3458 3356 value2 = str(value2)
3459 3357 value = value1 + "," + value2
3460 3358 self.specGgraphTminTmax.setText(value)
3461 3359 self.specGgraphTminTmax.setEnabled(True)
3462 3360
3463 3361 parmObj = opObj.getParameterObj(parameterName='timerange')
3464 3362 if parmObj == None:
3465 3363 self.specGgraphTimeRange.clear()
3466 3364 else:
3467 3365 value1 = opObj.getParameterValue(parameterName='timerange')
3468 3366 value1 = str(value1)
3469 3367 self.specGgraphTimeRange.setText(value1)
3470 3368 self.specGgraphTimeRange.setEnabled(True)
3471 3369
3472 3370 parmObj = opObj.getParameterObj(parameterName='ymin')
3473 3371 if parmObj == None:
3474 3372 self.specGgraphHeight.clear()
3475 3373 else:
3476 3374 value1 = opObj.getParameterValue(parameterName='ymin')
3477 3375 value1 = str(value1)
3478 3376 value2 = opObj.getParameterValue(parameterName='ymax')
3479 3377 value2 = str(value2)
3480 3378 value = value1 + "," + value2
3481 3379 self.specGgraphHeight.setText(value)
3482 3380 self.specGgraphHeight.setEnabled(True)
3483 3381
3484 3382 parmObj = opObj.getParameterObj(parameterName='zmin')
3485 3383 if parmObj == None:
3486 3384 self.specGgraphDbsrange.clear()
3487 3385 else:
3488 3386 value1 = opObj.getParameterValue(parameterName='zmin')
3489 3387 value1 = str(value1)
3490 3388 value2 = opObj.getParameterValue(parameterName='zmax')
3491 3389 value2 = str(value2)
3492 3390 value = value1 + "," + value2
3493 3391 self.specGgraphDbsrange.setText(value)
3494 3392 self.specGgraphDbsrange.setEnabled(True)
3495 3393
3496 3394 parmObj = opObj.getParameterObj(parameterName="figpath")
3497 3395 if parmObj == None:
3498 3396 self.specGraphSaveRTIplot.setCheckState(0)
3499 3397 else:
3500 3398 self.specGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3501 3399 value = opObj.getParameterValue(parameterName='figpath')
3502 3400 self.specGraphPath.setText(value)
3503 #---------add----#
3401
3504 3402 parmObj = opObj.getParameterObj(parameterName="ftp")
3505 3403 if parmObj == None:
3506 3404 self.specGraphftpRTIplot.setCheckState(0)
3507 3405 else:
3508 3406 self.specGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3509 3407 try:
3510 3408 value = opObj.getParameterValue(parameterName='wr_period')
3511 3409 except:
3512 3410 value = " "
3513 3411 self.specGgraphftpratio.setText(str(value))
3514 3412
3515 3413 opObj = puObj.getOperationObj(name='CoherenceMap')
3516 3414 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
3517 3415 if opObj == None:
3518 3416 self.specGraphCebCoherencmap.setCheckState(0)
3519 3417 self.specGraphSaveCoherencemap.setCheckState(0)
3520 3418 self.specGraphftpCoherencemap.setCheckState(0)
3521 3419
3522 3420 else:
3523 3421 operationCoherenceMap = "Enable"
3524 3422 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
3525 3423 parmObj = opObj.getParameterObj(parameterName='xmin')
3526 3424 if parmObj == None:
3527 3425 self.specGgraphTminTmax.clear()
3528 3426 else:
3529 3427 value1 = opObj.getParameterValue(parameterName='xmin')
3530 3428 value1 = str(value1)
3531 3429 value2 = opObj.getParameterValue(parameterName='xmax')
3532 3430 value2 = str(value2)
3533 3431 value = value1 + "," + value2
3534 3432 self.specGgraphTminTmax.setText(value)
3535 3433 self.specGgraphTminTmax.setEnabled(True)
3536 3434
3537 3435 parmObj = opObj.getParameterObj(parameterName='timerange')
3538 3436 if parmObj == None:
3539 3437 self.specGgraphTimeRange.clear()
3540 3438 else:
3541 3439 value1 = opObj.getParameterValue(parameterName='timerange')
3542 3440 value1 = str(value1)
3543 3441 self.specGgraphTimeRange.setText(value1)
3544 3442 self.specGgraphTimeRange.setEnabled(True)
3545 3443
3546 3444 parmObj = opObj.getParameterObj(parameterName='ymin')
3547 3445 if parmObj == None:
3548 3446 self.specGgraphHeight.clear()
3549 3447 else:
3550 3448 value1 = opObj.getParameterValue(parameterName='ymin')
3551 3449 value1 = str(value1)
3552 3450 value2 = opObj.getParameterValue(parameterName='ymax')
3553 3451 value2 = str(value2)
3554 3452 value = value1 + "," + value2
3555 3453 self.specGgraphHeight.setText(value)
3556 3454 self.specGgraphHeight.setEnabled(True)
3557 3455
3558 3456 parmObj = opObj.getParameterObj(parameterName='zmin')
3559 3457 if parmObj == None:
3560 3458 self.specGgraphmagnitud.clear()
3561 3459 else:
3562 3460 value1 = opObj.getParameterValue(parameterName='zmin')
3563 3461 value1 = str(value1)
3564 3462 value2 = opObj.getParameterValue(parameterName='zmax')
3565 3463 value2 = str(value2)
3566 3464 value = value1 + "," + value2
3567 3465 self.specGgraphmagnitud.setText(value)
3568 3466 self.specGgraphmagnitud.setEnabled(True)
3569 3467
3570 3468 parmObj = opObj.getParameterObj(parameterName="figpath")
3571 3469 if parmObj == None:
3572 3470 self.specGraphSaveCoherencemap.setCheckState(0)
3573 3471 else:
3574 3472 self.specGraphSaveCoherencemap.setCheckState(QtCore.Qt.Checked)
3575 3473 value = opObj.getParameterValue(parameterName='figpath')
3576 3474 self.specGraphPath.setText(value)
3577 3475
3578 3476 parmObj = opObj.getParameterObj(parameterName="ftp")
3579 3477 if parmObj == None:
3580 3478 self.specGraphftpCoherencemap.setCheckState(0)
3581 3479 else:
3582 3480 self.specGraphftpCoherencemap.setCheckState(QtCore.Qt.Checked)
3583 3481 try:
3584 3482 value = opObj.getParameterValue(parameterName='wr_period')
3585 3483 except:
3586 3484 value = " "
3587 3485 self.specGgraphftpratio.setText(str(value))
3588 3486
3589 3487 opObj = puObj.getOperationObj(name='PowerProfilePlot')
3590 3488 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
3591 3489 if opObj == None:
3592 3490 self.specGraphPowerprofile.setCheckState(0)
3593 3491 self.specGraphSavePowerprofile.setCheckState(0)
3594 3492 operationPowerProfilePlot = "Disabled"
3595 3493 channelList = None
3596 3494 freq_vel = None
3597 3495 heightsrange = None
3598 3496 else:
3599 3497 operationPowerProfilePlot = "Enable"
3600 3498 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
3601 3499 parmObj = opObj.getParameterObj(parameterName='xmin')
3602 3500 if parmObj == None:
3603 3501 self.specGgraphDbsrange.clear()
3604 3502 else:
3605 3503 value1 = opObj.getParameterValue(parameterName='xmin')
3606 3504 value1 = str(value1)
3607 3505 value2 = opObj.getParameterValue(parameterName='xmax')
3608 3506 value2 = str(value2)
3609 3507 value = value1 + "," + value2
3610 3508 self.specGgraphDbsrange.setText(value)
3611 3509 self.specGgraphDbsrange.setEnabled(True)
3612 3510
3613 3511 parmObj = opObj.getParameterObj(parameterName='ymin')
3614 3512 if parmObj == None:
3615 3513 self.specGgraphHeight.clear()
3616 3514 else:
3617 3515 value1 = opObj.getParameterValue(parameterName='ymin')
3618 3516 value1 = str(value1)
3619 3517 value2 = opObj.getParameterValue(parameterName='ymax')
3620 3518 value2 = str(value2)
3621 3519 value = value1 + "," + value2
3622 3520 self.specGgraphHeight.setText(value)
3623 3521 self.specGgraphHeight.setEnabled(True)
3624 3522
3625 3523 parmObj = opObj.getParameterObj(parameterName="figpath")
3626 3524 if parmObj == None:
3627 3525 self.specGraphSavePowerprofile.setCheckState(0)
3628 3526 else:
3629 3527 self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked)
3630 3528 value = opObj.getParameterValue(parameterName='figpath')
3631 3529 self.specGraphPath.setText(value)
3632 3530
3633 3531 parmObj = opObj.getParameterObj(parameterName="ftp")
3634 3532 if parmObj == None:
3635 3533 self.specGraphftpPowerprofile.setCheckState(0)
3636 3534 else:
3637 3535 self.specGraphftpPowerprofile.setCheckState(QtCore.Qt.Checked)
3638 3536 try:
3639 3537 value = opObj.getParameterValue(parameterName='wr_period')
3640 3538 except:
3641 3539 value = " "
3642 3540 self.specGgraphftpratio.setText(str(value))
3643 3541 # -noise
3644 3542 opObj = puObj.getOperationObj(name='Noise')
3645 3543 # opObj = puObj.getOpObjfromParamValue(value="Noise")
3646 3544 if opObj == None:
3647 3545 self.specGraphCebRTInoise.setCheckState(0)
3648 3546 self.specGraphSaveRTInoise.setCheckState(0)
3649 3547 self.specGraphftpRTInoise.setCheckState(0)
3650 3548 else:
3651 3549 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
3652 3550 parmObj = opObj.getParameterObj(parameterName='channelList')
3653 3551 if parmObj == None:
3654 3552 self.specGgraphChannelList.clear()
3655 3553 else:
3656 3554 value = opObj.getParameterValue(parameterName='channelList')
3657 3555 channelListRTINoise = str(value)[1:-1]
3658 3556 self.specGgraphChannelList.setText(channelListRTINoise)
3659 3557 self.specGgraphChannelList.setEnabled(True)
3660 3558
3661 3559 parmObj = opObj.getParameterObj(parameterName='xmin')
3662 3560 if parmObj == None:
3663 3561 self.specGgraphTminTmax.clear()
3664 3562 else:
3665 3563 value1 = opObj.getParameterValue(parameterName='xmin')
3666 3564 value1 = str(value1)
3667 3565 value2 = opObj.getParameterValue(parameterName='xmax')
3668 3566 value2 = str(value2)
3669 3567 value = value1 + "," + value2
3670 3568 self.specGgraphTminTmax.setText(value)
3671 3569 self.specGgraphTminTmax.setEnabled(True)
3672 3570
3673 3571 parmObj = opObj.getParameterObj(parameterName='timerange')
3674 3572 if parmObj == None:
3675 3573 self.specGgraphTimeRange.clear()
3676 3574 else:
3677 3575 value1 = opObj.getParameterValue(parameterName='timerange')
3678 3576 value1 = str(value1)
3679 3577 self.specGgraphTimeRange.setText(value1)
3680 3578 self.specGgraphTimeRange.setEnabled(True)
3681 3579
3682 3580
3683 3581 parmObj = opObj.getParameterObj(parameterName='ymin')
3684 3582 if parmObj == None:
3685 3583 self.specGgraphDbsrange.clear()
3686 3584 else:
3687 3585 value1 = opObj.getParameterValue(parameterName='ymin')
3688 3586 value1 = str(value1)
3689 3587 value2 = opObj.getParameterValue(parameterName='ymax')
3690 3588 value2 = str(value2)
3691 3589 value = value1 + "," + value2
3692 3590 self.specGgraphDbsrange.setText(value)
3693 3591 self.specGgraphDbsrange.setEnabled(True)
3694 3592
3695 3593 parmObj = opObj.getParameterObj(parameterName="figpath")
3696 3594 if parmObj == None:
3697 3595 self.specGraphSaveRTInoise.setCheckState(0)
3698 3596 else:
3699 3597 self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked)
3700 3598 value = opObj.getParameterValue(parameterName='figpath')
3701 3599 self.specGraphPath.setText(value)
3702 #---------add----#
3600
3703 3601 parmObj = opObj.getParameterObj(parameterName="ftp")
3704 3602 if parmObj == None:
3705 3603 self.specGraphftpRTInoise.setCheckState(0)
3706 3604 else:
3707 3605 self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked)
3708 3606 try:
3709 3607 value = opObj.getParameterValue(parameterName='wr_period')
3710 3608 except:
3711 3609 value = " "
3712 3610 self.specGgraphftpratio.setText(str(value))
3713 3611
3714 3612 # outputSpectraWrite
3715 3613 opObj = puObj.getOperationObj(name='SpectraWriter')
3716 3614 if opObj == None:
3717 3615 self.specOutputPath.clear()
3718 3616 self.specOutputblocksperfile.clear()
3719 3617 self.specOutputprofileperblock.clear()
3720 3618 else:
3721 3619 value = opObj.getParameterObj(parameterName='path')
3722 3620 if value == None:
3723 3621 self.specOutputPath.clear()
3724 3622 else:
3725 3623 value = opObj.getParameterValue(parameterName='path')
3726 3624 path = str(value)
3727 3625 self.specOutputPath.setText(path)
3728 3626 value = opObj.getParameterObj(parameterName='blocksPerFile')
3729 3627 if value == None:
3730 3628 self.specOutputblocksperfile.clear()
3731 3629 else:
3732 3630 value = opObj.getParameterValue(parameterName='blocksPerFile')
3733 3631 blocksperfile = str(value)
3734 3632 self.specOutputblocksperfile.setText(blocksperfile)
3735 3633 value = opObj.getParameterObj(parameterName='profilesPerBlock')
3736 3634 if value == None:
3737 3635 self.specOutputprofileperblock.clear()
3738 3636 else:
3739 3637 value = opObj.getParameterValue(parameterName='profilesPerBlock')
3740 3638 profilesPerBlock = str(value)
3741 3639 self.specOutputprofileperblock.setText(profilesPerBlock)
3742 3640
3743 if datatype == 'SpectraHeis':
3641 return
3642
3643 def __refreshSpectraHeisWindow(self, puObj):
3644
3744 3645 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
3745 3646 if opObj == None:
3746 3647 self.specHeisOpIncoherent.clear()
3747 3648 self.specHeisOpCebIncoherent.setCheckState(0)
3748 3649 else:
3749 3650 for parmObj in opObj.getParameterObjList():
3750 3651 if parmObj.name == 'timeInterval':
3751 3652 value = opObj.getParameterValue(parameterName='timeInterval')
3752 3653 value = float(value)
3753 3654 self.specHeisOpIncoherent.setText(str(value))
3754 3655 self.specHeisOpIncoherent.setEnabled(True)
3755 3656 self.specHeisOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3756 3657 self.specHeisOpCobIncInt.setCurrentIndex(0)
3757 3658
3758 3659 # SpectraHeis Graph
3759 3660 opObj = puObj.getOperationObj(name='SpectraHeisScope')
3760 3661 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
3761 3662 if opObj == None:
3762 3663 self.specHeisGraphCebSpectraplot.setCheckState(0)
3763 3664 self.specHeisGraphSaveSpectra.setCheckState(0)
3764 3665 self.specHeisGraphftpSpectra.setCheckState(0)
3765 3666
3766 3667 else:
3767 3668 operationSpectraHeisScope = "Enable"
3768 3669 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3769 3670 parmObj = opObj.getParameterObj(parameterName='channelList')
3770 3671 if parmObj == None:
3771 3672 self.specHeisGgraphChannelList.clear()
3772 3673 else:
3773 3674 value = opObj.getParameterValue(parameterName='channelList')
3774 3675 channelListSpectraHeisScope = str(value)[1:-1]
3775 3676 self.specHeisGgraphChannelList.setText(channelListSpectraHeisScope)
3776 3677 self.specHeisGgraphChannelList.setEnabled(True)
3777 3678
3778 3679 parmObj = opObj.getParameterObj(parameterName='xmin')
3779 3680 if parmObj == None:
3780 3681 self.specHeisGgraphXminXmax.clear()
3781 3682 else:
3782 3683 value1 = opObj.getParameterValue(parameterName='xmin')
3783 3684 value1 = str(value1)
3784 3685 value2 = opObj.getParameterValue(parameterName='xmax')
3785 3686 value2 = str(value2)
3786 3687 value = value1 + "," + value2
3787 3688 self.specHeisGgraphXminXmax.setText(value)
3788 3689 self.specHeisGgraphXminXmax.setEnabled(True)
3789 3690
3790 3691 parmObj = opObj.getParameterObj(parameterName='ymin')
3791 3692 if parmObj == None:
3792 3693 self.specHeisGgraphYminYmax.clear()
3793 3694 else:
3794 3695 value1 = opObj.getParameterValue(parameterName='ymin')
3795 3696 value1 = str(value1)
3796 3697 value2 = opObj.getParameterValue(parameterName='ymax')
3797 3698 value2 = str(value2)
3798 3699 value = value1 + "," + value2
3799 3700 self.specHeisGgraphYminYmax.setText(value)
3800 3701 self.specHeisGgraphYminYmax.setEnabled(True)
3801 3702
3802 3703 parmObj = opObj.getParameterObj(parameterName="figpath")
3803 3704 if parmObj == None:
3804 3705 self.specHeisGraphSaveSpectra.setCheckState(0)
3805 3706 else:
3806 3707 self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3807 3708 value = opObj.getParameterValue(parameterName='figpath')
3808 3709 self.specHeisGraphPath.setText(value)
3809 3710
3810 3711 parmObj = opObj.getParameterObj(parameterName="ftp")
3811 3712 if parmObj == None:
3812 3713 self.specHeisGraphftpSpectra.setCheckState(0)
3813 3714 else:
3814 3715 self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3815 3716 try:
3816 3717 value = opObj.getParameterValue(parameterName='wr_period')
3817 3718 except:
3818 3719 value = " "
3819 3720 self.specHeisGgraphftpratio.setText(str(value))
3820 3721
3821 3722 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
3822 3723 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
3823 3724 if opObj == None:
3824 3725 self.specHeisGraphCebRTIplot.setCheckState(0)
3825 3726 self.specHeisGraphSaveRTIplot.setCheckState(0)
3826 3727 self.specHeisGraphftpRTIplot.setCheckState(0)
3827 3728 else:
3828 3729 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3829 3730 parmObj = opObj.getParameterObj(parameterName='channelList')
3830 3731 if parmObj == None:
3831 3732 self.specHeisGgraphChannelList.clear()
3832 3733 else:
3833 3734 value = opObj.getParameterValue(parameterName='channelList')
3834 3735 channelListRTIPlot = str(value)[1:-1]
3835 3736 self.specGgraphChannelList.setText(channelListRTIPlot)
3836 3737 self.specGgraphChannelList.setEnabled(True)
3837 3738
3838 parmObj = opObj.getParameterObj(parameterName='xmin')
3839 if parmObj == None:
3840 self.specHeisGgraphTminTmax.clear()
3739 parmObj = opObj.getParameterObj(parameterName='xmin')
3740 if parmObj == None:
3741 self.specHeisGgraphTminTmax.clear()
3742 else:
3743 value1 = opObj.getParameterValue(parameterName='xmin')
3744 value1 = str(value1)
3745 value2 = opObj.getParameterValue(parameterName='xmax')
3746 value2 = str(value2)
3747 value = value1 + "," + value2
3748 self.specHeisGgraphTminTmax.setText(value)
3749 self.specHeisGgraphTminTmax.setEnabled(True)
3750
3751 parmObj = opObj.getParameterObj(parameterName='timerange')
3752 if parmObj == None:
3753 self.specGgraphTimeRange.clear()
3754 else:
3755 value1 = opObj.getParameterValue(parameterName='timerange')
3756 value1 = str(value1)
3757 self.specHeisGgraphTimeRange.setText(value1)
3758 self.specHeisGgraphTimeRange.setEnabled(True)
3759
3760 parmObj = opObj.getParameterObj(parameterName='ymin')
3761 if parmObj == None:
3762 self.specHeisGgraphYminYmax.clear()
3763 else:
3764 value1 = opObj.getParameterValue(parameterName='ymin')
3765 value1 = str(value1)
3766 value2 = opObj.getParameterValue(parameterName='ymax')
3767 value2 = str(value2)
3768 value = value1 + "," + value2
3769 self.specHeisGgraphYminYmax.setText(value)
3770 self.specHeisGgraphYminYmax.setEnabled(True)
3771
3772 parmObj = opObj.getParameterObj(parameterName="figpath")
3773 if parmObj == None:
3774 self.specHeisGraphSaveRTIplot.setCheckState(0)
3775 else:
3776 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3777 value = opObj.getParameterValue(parameterName='figpath')
3778 self.specHeisGraphPath.setText(value)
3779
3780 parmObj = opObj.getParameterObj(parameterName="ftp")
3781 if parmObj == None:
3782 self.specHeisGraphftpRTIplot.setCheckState(0)
3783 else:
3784 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3785 try:
3786 value = opObj.getParameterValue(parameterName='wr_period')
3787 except:
3788 value = " "
3789 self.specHeisGgraphftpratio.setText(str(value))
3790
3791 # outputSpectraHeisWrite
3792 opObj = puObj.getOperationObj(name='FitsWriter')
3793 if opObj == None:
3794 self.specHeisOutputPath.clear()
3795 self.specHeisOutputblocksperfile.clear()
3796 self.specHeisOutputMetada.clear()
3797 else:
3798 value = opObj.getParameterObj(parameterName='path')
3799 if value == None:
3800 self.specHeisOutputPath.clear()
3801 else:
3802 value = opObj.getParameterValue(parameterName='path')
3803 path = str(value)
3804 self.specHeisOutputPath.setText(path)
3805 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
3806 if value == None:
3807 self.specHeisOutputblocksperfile.clear()
3808 else:
3809 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
3810 blocksperfile = str(value)
3811 self.specHeisOutputblocksperfile.setText(blocksperfile)
3812 value = opObj.getParameterObj(parameterName='metadatafile')
3813 if value == None:
3814 self.specHeisOutputMetada.clear()
3815 else:
3816 value = opObj.getParameterValue(parameterName='metadatafile')
3817 metada = str(value)
3818 self.specHeisOutputMetada.setText(metada)
3819
3820 return
3821
3822 def __refreshCorrelationWindow(self, puObj):
3823 pass
3824
3825 def refreshPUWindow(self, datatype, puObj):
3826
3827 if datatype == 'Voltage':
3828 self.__refreshVoltageWindow(puObj)
3829
3830 if datatype == 'Spectra':
3831 self.__refreshSpectraWindow(puObj)
3832
3833 if datatype == 'SpectraHeis':
3834 self.__refreshSpectraHeisWindow(puObj)
3835
3836 def refreshProjectProperties(self, projectObjView):
3837
3838 propertyBuffObj = PropertyBuffer()
3839 name = projectObjView.name
3840
3841 propertyBuffObj.append("Properties", "Name", projectObjView.name),
3842 propertyBuffObj.append("Properties", "Description", projectObjView.description)
3843 propertyBuffObj.append("Properties", "Workspace", self.pathWorkSpace)
3844
3845 readUnitObj = projectObjView.getReadUnitObj()
3846 runOperationObj = readUnitObj.getOperationObj(name='run')
3847
3848 for thisParmObj in runOperationObj.getParameterObjList():
3849 propertyBuffObj.append("Reading parms", thisParmObj.name, str(thisParmObj.getValue()))
3850
3851 propertiesModel = propertyBuffObj.getPropertyModel()
3852
3853 self.treeProjectProperties.setModel(propertiesModel)
3854 self.treeProjectProperties.expandAll()
3855 self.treeProjectProperties.resizeColumnToContents(0)
3856 self.treeProjectProperties.resizeColumnToContents(1)
3857
3858 def refreshPUProperties(self, puObjView):
3859
3860 propertyBuffObj = PropertyBuffer()
3861
3862 for thisOp in puObjView.getOperationObjList():
3863
3864 operationName = thisOp.name
3865 if operationName == 'run':
3866 operationName = 'Properties'
3867 else:
3868 if not thisOp.getParameterObjList():
3869 propertyBuffObj.append(operationName, '--', '--')
3870
3871 for thisParmObj in thisOp.getParameterObjList():
3872
3873 propertyBuffObj.append(operationName, thisParmObj.name, str(thisParmObj.getValue()))
3874
3875 propertiesModel = propertyBuffObj.getPropertyModel()
3876
3877 self.treeProjectProperties.setModel(propertiesModel)
3878 self.treeProjectProperties.expandAll()
3879 self.treeProjectProperties.resizeColumnToContents(0)
3880 self.treeProjectProperties.resizeColumnToContents(1)
3881
3882 def refreshGraphicsId(self):
3883
3884 projectObj = self.getSelectedProjectObj()
3885
3886 for idPU, puObj in projectObj.procUnitConfObjDict.items():
3887
3888 for opObj in puObj.getOperationObjList():
3889
3890 if opObj.name not in ('Scope', 'SpectraPlot', 'CrossSpectraPlot', 'RTIPlot', 'CoherenceMap', 'PowerProfilePlot', 'Noise', 'SpectraHeisScope', 'RTIfromSpectraHeis'):
3891 continue
3892
3893 opObj.changeParameter(name='id', value=opObj.id, format='int')
3894
3895 def on_click(self, index):
3896
3897 self.console.clear()
3898
3899 self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index)
3900
3901 projectObjView = self.getSelectedProjectObj()
3902
3903 if not projectObjView:
3904 return
3905
3906 self.create = False
3907 selectedObjView = self.getSelectedItemObj()
3908
3909 #A project has been selected
3910 if projectObjView == selectedObjView:
3911
3912 self.refreshProjectWindow2(projectObjView)
3913 self.refreshProjectProperties(projectObjView)
3914
3915 self.tabProject.setEnabled(True)
3916 self.tabVoltage.setEnabled(False)
3917 self.tabSpectra.setEnabled(False)
3918 self.tabCorrelation.setEnabled(False)
3919 self.tabSpectraHeis.setEnabled(False)
3920 self.tabWidgetProject.setCurrentWidget(self.tabProject)
3921
3922 return
3923
3924 #A processing unit has been selected
3925 voltEnable = False
3926 specEnable = False
3927 corrEnable = False
3928 specHeisEnable = False
3929 tabSelected = self.tabProject
3930
3931 puObj = selectedObjView
3932 inputId = puObj.getInputId()
3933 inputPUObj = projectObjView.getProcUnitObj(inputId)
3934
3935 if self.selectedItemTree.text() == 'Voltage':
3936 datatype = 'Voltage'
3937 self.refreshPUWindow(datatype=datatype, puObj=puObj)
3938 self.refreshPUProperties(puObj)
3939
3940 voltEnable = True
3941 tabSelected = self.tabVoltage
3942
3943 if self.selectedItemTree.text() == 'Spectra':
3944
3945 datatype = 'Spectra'
3946
3947 if inputPUObj.datatype == 'Spectra':
3948 self.specOpnFFTpoints.setEnabled(False)
3949 self.specOpProfiles.setEnabled(False)
3950 self.specOpippFactor.setEnabled(False)
3951 else:
3952 self.specOpnFFTpoints.setEnabled(True)
3953 self.specOpProfiles.setEnabled(True)
3954 self.specOpippFactor.setEnabled(True)
3955
3956 self.refreshPUWindow(datatype=datatype, puObj=puObj)
3957 self.refreshPUProperties(puObj)
3958
3959 specEnable = True
3960 tabSelected = self.tabSpectra
3961
3962 if self.selectedItemTree.text() == 'Correlation':
3963
3964 corrEnable = True
3965 tabSelected = self.tabCorrelation
3966
3967 if self.selectedItemTree.text() == 'SpectraHeis':
3968 datatype = 'SpectraHeis'
3969
3970 self.refreshPUWindow(datatype=datatype, puObj=puObj)
3971 self.refreshPUProperties(puObj)
3972
3973 specHeisEnable = False
3974 tabSelected = self.tabSpectraHeis
3975
3976 self.tabProject.setEnabled(False)
3977 self.tabVoltage.setEnabled(voltEnable)
3978 self.tabSpectra.setEnabled(specEnable)
3979 self.tabCorrelation.setEnabled(corrEnable)
3980 self.tabSpectraHeis.setEnabled(specHeisEnable)
3981 self.tabWidgetProject.setCurrentWidget(tabSelected)
3982
3983 def on_right_click(self, pos):
3984
3985 self.menu = QtGui.QMenu()
3986 quitAction0 = self.menu.addAction("Create a New Project")
3987 quitAction1 = self.menu.addAction("Create a New Processing Unit")
3988 quitAction2 = self.menu.addAction("Delete Item")
3989 quitAction3 = self.menu.addAction("Quit")
3990
3991 if len(self.__itemTreeDict) == 0:
3992 quitAction2.setEnabled(False)
3841 3993 else:
3842 value1 = opObj.getParameterValue(parameterName='xmin')
3843 value1 = str(value1)
3844 value2 = opObj.getParameterValue(parameterName='xmax')
3845 value2 = str(value2)
3846 value = value1 + "," + value2
3847 self.specHeisGgraphTminTmax.setText(value)
3848 self.specHeisGgraphTminTmax.setEnabled(True)
3994 quitAction2.setEnabled(True)
3849 3995
3850 parmObj = opObj.getParameterObj(parameterName='timerange')
3851 if parmObj == None:
3852 self.specGgraphTimeRange.clear()
3853 else:
3854 value1 = opObj.getParameterValue(parameterName='timerange')
3855 value1 = str(value1)
3856 self.specHeisGgraphTimeRange.setText(value1)
3857 self.specHeisGgraphTimeRange.setEnabled(True)
3996 action = self.menu.exec_(self.mapToGlobal(pos))
3858 3997
3859 parmObj = opObj.getParameterObj(parameterName='ymin')
3860 if parmObj == None:
3861 self.specHeisGgraphYminYmax.clear()
3862 else:
3863 value1 = opObj.getParameterValue(parameterName='ymin')
3864 value1 = str(value1)
3865 value2 = opObj.getParameterValue(parameterName='ymax')
3866 value2 = str(value2)
3867 value = value1 + "," + value2
3868 self.specHeisGgraphYminYmax.setText(value)
3869 self.specHeisGgraphYminYmax.setEnabled(True)
3998 if action == quitAction0:
3999 self. setInputsProject_View()
4000 self.create = True
3870 4001
3871 parmObj = opObj.getParameterObj(parameterName="figpath")
3872 if parmObj == None:
3873 self.specHeisGraphSaveRTIplot.setCheckState(0)
3874 else:
3875 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3876 value = opObj.getParameterValue(parameterName='figpath')
3877 self.specHeisGraphPath.setText(value)
3878 #---------add----#
3879 parmObj = opObj.getParameterObj(parameterName="ftp")
3880 if parmObj == None:
3881 self.specHeisGraphftpRTIplot.setCheckState(0)
4002 if action == quitAction1:
4003 if len(self.__projectObjDict) == 0:
4004 outputstr = "You need to create a Project before adding a Processing Unit"
4005 self.console.clear()
4006 self.console.append(outputstr)
4007 return 0
3882 4008 else:
3883 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
4009 self.addPUWindow()
4010 self.console.clear()
4011 self.console.append("Please, Choose the type of Processing Unit")
4012 # self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
4013 # self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
4014 # self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
4015
4016 if action == quitAction2:
4017 index = self.selectedItemTree
3884 4018 try:
3885 value = opObj.getParameterValue(parameterName='wr_period')
4019 index.parent()
3886 4020 except:
3887 value = " "
3888 self.specHeisGgraphftpratio.setText(str(value))
4021 self.console.append('Please first select a Project or Processing Unit')
4022 return 0
4023 # print index.parent(),index
4024 if index.parent() == None:
4025 self.projectExplorerModel.removeRow(index.row())
4026 else:
4027 index.parent().removeRow(index.row())
4028 self.removeItemTreeFromProject()
4029 self.console.clear()
4030 # for i in self.projectExplorerTree.selectionModel().selection().indexes():
4031 # print i.row()
3889 4032
4033 if action == quitAction3:
4034 self.close()
4035 return 0
3890 4036
4037 def refreshProjectWindow(self, project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set):
3891 4038
3892 # outputSpectraHeisWrite
3893 opObj = puObj.getOperationObj(name='FitsWriter')
3894 if opObj == None:
3895 self.specHeisOutputPath.clear()
3896 self.specHeisOutputblocksperfile.clear()
3897 self.specHeisOutputMetada.clear()
3898 else:
3899 value = opObj.getParameterObj(parameterName='path')
3900 if value == None:
3901 self.specHeisOutputPath.clear()
3902 else:
3903 value = opObj.getParameterValue(parameterName='path')
3904 path = str(value)
3905 self.specHeisOutputPath.setText(path)
3906 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
3907 if value == None:
3908 self.specHeisOutputblocksperfile.clear()
3909 else:
3910 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
3911 blocksperfile = str(value)
3912 self.specHeisOutputblocksperfile.setText(blocksperfile)
3913 value = opObj.getParameterObj(parameterName='metadatafile')
3914 if value == None:
3915 self.specHeisOutputMetada.clear()
3916 else:
3917 value = opObj.getParameterValue(parameterName='metadatafile')
3918 metada = str(value)
3919 self.specHeisOutputMetada.setText(metada)
4039 self.proName.setText(str(project_name))
4040
4041 if datatype == 'Voltage':
4042 ext = '.r'
4043 value = 0
4044 elif datatype == 'Spectra':
4045 ext = '.pdata'
4046 value = 1
4047 elif datatype == 'Fits':
4048 ext = '.fits'
4049 value = 2
4050 elif datatype == 'USRP':
4051 ext = '.hdf5'
4052 value = 3
3920 4053
4054 self.proDataType.setText(ext)
4055 self.proDataPath.setText(str(data_path))
4056 self.proComDataType.setCurrentIndex(value)
4057 self.proComReadMode.setCurrentIndex(int(online))
4058 self.proDelay.setText(str(delay))
4059 self.proSet.setText(str(set))
4060 self.proComStartDate.clear()
4061 self.proComEndDate.clear()
4062 self.proComStartDate.addItem(str(startDate))
4063 self.proComEndDate.addItem(str(endDate))
4064 starTime = str(startTime)
4065 starlist = starTime.split(":")
4066 endTime = str(endTime)
4067 endlist = endTime.split(":")
4068 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
4069 self.proStartTime.setTime(self.time)
4070 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
4071 self.proEndTime.setTime(self.time)
4072 self.proDescription.clear()
4073 self.proDescription.append(description)
3921 4074
3922 4075
3923 4076 def setspecGraph(self):
3924 4077
3925 4078 self.specGgraphChannelList.setEnabled(True)
3926 4079
3927 4080 def clearspecGraph(self):
3928 4081
3929 4082 self.specGgraphChannelList.clear()
3930 4083
3931 4084 def create_comm(self):
3932 4085
3933 4086 self.commCtrlPThread = CommCtrlProcessThread()
3934 4087 self.commCtrlPThread.start()
3935 4088
3936 4089 def create_updating_timer(self):
3937 4090 self.comm_data_timer = QtCore.QTimer(self)
3938 4091 self.comm_data_timer.timeout.connect(self.on_comm_updating_timer)
3939 4092 self.comm_data_timer.start(1000)
3940 4093
3941 4094 def create_figure(self):
3942 4095 self.queue_plot = Queue.Queue()
3943 4096 self.plotmanager = PlotManager(self.queue_plot)
3944 4097 self.plot_timer = QtCore.QTimer()
3945 4098 QtCore.QObject.connect(self.plot_timer, QtCore.SIGNAL("timeout()"), self.periodicCall)
3946 4099 self.plot_timer.start(100)
3947 4100 self.running = 1
3948 4101
3949 4102 def periodicCall(self):
3950 4103 """
3951 4104 Check every 100 ms if there is something new in the queue.
3952 4105 """
3953 4106 self.plotmanager.processIncoming()
3954 4107 if not self.running:
3955 4108 app.quit()
3956 4109
3957 4110 # def on_comm_data_timer(self):
3958 4111 # # lee el data_queue y la coloca en el queue de ploteo
3959 4112 # try:
3960 4113 # reply = self.commCtrlPThread.data_q.get(block=False)
3961 4114 # self.queue_plot.put(reply.data)
3962 4115 #
3963 4116 # except Queue.Empty:
3964 4117 # pass
3965 4118
3966 4119 def createProjectView(self, id):
3967 4120
3968 self.create = False
3969 project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4121 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4122 id = str(id)
4123 projectParms = self.__getParmsFromProjectWindow()
4124
4125 if not projectParms.isValid():
4126 return None
3970 4127
3971 4128 projectObjView = Project()
3972 projectObjView.setup(id=id, name=project_name, description=description)
4129 projectObjView.setup(id=id, name=projectParms.name, description=projectParms.description)
3973 4130
3974 4131 self.__projectObjDict[id] = projectObjView
4132 self.addProject2ProjectExplorer(id=id, name=projectObjView.name)
4133
4134 self.create = False
3975 4135
3976 4136 return projectObjView
3977 4137
3978 4138 def updateProjectView(self):
3979 4139
3980 project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4140 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4141
4142 projectParms = self.__getParmsFromProjectWindow()
4143
4144 if not projectParms.isValid():
4145 return None
3981 4146
3982 4147 projectObjView = self.getSelectedProjectObj()
3983 projectObjView.update(name=project_name, description=description)
4148 projectObjView.update(name=projectParms.name, description=projectParms.description)
3984 4149
3985 4150 return projectObjView
3986 4151
3987 4152 def createReadUnitView(self, projectObjView):
3988 4153
3989 project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3990
3991 if datatype == "Voltage" or datatype == "Spectra" or datatype == "Fits":
3992 readUnitConfObj = projectObjView.addReadUnit(datatype=datatype,
3993 path=data_path,
3994 startDate=startDate,
3995 endDate=endDate,
3996 startTime=startTime,
3997 endTime=endTime,
3998 online=online,
3999 delay=delay,
4000 walk=walk,
4001 set=set
4154 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
4155
4156 projectParms = self.__getParmsFromProjectWindow()
4157
4158 if not projectParms.isValid():
4159 return None
4160
4161 if projectParms.datatype in ("Voltage", "Spectra", "Fits"):
4162 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
4163 path=projectParms.dpath,
4164 startDate=projectParms.startDate,
4165 endDate=projectParms.endDate,
4166 startTime=projectParms.startTime,
4167 endTime=projectParms.endTime,
4168 online=projectParms.online,
4169 walk=projectParms.walk
4002 4170 )
4003 4171
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
4172 if projectParms.set:
4173 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
4174
4175 if projectParms.delay:
4176 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4177
4178 if projectParms.datatype == "USRP":
4179 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
4180 path=projectParms.dpath,
4181 startDate=projectParms.startDate,
4182 endDate=projectParms.endDate,
4183 startTime=projectParms.startTime,
4184 endTime=projectParms.endTime,
4185 online=projectParms.online,
4186 ippKm=projectParms.ippKm
4014 4187 )
4188
4189 if projectParms.delay:
4190 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4191
4015 4192 return readUnitConfObj
4016 4193
4017 4194 def updateReadUnitView(self, projectObjView, idReadUnit):
4018 4195
4019 project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
4196 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
4020 4197
4021 4198 readUnitConfObj = projectObjView.getProcUnitObj(idReadUnit)
4022 4199
4023 if datatype == "Voltage" or datatype == "Spectra" or datatype == "Fits":
4024 readUnitConfObj.update(datatype=datatype,
4025 path=data_path,
4026 startDate=startDate,
4027 endDate=endDate,
4028 startTime=startTime,
4029 endTime=endTime,
4030 online=online,
4031 delay=delay,
4032 walk=walk,
4033 set=set
4034 )
4200 projectParms = self.__getParmsFromProjectWindow()
4035 4201
4036 if datatype == "USRP":
4037 readUnitConfObj.update(datatype=datatype,
4038 path=data_path,
4039 startDate=startDate,
4040 endDate=endDate,
4041 startTime=startTime,
4042 endTime=endTime,
4043 online=online,
4044 delay=delay,
4045 ippKm=set
4202 if not projectParms.isValid():
4203 return None
4204
4205 if projectParms.datatype in ["Voltage", "Spectra", "Fits"]:
4206 readUnitConfObj.update(datatype=projectParms.datatype,
4207 path=projectParms.dpath,
4208 startDate=projectParms.startDate,
4209 endDate=projectParms.endDate,
4210 startTime=projectParms.startTime,
4211 endTime=projectParms.endTime,
4212 online=projectParms.online,
4213 walk=projectParms.walk
4214 )
4215 if projectParms.set:
4216 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
4217
4218 if projectParms.delay:
4219 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4220
4221 if projectParms.datatype == "USRP":
4222 readUnitConfObj.update(datatype=projectParms.datatype,
4223 path=projectParms.dpath,
4224 startDate=projectParms.startDate,
4225 endDate=projectParms.endDate,
4226 startTime=projectParms.startTime,
4227 endTime=projectParms.endTime,
4228 online=projectParms.online,
4229 ippKm=projectParms.ippKm
4046 4230 )
4047 4231
4232 if projectParms.delay:
4233 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4234
4048 4235 return readUnitConfObj
4049 4236
4050 4237 def createProcUnitView(self, projectObjView, datatype, inputId):
4051 4238
4052 4239 procUnitConfObj = projectObjView.addProcUnit(datatype=datatype, inputId=inputId)
4053 4240
4054 4241 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4055 4242
4056 4243 return procUnitConfObj
4057 4244
4058 4245 def updateProcUnitView(self, id):
4059 4246
4060 4247 procUnitConfObj = projectObjView.getProcUnitObj(id)
4061 4248 procUnitConfObj.removeOperations()
4062 4249
4063 4250 return procUnitConfObj
4064 4251
4065 4252 def addPUWindow(self):
4066 4253
4067 4254 self.configUPWindowObj = UnitProcessWindow(self)
4068 4255 fatherObj = self.getSelectedItemObj()
4069 4256 try:
4070 4257 fatherObj.getElementName()
4071 4258 except:
4072 4259 self.console.append("First left click on Project or Processing Unit")
4073 4260 return 0
4074 4261
4075 4262 if fatherObj.getElementName() == 'Project':
4076 4263 readUnitConfObj = fatherObj.getReadUnitObj()
4077 4264 self.configUPWindowObj.dataTypeProject = str(readUnitConfObj.datatype)
4078 4265
4079 4266 self.configUPWindowObj.getfromWindowList.append(fatherObj)
4080 4267 self.configUPWindowObj.loadTotalList()
4081 4268 self.configUPWindowObj.show()
4082 4269 self.configUPWindowObj.closed.connect(self.createPUWindow)
4083 4270
4084 4271 def createPUWindow(self):
4085 4272
4086 self.console.clear()
4087
4088 4273 if not self.configUPWindowObj.create:
4089 4274 return
4090 4275
4091 4276 fatherObj = self.configUPWindowObj.getFromWindow
4092 4277 datatype = self.configUPWindowObj.typeofUP
4093 4278
4094 4279 if fatherObj.getElementName() == 'Project':
4095 4280 inputId = fatherObj.getReadUnitId()
4096 4281 projectObjView = fatherObj
4097 4282 else:
4098 4283 inputId = fatherObj.getId()
4099 4284 projectObjView = self.getSelectedProjectObj()
4100 4285
4101 4286 #----------------------------
4102 4287 puObj = self.createProcUnitView(projectObjView, datatype, inputId)
4103 4288 #----------------------------
4104 4289 self.addPU2ProjectExplorer(id=puObj.getId(), name=datatype)
4105 4290
4106 4291 self.showtabPUCreated(datatype)
4107 4292
4108 4293 self.clearPUWindow(datatype)
4109 4294
4110 4295 self.showPUinitView()
4111 4296
4112 4297 def addFTPConf2Operation(self, puObj, opObj):
4113 4298
4114 4299 if self.temporalFTP.create:
4115 4300 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
4116 4301 else:
4117 4302 self.temporalFTP.setwithoutconfiguration()
4118 4303 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
4119 4304
4120 4305 # opObj.addParameter(name='server', value=server, format='str')
4121 4306 # opObj.addParameter(name='folder', value=remotefolder, format='str')
4122 4307 # opObj.addParameter(name='username', value=username, format='str')
4123 4308 # opObj.addParameter(name='password', value=password, format='str')
4124 4309
4125 4310 if ftp_wei:
4126 4311 opObj.addParameter(name='ftp_wei', value=int(ftp_wei), format='int')
4127 4312 if exp_code:
4128 4313 opObj.addParameter(name='exp_code', value=int(exp_code), format='int')
4129 4314 if sub_exp_code:
4130 4315 opObj.addParameter(name='sub_exp_code', value=int(sub_exp_code), format='int')
4131 4316 if plot_pos:
4132 4317 opObj.addParameter(name='plot_pos', value=int(plot_pos), format='int')
4133 4318
4134 4319 if puObj.datatype == "Spectra":
4135 4320 value = self.specGgraphftpratio.text()
4136 4321 if puObj.datatype == "SpectraHeis":
4137 4322 value = self.specHeisGgraphftpratio.text()
4138 4323
4139 4324 if not value == "":
4140 4325 try:
4141 4326 value = int(value)
4142 4327 except:
4143 4328 self.console.clear()
4144 4329 self.console.append("Please fill Ratio on the textbox")
4145 4330 return 0
4146 4331
4147 4332 opObj.addParameter(name='wr_period', value=value, format='int')
4148 4333
4149 def createFTPProcUnitView(self, server, username, password, remotefolder,
4334 def addFTPProcUnitView(self, server, username, password, remotefolder,
4150 4335 ftp_wei, exp_code, sub_exp_code, plot_pos,
4151 4336 localfolder='./', extension='.png', period='60', protocol='ftp'):
4152 4337
4153 4338 projectObj = self.getSelectedProjectObj()
4154 4339 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
4155 4340
4156 4341 if not procUnitConfObj:
4157 4342 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
4158 4343 else:
4159 4344 procUnitConfObj.removeOperations()
4160 4345
4161 4346 procUnitConfObj.addParameter(name='server', value=server, format='str')
4162 4347 procUnitConfObj.addParameter(name='username', value=username, format='str')
4163 4348 procUnitConfObj.addParameter(name='password', value=password, format='str')
4164 4349 procUnitConfObj.addParameter(name='localfolder', value=localfolder, format='str')
4165 4350 procUnitConfObj.addParameter(name='remotefolder', value=remotefolder, format='str')
4166 4351 procUnitConfObj.addParameter(name='ext', value=extension, format='str')
4167 4352 procUnitConfObj.addParameter(name='period', value=period, format='int')
4168 4353 procUnitConfObj.addParameter(name='protocol', value=protocol, format='str')
4169 4354
4170 4355 procUnitConfObj.addParameter(name='ftp_wei', value=ftp_wei, format='str')
4171 4356 procUnitConfObj.addParameter(name='exp_code', value=exp_code, format='str')
4172 4357 procUnitConfObj.addParameter(name='sub_exp_code', value=sub_exp_code, format='str')
4173 4358 procUnitConfObj.addParameter(name='plot_pos', value=plot_pos, format='str')
4174 4359
4175 4360 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4176 4361
4177 4362 self.__ftpProcUnitAdded = True
4178 4363 self.__ftpProcUnitId = procUnitConfObj.getId()
4179 4364
4180 4365 def removeFTPProcUnitView(self):
4181 4366
4182 4367 projectObj = self.getSelectedProjectObj()
4183 4368 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
4184 4369
4185 4370 self.__ftpProcUnitAdded = False
4186 4371 self.__ftpProcUnitId = None
4187 4372
4188 4373 if not procUnitConfObj:
4189 4374 return
4190 4375
4191 4376 projectObj.removeProcUnit(procUnitConfObj.getId())
4192 4377
4193 4378 if procUnitConfObj.getId() not in self.__puObjDict.keys():
4194 4379 return
4195 4380
4196 4381 self.__puObjDict.pop(procUnitConfObj.getId())
4197 4382
4198 4383 def bufferProject(self, caracteristica, principal, description):
4199 4384
4200 4385 self.projectProperCaracteristica.append(caracteristica)
4201 4386 self.projectProperPrincipal.append(principal)
4202 4387 self.projectProperDescripcion.append(description)
4203 4388 return self.projectProperCaracteristica, self.projectProperPrincipal, self.projectProperDescripcion
4204 4389
4205 4390
4206 4391 def showProjectProperties(self, projectObjView):
4207 4392
4208 4393 project_name, description = projectObjView.name, projectObjView.description
4209 4394
4210 4395 id = projectObjView.id
4211 4396 readUnitId = projectObjView.getReadUnitId()
4212 4397 readUnitObj = projectObjView.getProcUnitObj(readUnitId)
4213 4398 operationObj = readUnitObj.getOperationObj(name='run')
4214 4399
4215 4400
4216 4401 datatype = operationObj.getParameterValue(parameterName='datatype')
4217 4402 dpath = operationObj.getParameterValue(parameterName='path')
4218 4403 startDate = operationObj.getParameterValue(parameterName='startDate')
4219 4404 endDate = operationObj.getParameterValue(parameterName='endDate')
4220 4405 startDate = str(startDate)
4221 4406 endDate = str(endDate)
4222 4407 startDateList = startDate.split('-')
4223 4408 endDateList = endDate.split('-')
4224 4409 startDate = startDateList[0] + "/" + startDateList[1] + "/" + startDateList[2]
4225 4410 endDate = endDateList[0] + "/" + endDateList[1] + "/" + endDateList[2]
4226 4411
4227 4412 startTime = operationObj.getParameterValue(parameterName='startTime')
4228 4413 endTime = operationObj.getParameterValue(parameterName='endTime')
4229 4414 online = operationObj.getParameterValue(parameterName='online')
4230 4415 walk = operationObj.getParameterValue(parameterName='walk')
4231 4416 delay = operationObj.getParameterValue(parameterName='delay')
4232 4417 try:
4233 4418 set = operationObj.getParameterValue(parameterName='set')
4234 4419 except:
4235 4420 set = " "
4236 4421
4237 4422 if online == 0:
4238 4423 remode = "offline"
4239 4424 else:
4240 4425 remode = "online"
4241 4426
4242 4427 if walk == 0:
4243 4428 walk_str = 'On Files'
4244 4429 else:
4245 4430 walk_str = 'On Folder'
4246 4431
4247 4432 self.bufferProject("Properties", "Name", project_name),
4248 4433 self.bufferProject("Properties", "Data Path", dpath)
4249 4434 self.bufferProject("Properties", "Workspace", self.pathWorkSpace)
4250 4435 self.bufferProject("Parameters", "Read Mode ", remode)
4251 4436 self.bufferProject("Parameters", "DataType ", datatype)
4252 4437 self.bufferProject("Parameters", "Start Date", str(startDate))
4253 4438 self.bufferProject("Parameters", "End Date ", str(endDate))
4254 4439 self.bufferProject("Parameters", "Start Time", str(startTime))
4255 4440 self.bufferProject("Parameters", "End Time ", str(endTime))
4256 4441 self.bufferProject("Parameters", "Delay ", str(delay))
4257 4442 try:
4258 4443 set = operationObj.getParameterValue(parameterName='set')
4259 4444 self.bufferProject("Parameters", "Set ", set)
4260 4445 except:
4261 4446 set = " "
4262 4447 self.bufferProject("Parameters", "Walk ", str(walk_str))
4263 4448 self.bufferProject("Parameters", "Time zone", "Local")
4264 4449 self.bufferProject("Description", "Summary ", description)
4265 4450
4266 4451 self.propertiesModel = TreeModel()
4267 4452 self.propertiesModel.showProperties(self.projectProperCaracteristica, self.projectProperPrincipal, self.projectProperDescripcion)
4268 4453 self.treeProjectProperties.setModel(self.propertiesModel)
4269 4454 self.treeProjectProperties.expandAll()
4270 4455 self.treeProjectProperties.resizeColumnToContents(0)
4271 4456 self.treeProjectProperties.resizeColumnToContents(1)
4272 4457
4273 4458 self.projectProperCaracteristica = []
4274 4459 self.projectProperPrincipal = []
4275 4460 self.projectProperDescripcion = []
4276 4461
4277 4462 return datatype , dpath , startDate , endDate, startTime, endTime, online, delay, walk, set
4278 4463
4279 4464 def showPUinitView(self):
4280 4465 self.propertiesModel = TreeModel()
4281 4466 self.propertiesModel.initPUVoltageView()
4282 4467 self.treeProjectProperties.setModel(self.propertiesModel)
4283 4468 self.treeProjectProperties.expandAll()
4284 4469 self.treeProjectProperties.allColumnsShowFocus()
4285 4470 self.treeProjectProperties.resizeColumnToContents(1)
4286 4471
4287 4472 def bufferVoltage(self, caracteristica, principal, description):
4288 4473 self.volProperCaracteristica.append(caracteristica)
4289 4474 self.volProperPrincipal.append(principal)
4290 4475 self.volProperDescripcion.append(description)
4291 4476 return self.volProperCaracteristica, self.volProperPrincipal, self.volProperDescripcion
4292 4477
4293 4478 def showPUVoltageProperties(self, puObj):
4294 4479
4295 4480
4296 4481 type = puObj.name
4297 4482 self.bufferVoltage("Processing Unit", "Type", type)
4298 4483
4299 4484 opObj = puObj.getOperationObj(name="setRadarFrequency")
4300 4485 if opObj == None:
4301 4486 radarfrequency = None
4302 4487 else:
4303 4488 value = opObj.getParameterValue(parameterName='frequency')
4304 4489 value = str(value)
4305 4490 radarfrequency = value
4306 4491 self.bufferVoltage("Processing Unit", "Radar Frequency", radarfrequency)
4307 4492
4308 4493 opObj = puObj.getOperationObj(name="selectChannels")
4309 4494 if opObj == None:
4310 4495 channel = None
4311 4496 else:
4312 4497 value = opObj.getParameterValue(parameterName='channelList')
4313 4498 value = str(value)#[1:-1]
4314 4499 channel = value
4315 4500 self.bufferVoltage("Processing Unit", "Select Channel", channel)
4316 4501
4317 4502 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
4318 4503 if opObj == None:
4319 4504 channel = None
4320 4505 else:
4321 4506 value = opObj.getParameterValue(parameterName='channelIndexList')
4322 4507 value = str(value)#[1:-1]
4323 4508 channel = value
4324 4509 self.bufferVoltage("Processing Unit", "Select Channel by Index", channel)
4325 4510
4326 4511 opObj = puObj.getOperationObj(name="selectHeights")
4327 4512 if opObj == None:
4328 4513 heights = None
4329 4514 else:
4330 4515 value1 = int(opObj.getParameterValue(parameterName='minHei'))
4331 4516 value1 = str(value1)
4332 4517 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
4333 4518 value2 = str(value2)
4334 4519 value = value1 + "," + value2
4335 4520 heights = value
4336 4521 self.bufferVoltage("Processing Unit", "Select Heights", heights)
4337 4522
4338 4523
4339 4524 opObj = puObj.getOperationObj(name="filterByHeights")
4340 4525 if opObj == None:
4341 4526 filter = None
4342 4527 else:
4343 4528 value = opObj.getParameterValue(parameterName='window')
4344 4529 value = str(value)
4345 4530 filter = value
4346 4531 self.bufferVoltage("Processing Unit", "Filter", filter)
4347 4532
4348 4533
4349 4534 opObj = puObj.getOperationObj(name="ProfileSelector")
4350 4535 if opObj == None:
4351 4536 profile = None
4352 4537 else:
4353 4538 for parmObj in opObj.getParameterObjList():
4354 4539 if parmObj.name == "profileRangeList":
4355 4540 value = opObj.getParameterValue(parameterName='profileRangeList')
4356 4541 value = str(value)#[1:-1]
4357 4542 profile = value
4358 4543 self.bufferVoltage("Processing Unit", "Select Profile", profile)
4359 4544
4360 4545 if parmObj.name == "profileList":
4361 4546 value = opObj.getParameterValue(parameterName='profileList')
4362 4547 value = str(value)#[1:-1]
4363 4548 profile = value
4364 4549 self.bufferVoltage("Processing Unit", "Select Profile", profile)
4365 4550
4366 4551
4367 4552 opObj = puObj.getOperationObj(name="Decoder")
4368 4553 if opObj == None:
4369 4554 self.volOpCebDecodification.setCheckState(0)
4370 4555 code = None
4371 4556 mode = None
4372 4557 else:
4373 4558 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
4374 4559 try:
4375 4560 code = opObj.getParameterValue(parameterName='code')
4376 4561 nBaud = opObj.getParameterValue(parameterName='nBaud')
4377 4562 nCode = opObj.getParameterValue(parameterName='nCode')
4378 4563 code = numpy.array(code).reshape(nCode,nBaud)
4379 4564 except:
4380 4565 code = "Default"
4381 4566
4382 4567 self.bufferVoltage("Processing Unit", "Code", str(code).replace('\n',''))
4383 4568
4384 4569 try:
4385 4570 value = opObj.getParameterValue(parameterName='mode')
4386 4571 if int(value) == 0:
4387 4572 mode = "Time"
4388 4573 else:
4389 4574 mode = "freq" + str(value)
4390 4575 except:
4391 4576 mode = "Default"
4392 4577 self.bufferVoltage("Processing Unit", "Decoder mode", mode)
4393 4578
4394 4579 opObj = puObj.getOperationObj(name="deFlip")
4395 4580 if opObj == None:
4396 4581 value = None
4397 4582 else:
4398 4583 try:
4399 4584 value = opObj.getParameterValue(parameterName='channelList')
4400 4585 value = str(value)
4401 4586 except:
4402 4587 value = "All channels"
4403 4588
4404 4589 self.bufferVoltage("Processing Unit", "Flip", value)
4405 4590
4406 4591 opObj = puObj.getOperationObj(name="CohInt")
4407 4592 if opObj == None:
4408 4593 coherentintegration = None
4409 4594 else:
4410 4595 value = opObj.getParameterValue(parameterName='n')
4411 4596 coherentintegration = value
4412 4597 self.bufferVoltage("Processing Unit", "Coh Int", coherentintegration)
4413 4598
4414 4599
4415 4600 # graph
4416 4601 # opObj = puObj.getOperationObj(name='Plot')
4417 4602 opObj = puObj.getOperationObj(name='Scope')
4418 4603 if opObj == None:
4419 4604 self.volGraphCebshow.setCheckState(0)
4420 4605 operation = "Disabled"
4421 4606 channelList = None
4422 4607 freq_vel = None
4423 4608 heightsrange = None
4424 4609 else:
4425 4610 operation = 'Enabled'
4426 4611 self.bufferVoltage("Scope", "Operation", operation),
4427 4612 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
4428 4613 value = opObj.getParameterObj(parameterName='channelList')
4429 4614 if value == None:
4430 4615 channelList = None
4431 4616 else:
4432 4617 value = opObj.getParameterValue(parameterName='channelList')
4433 4618 value = str(value)[1:-1]
4434 4619 channelList = value
4435 4620 self.bufferVoltage("Scope", "Channel List", channelList)
4436 4621
4437 4622
4438 4623 value1 = opObj.getParameterObj(parameterName='xmin')
4439 4624 if value1 == None:
4440 4625 freq_vel = None
4441 4626 else:
4442 4627 value1 = opObj.getParameterValue(parameterName='xmin')
4443 4628 value1 = str(value1)
4444 4629 value2 = opObj.getParameterObj(parameterName='xmax')
4445 4630 if value2 == None:
4446 4631 freq_vel = None
4447 4632 else:
4448 4633 value2 = opObj.getParameterValue(parameterName='xmax')
4449 4634 value2 = str(value2)
4450 4635 value = value1 + "," + value2
4451 4636 freq_vel = value
4452 4637 self.bufferVoltage("Scope", "Freq/Vel", freq_vel)
4453 4638
4454 4639 value1 = opObj.getParameterObj(parameterName='ymin')
4455 4640 if value1 == None:
4456 4641 heightsrange = None
4457 4642 else:
4458 4643 value1 = opObj.getParameterValue(parameterName='ymin')
4459 4644 value1 = str(value1)
4460 4645 value2 = opObj.getParameterObj(parameterName='ymax')
4461 4646 if value2 == None:
4462 4647 fheightsrange = None
4463 4648 else:
4464 4649 value2 = opObj.getParameterValue(parameterName='ymax')
4465 4650 value2 = str(value2)
4466 4651 value = value1 + "," + value2
4467 4652 heightsrange = value
4468 4653 self.bufferVoltage("Scope", "Height Range", heightsrange)
4469 4654
4470 4655 parmObj = opObj.getParameterObj(parameterName="figpath")
4471 4656 if parmObj == None:
4472 4657 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
4473 4658 figpath = None
4474 4659 else:
4475 4660 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
4476 4661 value = opObj.getParameterValue(parameterName='figpath')
4477 4662 figpath = value
4478 4663 self.bufferVoltage("Scope", "Path", figpath)
4479 4664 # outputVoltageWrite
4480 4665 opObj = puObj.getOperationObj(name='VoltageWriter')
4481 4666 if opObj == None:
4482 4667 pass
4483 4668 else:
4484 4669 operation = 'Enabled'
4485 4670 self.bufferVoltage("Output", "Operation", operation)
4486 4671 value = opObj.getParameterObj(parameterName='path')
4487 4672 if value == None:
4488 4673 path = None
4489 4674 else:
4490 4675 value = opObj.getParameterValue(parameterName='path')
4491 4676 path = str(value)
4492 4677 self.bufferVoltage("Output", "Path", path)
4493 4678 value = opObj.getParameterObj(parameterName='blocksPerFile')
4494 4679 if value == None:
4495 4680 blocksperfile = None
4496 4681 else:
4497 4682 value = opObj.getParameterValue(parameterName='blocksPerFile')
4498 4683 blocksperfile = str(value)
4499 4684 self.bufferVoltage("Output", "BlocksPerFile", blocksperfile)
4500 4685 value = opObj.getParameterObj(parameterName='profilesPerBlock')
4501 4686 if value == None:
4502 4687 profilesPerBlock = None
4503 4688 else:
4504 4689 value = opObj.getParameterValue(parameterName='profilesPerBlock')
4505 4690 profilesPerBlock = str(value)
4506 4691 self.bufferVoltage("Output", "ProfilesPerBlock", profilesPerBlock)
4507 4692
4508 4693
4509 4694 # set model PU Properties
4510 4695
4511 4696 self.propertiesModel = TreeModel()
4512 4697 self.propertiesModel.showProperties(self.volProperCaracteristica, self.volProperPrincipal, self.volProperDescripcion)
4513 4698 self.volProperCaracteristica = []
4514 4699 self.volProperPrincipal = []
4515 4700 self.volProperDescripcion = []
4516 4701 self.treeProjectProperties.setModel(self.propertiesModel)
4517 4702 self.treeProjectProperties.expandAll()
4518 4703 self.treeProjectProperties.allColumnsShowFocus()
4519 4704 self.treeProjectProperties.resizeColumnToContents(0)
4520 4705 self.treeProjectProperties.resizeColumnToContents(1)
4521 4706
4522 4707 def bufferSpectra(self, caracteristica, principal, description):
4523 4708 self.specProperCaracteristica.append(caracteristica)
4524 4709 self.specProperPrincipal.append(principal)
4525 4710 self.specProperDescripcion.append(description)
4526 4711 return self.specProperCaracteristica, self.specProperPrincipal, self.specProperDescripcion
4527 4712
4528 4713 def showPUSpectraProperties(self, puObj):
4529 4714 type = puObj.name
4530 4715 self.bufferSpectra("Processing Unit", "Type", type)
4531 4716
4532 4717 opObj = puObj.getOperationObj(name="setRadarFrequency")
4533 4718 if opObj == None:
4534 4719 radarfrequency = None
4535 4720 else:
4536 4721 value = opObj.getParameterValue(parameterName='frequency')
4537 4722 value = str(value)
4538 4723 radarfrequency = value
4539 4724 self.bufferSpectra("Processing Unit", "Radar Frequency", radarfrequency)
4540 4725
4541 4726
4542 4727 opObj = puObj.getOperationObj(name="run")
4543 4728 if opObj == None:
4544 4729 self.specOpnFFTpoints.clear()
4545 4730 self.specOpProfiles.clear()
4546 4731 self.specOpippFactor.clear()
4547 4732 else:
4548 4733 parmObj = opObj.getParameterObj(parameterName='nProfiles')
4549 4734 if parmObj == None:
4550 4735 nProfiles = None
4551 4736 else:
4552 4737 value = opObj.getParameterValue(parameterName='nProfiles')
4553 4738 nProfiles = value
4554 4739 self.bufferSpectra("Processing Unit", "nProfiles", nProfiles)
4555 4740
4556 4741 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
4557 4742 if parmObj == None:
4558 4743 nFFTPoints = None
4559 4744 else:
4560 4745 value = opObj.getParameterValue(parameterName='nFFTPoints')
4561 4746 nFFTPoints = value
4562 4747 self.bufferSpectra("Processing Unit", "nFFTpoints", nFFTPoints)
4563 4748
4564 4749 parmObj = opObj.getParameterObj(parameterName='ippFactor')
4565 4750 if parmObj == None:
4566 4751 ippFactor = None
4567 4752 else:
4568 4753 value = opObj.getParameterValue(parameterName='ippFactor')
4569 4754 ippFactor = value
4570 4755 self.bufferSpectra("Processing Unit", "Ipp Factor", ippFactor)
4571 4756
4572 4757
4573 4758 opObj = puObj.getOperationObj(name="run")
4574 4759 if opObj == None:
4575 4760 pairsList = None
4576 4761 else:
4577 4762 parm = opObj.getParameterObj(parameterName='pairsList')
4578 4763 if parm == None:
4579 4764 pairsList = None
4580 4765 else:
4581 4766 value = opObj.getParameterValue(parameterName='pairsList')
4582 4767 value = str(value)[1:-1]
4583 4768 pairsList = value
4584 4769 self.bufferSpectra("Processing Unit", "PairsList", pairsList)
4585 4770
4586 4771
4587 4772 opObj = puObj.getOperationObj(name="selectChannels")
4588 4773 if opObj == None:
4589 4774 channel = None
4590 4775 else:
4591 4776 try:
4592 4777 value = opObj.getParameterValue(parameterName='channelList')
4593 4778 value = str(value)[1:-1]
4594 4779 channel = value
4595 4780
4596 4781 self.bufferSpectra("Processing Unit", "Channel List", channel)
4597 4782 except:
4598 4783 pass
4599 4784 try:
4600 4785 value = opObj.getParameterValue(parameterName='channelIndexList')
4601 4786 value = str(value)[1:-1]
4602 4787 channel = value
4603 4788
4604 4789 self.bufferSpectra("Processing Unit", "Channel Index List", channel)
4605 4790 except:
4606 4791 pass
4607 4792
4608 4793 opObj = puObj.getOperationObj(name="selectHeights")
4609 4794 if opObj == None:
4610 4795 heights = None
4611 4796 else:
4612 4797 value1 = int(opObj.getParameterValue(parameterName='minHei'))
4613 4798 value1 = str(value1)
4614 4799 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
4615 4800 value2 = str(value2)
4616 4801 value = value1 + "," + value2
4617 4802 heights = value
4618 4803 self.bufferSpectra("Processing Unit", "Heights", heights)
4619 4804
4620 4805 opObj = puObj.getOperationObj(name="IncohInt")
4621 4806 if opObj == None:
4622 4807 incoherentintegration = None
4623 4808 else:
4624 4809 try:
4625 4810 value = opObj.getParameterValue(parameterName='timeInterval')
4626 4811 except:
4627 4812 value = opObj.getParameterValue(parameterName='n')
4628 4813
4629 4814 value = float(value)
4630 4815 incoherentintegration = str(value)
4631 4816 self.bufferSpectra("Processing Unit", "Incoherent Integration", incoherentintegration)
4632 4817
4633 4818
4634 4819 opObj = puObj.getOperationObj(name="removeDC")
4635 4820 if opObj == None:
4636 4821 removeDC = None
4637 4822 else:
4638 4823 value = opObj.getParameterValue(parameterName='mode')
4639 4824 self.bufferSpectra("Processing Unit", "Remove DC", value)
4640 4825
4641 4826 opObj = puObj.getOperationObj(name="removeInterference")
4642 4827 if opObj == None:
4643 4828 removeInterference = None
4644 4829 else:
4645 4830 self.bufferSpectra("Processing Unit", "Remove Interference", "1")
4646 4831
4647 4832 opObj = puObj.getOperationObj(name="getNoise")
4648 4833 if opObj == None:
4649 4834 getNoise = None
4650 4835 else:
4651 4836 value1 = opObj.getParameterObj(parameterName='minHei')
4652 4837 if value1 == None:
4653 4838 getNoise = None
4654 4839 getNoise = "Default"
4655 4840 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4656 4841
4657 4842 else:
4658 4843 value1 = opObj.getParameterValue(parameterName='minHei')
4659 4844 value1 = str(value1)
4660 4845 value2 = opObj.getParameterObj(parameterName='maxHei')
4661 4846 if value2 == None:
4662 4847 getNoise = None
4663 4848 value = value1
4664 4849 getNoise = value
4665 4850 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4666 4851 else:
4667 4852 value2 = opObj.getParameterValue(parameterName='maxHei')
4668 4853 value2 = str(value2)
4669 4854 value3 = opObj.getParameterObj(parameterName='minVel')
4670 4855 if value3 == None:
4671 4856 getNoise = None
4672 4857 value = value1 + "," + value2
4673 4858 getNoise = value
4674 4859 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4675 4860 else:
4676 4861 value3 = opObj.getParameterValue(parameterName='minVel')
4677 4862 value3 = str(value3)
4678 4863 value4 = opObj.getParameterObj(parameterName='maxVel')
4679 4864 if value4 == None:
4680 4865 getNoise = None
4681 4866 value = value1 + "," + value2 + ',' + value3
4682 4867 getNoise = value
4683 4868 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4684 4869 else:
4685 4870 value4 = opObj.getParameterValue(parameterName='maxVel')
4686 4871 value4 = str(value4)
4687 4872 value = value1 + "," + value2 + ',' + value3 + ',' + value4
4688 4873 getNoise = value
4689 4874 self.bufferSpectra("Processing Unit", "Get Noise", getNoise)
4690 4875
4691 4876 opObj = puObj.getOperationObj(name='SpectraPlot')
4692 4877 # opObj = puObj.getOpObjfromParamValue(value="SpectraPlot")
4693 4878
4694 4879 if opObj == None:
4695 4880 operationSpectraPlot = "Disabled"
4696 4881 freq_vel = None
4697 4882 heightsrange = None
4698 4883 channelListSpectraPlot = None
4699 4884 else:
4700 4885 operationSpectraPlot = "Enable"
4701 4886 self.bufferSpectra("Spectra Plot", "Operation", operationSpectraPlot)
4702 4887 parmObj = opObj.getParameterObj(parameterName='channelList')
4703 4888 if parmObj == None:
4704 4889 channelListSpectraPlot = None
4705 4890 else:
4706 4891 value = opObj.getParameterValue(parameterName='channelList')
4707 4892 channelListSpectraPlot = str(value)[1:-1]
4708 4893 self.bufferSpectra("Spectra Plot", "Channel List", channelListSpectraPlot)
4709 4894
4710 4895
4711 4896 value1 = opObj.getParameterObj(parameterName='xmin')
4712 4897 if value1 == None:
4713 4898 freq_vel = None
4714 4899 else:
4715 4900 value1 = opObj.getParameterValue(parameterName='xmin')
4716 4901 value1 = str(value1)
4717 4902 value2 = opObj.getParameterObj(parameterName='xmax')
4718 4903 if value2 == None:
4719 4904 freq_vel = None
4720 4905 else:
4721 4906 value2 = opObj.getParameterValue(parameterName='xmax')
4722 4907 value2 = str(value2)
4723 4908 value = value1 + "," + value2
4724 4909 freq_vel = value
4725 4910 self.bufferSpectra("Spectra Plot", "Freq/Vel", freq_vel)
4726 4911
4727 4912 value1 = opObj.getParameterObj(parameterName='ymin')
4728 4913 if value1 == None:
4729 4914 heightsrange = None
4730 4915 else:
4731 4916 value1 = opObj.getParameterValue(parameterName='ymin')
4732 4917 value1 = str(value1)
4733 4918 value2 = opObj.getParameterObj(parameterName='ymax')
4734 4919 if value2 == None:
4735 4920 fheightsrange = None
4736 4921 else:
4737 4922 value2 = opObj.getParameterValue(parameterName='ymax')
4738 4923 value2 = str(value2)
4739 4924 value = value1 + "," + value2
4740 4925 heightsrange = value
4741 4926 self.bufferSpectra("Spectra Plot", "Height Range", heightsrange)
4742 4927
4743 4928 value1 = opObj.getParameterObj(parameterName='zmin')
4744 4929 if value1 == None:
4745 4930 dBrange = None
4746 4931 else:
4747 4932 value1 = opObj.getParameterValue(parameterName='zmin')
4748 4933 value1 = str(value1)
4749 4934 value2 = opObj.getParameterObj(parameterName='zmax')
4750 4935 if value2 == None:
4751 4936 fdBrange = None
4752 4937 else:
4753 4938 value2 = opObj.getParameterValue(parameterName='zmax')
4754 4939 value2 = str(value2)
4755 4940 value = value1 + "," + value2
4756 4941 dbrange = value
4757 4942 self.bufferSpectra("Spectra Plot", "dB Range", dbrange)
4758 4943
4759 4944 parmObj = opObj.getParameterObj(parameterName="figpath")
4760 4945 if parmObj == None:
4761 4946 path = None
4762 4947 else:
4763 4948 path = opObj.getParameterValue(parameterName='figpath')
4764 4949 self.bufferSpectra("Spectra Plot", "Save Path", path)
4765 4950
4766 4951 parmObj = opObj.getParameterObj(parameterName="ftp")
4767 4952 if parmObj == None:
4768 4953 status = 'disable'
4769 4954 else:
4770 4955 status = 'enable'
4771 4956 self.bufferSpectra("Spectra Plot", "FTP", status)
4772 4957 self.showWr_Period(puObj, opObj, nameplotop="Spectra Plot")
4773 4958 # self.saveFTPvalues(opObj)
4774 4959
4775 4960 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
4776 4961 # opObj = puObj.getOpObjfromParamValue(value="CrossSpectraPlot")
4777 4962 if opObj == None:
4778 4963 self.specGraphCebCrossSpectraplot.setCheckState(0)
4779 4964 operationCrossSpectraPlot = "Disabled"
4780 4965 channelList = None
4781 4966 freq_vel = None
4782 4967 heightsrange = None
4783 4968 else:
4784 4969 operationCrossSpectraPlot = "Enable"
4785 4970 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
4786 4971 self.bufferSpectra("Cross Spectra Plot", "Operation", operationCrossSpectraPlot)
4787 4972
4788 4973 value1 = opObj.getParameterObj(parameterName='xmin')
4789 4974 if value1 == None:
4790 4975 freq_vel = None
4791 4976 else:
4792 4977 value1 = opObj.getParameterValue(parameterName='xmin')
4793 4978 value1 = str(value1)
4794 4979 value2 = opObj.getParameterObj(parameterName='xmax')
4795 4980 if value2 == None:
4796 4981 freq_vel = None
4797 4982 else:
4798 4983 value2 = opObj.getParameterValue(parameterName='xmax')
4799 4984 value2 = str(value2)
4800 4985 value = value1 + "," + value2
4801 4986 freq_vel = value
4802 4987 self.bufferSpectra("Cross Spectra Plot", "Freq/Vel", freq_vel)
4803 4988
4804 4989 value1 = opObj.getParameterObj(parameterName='ymin')
4805 4990 if value1 == None:
4806 4991 heightsrange = None
4807 4992 else:
4808 4993 value1 = opObj.getParameterValue(parameterName='ymin')
4809 4994 value1 = str(value1)
4810 4995 value2 = opObj.getParameterObj(parameterName='ymax')
4811 4996 if value2 == None:
4812 4997 fheightsrange = None
4813 4998 else:
4814 4999 value2 = opObj.getParameterValue(parameterName='ymax')
4815 5000 value2 = str(value2)
4816 5001 value = value1 + "," + value2
4817 5002 heightsrange = value
4818 5003 self.bufferSpectra("Cross Spectra Plot", "Height Range", heightsrange)
4819 5004
4820 5005 value1 = opObj.getParameterObj(parameterName='zmin')
4821 5006 if value1 == None:
4822 5007 dBrange = None
4823 5008 else:
4824 5009 value1 = opObj.getParameterValue(parameterName='zmin')
4825 5010 value1 = str(value1)
4826 5011 value2 = opObj.getParameterObj(parameterName='zmax')
4827 5012 if value2 == None:
4828 5013 fdBrange = None
4829 5014 else:
4830 5015 value2 = opObj.getParameterValue(parameterName='zmax')
4831 5016 value2 = str(value2)
4832 5017 value = value1 + "," + value2
4833 5018 dbrange = value
4834 5019 self.bufferSpectra("Cross Spectra Plot", "dB Range", dbrange)
4835 5020
4836 5021 parmObj = opObj.getParameterObj(parameterName="figpath")
4837 5022 if parmObj == None:
4838 5023 path = None
4839 5024 else:
4840 5025 path = opObj.getParameterValue(parameterName='figpath')
4841 5026 self.bufferSpectra("Cross Spectra Plot", "Save Path", path)
4842 5027
4843 5028 parmObj = opObj.getParameterObj(parameterName="ftp")
4844 5029 if parmObj == None:
4845 5030 status = 'disable'
4846 5031 else:
4847 5032 status = 'enable'
4848 5033 self.bufferSpectra("Cross Spectra Plot", "FTP", status)
4849 5034 self.showWr_Period(puObj, opObj, nameplotop="Cross Spectra Plot")
4850 5035 # self.saveFTPvalues(opObj)
4851 5036
4852 5037 opObj = puObj.getOperationObj(name='RTIPlot')
4853 5038 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
4854 5039 if opObj == None:
4855 5040 self.specGraphCebRTIplot.setCheckState(0)
4856 5041 operationRTIPlot = "Disabled"
4857 5042 channelList = None
4858 5043 freq_vel = None
4859 5044 heightsrange = None
4860 5045 else:
4861 5046 operationRTIPlot = "Enable"
4862 5047 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
4863 5048 self.bufferSpectra("RTI Plot", "Operation", operationRTIPlot)
4864 5049 parmObj = opObj.getParameterObj(parameterName='channelList')
4865 5050 if parmObj == None:
4866 5051 channelListRTIPlot = None
4867 5052 else:
4868 5053 value = opObj.getParameterValue(parameterName='channelList')
4869 5054 channelListRTIPlot = str(value)[1:-1]
4870 5055 self.bufferSpectra("RTI Plot", "Channel List", channelListRTIPlot)
4871 5056
4872 5057
4873 5058 value1 = opObj.getParameterObj(parameterName='xmin')
4874 5059 if value1 == None:
4875 5060 freq_vel = None
4876 5061 else:
4877 5062 value1 = opObj.getParameterValue(parameterName='xmin')
4878 5063 value1 = str(value1)
4879 5064 value2 = opObj.getParameterObj(parameterName='xmax')
4880 5065 if value2 == None:
4881 5066 freq_vel = None
4882 5067 else:
4883 5068 value2 = opObj.getParameterValue(parameterName='xmax')
4884 5069 value2 = str(value2)
4885 5070 value = value1 + "," + value2
4886 5071 tmintmax = value
4887 5072 self.bufferSpectra("RTI Plot", "Tmin,Tmax", tmintmax)
4888 5073
4889 5074 parmObj = opObj.getParameterObj(parameterName='timerange')
4890 5075 if parmObj == None:
4891 5076 timerange = None
4892 5077 else:
4893 5078 value = opObj.getParameterValue(parameterName='timerange')
4894 5079 timerange = str(value)
4895 5080 self.bufferSpectra("RTI Plot", "Time Range", timerange)
4896 5081
4897 5082 value1 = opObj.getParameterObj(parameterName='ymin')
4898 5083 if value1 == None:
4899 5084 heightsrange = None
4900 5085 else:
4901 5086 value1 = opObj.getParameterValue(parameterName='ymin')
4902 5087 value1 = str(value1)
4903 5088 value2 = opObj.getParameterObj(parameterName='ymax')
4904 5089 if value2 == None:
4905 5090 fheightsrange = None
4906 5091 else:
4907 5092 value2 = opObj.getParameterValue(parameterName='ymax')
4908 5093 value2 = str(value2)
4909 5094 value = value1 + "," + value2
4910 5095 heightsrange = value
4911 5096 self.bufferSpectra("RTI Plot", "Height Range", heightsrange)
4912 5097
4913 5098 value1 = opObj.getParameterObj(parameterName='zmin')
4914 5099 if value1 == None:
4915 5100 dBrange = None
4916 5101 else:
4917 5102 value1 = opObj.getParameterValue(parameterName='zmin')
4918 5103 value1 = str(value1)
4919 5104 value2 = opObj.getParameterObj(parameterName='zmax')
4920 5105 if value2 == None:
4921 5106 fdBrange = None
4922 5107 else:
4923 5108 value2 = opObj.getParameterValue(parameterName='zmax')
4924 5109 value2 = str(value2)
4925 5110 value = value1 + "," + value2
4926 5111 dbrange = value
4927 5112 self.bufferSpectra("RTI Plot", "dB Range", dbrange)
4928 5113
4929 5114 parmObj = opObj.getParameterObj(parameterName="figpath")
4930 5115 if parmObj == None:
4931 5116 path = None
4932 5117 else:
4933 5118 path = opObj.getParameterValue(parameterName='figpath')
4934 5119 self.bufferSpectra("RTI Plot", "Save Path", path)
4935 5120
4936 5121 parmObj = opObj.getParameterObj(parameterName="ftp")
4937 5122 if parmObj == None:
4938 5123 status = 'disable'
4939 5124 else:
4940 5125 status = 'enable'
4941 5126 self.bufferSpectra("RTI Plot", "FTP", status)
4942 5127 self.showWr_Period(puObj, opObj, nameplotop="RTI Plot")
4943 5128 # self.saveFTPvalues(opObj)
4944 5129
4945 5130 opObj = puObj.getOperationObj(name='CoherenceMap')
4946 5131 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
4947 5132 if opObj == None:
4948 5133 self.specGraphCebCoherencmap.setCheckState(0)
4949 5134 operationCoherenceMap = "Disabled"
4950 5135 channelList = None
4951 5136 freq_vel = None
4952 5137 heightsrange = None
4953 5138 else:
4954 5139 operationCoherenceMap = "Enable"
4955 5140 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
4956 5141 self.bufferSpectra("Coherence Map Plot", "Operation", operationCoherenceMap)
4957 5142 parmObj = opObj.getParameterObj(parameterName='channelList')
4958 5143 if parmObj == None:
4959 5144 channelListRTIPlot = None
4960 5145 else:
4961 5146 value = opObj.getParameterValue(parameterName='channelList')
4962 5147 channelListRTIPlot = str(value)[1:-1]
4963 5148 self.bufferSpectra("Coherence Map Plot", "Channel List", channelListRTIPlot)
4964 5149
4965 5150
4966 5151 value1 = opObj.getParameterObj(parameterName='xmin')
4967 5152 if value1 == None:
4968 5153 freq_vel = None
4969 5154 else:
4970 5155 value1 = opObj.getParameterValue(parameterName='xmin')
4971 5156 value1 = str(value1)
4972 5157 value2 = opObj.getParameterObj(parameterName='xmax')
4973 5158 if value2 == None:
4974 5159 freq_vel = None
4975 5160 else:
4976 5161 value2 = opObj.getParameterValue(parameterName='xmax')
4977 5162 value2 = str(value2)
4978 5163 value = value1 + "," + value2
4979 5164 tmintmax = value
4980 5165 self.bufferSpectra("Coherence Map Plot", "Tmin,Tmax", tmintmax)
4981 5166
4982 5167 parmObj = opObj.getParameterObj(parameterName='timerange')
4983 5168 if parmObj == None:
4984 5169 timerange = None
4985 5170 else:
4986 5171 value = opObj.getParameterValue(parameterName='timerange')
4987 5172 timerange = str(value)
4988 5173 self.bufferSpectra("Coherence Map Plot", "Time Range", timerange)
4989 5174
4990 5175 value1 = opObj.getParameterObj(parameterName='ymin')
4991 5176 if value1 == None:
4992 5177 heightsrange = None
4993 5178 else:
4994 5179 value1 = opObj.getParameterValue(parameterName='ymin')
4995 5180 value1 = str(value1)
4996 5181 value2 = opObj.getParameterObj(parameterName='ymax')
4997 5182 if value2 == None:
4998 5183 fheightsrange = None
4999 5184 else:
5000 5185 value2 = opObj.getParameterValue(parameterName='ymax')
5001 5186 value2 = str(value2)
5002 5187 value = value1 + "," + value2
5003 5188 heightsrange = value
5004 5189 self.bufferSpectra("Coherence Map Plot", "Height Range", heightsrange)
5005 5190
5006 5191 value1 = opObj.getParameterObj(parameterName='zmin')
5007 5192 if value1 == None:
5008 5193 dBrange = None
5009 5194 else:
5010 5195 value1 = opObj.getParameterValue(parameterName='zmin')
5011 5196 value1 = str(value1)
5012 5197 value2 = opObj.getParameterObj(parameterName='zmax')
5013 5198 if value2 == None:
5014 5199 fdBrange = None
5015 5200 else:
5016 5201 value2 = opObj.getParameterValue(parameterName='zmax')
5017 5202 value2 = str(value2)
5018 5203 value = value1 + "," + value2
5019 5204 dbrange = value
5020 5205 self.bufferSpectra("Coherence Map Plot", "Magnitud", dbrange)
5021 5206
5022 5207 parmObj = opObj.getParameterObj(parameterName="figpath")
5023 5208 if parmObj == None:
5024 5209 path = None
5025 5210 else:
5026 5211 path = opObj.getParameterValue(parameterName='figpath')
5027 5212 self.bufferSpectra("Coherence Map Plot", "Save Path", path)
5028 5213
5029 5214 parmObj = opObj.getParameterObj(parameterName="ftp")
5030 5215 if parmObj == None:
5031 5216 status = 'disable'
5032 5217 else:
5033 5218 status = 'enable'
5034 5219 self.bufferSpectra("Coherence Map Plot", "FTP", status)
5035 5220 self.showWr_Period(puObj, opObj, nameplotop="Coherence Map Plot")
5036 5221 # self.saveFTPvalues(opObj)
5037 5222
5038 5223
5039 5224 opObj = puObj.getOperationObj(name='PowerProfilePlot')
5040 5225 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
5041 5226 if opObj == None:
5042 5227 self.specGraphPowerprofile.setCheckState(0)
5043 5228 operationPowerProfilePlot = "Disabled"
5044 5229 channelList = None
5045 5230 freq_vel = None
5046 5231 heightsrange = None
5047 5232 else:
5048 5233 operationPowerProfilePlot = "Enable"
5049 5234 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
5050 5235 self.bufferSpectra("PowerProfile Plot", "Operation", operationPowerProfilePlot)
5051 5236 parmObj = opObj.getParameterObj(parameterName='channelList')
5052 5237 if parmObj == None:
5053 5238 channelListSpectraPlot = None
5054 5239 else:
5055 5240 value = opObj.getParameterValue(parameterName='channelList')
5056 5241 channelListSpectraPlot = str(value)[1:-1]
5057 5242 self.bufferSpectra("PowerProfile Plot", "Channel List", channelListSpectraPlot)
5058 5243
5059 5244
5060 5245 value1 = opObj.getParameterObj(parameterName='xmin')
5061 5246 if value1 == None:
5062 5247 freq_vel = None
5063 5248 else:
5064 5249 value1 = opObj.getParameterValue(parameterName='xmin')
5065 5250 value1 = str(value1)
5066 5251 value2 = opObj.getParameterObj(parameterName='xmax')
5067 5252 if value2 == None:
5068 5253 freq_vel = None
5069 5254 else:
5070 5255 value2 = opObj.getParameterValue(parameterName='xmax')
5071 5256 value2 = str(value2)
5072 5257 value = value1 + "," + value2
5073 5258 dbrange = value
5074 5259 self.bufferSpectra("PowerProfile Plot", "dbRange", dbrange)
5075 5260
5076 5261 value1 = opObj.getParameterObj(parameterName='ymin')
5077 5262 if value1 == None:
5078 5263 heightsrange = None
5079 5264 else:
5080 5265 value1 = opObj.getParameterValue(parameterName='ymin')
5081 5266 value1 = str(value1)
5082 5267 value2 = opObj.getParameterObj(parameterName='ymax')
5083 5268 if value2 == None:
5084 5269 fheightsrange = None
5085 5270 else:
5086 5271 value2 = opObj.getParameterValue(parameterName='ymax')
5087 5272 value2 = str(value2)
5088 5273 value = value1 + "," + value2
5089 5274 heightsrange = value
5090 5275 self.bufferSpectra("PowerProfile Plot", "Height Range", heightsrange)
5091 5276
5092 5277
5093 5278 parmObj = opObj.getParameterObj(parameterName="figpath")
5094 5279 if parmObj == None:
5095 5280 path = None
5096 5281 else:
5097 5282 path = opObj.getParameterValue(parameterName='figpath')
5098 5283 self.bufferSpectra("PowerProfile Plot", "Save Path", path)
5099 5284
5100 5285 parmObj = opObj.getParameterObj(parameterName="ftp")
5101 5286 if parmObj == None:
5102 5287 status = 'disable'
5103 5288 else:
5104 5289 status = 'enable'
5105 5290 self.bufferSpectra("PowerProfile Plot", "FTP", status)
5106 5291 self.showWr_Period(puObj, opObj, nameplotop="PowerProfile Plot")
5107 5292 # self.saveFTPvalues(opObj)
5108 5293
5109 5294 # noise
5110 5295 opObj = puObj.getOperationObj(name='Noise')
5111 5296 # opObj = puObj.getOpObjfromParamValue(value="Noise")
5112 5297 if opObj == None:
5113 5298 self.specGraphCebRTInoise.setCheckState(0)
5114 5299 operationRTINoise = "Disabled"
5115 5300 channelList = None
5116 5301 freq_vel = None
5117 5302 dbRange = None
5118 5303 else:
5119 5304 operationRTINoise = "Enable"
5120 5305 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
5121 5306 self.bufferSpectra("Noise Plot", "Operation", operationRTINoise)
5122 5307 parmObj = opObj.getParameterObj(parameterName='channelList')
5123 5308 if parmObj == None:
5124 5309 channelListRTINoise = None
5125 5310 else:
5126 5311 value = opObj.getParameterValue(parameterName='channelList')
5127 5312 channelListRTINoise = str(value)[1:-1]
5128 5313 self.bufferSpectra("Noise Plot", "Channel List", channelListRTINoise)
5129 5314
5130 5315
5131 5316 value1 = opObj.getParameterObj(parameterName='xmin')
5132 5317 if value1 == None:
5133 5318 freq_vel = None
5134 5319 else:
5135 5320 value1 = opObj.getParameterValue(parameterName='xmin')
5136 5321 value1 = str(value1)
5137 5322 value2 = opObj.getParameterObj(parameterName='xmax')
5138 5323 if value2 == None:
5139 5324 freq_vel = None
5140 5325 else:
5141 5326 value2 = opObj.getParameterValue(parameterName='xmax')
5142 5327 value2 = str(value2)
5143 5328 value = value1 + "," + value2
5144 5329 tmintmax = value
5145 5330 self.bufferSpectra("Noise Plot", "Tmin,Tmax", tmintmax)
5146 5331
5147 5332 parmObj = opObj.getParameterObj(parameterName='timerange')
5148 5333 if parmObj == None:
5149 5334 timerange = None
5150 5335 else:
5151 5336 value = opObj.getParameterValue(parameterName='timerange')
5152 5337 timerange = str(value)
5153 5338 self.bufferSpectra("Noise Plot", "Time Range", timerange)
5154 5339
5155 5340
5156 5341
5157 5342 value1 = opObj.getParameterObj(parameterName='ymin')
5158 5343 if value1 == None:
5159 5344 DBrange = None
5160 5345 else:
5161 5346 value1 = opObj.getParameterValue(parameterName='ymin')
5162 5347 value1 = str(value1)
5163 5348 value2 = opObj.getParameterObj(parameterName='ymax')
5164 5349 if value2 == None:
5165 5350 fdBrange = None
5166 5351 else:
5167 5352 value2 = opObj.getParameterValue(parameterName='ymax')
5168 5353 value2 = str(value2)
5169 5354 value = value1 + "," + value2
5170 5355 dBrange = value
5171 5356 self.bufferSpectra("Noise Plot", "dB Range", dBrange)
5172 5357
5173 5358 parmObj = opObj.getParameterObj(parameterName="figpath")
5174 5359 if parmObj == None:
5175 5360 path = None
5176 5361 else:
5177 5362 path = opObj.getParameterValue(parameterName='figpath')
5178 5363 self.bufferSpectra("Noise Plot", "Save Path", path)
5179 5364
5180 5365 parmObj = opObj.getParameterObj(parameterName="ftp")
5181 5366 if parmObj == None:
5182 5367 status = 'disable'
5183 5368 else:
5184 5369 status = 'enable'
5185 5370 self.bufferSpectra("Noise Plot", "FTP", status)
5186 5371 self.showWr_Period(puObj, opObj, nameplotop="Noise Plot")
5187 5372 # self.saveFTPvalues(opObj)
5188 5373
5189 5374 # outputSpectraWrite
5190 5375 opObj = puObj.getOperationObj(name='SpectraWriter')
5191 5376 if opObj == None:
5192 5377 pass
5193 5378 else:
5194 5379 operation = 'Enabled'
5195 5380 self.bufferSpectra("Output", "Operation", operation)
5196 5381 value = opObj.getParameterObj(parameterName='path')
5197 5382 if value == None:
5198 5383 path = None
5199 5384 else:
5200 5385 value = opObj.getParameterValue(parameterName='path')
5201 5386 path = str(value)
5202 5387 self.bufferSpectra("Output", "Path", path)
5203 5388 value = opObj.getParameterObj(parameterName='blocksPerFile')
5204 5389 if value == None:
5205 5390 blocksperfile = None
5206 5391 else:
5207 5392 value = opObj.getParameterValue(parameterName='blocksPerFile')
5208 5393 blocksperfile = str(value)
5209 5394 self.bufferSpectra("Output", "BlocksPerFile", blocksperfile)
5210 5395 value = opObj.getParameterObj(parameterName='profilesPerBlock')
5211 5396 if value == None:
5212 5397 profilesPerBlock = None
5213 5398 else:
5214 5399 value = opObj.getParameterValue(parameterName='profilesPerBlock')
5215 5400 profilesPerBlock = str(value)
5216 5401 self.bufferSpectra("Output", "ProfilesPerBlock", profilesPerBlock)
5217 5402
5218 5403 projectObj = self.getSelectedProjectObj()
5219 5404 ftpProcUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
5220 5405
5221 5406 if ftpProcUnitConfObj:
5222 5407
5223 5408 opObj = ftpProcUnitConfObj.getOperationObj(name='run')
5224 5409
5225 5410 server = opObj.getParameterValue(parameterName='server')
5226 5411 folder = opObj.getParameterValue(parameterName='remotefolder')
5227 5412 username = opObj.getParameterValue(parameterName='username')
5228 5413 password = opObj.getParameterValue(parameterName='password')
5229 5414 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5230 5415 exp_code = opObj.getParameterValue(parameterName='exp_code')
5231 5416 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5232 5417 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5233 5418 localfolder = opObj.getParameterValue(parameterName='localfolder')
5234 5419
5235 5420 self.bufferSpectra("FTP", "Server", server)
5236 5421 self.bufferSpectra("FTP", "Remote folder", folder)
5237 5422 self.bufferSpectra("FTP", "Local folder", localfolder)
5238 5423 self.bufferSpectra("FTP", "Username", username)
5239 5424 self.bufferSpectra("FTP", "Password", '*'*len(password))
5240 5425 self.bufferSpectra("FTP", "Ftp_wei", ftp_wei)
5241 5426 self.bufferSpectra("FTP", "Exp_code", exp_code)
5242 5427 self.bufferSpectra("FTP", "Sub_exp_code", sub_exp_code)
5243 5428 self.bufferSpectra("FTP", "Plot_pos", plot_pos)
5244 5429
5245 5430 # set model PU Properties
5246 5431
5247 5432 self.propertiesModel = TreeModel()
5248 5433 self.propertiesModel.showProperties(self.specProperCaracteristica, self.specProperPrincipal, self.specProperDescripcion)
5249 5434
5250 5435 self.treeProjectProperties.setModel(self.propertiesModel)
5251 5436 self.treeProjectProperties.expandAll()
5252 5437 self.treeProjectProperties.allColumnsShowFocus()
5253 5438 self.treeProjectProperties.resizeColumnToContents(0)
5254 5439 self.treeProjectProperties.resizeColumnToContents(1)
5255 5440
5256 5441 self.specProperCaracteristica = []
5257 5442 self.specProperDescripcion = []
5258 5443 self.specProperPrincipal = []
5259 5444
5260 5445
5261 5446 def bufferSpectraHeis(self, caracteristica, principal, description):
5262 5447 self.specHeisProperCaracteristica.append(caracteristica)
5263 5448 self.specHeisProperPrincipal.append(principal)
5264 5449 self.specHeisProperDescripcion.append(description)
5265 5450 return self.specHeisProperCaracteristica, self.specHeisProperPrincipal, self.specHeisProperDescripcion
5266 5451
5267 5452
5268 5453 def showPUSpectraHeisProperties(self, puObj):
5269 5454 type = puObj.name
5270 5455 self.bufferSpectraHeis("Processing Unit", "Type", type)
5271 5456
5272 5457 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
5273 5458 if opObj == None:
5274 5459 incoherentintegration = None
5275 5460 else:
5276 5461 value = opObj.getParameterValue(parameterName='timeInterval')
5277 5462 value = float(value)
5278 5463 incoherentintegration = str(value)
5279 5464 self.bufferSpectraHeis("Processing Unit", "Incoherent Integration", incoherentintegration)
5280 5465 # spectraheis graph
5281 5466 opObj = puObj.getOperationObj(name='SpectraHeisScope')
5282 5467 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
5283 5468 if opObj == None:
5284 5469 self.specHeisGraphCebSpectraplot.setCheckState(0)
5285 5470 operationSpectraHeisPlot = "Disabled"
5286 5471 xmin_xmax = None
5287 5472 ymin_ymax = None
5288 5473 channelListSpectraPlot = None
5289 5474 else:
5290 5475 operationSpectraHeisPlot = "Enable"
5291 5476 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
5292 5477 self.bufferSpectraHeis("SpectraHeis Plot", "Operation", operationSpectraHeisPlot)
5293 5478 parmObj = opObj.getParameterObj(parameterName='channelList')
5294 5479 if parmObj == None:
5295 5480 channelListSpectraPlot = None
5296 5481 else:
5297 5482 value = opObj.getParameterValue(parameterName='channelList')
5298 5483 channelListSpectraPlot = str(value)[1:-1]
5299 5484 self.bufferSpectraHeis("SpectraHeis Plot", "Channel List", channelListSpectraPlot)
5300 5485
5301 5486
5302 5487 value1 = opObj.getParameterObj(parameterName='xmin')
5303 5488 if value1 == None:
5304 5489 xmin_xmax = None
5305 5490 else:
5306 5491 value1 = opObj.getParameterValue(parameterName='xmin')
5307 5492 value1 = str(value1)
5308 5493 value2 = opObj.getParameterObj(parameterName='xmax')
5309 5494 if value2 == None:
5310 5495 xmin_xmax = None
5311 5496 else:
5312 5497 value2 = opObj.getParameterValue(parameterName='xmax')
5313 5498 value2 = str(value2)
5314 5499 value = value1 + "," + value2
5315 5500 xmin_xmax = value
5316 5501 self.bufferSpectraHeis("SpectraHeis Plot", "Xmin-Xmax", xmin_xmax)
5317 5502
5318 5503 value1 = opObj.getParameterObj(parameterName='ymin')
5319 5504 if value1 == None:
5320 5505 ymin_ymax = None
5321 5506 else:
5322 5507 value1 = opObj.getParameterValue(parameterName='ymin')
5323 5508 value1 = str(value1)
5324 5509 value2 = opObj.getParameterObj(parameterName='ymax')
5325 5510 if value2 == None:
5326 5511 ymin_ymax = None
5327 5512 else:
5328 5513 value2 = opObj.getParameterValue(parameterName='ymax')
5329 5514 value2 = str(value2)
5330 5515 value = value1 + "," + value2
5331 5516 ymin_ymax = value
5332 5517 self.bufferSpectraHeis("SpectraHeis Plot", "Ymin-Ymax", ymin_ymax)
5333 5518
5334 5519 parmObj = opObj.getParameterObj(parameterName="figpath")
5335 5520 if parmObj == None:
5336 5521 path = None
5337 5522 else:
5338 5523 path = opObj.getParameterValue(parameterName='figpath')
5339 5524 self.bufferSpectraHeis("SpectraHeis Plot", "Save Path", path)
5340 5525
5341 5526 parmObj = opObj.getParameterObj(parameterName="ftp")
5342 5527 if parmObj == None:
5343 5528 status = 'disable'
5344 5529 else:
5345 5530 status = 'enable'
5346 5531 self.bufferSpectraHeis("SpectraHeis Plot", "FTP", status)
5347 5532 self.showWr_Period(puObj, opObj, nameplotop="SpectraHeis Plot")
5348 5533 # self.saveFTPvalues(opObj)
5349 5534
5350 5535 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
5351 5536 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
5352 5537 if opObj == None:
5353 5538 self.specHeisGraphCebRTIplot.setCheckState(0)
5354 5539 operationRTIPlot = "Disabled"
5355 5540 channelList = None
5356 5541 freq_vel = None
5357 5542 heightsrange = None
5358 5543 else:
5359 5544 operationRTIPlot = "Enable"
5360 5545 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
5361 5546 self.bufferSpectraHeis("RTIHeis Plot", "Operation", operationRTIPlot)
5362 5547 parmObj = opObj.getParameterObj(parameterName='channelList')
5363 5548 if parmObj == None:
5364 5549 channelListRTIPlot = None
5365 5550 else:
5366 5551 value = opObj.getParameterValue(parameterName='channelList')
5367 5552 channelListRTIPlot = str(value)[1:-1]
5368 5553 self.bufferSpectraHeis("RTIHeis Plot", "Channel List", channelListRTIPlot)
5369 5554
5370 5555
5371 5556 value1 = opObj.getParameterObj(parameterName='xmin')
5372 5557 if value1 == None:
5373 5558 freq_vel = None
5374 5559 else:
5375 5560 value1 = opObj.getParameterValue(parameterName='xmin')
5376 5561 value1 = str(value1)
5377 5562 value2 = opObj.getParameterObj(parameterName='xmax')
5378 5563 if value2 == None:
5379 5564 freq_vel = None
5380 5565 else:
5381 5566 value2 = opObj.getParameterValue(parameterName='xmax')
5382 5567 value2 = str(value2)
5383 5568 value = value1 + "," + value2
5384 5569 tmintmax = value
5385 5570 self.bufferSpectraHeis("RTIHeis Plot", "Tmin,Tmax", tmintmax)
5386 5571
5387 5572 parmObj = opObj.getParameterObj(parameterName='timerange')
5388 5573 if parmObj == None:
5389 5574 timerange = None
5390 5575 else:
5391 5576 value = opObj.getParameterValue(parameterName='timerange')
5392 5577 timerange = str(value)
5393 5578 self.bufferSpectraHeis("RTIHeis Plot", "Time Range", timerange)
5394 5579
5395 5580 value1 = opObj.getParameterObj(parameterName='ymin')
5396 5581 if value1 == None:
5397 5582 heightsrange = None
5398 5583 else:
5399 5584 value1 = opObj.getParameterValue(parameterName='ymin')
5400 5585 value1 = str(value1)
5401 5586 value2 = opObj.getParameterObj(parameterName='ymax')
5402 5587 if value2 == None:
5403 5588 fheightsrange = None
5404 5589 else:
5405 5590 value2 = opObj.getParameterValue(parameterName='ymax')
5406 5591 value2 = str(value2)
5407 5592 value = value1 + "," + value2
5408 5593 heightsrange = value
5409 5594 self.bufferSpectraHeis("RTIHeis Plot", "Ymin-Ymax", heightsrange)
5410 5595
5411 5596 parmObj = opObj.getParameterObj(parameterName="figpath")
5412 5597 if parmObj == None:
5413 5598 path = None
5414 5599 else:
5415 5600 path = opObj.getParameterValue(parameterName='figpath')
5416 5601 self.bufferSpectraHeis("RTIHeis Plot", "Save Path", path)
5417 5602
5418 5603 parmObj = opObj.getParameterObj(parameterName="ftp")
5419 5604 if parmObj == None:
5420 5605 status = 'disable'
5421 5606 else:
5422 5607 status = 'enable'
5423 5608 self.bufferSpectraHeis("RTIHeis Plot", "FTP", status)
5424 5609 self.showWr_Period(puObj, opObj, nameplotop="RTIHeis Plot")
5425 5610 # self.saveFTPvalues(opObj)
5426 5611
5427 5612 # outputSpectraHeisWrite
5428 5613 opObj = puObj.getOperationObj(name='FitsWriter')
5429 5614 if opObj == None:
5430 5615 pass
5431 5616 else:
5432 5617 operation = 'Enabled'
5433 5618 self.bufferSpectraHeis("Output", "Operation", operation)
5434 5619 value = opObj.getParameterObj(parameterName='path')
5435 5620 if value == None:
5436 5621 path = None
5437 5622 else:
5438 5623 value = opObj.getParameterValue(parameterName='path')
5439 5624 path = str(value)
5440 5625 self.bufferSpectraHeis("Output", "Path", path)
5441 5626 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
5442 5627 if value == None:
5443 5628 blocksperfile = None
5444 5629 else:
5445 5630 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
5446 5631 blocksperfile = str(value)
5447 5632 self.bufferSpectraHeis("Output", "BlocksPerFile", blocksperfile)
5448 5633 value = opObj.getParameterObj(parameterName='metadatafile')
5449 5634 if value == None:
5450 5635 metadata = None
5451 5636 else:
5452 5637 value = opObj.getParameterValue(parameterName='metadatafile')
5453 5638 metadata = str(value)
5454 5639 self.bufferSpectraHeis("Output", "Metadata", metadata)
5455 5640
5456 5641 projectObj = self.getSelectedProjectObj()
5457 5642 ftpProcUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
5458 5643
5459 5644 if ftpProcUnitConfObj:
5460 5645
5461 5646 opObj = ftpProcUnitConfObj.getOperationObj(name='run')
5462 5647
5463 5648 server = opObj.getParameterValue(parameterName='server')
5464 5649 folder = opObj.getParameterValue(parameterName='folder')
5465 5650 username = opObj.getParameterValue(parameterName='username')
5466 5651 password = opObj.getParameterValue(parameterName='password')
5467 5652 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5468 5653 exp_code = opObj.getParameterValue(parameterName='exp_code')
5469 5654 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5470 5655 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5471 5656 localfolder = opObj.getParameterValue(parameterName='localfolder')
5472 5657
5473 5658 self.bufferSpectraHeis("FTP", "Server", server)
5474 5659 self.bufferSpectraHeis("FTP", "Remote folder", folder)
5475 5660 self.bufferSpectraHeis("FTP", "Local folder", localfolder)
5476 5661 self.bufferSpectraHeis("FTP", "Username", username)
5477 5662 self.bufferSpectraHeis("FTP", "Password", '*'*len(password))
5478 5663 self.bufferSpectraHeis("FTP", "Ftp_wei", ftp_wei)
5479 5664 self.bufferSpectraHeis("FTP", "Exp_code", exp_code)
5480 5665 self.bufferSpectraHeis("FTP", "Sub_exp_code", sub_exp_code)
5481 5666 self.bufferSpectraHeis("FTP", "Plot_pos", plot_pos)
5482 5667
5483 5668 # set model PU Properties
5484 5669
5485 5670 self.propertiesModel = TreeModel()
5486 5671 self.propertiesModel.showProperties(self.specHeisProperCaracteristica, self.specHeisProperPrincipal, self.specHeisProperDescripcion)
5487 5672
5488 5673 self.treeProjectProperties.setModel(self.propertiesModel)
5489 5674 self.treeProjectProperties.expandAll()
5490 5675 self.treeProjectProperties.allColumnsShowFocus()
5491 5676 self.treeProjectProperties.resizeColumnToContents(0)
5492 5677 self.treeProjectProperties.resizeColumnToContents(1)
5493 5678
5494 5679 self.specHeisProperCaracteristica = []
5495 5680 self.specHeisProperDescripcion = []
5496 5681 self.specHeisProperPrincipal = []
5497 5682
5498 5683
5499 5684 def showWr_Period(self, puObj, opObj, nameplotop):
5500 5685 parmObj = opObj.getParameterObj(parameterName='wr_period')
5501 5686 if parmObj == None:
5502 5687 wr_period = None
5503 5688 else:
5504 5689 value = opObj.getParameterValue(parameterName='wr_period')
5505 5690 wr_period = str(value)
5506 5691 if puObj.datatype == "Spectra":
5507 5692 self.bufferSpectra(nameplotop, "wr_period", wr_period)
5508 5693 if puObj.datatype == "SpectraHeis":
5509 5694 self.bufferSpectraHeis(nameplotop, "wr_period", wr_period)
5510 5695
5511 5696 def saveFTPvalues(self, opObj):
5512 5697
5513 5698 parmObj = opObj.getParameterObj(parameterName="server")
5514 5699 if parmObj == None:
5515 5700 server = 'jro-app.igp.gob.pe'
5516 5701 else:
5517 5702 server = opObj.getParameterValue(parameterName='server')
5518 5703
5519 5704 parmObj = opObj.getParameterObj(parameterName="folder")
5520 5705 if parmObj == None:
5521 5706 folder = '/home/wmaster/graficos'
5522 5707 else:
5523 5708 folder = opObj.getParameterValue(parameterName='folder')
5524 5709
5525 5710 parmObj = opObj.getParameterObj(parameterName="username")
5526 5711 if parmObj == None:
5527 5712 username = 'wmaster'
5528 5713 else:
5529 5714 username = opObj.getParameterValue(parameterName='username')
5530 5715
5531 5716 parmObj = opObj.getParameterObj(parameterName="password")
5532 5717 if parmObj == None:
5533 5718 password = 'mst2010vhf'
5534 5719 else:
5535 5720 password = opObj.getParameterValue(parameterName='password')
5536 5721
5537 5722 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
5538 5723 if parmObj == None:
5539 5724 ftp_wei = '0'
5540 5725 else:
5541 5726 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
5542 5727
5543 5728 parmObj = opObj.getParameterObj(parameterName="exp_code")
5544 5729 if parmObj == None:
5545 5730 exp_code = '0'
5546 5731 else:
5547 5732 exp_code = opObj.getParameterValue(parameterName='exp_code')
5548 5733
5549 5734 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
5550 5735 if parmObj == None:
5551 5736 sub_exp_code = '0'
5552 5737 else:
5553 5738 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
5554 5739
5555 5740 parmObj = opObj.getParameterObj(parameterName="plot_pos")
5556 5741 if parmObj == None:
5557 5742 plot_pos = '0'
5558 5743 else:
5559 5744 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
5560 5745
5561 5746 parmObj = opObj.getParameterObj(parameterName="localfolder")
5562 5747 if parmObj == None:
5563 5748 localfolder = None
5564 5749 else:
5565 5750 localfolder = opObj.getParameterValue(parameterName='localfolder')
5566 5751
5567 5752 parmObj = opObj.getParameterObj(parameterName="extension")
5568 5753 if parmObj == None:
5569 5754 extension = None
5570 5755 else:
5571 5756 extension = opObj.getParameterValue(parameterName='extension')
5572 5757
5573 5758 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos,
5574 5759 localfolder=localfolder,
5575 5760 extension=extension)
5576 5761
5577 5762 def addProject2ProjectExplorer(self, id, name):
5578 5763
5579 5764 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5580 5765 self.parentItem = self.projectExplorerModel.invisibleRootItem()
5581 5766 self.parentItem.appendRow(itemTree)
5582 5767 self.parentItem = itemTree
5583 5768 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5584 5769
5585 5770 self.selectedItemTree = itemTree
5586 5771
5587 5772 self.__itemTreeDict[id] = itemTree
5588 5773
5589 5774 def addPU2ProjectExplorer(self, id, name):
5590 5775 # id1= round(int(id)/10.)*10
5591 5776 # id= int(id)
5592 5777 # id=id-id1
5593 5778 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5594 5779
5595 5780 self.parentItem = self.selectedItemTree
5596 5781 self.parentItem.appendRow(itemTree)
5597 5782 self.projectExplorerTree.expandAll()
5598 5783 self.parentItem = itemTree
5599 5784 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5600 5785
5601 5786 self.selectedItemTree = itemTree
5602 5787
5603 5788 self.__itemTreeDict[id] = itemTree
5604 5789
5605 5790 def addPU2PELoadXML(self, id, name, inputId):
5606 5791
5607 5792 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
5608 5793
5609 5794 if self.__itemTreeDict.has_key(inputId):
5610 5795 self.parentItem = self.__itemTreeDict[inputId]
5611 5796 else:
5612 self.parentItem = self.__itemTreeDict[inputId[0]]
5797 #If parent is a Reader object
5798 self.parentItem = self.__itemTreeDict[inputId[:-1]]
5613 5799
5614 5800 self.parentItem.appendRow(itemTree)
5615 5801 self.projectExplorerTree.expandAll()
5616 5802 self.parentItem = itemTree
5617 5803 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
5618 5804
5619 5805 self.selectedItemTree = itemTree
5620 5806
5621 5807 self.__itemTreeDict[id] = itemTree
5622 5808 # print "stop"
5623 5809
5624 5810 def getSelectedProjectObj(self):
5625 5811 """
5626 5812 Return the current project object selected. If a processing unit is
5627 5813 actually selected this function returns associated project.
5628 5814
5629 5815 None if any project or processing unit is selected
5630 5816 """
5631 5817 for key in self.__itemTreeDict.keys():
5632 5818 if self.__itemTreeDict[key] != self.selectedItemTree:
5633 5819 continue
5634 5820
5635 5821 if self.__projectObjDict.has_key(key):
5636 5822 projectObj = self.__projectObjDict[key]
5637 5823 return projectObj
5638 5824
5639 5825 puObj = self.__puObjDict[key]
5640 5826
5641 5827 if puObj.parentId == None:
5642 5828 projectId = puObj.getId()[0]
5643 5829 else:
5644 5830 projectId = puObj.parentId
5645 5831
5646 5832 projectObj = self.__projectObjDict[projectId]
5647
5648 5833 return projectObj
5649 5834
5650 5835 return None
5651 5836
5652 5837 def getSelectedItemObj(self):
5653 5838 """
5654 5839 Return the current project or processing unit object selected
5655 5840
5656 5841 None if any project or processing unit is selected
5657 5842 """
5658 5843 for key in self.__itemTreeDict.keys():
5659 5844 if self.__itemTreeDict[key] != self.selectedItemTree:
5660 5845 continue
5661 5846
5662 5847 if self.__projectObjDict.has_key(key) == True:
5663 5848 fatherObj = self.__projectObjDict[key]
5664 5849 else:
5665 5850 fatherObj = self.__puObjDict[key]
5666 5851
5667 5852 return fatherObj
5668 5853
5669 5854 return None
5670 5855
5856 def _WarningWindow(self, text, information):
5857
5858 msgBox = QtGui.QMessageBox()
5859 msgBox.setText(text)
5860 msgBox.setInformativeText(information)
5861 msgBox.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
5862 msgBox.setDefaultButton(QtGui.QMessageBox.Ok)
5863 ret = msgBox.exec_()
5864
5865 answer = False
5866
5867 if ret == QtGui.QMessageBox.Ok:
5868 answer = True
5869
5870 return answer
5871
5872 def __getNewProjectId(self):
5873
5874 loadProject = False
5875
5876 for thisId in range(1,10):
5877 newId = str(thisId)
5878 if newId in self.__projectObjDict.keys():
5879 continue
5880
5881 loadProject = True
5882 projectId = newId
5883 break
5884
5885 if not loadProject:
5886 self.console.clear()
5887 self.console.append("The maximum number of projects has been loaded, a new project can not be loaded")
5888 return None
5889
5890 return projectId
5891
5671 5892 def openProject(self):
5672 5893
5673 5894 self.actionStart.setEnabled(False)
5674 5895 self.actionStarToolbar.setEnabled(False)
5675 5896
5676 5897 self.create = False
5677 5898 self.frame_2.setEnabled(True)
5678 5899
5679 5900 # print self.dir
5680 5901 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
5681 self.console.clear()
5902
5682 5903 projectObjLoad = Project()
5904
5683 5905 try:
5684 5906 projectObjLoad.readXml(filename)
5685 5907 except:
5686 5908 self.console.clear()
5687 5909 self.console.append("The selected xml file could not be loaded ...")
5688 5910 return 0
5689 5911
5690 5912 self.refreshProjectWindow2(projectObjLoad)
5691 5913 self.refreshProjectProperties(projectObjLoad)
5692 # project_name, description = projectObjLoad.name, projectObjLoad.description
5693 id = projectObjLoad.id
5694 self.__projectObjDict[id] = projectObjLoad
5695 # # Project Properties
5696 # datatype, data_path, startDate, endDate, startTime, endTime , online , delay, walk, set = self.showProjectProperties(projectObjLoad)
5697 # # show ProjectView
5698 self.addProject2ProjectExplorer(id=id, name=projectObjLoad.name)
5699 # self.refreshProjectWindow(project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, set)
5700 #
5701 # if datatype == "Voltage":
5702 # ext = '.r'
5703 # self.specOpProfiles.setEnabled(True)
5704 # self.specOpippFactor.setEnabled(True)
5705 # elif datatype == "Spectra":
5706 # ext = '.pdata'
5707 # self.specOpProfiles.setEnabled(False)
5708 # self.specOpippFactor.setEnabled(False)
5709 # elif datatype == "Fits":
5710 # ext = '.fits'
5711 # elif datatype == "USRP":
5712 # ext = '.hdf5'
5713 #
5714 # if online == 0:
5715 # self.loadDays(data_path, ext, walk)
5716 # else:
5717 # self.proComStartDate.setEnabled(False)
5718 # self.proComEndDate.setEnabled(False)
5719 # self.proStartTime.setEnabled(False)
5720 # self.proEndTime.setEnabled(False)
5721 # self.frame_2.setEnabled(True)
5914
5915 projectId = projectObjLoad.id
5916
5917 if projectId in self.__projectObjDict.keys():
5918
5919 # answer = self._WarningWindow("You already have a project loaded with the same Id",
5920 # "Do you want to load the file anyway?")
5921 # if not answer:
5922 # return
5923
5924 projectId = self.__getNewProjectId()
5925
5926 if not projectId:
5927 return
5928
5929 projectObjLoad.updateId(projectId)
5930
5931 self.__projectObjDict[projectId] = projectObjLoad
5932
5933 self.addProject2ProjectExplorer(id=projectId, name=projectObjLoad.name)
5722 5934
5723 5935 self.tabWidgetProject.setEnabled(True)
5724 5936 self.tabWidgetProject.setCurrentWidget(self.tabProject)
5725 5937 # Disable tabProject after finish the creation
5726 5938 self.tabProject.setEnabled(True)
5727 5939 puObjorderList = OrderedDict(sorted(projectObjLoad.procUnitConfObjDict.items(), key=lambda x: x[0]))
5728 5940
5729 5941 for puId, puObj in puObjorderList.items():
5730 5942
5731 # print "%s %s %s %s %s" %(puObj.datatype, inputId, puObj.inputId, puObj.getId(), puObj.parentId)
5732
5733 5943 self.__puObjDict[puId] = puObj
5734 5944
5735 if puObj.inputId != '0':
5736 self.addPU2PELoadXML(id=puId , name=puObj.datatype , inputId=puObj.inputId)
5945 if puObj.name == "SendToServer":
5946 self.__ftpProcUnitAdded = True
5947 self.__ftpProcUnitId = puObj.getId()
5737 5948
5738 if puObj.datatype == "Voltage":
5739 self.refreshPUWindow(puObj.datatype, puObj)
5740 self.refreshPUProperties(puObj)
5741 self.showtabPUCreated(datatype=puObj.datatype)
5949 opObj = puObj.getOperationObj(name="run")
5950 self.saveFTPvalues(opObj)
5742 5951
5743 if puObj.datatype == "Spectra":
5744 self.refreshPUWindow(puObj.datatype, puObj)
5745 self.refreshPUProperties(puObj)
5746 self.showtabPUCreated(datatype=puObj.datatype)
5952 if puObj.inputId == '0':
5953 continue
5747 5954
5748 if puObj.datatype == "SpectraHeis":
5955 self.addPU2PELoadXML(id=puId , name=puObj.datatype , inputId=puObj.inputId)
5956
5957 if puObj.datatype in ("Voltage", "Spectra", "SpectraHeis"):
5749 5958 self.refreshPUWindow(puObj.datatype, puObj)
5750 5959 self.refreshPUProperties(puObj)
5751 5960 self.showtabPUCreated(datatype=puObj.datatype)
5752 5961
5753 if puObj.name == "SendToServer":
5754 self.__ftpProcUnitAdded = True
5755 self.__ftpProcUnitId = puObj.getId()
5756
5757 opObj = puObj.getOperationObj(name="run")
5758 self.saveFTPvalues(opObj)
5759 5962
5760 # self.console.clear()
5963 self.console.clear()
5761 5964 self.console.append("The selected xml file has been loaded successfully")
5762 # self.refreshPUWindow(datatype=datatype,puObj=puObj)
5763 5965
5764 5966 self.actionStart.setEnabled(True)
5765 5967 self.actionStarToolbar.setEnabled(True)
5766 5968
5767 5969 def on_comm_updating_timer(self):
5768 5970 # Verifica si algun proceso ha sido inicializado y sigue ejecutandose
5769 5971
5770 5972 if not self.__initialized:
5771 5973 return
5772 5974
5773 5975 if not self.controllerObj.isAlive():
5774 5976 self.stopProject()
5775 5977
5776 def playProject(self, ext=".xml"):
5978 def playProject(self, ext=".xml", save=0):
5777 5979
5980 # self.console.clear()
5778 5981 projectObj = self.getSelectedProjectObj()
5779 5982
5780 5983 if not projectObj:
5781 5984 print "Please select a project before pressing PLAY"
5782 5985 return
5783 5986
5784 filename = os.path.join(str(self.pathWorkSpace),
5785 "%s%s%s" %(str(projectObj.name), str(projectObj.id), ext)
5786 )
5787
5788 self.console.clear()
5987 if save:
5789 5988 filename = self.saveProject()
5790 # projectObj.writeXml(filename)
5791 5989 if filename == None:
5792 5990 self.console.append("Process did not initialize.")
5793 5991 return
5992 else:
5993 filename = TEMPORAL_FILE
5994 projectObj.writeXml(filename)
5794 5995
5795 5996 self.actionStart.setEnabled(False)
5796 5997 self.actionPause.setEnabled(True)
5797 5998 self.actionStop.setEnabled(True)
5798 5999
5799 6000 self.actionStarToolbar.setEnabled(False)
5800 6001 self.actionPauseToolbar.setEnabled(True)
5801 6002 self.actionStopToolbar.setEnabled(True)
5802 6003
5803 6004 self.console.append("Please Wait...")
5804 6005 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PROCESS, filename))
5805 6006
5806 6007 self.controllerObj = ControllerThread(filename)
5807 6008 self.controllerObj.start()
5808 6009 sleep(0.5)
5809 6010 self.__initialized = True
5810 6011
5811 6012 def stopProject(self):
5812 6013
5813 6014 self.__initialized = False
5814 6015
5815 6016 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.STOP, True))
5816 6017 self.controllerObj.stop()
5817 6018
5818 6019 self.actionStart.setEnabled(True)
5819 6020 self.actionPause.setEnabled(False)
5820 6021 self.actionStop.setEnabled(False)
5821 6022
5822 6023 self.actionStarToolbar.setEnabled(True)
5823 6024 self.actionPauseToolbar.setEnabled(False)
5824 6025 self.actionStopToolbar.setEnabled(False)
5825 6026
5826 6027 self.restorePauseIcon()
5827 6028
5828 6029 def pauseProject(self):
5829 6030
5830 6031 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PAUSE, data=True))
5831 6032 self.controllerObj.pause()
5832 6033
5833 6034 self.actionStart.setEnabled(False)
5834 6035 self.actionPause.setEnabled(True)
5835 6036 self.actionStop.setEnabled(True)
5836 6037
5837 6038 self.actionStarToolbar.setEnabled(False)
5838 6039 self.actionPauseToolbar.setEnabled(True)
5839 6040 self.actionStopToolbar.setEnabled(True)
5840 6041
5841 def saveProject(self):
6042 def saveProject(self, filename=None):
5842 6043
5843 6044 self.actionStart.setEnabled(False)
5844 6045 self.actionStarToolbar.setEnabled(False)
5845 6046
6047 projectObj = self.getSelectedProjectObj()
6048 self.refreshGraphicsId()
6049
5846 6050 sts = True
5847 puObj = self.getSelectedItemObj()
6051 selectedItemObj = self.getSelectedItemObj()
6052
6053 #A Processing Unit has been selected
6054 if projectObj == selectedItemObj:
6055 if not self.on_proOk_clicked():
6056 return None
6057
6058 #A Processing Unit has been selected
6059 if projectObj != selectedItemObj:
6060 puObj = selectedItemObj
5848 6061
5849 if puObj != None:
5850 6062 if puObj.name == 'VoltageProc':
5851 6063 sts = self.on_volOpOk_clicked()
5852 6064 if puObj.name == 'SpectraProc':
5853 6065 sts = self.on_specOpOk_clicked()
5854 6066 if puObj.name == 'SpectraHeisProc':
5855 6067 sts = self.on_specHeisOpOk_clicked()
5856 6068
5857 6069 if not sts:
5858 6070 return None
5859 6071
5860 projectObj = self.getSelectedProjectObj()
5861 puObjorderList = OrderedDict(sorted(projectObj.procUnitConfObjDict.items(), key=lambda x: x[0]))
5862
5863 for inputId, puObj in puObjorderList.items():
5864 # print puObj.datatype, puObj.inputId,puObj.getId(),puObj.parentId
6072 if not filename:
6073 filename = os.path.join( str(self.pathWorkSpace), "%s%s" %(str(projectObj.name), '.xml') )
5865 6074
5866 if puObj.name == "VoltageProc":
5867 self.refreshID(puObj)
5868 if puObj.name == "SpectraProc":
5869 self.refreshID(puObj)
5870 if puObj.name == "SpectraHeisProc":
5871 self.refreshID(puObj)
5872
5873 filename = os.path.join(str(self.pathWorkSpace),
5874 "%s%s%s" %(str(projectObj.name), str(projectObj.id), '.xml')
5875 )
5876 6075 projectObj.writeXml(filename)
5877 self.console.append("Now, you can press the Start Icon on the toolbar")
6076 self.console.append("Now, you can press Start Button on the toolbar")
5878 6077
5879 6078 self.actionStart.setEnabled(True)
5880 6079 self.actionStarToolbar.setEnabled(True)
5881 6080
5882 6081 return filename
5883 6082
5884 6083 def removeItemTreeFromProject(self):
5885 6084 """
5886 6085 Metodo para eliminar el proyecto en el dictionario de proyectos y en el dictionario de vista de arbol
5887 6086 """
5888 6087 for key in self.__itemTreeDict.keys():
5889 6088
5890 6089 #Check again because an item can delete multiple items (childs)
5891 6090 if key not in self.__itemTreeDict.keys():
5892 6091 continue
5893 6092
5894 6093 if self.__itemTreeDict[key] != self.selectedItemTree:
5895 6094 continue
5896 6095
5897 6096 if self.__projectObjDict.has_key(key) == True:
5898 6097
5899 6098 del self.__projectObjDict[key]
5900 6099 del self.__itemTreeDict[key]
5901 6100
5902 6101 else:
5903 6102 puObj = self.__puObjDict[key]
5904 6103 idProjectParent = puObj.parentId
5905 6104 projectObj = self.__projectObjDict[idProjectParent]
5906 6105
5907 6106 del self.__puObjDict[key]
5908 6107 del self.__itemTreeDict[key]
5909 6108 del projectObj.procUnitConfObjDict[key]
5910 6109
5911 6110 for key in projectObj.procUnitConfObjDict.keys():
5912 6111 if projectObj.procUnitConfObjDict[key].inputId != puObj.getId():
5913 6112 continue
5914 6113 del self.__puObjDict[projectObj.procUnitConfObjDict[key].getId()]
5915 6114 del self.__itemTreeDict[projectObj.procUnitConfObjDict[key].getId()]
5916 6115 del projectObj.procUnitConfObjDict[key]
5917 6116 # print projectObj.procUnitConfObjDict
5918 6117 # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict
5919 6118
5920 6119 def getParmsFromProjectWindow(self):
5921 6120 """
5922 6121 Return Inputs Project:
5923 6122 - id
5924 6123 - project_name
5925 6124 - datatype
5926 6125 - ext
5927 6126 - data_path
5928 6127 - readmode
5929 6128 - delay
5930 6129 - set
5931 6130 - walk
5932 6131 """
5933 6132 project_name = str(self.proName.text())
5934 6133 try:
5935 6134 name = str(self.proName.text())
5936 6135 except:
5937 6136 self.console.clear()
5938 6137 self.console.append("Please Write a name")
5939 6138 return 0
5940 6139
5941 6140 desc = str(self.proDescription.toPlainText())
5942 6141 datatype = str(self.proComDataType.currentText())
5943 6142 data_path = str(self.proDataPath.text())
5944 6143 if not os.path.exists(data_path):
5945 6144 self.proOk.setEnabled(False)
5946 6145 self.console.clear()
5947 6146 self.console.append("Write a correct a path")
5948 6147 return
5949 6148
5950 6149 online = int(self.online)
5951 6150 if online == 0:
5952 6151 delay = 0
5953 6152 set = 0
5954 6153 else:
5955 6154 delay = self.proDelay.text()
5956 6155 try:
5957 6156 delay = int(self.proDelay.text())
5958 6157 except:
5959 6158 self.console.clear()
5960 6159 self.console.append("Please Write a number for delay")
5961 6160 return 0
5962 6161
5963 6162 set = self.proSet.text()
5964 6163 try:
5965 6164 set = int(self.proSet.text())
5966 6165 except:
5967 self.console.clear()
5968 6166 set = None
5969 6167
5970 6168
5971 6169 walk = int(self.walk)
5972 6170 starDate = str(self.proComStartDate.currentText())
5973 6171 endDate = str(self.proComEndDate.currentText())
5974 6172 reloj1 = self.proStartTime.time()
5975 6173 reloj2 = self.proEndTime.time()
5976 6174 startTime = str(reloj1.hour()) + ":" + str(reloj1.minute()) + ":" + str(reloj1.second())
5977 6175 endTime = str(reloj2.hour()) + ":" + str(reloj2.minute()) + ":" + str(reloj2.second())
5978 6176
5979 6177 return project_name, desc, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk , set
5980 6178
5981 6179 def removefromtree(self, row):
5982 6180 self.parentItem.removeRow(row)
5983 6181
5984 6182
5985 6183 def setInputsProject_View(self):
5986 6184
5987 6185 self.tabWidgetProject.setEnabled(True)
5988 6186 self.tabWidgetProject.setCurrentWidget(self.tabProject)
5989 6187 self.tabProject.setEnabled(True)
5990 6188 self.frame_2.setEnabled(False)
5991 6189 self.proName.clear()
5992 6190 self.proName.setFocus()
5993 6191 self.proName.setSelection(0, 0)
5994 6192 self.proName.setCursorPosition(0)
5995 6193 self.proDataType.setText('.r')
5996 6194 self.proDataPath.clear()
5997 6195 self.proComDataType.clear()
5998 6196 self.proComDataType.addItem("Voltage")
5999 6197 self.proComDataType.addItem("Spectra")
6000 6198 self.proComDataType.addItem("Fits")
6001 6199 self.proComDataType.addItem("USRP")
6002 6200
6003 6201 self.proComStartDate.clear()
6004 6202 self.proComEndDate.clear()
6005 6203
6006 6204 startTime = "00:00:00"
6007 6205 endTime = "23:59:59"
6008 6206 starlist = startTime.split(":")
6009 6207 endlist = endTime.split(":")
6010 self.proDelay.setText("0")
6011 self.proSet.setText("0")
6208 self.proDelay.setText("60")
6209 self.proSet.setText("")
6210
6211 self.labelSet.show()
6212 self.proSet.show()
6213
6214 self.labelIPPKm.hide()
6215 self.proIPPKm.hide()
6216
6012 6217 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
6013 6218 self.proStartTime.setTime(self.time)
6014 6219 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
6015 6220 self.proEndTime.setTime(self.time)
6016 6221 self.proDescription.clear()
6017 6222 self.proOk.setEnabled(False)
6018 self.console.clear()
6019 6223 # self.console.append("Please, Write a name Project")
6020 6224 # self.console.append("Introduce Project Parameters")DC
6021 6225 # self.console.append("Select data type Voltage( .rawdata) or Spectra(.pdata)")
6022 6226
6023 6227 def clearPUWindow(self, datatype):
6024 6228
6025 6229 projectObjView = self.getSelectedProjectObj()
6026 6230
6027 6231 if not projectObjView:
6028 6232 return
6029 6233
6030 6234 puObj = self.getSelectedItemObj()
6031 6235 inputId = puObj.getInputId()
6032 6236 inputPUObj = projectObjView.getProcUnitObj(inputId)
6033 6237
6034 6238 if datatype == 'Voltage':
6035 6239 self.volOpComChannels.setEnabled(False)
6036 6240 self.volOpComHeights.setEnabled(False)
6037 6241 self.volOpFilter.setEnabled(False)
6038 6242 self.volOpComProfile.setEnabled(False)
6039 6243 self.volOpComCode.setEnabled(False)
6040 6244 self.volOpCohInt.setEnabled(False)
6041 6245 self.volOpChannel.setEnabled(False)
6042 6246 self.volOpHeights.setEnabled(False)
6043 6247 self.volOpProfile.setEnabled(False)
6044 6248 self.volOpRadarfrequency.setEnabled(False)
6045 6249 self.volOpCebChannels.setCheckState(0)
6046 6250 self.volOpCebRadarfrequency.setCheckState(0)
6047 6251 self.volOpCebHeights.setCheckState(0)
6048 6252 self.volOpCebFilter.setCheckState(0)
6049 6253 self.volOpCebProfile.setCheckState(0)
6050 6254 self.volOpCebDecodification.setCheckState(0)
6051 6255 self.volOpCebCohInt.setCheckState(0)
6052 6256
6053 6257 self.volOpChannel.clear()
6054 6258 self.volOpHeights.clear()
6055 6259 self.volOpProfile.clear()
6056 6260 self.volOpFilter.clear()
6057 6261 self.volOpCohInt.clear()
6058 6262 self.volOpRadarfrequency.clear()
6059 6263
6060 6264 if datatype == 'Spectra':
6061 6265
6062 6266 if inputPUObj.datatype == 'Spectra':
6063 6267 self.specOpnFFTpoints.setEnabled(False)
6064 6268 self.specOpProfiles.setEnabled(False)
6065 6269 self.specOpippFactor.setEnabled(False)
6066 6270 else:
6067 6271 self.specOpnFFTpoints.setEnabled(True)
6068 6272 self.specOpProfiles.setEnabled(True)
6069 6273 self.specOpippFactor.setEnabled(True)
6070 6274
6071 6275 self.specOpCebCrossSpectra.setCheckState(0)
6072 6276 self.specOpCebChannel.setCheckState(0)
6073 6277 self.specOpCebHeights.setCheckState(0)
6074 6278 self.specOpCebIncoherent.setCheckState(0)
6075 6279 self.specOpCebRemoveDC.setCheckState(0)
6076 6280 self.specOpCebRemoveInt.setCheckState(0)
6077 6281 self.specOpCebgetNoise.setCheckState(0)
6078 6282 self.specOpCebRadarfrequency.setCheckState(0)
6079 6283
6080 6284 self.specOpRadarfrequency.setEnabled(False)
6081 6285 self.specOppairsList.setEnabled(False)
6082 6286 self.specOpChannel.setEnabled(False)
6083 6287 self.specOpHeights.setEnabled(False)
6084 6288 self.specOpIncoherent.setEnabled(False)
6085 6289 self.specOpgetNoise.setEnabled(False)
6086 6290
6087 6291 self.specOpRadarfrequency.clear()
6088 6292 self.specOpnFFTpoints.clear()
6089 6293 self.specOpProfiles.clear()
6090 6294 self.specOpippFactor.clear
6091 6295 self.specOppairsList.clear()
6092 6296 self.specOpChannel.clear()
6093 6297 self.specOpHeights.clear()
6094 6298 self.specOpIncoherent.clear()
6095 6299 self.specOpgetNoise.clear()
6096 6300
6097 6301 self.specGraphCebSpectraplot.setCheckState(0)
6098 6302 self.specGraphCebCrossSpectraplot.setCheckState(0)
6099 6303 self.specGraphCebRTIplot.setCheckState(0)
6100 6304 self.specGraphCebRTInoise.setCheckState(0)
6101 6305 self.specGraphCebCoherencmap.setCheckState(0)
6102 6306 self.specGraphPowerprofile.setCheckState(0)
6103 6307
6104 6308 self.specGraphSaveSpectra.setCheckState(0)
6105 6309 self.specGraphSaveCross.setCheckState(0)
6106 6310 self.specGraphSaveRTIplot.setCheckState(0)
6107 6311 self.specGraphSaveRTInoise.setCheckState(0)
6108 6312 self.specGraphSaveCoherencemap.setCheckState(0)
6109 6313 self.specGraphSavePowerprofile.setCheckState(0)
6110 6314
6111 6315 self.specGraphftpRTIplot.setCheckState(0)
6112 6316 self.specGraphftpRTInoise.setCheckState(0)
6113 6317 self.specGraphftpCoherencemap.setCheckState(0)
6114 6318
6115 6319 self.specGraphPath.clear()
6116 6320 self.specGraphPrefix.clear()
6117 6321
6118 6322 self.specGgraphftpratio.clear()
6119 6323
6120 6324 self.specGgraphChannelList.clear()
6121 6325 self.specGgraphFreq.clear()
6122 6326 self.specGgraphHeight.clear()
6123 6327 self.specGgraphDbsrange.clear()
6124 6328 self.specGgraphmagnitud.clear()
6125 6329 self.specGgraphTminTmax.clear()
6126 6330 self.specGgraphTimeRange.clear()
6127 6331
6128 6332 if datatype == 'SpectraHeis':
6129 6333 self.specHeisOpCebIncoherent.setCheckState(0)
6130 6334 self.specHeisOpIncoherent.setEnabled(False)
6131 6335 self.specHeisOpIncoherent.clear()
6132 6336
6133 6337 self.specHeisGraphCebSpectraplot.setCheckState(0)
6134 6338 self.specHeisGraphCebRTIplot.setCheckState(0)
6135 6339
6136 6340 self.specHeisGraphSaveSpectra.setCheckState(0)
6137 6341 self.specHeisGraphSaveRTIplot.setCheckState(0)
6138 6342
6139 6343 self.specHeisGraphftpSpectra.setCheckState(0)
6140 6344 self.specHeisGraphftpRTIplot.setCheckState(0)
6141 6345
6142 6346 self.specHeisGraphPath.clear()
6143 6347 self.specHeisGraphPrefix.clear()
6144 6348 self.specHeisGgraphChannelList.clear()
6145 6349 self.specHeisGgraphXminXmax.clear()
6146 6350 self.specHeisGgraphYminYmax.clear()
6147 6351 self.specHeisGgraphTminTmax.clear()
6148 6352 self.specHeisGgraphTimeRange.clear()
6149 6353 self.specHeisGgraphftpratio.clear()
6150 6354
6151 6355
6152 6356
6153 6357
6154 6358
6155 6359 def showtabPUCreated(self, datatype):
6156 6360 if datatype == "Voltage":
6157 6361 self.tabVoltage.setEnabled(True)
6158 6362 self.tabProject.setEnabled(False)
6159 6363 self.tabSpectra.setEnabled(False)
6160 6364 self.tabCorrelation.setEnabled(False)
6161 6365 self.tabSpectraHeis.setEnabled(False)
6162 6366 self.tabWidgetProject.setCurrentWidget(self.tabVoltage)
6163 6367
6164 6368 if datatype == "Spectra":
6165 6369 self.tabVoltage.setEnabled(False)
6166 6370 self.tabProject.setEnabled(False)
6167 6371 self.tabSpectra.setEnabled(True)
6168 6372 self.tabCorrelation.setEnabled(False)
6169 6373 self.tabSpectraHeis.setEnabled(False)
6170 6374 self.tabWidgetProject.setCurrentWidget(self.tabSpectra)
6171 6375 if datatype == "SpectraHeis":
6172 6376 self.tabVoltage.setEnabled(False)
6173 6377 self.tabProject.setEnabled(False)
6174 6378 self.tabSpectra.setEnabled(False)
6175 6379 self.tabCorrelation.setEnabled(False)
6176 6380 self.tabSpectraHeis.setEnabled(True)
6177 6381 self.tabWidgetProject.setCurrentWidget(self.tabSpectraHeis)
6178 6382
6179 6383 def checkInputsProject(self):
6180 6384 """
6181 6385 Check Inputs Project:
6182 6386 - project_name
6183 6387 - datatype
6184 6388 - ext
6185 6389 - data_path
6186 6390 - readmode
6187 6391 - delay
6188 6392 - set
6189 6393 - walk
6190 6394 """
6191 6395 parms_ok = True
6192 6396 project_name = str(self.proName.text())
6193 6397 if project_name == '' or project_name == None:
6194 6398 outputstr = "Enter the Project Name"
6195 6399 self.console.append(outputstr)
6196 6400 parms_ok = False
6197 6401 project_name = None
6198 6402
6199 6403 datatype = str(self.proComDataType.currentText())
6200 6404 if not(datatype in ['Voltage', 'Spectra', 'Fits', 'USRP']):
6201 6405 outputstr = 'datatype = %s, this must be either Voltage, Spectra, SpectraHeis or USRP' % datatype
6202 6406 self.console.append(outputstr)
6203 6407 parms_ok = False
6204 6408 datatype = None
6205 6409
6206 6410 ext = str(self.proDataType.text())
6207 6411 if not(ext in ['.r', '.pdata', '.fits', '.hdf5']):
6208 6412 outputstr = "extension files must be .r , .pdata, .fits or .hdf5"
6209 6413 self.console.append(outputstr)
6210 6414 parms_ok = False
6211 6415 ext = None
6212 6416
6213 6417 data_path = str(self.proDataPath.text())
6214 6418
6215 6419 if data_path == '':
6216 6420 outputstr = 'Datapath is empty'
6217 6421 self.console.append(outputstr)
6218 6422 parms_ok = False
6219 6423 data_path = None
6220 6424
6221 6425 if data_path != None:
6222 6426 if not os.path.isdir(data_path):
6223 6427 outputstr = 'Datapath:%s does not exists' % data_path
6224 6428 self.console.append(outputstr)
6225 6429 parms_ok = False
6226 6430 data_path = None
6227 6431
6228 6432 read_mode = str(self.proComReadMode.currentText())
6229 6433 if not(read_mode in ['Online', 'Offline']):
6230 6434 outputstr = 'Read Mode: %s, this must be either Online or Offline' % read_mode
6231 6435 self.console.append(outputstr)
6232 6436 parms_ok = False
6233 6437 read_mode = None
6234 6438
6235 6439 try:
6236 6440 delay = int(str(self.proDelay.text()))
6237 6441 except:
6238 outputstr = 'Delay: %s, this must be a integer number' % str(self.proName.text())
6442 outputstr = 'Delay: %s, this must be a integer number' % str(self.proDelay.text())
6239 6443 self.console.append(outputstr)
6240 parms_ok = False
6444 # parms_ok = False
6241 6445 delay = None
6242 6446
6243 6447 try:
6244 6448 set = int(str(self.proSet.text()))
6245 6449 except:
6246 6450 # outputstr = 'Set: %s, this must be a integer number' % str(self.proName.text())
6247 6451 # self.console.append(outputstr)
6248 6452 # parms_ok = False
6249 6453 set = None
6250 6454
6251 6455 walk_str = str(self.proComWalk.currentText())
6252 6456 if walk_str == 'On Files':
6253 6457 walk = 0
6254 6458 elif walk_str == 'On Folder':
6255 6459 walk = 1
6256 6460 else:
6257 6461 outputstr = 'Walk: %s, this must be either On Files or On Folders' % walk_str
6258 6462 self.console.append(outputstr)
6259 6463 parms_ok = False
6260 6464 walk = None
6261 6465
6262 6466 return parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set
6263 6467
6264 6468 def checkInputsPUSave(self, datatype):
6265 6469 """
6266 6470 Check Inputs Spectra Save:
6267 6471 - path
6268 6472 - blocks Per File
6269 6473 - sufix
6270 6474 - dataformat
6271 6475 """
6272 6476 parms_ok = True
6273 6477
6274 6478 if datatype == "Voltage":
6275 6479 output_path = str(self.volOutputPath.text())
6276 6480 blocksperfile = str(self.volOutputblocksperfile.text())
6277 6481 profilesperblock = str(self.volOutputprofilesperblock.text())
6278 6482
6279 6483 if datatype == "Spectra":
6280 6484 output_path = str(self.specOutputPath.text())
6281 6485 blocksperfile = str(self.specOutputblocksperfile.text())
6282 6486 profilesperblock = str(self.specOutputprofileperblock.text())
6283 6487
6284 6488 if datatype == "SpectraHeis":
6285 6489 output_path = str(self.specHeisOutputPath.text())
6286 6490 blocksperfile = str(self.specHeisOutputblocksperfile.text())
6287 6491 metada = str(self.specHeisOutputMetada.text())
6288 6492
6289 6493 if output_path == '':
6290 6494 outputstr = 'Outputpath is empty'
6291 6495 self.console.append(outputstr)
6292 6496 parms_ok = False
6293 6497 data_path = None
6294 6498
6295 6499 if output_path != None:
6296 6500 if not os.path.exists(output_path):
6297 6501 outputstr = 'OutputPath:%s does not exists' % output_path
6298 6502 self.console.append(outputstr)
6299 6503 parms_ok = False
6300 6504 output_path = None
6301 6505
6302 6506
6303 6507 try:
6304 6508 profilesperblock = int(profilesperblock)
6305 6509 except:
6306 6510 if datatype == "Voltage":
6307 6511 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.volOutputprofilesperblock.text())
6308 6512 self.console.append(outputstr)
6309 6513 parms_ok = False
6310 6514 profilesperblock = None
6311 6515
6312 6516 elif datatype == "Spectra":
6313 6517 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.specOutputprofileperblock.text())
6314 6518 self.console.append(outputstr)
6315 6519 parms_ok = False
6316 6520 profilesperblock = None
6317 6521
6318 6522 try:
6319 6523 blocksperfile = int(blocksperfile)
6320 6524 except:
6321 6525 if datatype == "Voltage":
6322 6526 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.volOutputblocksperfile.text())
6323 6527 elif datatype == "Spectra":
6324 6528 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specOutputblocksperfile.text())
6325 6529 elif datatype == "SpectraHeis":
6326 6530 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specHeisOutputblocksperfile.text())
6327 6531
6328 6532 self.console.append(outputstr)
6329 6533 parms_ok = False
6330 6534 blocksperfile = None
6331 6535
6332 6536 if datatype == "SpectraHeis":
6333 6537 if metada == '':
6334 6538 outputstr = 'Choose metada file'
6335 6539 self.console.append(outputstr)
6336 6540 parms_ok = False
6337 6541 if metada != None:
6338 6542 if not os.path.isfile(metada):
6339 6543 outputstr = 'Metadata:%s does not exists' % metada
6340 6544 self.console.append(outputstr)
6341 6545 parms_ok = False
6342 6546 output_path = None
6343 6547
6344 6548 if datatype == "Voltage":
6345 6549 return parms_ok, output_path, blocksperfile, profilesperblock
6346 6550
6347 6551
6348 6552 if datatype == "Spectra":
6349 6553 return parms_ok, output_path, blocksperfile, profilesperblock
6350 6554
6351 6555
6352 6556 if datatype == "SpectraHeis":
6353 6557 return parms_ok, output_path, blocksperfile, metada
6354 6558
6355 6559 def searchData(self, data_path, ext, walk, expLabel=''):
6356 6560 dateList = []
6357 6561 fileList = []
6358 6562
6359 6563 if not os.path.exists(data_path):
6360 6564 return None
6361 6565
6362 6566 if walk == 0:
6363 6567 files = os.listdir(data_path)
6364 6568 for thisFile in files:
6365 6569 thisExt = os.path.splitext(thisFile)[-1]
6366 6570 if thisExt == ext:
6367 6571 fileList.append(thisFile)
6368 6572
6369 6573 for thisFile in fileList:
6370 6574 try:
6371 6575 year = int(thisFile[1:5])
6372 6576 doy = int(thisFile[5:8])
6373 6577
6374 6578 date = datetime.date(year, 1, 1) + datetime.timedelta(doy - 1)
6375 6579 dateformat = date.strftime("%Y/%m/%d")
6376 6580
6377 6581 if dateformat not in dateList:
6378 6582 dateList.append(dateformat)
6379 6583 except:
6380 6584 continue
6381 6585 # REVISION---------------------------------1
6382 6586 if walk == 1:
6383 6587
6384 6588 dirList = os.listdir(data_path)
6385 6589
6386 6590 dirList.sort()
6387 6591
6388 6592 dateList = []
6389 6593
6390 6594 for thisDir in dirList:
6391 6595
6392 6596 if not isRadarPath(thisDir):
6393 6597 self.console.clear()
6394 6598 self.console.append("Please, Choose the Correct Path")
6395 6599 self.proOk.setEnabled(False)
6396 6600 continue
6397 6601
6398 6602 doypath = os.path.join(data_path, thisDir, expLabel)
6399 6603 if not os.path.exists(doypath):
6400 6604 self.console.clear()
6401 6605 self.console.append("Please, Choose the Correct Path")
6402 6606 return
6403 6607 files = os.listdir(doypath)
6404 6608 fileList = []
6405 6609
6406 6610 for thisFile in files:
6407 6611 thisExt = os.path.splitext(thisFile)[-1]
6408 6612 if thisExt != ext:
6409 6613 self.console.clear()
6410 6614 self.console.append("There is no datatype selected in the Path Directory")
6411 6615 self.proOk.setEnabled(False)
6412 6616 continue
6413 6617
6414 6618 if not isRadarFile(thisFile):
6415 6619 self.proOk.setEnabled(False)
6416 6620 self.console.clear()
6417 6621 self.console.append("Please, Choose the Correct Path")
6418 6622 continue
6419 6623
6420 6624 fileList.append(thisFile)
6421 6625 break
6422 6626
6423 6627 if fileList == []:
6424 6628 continue
6425 6629
6426 6630 year = int(thisDir[1:5])
6427 6631 doy = int(thisDir[5:8])
6428 6632
6429 6633 date = datetime.date(year, 1, 1) + datetime.timedelta(doy - 1)
6430 6634 dateformat = date.strftime("%Y/%m/%d")
6431 6635 dateList.append(dateformat)
6432 6636
6433 6637 if len(dateList) > 0:
6434 6638 self.proOk.setEnabled(True)
6435 6639 return dateList
6436 6640
6437 6641
6438 6642 # self.proOk.setEnabled(False)
6439 6643 return None
6440 6644
6441 6645 def findDatafiles(self, data_path, ext, walk, expLabel=''):
6442 6646
6443 6647 dateList = []
6444 6648 fileList = []
6445 6649
6446 6650 if ext == ".r":
6447 6651 from schainpy.model.io.jroIO_base import JRODataReader
6448 6652
6449 6653 readerObj = JRODataReader()
6450 6654 dateList = readerObj.findDatafiles(path=data_path,
6451 6655 expLabel=expLabel,
6452 6656 ext=ext,
6453 6657 walk=walk)
6454 6658
6455 6659 if ext == ".pdata":
6456 6660 from schainpy.model.io.jroIO_base import JRODataReader
6457 6661
6458 6662 readerObj = JRODataReader()
6459 6663 dateList = readerObj.findDatafiles(path=data_path,
6460 6664 expLabel=expLabel,
6461 6665 ext=ext,
6462 6666 walk=walk)
6463 6667
6464 6668 if ext == ".fits":
6465 6669 from schainpy.model.io.jroIO_base import JRODataReader
6466 6670
6467 6671 readerObj = JRODataReader()
6468 6672 dateList = readerObj.findDatafiles(path=data_path,
6469 6673 expLabel=expLabel,
6470 6674 ext=ext,
6471 6675 walk=walk)
6472 6676
6473 6677 if ext == ".hdf5":
6474 6678 from schainpy.model.io.jroIO_usrp import USRPReader
6475 6679
6476 6680 readerObj = USRPReader()
6477 6681 dateList = readerObj.findDatafiles(path=data_path)
6478 6682
6479 6683 return dateList
6480 6684
6481 6685 def loadDays(self, data_path, ext, walk, expLabel=''):
6482 6686 """
6483 6687 Method to loads day
6484 6688 """
6485 6689 self.proOk.setEnabled(False)
6486 6690 self.dateList = []
6487 6691
6488 6692 dateList = self.findDatafiles(data_path, ext=ext, walk=walk, expLabel=expLabel)
6489 6693
6490 6694 if not dateList:
6491 self.console.clear()
6695 # self.console.clear()
6492 6696 outputstr = "The path: %s is empty with file extension *%s" % (data_path, ext)
6493 6697 self.console.append(outputstr)
6494 6698 return
6495 6699
6700 self.proComStartDate.clear()
6701 self.proComEndDate.clear()
6702
6496 6703 dateStrList = []
6497 6704 for thisDate in dateList:
6498 6705 dateStr = thisDate.strftime("%Y/%m/%d")
6499 6706
6500 6707 self.proComStartDate.addItem(dateStr)
6501 6708 self.proComEndDate.addItem(dateStr)
6502 6709 dateStrList.append(dateStr)
6503 6710
6504 self.proComEndDate.setCurrentIndex(self.proComStartDate.count() - 1)
6711 self.proComStartDate.setCurrentIndex(0)
6712 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1)
6505 6713
6506 6714 self.dateList = dateStrList
6507 6715 self.proOk.setEnabled(True)
6508 6716
6509 6717 return self.dateList
6510 6718
6511 6719 def setWorkSpaceGUI(self, pathWorkSpace=None):
6512 6720
6513 6721 if pathWorkSpace == None:
6514 6722 home = os.path.expanduser("~")
6515 6723 pathWorkSpace = os.path.join(home,'schain_workspace')
6516 6724
6517 6725 self.pathWorkSpace = pathWorkSpace
6518 6726
6519 6727 """
6520 6728 Comandos Usados en Console
6521 6729 """
6522 6730 def __del__(self):
6523 6731 sys.stdout = sys.__stdout__
6524 6732 sys.stderr = sys.__stderr__
6525 6733
6526 6734 def normalOutputWritten(self, text):
6527 6735 color_black = QtGui.QColor(0,0,0)
6528 6736 self.console.setTextColor(color_black)
6529 6737 self.console.append(text)
6530 6738
6531 6739 def errorOutputWritten(self, text):
6532 6740 color_red = QtGui.QColor(255,0,0)
6533 6741 color_black = QtGui.QColor(0,0,0)
6534 6742
6535 6743 self.console.setTextColor(color_red)
6536 6744 self.console.append(text)
6537 6745 self.console.setTextColor(color_black)
6538 6746
6539 6747 def setParameter(self):
6540 6748
6541 6749 self.setWindowTitle("ROJ-Signal Chain")
6542 6750 self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"adn.jpg") ))
6543 6751
6544 6752 self.tabWidgetProject.setEnabled(False)
6545 6753 self.tabVoltage.setEnabled(False)
6546 6754 self.tabSpectra.setEnabled(False)
6547 6755 self.tabCorrelation.setEnabled(False)
6548 6756 self.frame_2.setEnabled(False)
6549 6757
6550 6758 self.actionCreate.setShortcut('Ctrl+N')
6551 6759 self.actionOpen.setShortcut('Ctrl+O')
6552 6760 self.actionSave.setShortcut('Ctrl+S')
6553 6761 self.actionClose.setShortcut('Ctrl+X')
6554 6762
6555 6763 self.actionStart.setShortcut('Ctrl+1')
6556 6764 self.actionPause.setShortcut('Ctrl+2')
6557 6765 self.actionStop.setShortcut('Ctrl+3')
6558 6766
6559 6767 self.actionFTP.setShortcut('Ctrl+F')
6560 6768
6561 6769 self.actionStart.setEnabled(False)
6562 6770 self.actionPause.setEnabled(False)
6563 6771 self.actionStop.setEnabled(False)
6564 6772
6565 6773 self.actionStarToolbar.setEnabled(False)
6566 6774 self.actionPauseToolbar.setEnabled(False)
6567 6775 self.actionStopToolbar.setEnabled(False)
6568 6776
6569 6777 self.proName.clear()
6570 6778 self.proDataPath.setText('')
6571 6779 self.console.setReadOnly(True)
6572 6780 self.console.append("Welcome to Signal Chain\nOpen a project or Create a new one")
6573 6781 self.proStartTime.setDisplayFormat("hh:mm:ss")
6574 6782 self.proDataType.setEnabled(False)
6575 6783 self.time = QtCore.QTime()
6576 6784 self.hour = 0
6577 6785 self.min = 0
6578 6786 self.sec = 0
6579 6787 self.proEndTime.setDisplayFormat("hh:mm:ss")
6580 6788 startTime = "00:00:00"
6581 6789 endTime = "23:59:59"
6582 6790 starlist = startTime.split(":")
6583 6791 endlist = endTime.split(":")
6584 6792 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
6585 6793 self.proStartTime.setTime(self.time)
6586 6794 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
6587 6795 self.proEndTime.setTime(self.time)
6588 6796 self.proOk.setEnabled(False)
6589 6797 # set model Project Explorer
6590 6798 self.projectExplorerModel = QtGui.QStandardItemModel()
6591 6799 self.projectExplorerModel.setHorizontalHeaderLabels(("Project Explorer",))
6592 6800 layout = QtGui.QVBoxLayout()
6593 6801 layout.addWidget(self.projectExplorerTree)
6594 6802 self.projectExplorerTree.setModel(self.projectExplorerModel)
6595 6803 self.projectExplorerTree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
6596 6804 self.projectExplorerTree.customContextMenuRequested.connect(self.on_right_click)
6597 6805 self.projectExplorerTree.clicked.connect(self.on_click)
6598 6806 self.projectExplorerTree.expandAll()
6599 6807 # set model Project Properties
6600 6808
6601 6809 self.propertiesModel = TreeModel()
6602 6810 self.propertiesModel.initProjectView()
6603 6811 self.treeProjectProperties.setModel(self.propertiesModel)
6604 6812 self.treeProjectProperties.expandAll()
6605 6813 self.treeProjectProperties.allColumnsShowFocus()
6606 6814 self.treeProjectProperties.resizeColumnToContents(1)
6607 6815
6608 6816 # set Project
6609 6817 self.proDelay.setEnabled(False)
6610 6818 self.proSet.setEnabled(False)
6611 6819 self.proDataType.setReadOnly(True)
6612 6820
6613 6821 # set Operation Voltage
6614 6822 self.volOpComChannels.setEnabled(False)
6615 6823 self.volOpComHeights.setEnabled(False)
6616 6824 self.volOpFilter.setEnabled(False)
6617 6825 self.volOpComProfile.setEnabled(False)
6618 6826 self.volOpComCode.setEnabled(False)
6619 6827 self.volOpFlip.setEnabled(False)
6620 6828 self.volOpCohInt.setEnabled(False)
6621 6829 self.volOpRadarfrequency.setEnabled(False)
6622 6830
6623 6831 self.volOpChannel.setEnabled(False)
6624 6832 self.volOpHeights.setEnabled(False)
6625 6833 self.volOpProfile.setEnabled(False)
6626 6834 self.volOpComMode.setEnabled(False)
6627 6835
6628 6836 self.volGraphPath.setEnabled(False)
6629 6837 self.volGraphPrefix.setEnabled(False)
6630 6838 self.volGraphToolPath.setEnabled(False)
6631 6839
6632 6840 # set Graph Voltage
6633 6841 self.volGraphChannelList.setEnabled(False)
6634 6842 self.volGraphfreqrange.setEnabled(False)
6635 6843 self.volGraphHeightrange.setEnabled(False)
6636 6844
6637 6845 # set Operation Spectra
6638 6846 self.specOpnFFTpoints.setEnabled(False)
6639 6847 self.specOpProfiles.setEnabled(False)
6640 6848 self.specOpippFactor.setEnabled(False)
6641 6849 self.specOppairsList.setEnabled(False)
6642 6850 self.specOpComChannel.setEnabled(False)
6643 6851 self.specOpComHeights.setEnabled(False)
6644 6852 self.specOpIncoherent.setEnabled(False)
6645 6853 self.specOpgetNoise.setEnabled(False)
6646 6854 self.specOpRadarfrequency.setEnabled(False)
6647 6855
6648 6856
6649 6857 self.specOpChannel.setEnabled(False)
6650 6858 self.specOpHeights.setEnabled(False)
6651 6859 # set Graph Spectra
6652 6860 self.specGgraphChannelList.setEnabled(False)
6653 6861 self.specGgraphFreq.setEnabled(False)
6654 6862 self.specGgraphHeight.setEnabled(False)
6655 6863 self.specGgraphDbsrange.setEnabled(False)
6656 6864 self.specGgraphmagnitud.setEnabled(False)
6657 6865 self.specGgraphTminTmax.setEnabled(False)
6658 6866 self.specGgraphTimeRange.setEnabled(False)
6659 6867 self.specGraphPath.setEnabled(False)
6660 6868 self.specGraphToolPath.setEnabled(False)
6661 6869 self.specGraphPrefix.setEnabled(False)
6662 6870
6663 6871 self.specGgraphftpratio.setEnabled(False)
6664 6872 # set Operation SpectraHeis
6665 6873 self.specHeisOpIncoherent.setEnabled(False)
6666 6874 self.specHeisOpCobIncInt.setEnabled(False)
6667 6875 # set Graph SpectraHeis
6668 6876 self.specHeisGgraphChannelList.setEnabled(False)
6669 6877 self.specHeisGgraphXminXmax.setEnabled(False)
6670 6878 self.specHeisGgraphYminYmax.setEnabled(False)
6671 6879 self.specHeisGgraphTminTmax.setEnabled(False)
6672 6880 self.specHeisGgraphTimeRange.setEnabled(False)
6673 6881 self.specHeisGgraphftpratio.setEnabled(False)
6674 6882 self.specHeisGraphPath.setEnabled(False)
6675 6883 self.specHeisGraphPrefix.setEnabled(False)
6676 6884 self.specHeisGraphToolPath.setEnabled(False)
6677 6885
6678 6886
6679 6887 # tool tip gui
6680 6888 QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
6681 6889 self.projectExplorerTree.setToolTip('Right clik to add Project or Unit Process')
6682 6890 # tool tip gui project
6683 6891 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>')
6684 6892 self.proComWalk.setCurrentIndex(0)
6685 6893 # tool tip gui volOp
6686 6894 self.volOpChannel.setToolTip('Example: 1,2,3,4,5')
6687 6895 self.volOpHeights.setToolTip('Example: 90,180')
6688 6896 self.volOpFilter.setToolTip('Example: 2')
6689 6897 self.volOpProfile.setToolTip('Example:0,127')
6690 6898 self.volOpCohInt.setToolTip('Example: 128')
6691 6899 self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3')
6692 6900 self.volOpOk.setToolTip('If you have finished, please Ok ')
6693 6901 # tool tip gui volGraph
6694 self.volGraphfreqrange.setToolTip('Example: -30,30')
6695 self.volGraphHeightrange.setToolTip('Example: 20,180')
6902 self.volGraphfreqrange.setToolTip('Height range. Example: 50,100')
6903 self.volGraphHeightrange.setToolTip('Amplitude. Example: 0,10000')
6696 6904 # tool tip gui specOp
6697 6905 self.specOpnFFTpoints.setToolTip('Example: 128')
6698 6906 self.specOpProfiles.setToolTip('Example: 128')
6699 6907 self.specOpippFactor.setToolTip('Example:1.0')
6700 6908 self.specOpIncoherent.setToolTip('Example: 10')
6701 6909 self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)')
6702 6910
6703 6911 self.specOpChannel.setToolTip('Example: 0,1,2,3')
6704 6912 self.specOpHeights.setToolTip('Example: 90,180')
6705 6913 self.specOppairsList.setToolTip('Example: (0,1),(2,3)')
6706 6914 # tool tip gui specGraph
6707 6915
6708 6916 self.specGgraphChannelList.setToolTip('Example: 0,3,4')
6709 6917 self.specGgraphFreq.setToolTip('Example: -20,20')
6710 6918 self.specGgraphHeight.setToolTip('Example: 100,400')
6711 6919 self.specGgraphDbsrange.setToolTip('Example: 30,170')
6712 6920
6713 6921 self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME')
6714 6922
6715 6923 sys.stdout = ShowMeConsole(textWritten=self.normalOutputWritten)
6716 6924 # sys.stderr = ShowMeConsole(textWritten=self.errorOutputWritten)
6717 6925
6718 6926
6719 6927 class UnitProcessWindow(QMainWindow, Ui_UnitProcess):
6720 6928 """
6721 6929 Class documentation goes here.
6722 6930 """
6723 6931 closed = pyqtSignal()
6724 6932 create = False
6725 6933
6726 6934 def __init__(self, parent=None):
6727 6935 """
6728 6936 Constructor
6729 6937 """
6730 6938 QMainWindow.__init__(self, parent)
6731 6939 self.setupUi(self)
6732 6940 self.getFromWindow = None
6733 6941 self.getfromWindowList = []
6734 6942 self.dataTypeProject = None
6735 6943
6736 6944 self.listUP = None
6737 6945
6738 6946 @pyqtSignature("")
6739 6947 def on_unitPokbut_clicked(self):
6740 6948 """
6741 6949 Slot documentation goes here.
6742 6950 """
6743 6951 self.create = True
6744 6952 self.getFromWindow = self.getfromWindowList[int(self.comboInputBox.currentIndex())]
6745 6953 # self.nameofUP= str(self.nameUptxt.text())
6746 6954 self.typeofUP = str(self.comboTypeBox.currentText())
6747 6955 self.close()
6748 6956
6749 6957
6750 6958 @pyqtSignature("")
6751 6959 def on_unitPcancelbut_clicked(self):
6752 6960 """
6753 6961 Slot documentation goes here.
6754 6962 """
6755 6963 self.create = False
6756 6964 self.close()
6757 6965
6758 6966 def loadTotalList(self):
6759 6967 self.comboInputBox.clear()
6760 6968 for i in self.getfromWindowList:
6761 6969
6762 6970 name = i.getElementName()
6763 6971 if name == 'Project':
6764 6972 id = i.id
6765 6973 name = i.name
6766 6974 if self.dataTypeProject == 'Voltage':
6767 6975 self.comboTypeBox.clear()
6768 6976 self.comboTypeBox.addItem("Voltage")
6769 6977
6770 6978 if self.dataTypeProject == 'Spectra':
6771 6979 self.comboTypeBox.clear()
6772 6980 self.comboTypeBox.addItem("Spectra")
6773 6981 self.comboTypeBox.addItem("Correlation")
6774 6982 if self.dataTypeProject == 'Fits':
6775 6983 self.comboTypeBox.clear()
6776 6984 self.comboTypeBox.addItem("SpectraHeis")
6777 6985
6778 6986
6779 6987 if name == 'ProcUnit':
6780 6988 id = int(i.id) - 1
6781 6989 name = i.datatype
6782 6990 if name == 'Voltage':
6783 6991 self.comboTypeBox.clear()
6784 6992 self.comboTypeBox.addItem("Spectra")
6785 6993 self.comboTypeBox.addItem("SpectraHeis")
6786 6994 self.comboTypeBox.addItem("Correlation")
6787 6995 if name == 'Spectra':
6788 6996 self.comboTypeBox.clear()
6789 6997 self.comboTypeBox.addItem("Spectra")
6790 6998 self.comboTypeBox.addItem("SpectraHeis")
6791 6999 self.comboTypeBox.addItem("Correlation")
6792 7000 if name == 'SpectraHeis':
6793 7001 self.comboTypeBox.clear()
6794 7002 self.comboTypeBox.addItem("SpectraHeis")
6795 7003
6796 7004 self.comboInputBox.addItem(str(name))
6797 7005 # self.comboInputBox.addItem(str(name)+str(id))
6798 7006
6799 7007 def closeEvent(self, event):
6800 7008 self.closed.emit()
6801 7009 event.accept()
6802 7010
6803 7011 class Ftp(QMainWindow, Ui_Ftp):
6804 7012 """
6805 7013 Class documentation goes here.
6806 7014 """
6807 7015 create = False
6808 7016 closed = pyqtSignal()
6809 7017 server = None
6810 7018 folder = None
6811 7019 username = None
6812 7020 password = None
6813 7021 ftp_wei = None
6814 7022 exp_code = None
6815 7023 sub_exp_code = None
6816 7024 plot_pos = None
6817 7025
6818 7026 def __init__(self, parent=None):
6819 7027 """
6820 7028 Constructor
6821 7029 """
6822 7030 QMainWindow.__init__(self, parent)
6823 7031 self.setupUi(self)
6824 7032 self.setParameter()
6825 7033
6826 7034 def setParameter(self):
6827 7035 self.setWindowTitle("ROJ-Signal Chain")
6828 7036 self.serverFTP.setToolTip('Example: jro-app.igp.gob.pe')
6829 7037 self.folderFTP.setToolTip('Example: /home/wmaster/graficos')
6830 7038 self.usernameFTP.setToolTip('Example: myusername')
6831 7039 self.passwordFTP.setToolTip('Example: mypass ')
6832 7040 self.weightFTP.setToolTip('Example: 0')
6833 7041 self.expcodeFTP.setToolTip('Example: 0')
6834 7042 self.subexpFTP.setToolTip('Example: 0')
6835 7043 self.plotposFTP.setToolTip('Example: 0')
6836 7044
6837 7045 def setParmsfromTemporal(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos):
6838 7046 self.serverFTP.setText(str(server))
6839 7047 self.folderFTP.setText(str(folder))
6840 7048 self.usernameFTP.setText(str(username))
6841 7049 self.passwordFTP.setText(str(password))
6842 7050 self.weightFTP.setText(str(ftp_wei))
6843 7051 self.expcodeFTP.setText(str(exp_code))
6844 7052 self.subexpFTP.setText(str(sub_exp_code))
6845 7053 self.plotposFTP.setText(str(plot_pos))
6846 7054
6847 7055 def getParmsFromFtpWindow(self):
6848 7056 """
6849 7057 Return Inputs Project:
6850 7058 - server
6851 7059 - folder
6852 7060 - username
6853 7061 - password
6854 7062 - ftp_wei
6855 7063 - exp_code
6856 7064 - sub_exp_code
6857 7065 - plot_pos
6858 7066 """
6859 7067 name_server_ftp = str(self.serverFTP.text())
6860 7068 try:
6861 7069 name = str(self.serverFTP.text())
6862 7070 except:
6863 7071 self.console.clear()
6864 7072 self.console.append("Please Write a FTP Server")
6865 7073 return 0
6866 7074
6867 7075 folder_server_ftp = str(self.folderFTP.text())
6868 7076 try:
6869 7077 folder = str(self.folderFTP.text())
6870 7078 except:
6871 7079 self.console.clear()
6872 7080 self.console.append("Please Write a Folder")
6873 7081 return 0
6874 7082
6875 7083 username_ftp = str(self.usernameFTP.text())
6876 7084 try:
6877 7085 username = str(self.usernameFTP.text())
6878 7086 except:
6879 7087 self.console.clear()
6880 7088 self.console.append("Please Write a User Name")
6881 7089 return 0
6882 7090
6883 7091 password_ftp = str(self.passwordFTP.text())
6884 7092 try:
6885 7093 password = str(self.passwordFTP.text())
6886 7094 except:
6887 7095 self.console.clear()
6888 7096 self.console.append("Please Write a passwordFTP")
6889 7097 return 0
6890 7098
6891 7099 ftp_wei = self.weightFTP.text()
6892 7100 if not ftp_wei == "":
6893 7101 try:
6894 7102 ftp_wei = int(self.weightFTP.text())
6895 7103 except:
6896 7104 self.console.clear()
6897 7105 self.console.append("Please Write a ftp_wei number")
6898 7106 return 0
6899 7107
6900 7108 exp_code = self.expcodeFTP.text()
6901 7109 if not exp_code == "":
6902 7110 try:
6903 7111 exp_code = int(self.expcodeFTP.text())
6904 7112 except:
6905 7113 self.console.clear()
6906 7114 self.console.append("Please Write a exp_code number")
6907 7115 return 0
6908 7116
6909 7117
6910 7118 sub_exp_code = self.subexpFTP.text()
6911 7119 if not sub_exp_code == "":
6912 7120 try:
6913 7121 sub_exp_code = int(self.subexpFTP.text())
6914 7122 except:
6915 7123 self.console.clear()
6916 7124 self.console.append("Please Write a sub_exp_code number")
6917 7125 return 0
6918 7126
6919 7127 plot_pos = self.plotposFTP.text()
6920 7128 if not plot_pos == "":
6921 7129 try:
6922 7130 plot_pos = int(self.plotposFTP.text())
6923 7131 except:
6924 7132 self.console.clear()
6925 7133 self.console.append("Please Write a plot_pos number")
6926 7134 return 0
6927 7135
6928 7136 return name_server_ftp, folder_server_ftp, username_ftp, password_ftp, ftp_wei, exp_code, sub_exp_code, plot_pos
6929 7137
6930 7138 @pyqtSignature("")
6931 7139 def on_ftpOkButton_clicked(self):
6932 7140 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow()
6933 7141 self.create = True
6934 7142 self.close()
6935 7143
6936 7144 @pyqtSignature("")
6937 7145 def on_ftpCancelButton_clicked(self):
6938 7146 self.create = False
6939 7147 self.close()
6940 7148
6941 7149 def closeEvent(self, event):
6942 7150 self.closed.emit()
6943 7151 event.accept()
6944 7152
6945 7153 class ftpBuffer():
6946 7154 server = None
6947 7155 folder = None
6948 7156 username = None
6949 7157 password = None
6950 7158 ftp_wei = None
6951 7159 exp_code = None
6952 7160 sub_exp_code = None
6953 7161 plot_pos = None
6954 7162 create = False
6955 7163 withoutconfig = False
6956 7164 createforView = False
6957 7165 localfolder = None
6958 7166 extension = None
6959 7167 period = None
6960 7168 protocol = None
6961 7169
6962 7170 def __init__(self):
6963 7171
6964 7172 self.create = False
6965 7173 self.server = None
6966 7174 self.folder = None
6967 7175 self.username = None
6968 7176 self.password = None
6969 7177 self.ftp_wei = None
6970 7178 self.exp_code = None
6971 7179 self.sub_exp_code = None
6972 7180 self.plot_pos = None
6973 7181 # self.create = False
6974 7182 self.localfolder = None
6975 7183 self.extension = None
6976 7184 self.period = None
6977 7185 self.protocol = None
6978 7186
6979 7187 def setwithoutconfiguration(self):
6980 7188
6981 7189 self.create = False
6982 7190 self.server = "jro-app.igp.gob.pe"
6983 7191 self.folder = "/home/wmaster/graficos"
6984 7192 self.username = "wmaster"
6985 7193 self.password = "mst2010vhf"
6986 7194 self.ftp_wei = "0"
6987 7195 self.exp_code = "0"
6988 7196 self.sub_exp_code = "0"
6989 7197 self.plot_pos = "0"
6990 7198 self.withoutconfig = True
6991 7199 self.localfolder = './'
6992 7200 self.extension = '.png'
6993 7201 self.period = '60'
6994 7202 self.protocol = 'ftp'
6995 7203 self.createforView = True
6996 7204
6997 7205 def save(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos, localfolder='./', extension='.png', period='60', protocol='ftp'):
6998 7206
6999 7207 self.server = server
7000 7208 self.folder = folder
7001 7209 self.username = username
7002 7210 self.password = password
7003 7211 self.ftp_wei = ftp_wei
7004 7212 self.exp_code = exp_code
7005 7213 self.sub_exp_code = sub_exp_code
7006 7214 self.plot_pos = plot_pos
7007 7215 self.create = True
7008 7216 self.withoutconfig = False
7009 7217 self.createforView = True
7010 7218 self.localfolder = localfolder
7011 7219
7012 7220
7013 7221 def recover(self):
7014 7222
7015 7223 return self.server, self.folder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos
7016 7224
7017 7225 class ShowMeConsole(QtCore.QObject):
7018 7226 textWritten = QtCore.pyqtSignal(str)
7019 7227 def write (self, text):
7020 7228 self.textWritten.emit(str(text))
7021 7229
7022 7230 class PlotManager():
7023 7231 def __init__(self, queue):
7024 7232 self.queue = queue
7025 7233 self.objPlotDict = {}
7026 7234
7027 7235 def processIncoming(self):
7028 7236 while self.queue.qsize():
7029 7237 try:
7030 7238 dataFromQueue = self.queue.get(True)
7031 7239 if dataFromQueue == None:
7032 7240 continue
7033 7241
7034 7242 dataPlot = dataFromQueue['data']
7035 7243 kwargs = dataFromQueue['kwargs']
7036 7244 id = kwargs['id']
7037 7245 if 'channelList' in kwargs.keys():
7038 7246 channelList = kwargs['channelList']
7039 7247 else:
7040 7248 channelList = None
7041 7249 plotname = kwargs.pop('type')
7042 7250
7043 7251 if not(id in self.objPlotDict.keys()):
7044 7252 className = eval(plotname)
7045 7253 self.objPlotDict[id] = className(id, channelList, dataPlot)
7046 7254 self.objPlotDict[id].show()
7047 7255
7048 7256 self.objPlotDict[id].run(dataPlot , **kwargs)
7049 7257
7050 7258 except Queue.Empty:
7051 7259 pass
7052 7260
7053 7261
@@ -1,87 +1,93
1 1 """
2 2 Classes to save parameters from Windows.
3 3
4 4 -Project window
5 5 -Voltage window
6 6 -Spectra window
7 7 -SpectraHeis window
8 8 -Correlation window
9 9
10 10 """
11 11
12 12 class ProjectParms():
13 13
14 14 parmsOk = False
15 project_name = None
15 name = None
16 description = None
16 17 datatype = None
17 18 ext = None
18 19 dpath = None
19 20 startDate = None
20 21 endDate = None
21 22 startTime = None
22 23 endTime = None
23 24 online = None
24 25 delay = None
25 26 walk = None
26 27 expLabel = None
27 28 set = None
28 29 ippKm = None
29 30
30 31 def __init__(self):
31 32
32 33 self.parmsOk = True
34 self.description = ''
33 35 self.expLabel = ''
34 self.set = None
35 self.ippKm = None
36 self.set = ''
37 self.ippKm = ''
36 38 self.walk = None
37 self.delay = None
39 self.delay = ''
38 40
39 41 def getDatatypeIndex(self):
40 42
41 43 indexDatatype = None
42 44
43 if self.datatype.lower() == 'voltage':
45 if 'voltage' in self.datatype.lower():
44 46 indexDatatype = 0
45 if self.datatype.lower() == 'spectra':
47 if 'spectra' in self.datatype.lower():
46 48 indexDatatype = 1
47 if self.datatype.lower() == 'fits':
49 if 'fits' in self.datatype.lower():
48 50 indexDatatype = 2
49 if self.datatype.lower() == 'usrp':
51 if 'usrp' in self.datatype.lower():
50 52 indexDatatype = 3
51 53
52 54 return indexDatatype
53 55
54 56 def getExt(self):
55 57
56 58 ext = None
57 59
58 60 if self.datatype.lower() == 'voltage':
59 61 ext = '.r'
60 62 if self.datatype.lower() == 'spectra':
61 63 ext = '.pdata'
62 64 if self.datatype.lower() == 'fits':
63 65 ext = '.fits'
64 66 if self.datatype.lower() == 'usrp':
65 67 ext = '.hdf5'
66 68
67 69 return ext
68 70
69 71 def set(self, project_name, datatype, ext, dpath, online,
70 72 startDate=None, endDate=None, startTime=None, endTime=None,
71 73 delay=None, walk=None, set=None, ippKm=None, parmsOk=True):
72 74
73 project_name = project_name
75 name = project_name
74 76 datatype = datatype
75 77 ext = ext
76 78 dpath = dpath
77 79 startDate = startDate
78 80 endDate = endDate
79 81 startTime = startTime
80 82 endTime = endTime
81 83 online = online
82 84 delay = delay
83 85 walk = walk
84 86 set = set
85 87 ippKm = ippKm
86 88
87 89 self.parmsOk = parmsOk
90
91 def isValid(self):
92
93 return self.parmsOk No newline at end of file
@@ -1,311 +1,311
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Form implementation generated from reading ui file '/home/alex/ui/MainWindow_21_02_13_v49.ui'
4 4 #
5 5 # Created: Mon Mar 24 13:28:36 2014
6 6 # by: PyQt4 UI code generator 4.10
7 7 #
8 8 # WARNING! All changes made in this file will be lost!
9 9
10 10 from PyQt4 import QtCore, QtGui
11 11 from windows import *
12 12
13 13 try:
14 14 _fromUtf8 = QtCore.QString.fromUtf8
15 15 except AttributeError:
16 16 def _fromUtf8(s):
17 17 return s
18 18
19 19 try:
20 20 _encoding = QtGui.QApplication.UnicodeUTF8
21 21 def _translate(context, text, disambig):
22 22 return QtGui.QApplication.translate(context, text, disambig, _encoding)
23 23 except AttributeError:
24 24 def _translate(context, text, disambig):
25 25 return QtGui.QApplication.translate(context, text, disambig)
26 26
27 27 import os
28 28 from schainpy.gui.figures import tools
29 29
30 30 FIGURES_PATH = tools.get_path()
31 31
32 32 class Ui_EnvWindow(object):
33 33 paused = False
34 34
35 35 def restorePauseIcon(self):
36 36
37 37 iconPause = QtGui.QIcon()
38 38 iconPause.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"pause.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
39 39 self.actionPauseToolbar.setIcon(iconPause)
40 40
41 41 self.paused = False
42 42
43 43 def changePauseIcon(self):
44 44
45 45 if self.paused == False:
46 46 iconPauseRed = QtGui.QIcon()
47 47 iconPauseRed.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"pausered.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
48 48 self.actionPauseToolbar.setIcon(iconPauseRed)
49 49 self.paused = True
50 50 return 0
51 51
52 52 if self.paused:
53 53 iconPause = QtGui.QIcon()
54 54 iconPause.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"pause.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
55 55 self.actionPauseToolbar.setIcon(iconPause)
56 56 self.paused = False
57 57 return 0
58 58
59 59 def setupUi(self, MainWindow):
60 60
61 61 MainWindow.setObjectName(_fromUtf8("MainWindow"))
62 MainWindow.resize(1203, 711)
62 MainWindow.resize(1200, 800)
63 63
64 64 self.centralWidget = QtGui.QWidget(MainWindow)
65 65 self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
66 66 self.gridLayout_16 = QtGui.QGridLayout(self.centralWidget)
67 67 self.gridLayout_16.setObjectName(_fromUtf8("gridLayout_16"))
68 68 self.splitter_2 = QtGui.QSplitter(self.centralWidget)
69 69 self.splitter_2.setOrientation(QtCore.Qt.Horizontal)
70 70 self.splitter_2.setObjectName(_fromUtf8("splitter_2"))
71 71 self.projectExplorerTree = QtGui.QTreeView(self.splitter_2)
72 72 self.projectExplorerTree.setObjectName(_fromUtf8("projectExplorerTree"))
73 73 self.splitter = QtGui.QSplitter(self.splitter_2)
74 74 self.splitter.setOrientation(QtCore.Qt.Vertical)
75 75 self.splitter.setObjectName(_fromUtf8("splitter"))
76 76 self.tabWidgetProject = QtGui.QTabWidget(self.splitter)
77 77 self.tabWidgetProject.setMinimumSize(QtCore.QSize(0, 278))
78 78 self.tabWidgetProject.setMaximumSize(QtCore.QSize(16777215, 16777215))
79 79 self.tabWidgetProject.setObjectName(_fromUtf8("tabWidgetProject"))
80 80
81 81 self.tabConsole = QtGui.QTabWidget(self.splitter)
82 82 self.tabConsole.setMinimumSize(QtCore.QSize(0, 0))
83 83 self.tabConsole.setObjectName(_fromUtf8("tabConsole"))
84 84 self.tab_5 = QtGui.QWidget()
85 85 self.tab_5.setObjectName(_fromUtf8("tab_5"))
86 86 self.gridLayout_4 = QtGui.QGridLayout(self.tab_5)
87 87 self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
88 88 self.console = QtGui.QTextEdit(self.tab_5)
89 89 self.console.setObjectName(_fromUtf8("console"))
90 90 self.gridLayout_4.addWidget(self.console, 0, 0, 1, 1)
91 91 self.tabConsole.addTab(self.tab_5, _fromUtf8(""))
92 92 self.tabWidget = QtGui.QTabWidget(self.splitter_2)
93 93 self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
94 94 self.tabProjectProperty = QtGui.QWidget()
95 95 self.tabProjectProperty.setObjectName(_fromUtf8("tabProjectProperty"))
96 96 self.gridLayout_8 = QtGui.QGridLayout(self.tabProjectProperty)
97 97 self.gridLayout_8.setObjectName(_fromUtf8("gridLayout_8"))
98 98 self.treeProjectProperties = QtGui.QTreeView(self.tabProjectProperty)
99 99 self.treeProjectProperties.setObjectName(_fromUtf8("treeProjectProperties"))
100 100 self.gridLayout_8.addWidget(self.treeProjectProperties, 0, 0, 1, 1)
101 101 self.tabWidget.addTab(self.tabProjectProperty, _fromUtf8(""))
102 102 self.gridLayout_16.addWidget(self.splitter_2, 1, 0, 1, 1)
103 103
104 104 MainWindow.setCentralWidget(self.centralWidget)
105 105 self.toolBar = QtGui.QToolBar(MainWindow)
106 106 self.toolBar.setObjectName(_fromUtf8("toolBar"))
107 107 MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
108 108
109 109 self.menuBar = QtGui.QMenuBar(MainWindow)
110 110 self.menuBar.setGeometry(QtCore.QRect(0, 0, 1065, 25))
111 111 self.menuBar.setObjectName(_fromUtf8("menuBar"))
112 112 self.menuProject = QtGui.QMenu(self.menuBar)
113 113 self.menuProject.setObjectName(_fromUtf8("menuProject"))
114 114 self.menuRun = QtGui.QMenu(self.menuBar)
115 115 self.menuRun.setObjectName(_fromUtf8("menuRun"))
116 116 self.menuOptions = QtGui.QMenu(self.menuBar)
117 117 self.menuOptions.setObjectName(_fromUtf8("menuOptions"))
118 118 self.menuHelp = QtGui.QMenu(self.menuBar)
119 119 self.menuHelp.setObjectName(_fromUtf8("menuHelp"))
120 120 MainWindow.setMenuBar(self.menuBar)
121 121
122 122 iconOpen = QtGui.QIcon()
123 123 iconOpen.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"open.gif") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
124 124 iconCreate = QtGui.QIcon()
125 125 iconCreate.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"project.gif") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
126 126 iconSave = QtGui.QIcon()
127 127 iconSave.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"saveicon.jpeg") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
128 128 iconStart = QtGui.QIcon()
129 129 iconStart.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"startServer.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
130 130 iconStop = QtGui.QIcon()
131 131 iconStop.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"stopServer.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
132 132 iconPause = QtGui.QIcon()
133 133 iconPause.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"pause.png") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
134 134 iconAddPU = QtGui.QIcon()
135 135 iconAddPU.addPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"add_PU.gif") )), QtGui.QIcon.Normal, QtGui.QIcon.Off)
136 136
137 137 self.actionOpen = QtGui.QAction(MainWindow)
138 138 self.actionOpen.setIcon(iconOpen)
139 139 self.actionOpen.setObjectName(_fromUtf8("actionOpen"))
140 140 self.actionCreate = QtGui.QAction(MainWindow)
141 141 self.actionCreate.setIcon(iconCreate)
142 142 self.actionCreate.setObjectName(_fromUtf8("actionCreate"))
143 143 self.actionSave = QtGui.QAction(MainWindow)
144 144 self.actionSave.setIcon(iconSave)
145 145 self.actionSave.setObjectName(_fromUtf8("actionSave"))
146 146 self.actionClose = QtGui.QAction(MainWindow)
147 147 self.actionClose.setObjectName(_fromUtf8("actionClose"))
148 148 self.actionStart = QtGui.QAction(MainWindow)
149 149 self.actionStart.setIcon(iconStart)
150 150 self.actionStart.setObjectName(_fromUtf8("actionStart"))
151 151 self.actionPause = QtGui.QAction(MainWindow)
152 152 self.actionPause.setIcon(iconPause)
153 153 self.actionPause.setObjectName(_fromUtf8("actionPause"))
154 154 self.actionStop = QtGui.QAction(MainWindow)
155 155 self.actionStop.setIcon(iconStop)
156 156 self.actionStop.setObjectName(_fromUtf8("actionStop"))
157 157 self.actionAbout = QtGui.QAction(MainWindow)
158 158 self.actionAbout.setObjectName(_fromUtf8("actionAbout"))
159 159 self.actionOpenToolbar = QtGui.QAction(MainWindow)
160 160 self.actionOpenToolbar.setIcon(iconOpen)
161 161 self.actionOpenToolbar.setObjectName(_fromUtf8("actionOpenToolbar"))
162 162 self.actionCreateToolbar = QtGui.QAction(MainWindow)
163 163 self.actionCreateToolbar.setIcon(iconCreate)
164 164 self.actionCreateToolbar.setObjectName(_fromUtf8("actionCreateToolbar"))
165 165 self.actionSaveToolbar = QtGui.QAction(MainWindow)
166 166 self.actionSaveToolbar.setIcon(iconSave)
167 167 self.actionSaveToolbar.setObjectName(_fromUtf8("actionSaveToolbar"))
168 168 self.actionStarToolbar = QtGui.QAction(MainWindow)
169 169 self.actionStarToolbar.setIcon(iconStart)
170 170 self.actionStarToolbar.setObjectName(_fromUtf8("actionStarToolbar"))
171 171 self.actionStopToolbar = QtGui.QAction(MainWindow)
172 172 self.actionStopToolbar.setIcon(iconStop)
173 173 self.actionStopToolbar.setObjectName(_fromUtf8("actionStopToolbar"))
174 174 self.actionPauseToolbar = QtGui.QAction(MainWindow)
175 175 self.actionPause.setIcon(iconPause)
176 176 self.actionPauseToolbar.setIcon(iconPause)
177 177 self.actionPauseToolbar.setObjectName(_fromUtf8("actionPauseToolbar"))
178 178 self.actionAddPU = QtGui.QAction(MainWindow)
179 179 self.actionAddPU.setIcon(iconAddPU)
180 180 self.actionAddPU.setObjectName(_fromUtf8("actionAddPU"))
181 181 self.actionFTP = QtGui.QAction(MainWindow)
182 182 self.actionFTP.setObjectName(_fromUtf8("actionFTP"))
183 183 self.toolBar.addAction(self.actionOpenToolbar)
184 184 self.toolBar.addSeparator()
185 185 self.toolBar.addAction(self.actionCreateToolbar)
186 186 self.toolBar.addSeparator()
187 187 self.toolBar.addAction(self.actionAddPU)
188 188 self.toolBar.addSeparator()
189 189 self.toolBar.addAction(self.actionSaveToolbar)
190 190 self.toolBar.addSeparator()
191 191 self.toolBar.addAction(self.actionStarToolbar)
192 192 self.toolBar.addSeparator()
193 193 self.toolBar.addAction(self.actionPauseToolbar)
194 194 self.toolBar.addSeparator()
195 195 self.toolBar.addAction(self.actionStopToolbar)
196 196 self.toolBar.addSeparator()
197 197
198 198 self.paused=False
199 199 self.actionPause.triggered.connect(self.changePauseIcon)
200 200 self.actionPauseToolbar.triggered.connect(self.changePauseIcon)
201 201
202 202 self.menuProject.addAction(self.actionOpen)
203 203 self.menuProject.addAction(self.actionCreate)
204 204 self.menuProject.addAction(self.actionSave)
205 205 self.menuProject.addAction(self.actionClose)
206 206 self.menuRun.addAction(self.actionStart)
207 207 self.menuRun.addAction(self.actionPause)
208 208 self.menuRun.addAction(self.actionStop)
209 209 self.menuOptions.addAction(self.actionFTP)
210 210 self.menuHelp.addAction(self.actionAbout)
211 211 self.menuBar.addAction(self.menuProject.menuAction())
212 212 self.menuBar.addAction(self.menuRun.menuAction())
213 213 self.menuBar.addAction(self.menuOptions.menuAction())
214 214 self.menuBar.addAction(self.menuHelp.menuAction())
215 215
216 216 self.tabConsole.setCurrentIndex(0)
217 217 self.tabWidget.setCurrentIndex(0)
218 218
219 219 def retranslateUi(self, MainWindow):
220 220
221 221 MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
222 222
223 223 self.tabConsole.setTabText(self.tabConsole.indexOf(self.tab_5), _translate("MainWindow", "Console", None))
224 224
225 225 self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabProjectProperty), _translate("MainWindow", "Project Property", None))
226 226 self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar", None))
227 227 self.menuProject.setTitle(_translate("MainWindow", "Project", None))
228 228 self.menuRun.setTitle(_translate("MainWindow", "Run", None))
229 229 self.menuOptions.setTitle(_translate("MainWindow", "Options", None))
230 230 self.menuHelp.setTitle(_translate("MainWindow", "Help", None))
231 231 self.actionOpen.setText(_translate("MainWindow", "Open", None))
232 232 self.actionCreate.setText(_translate("MainWindow", "Create", None))
233 233 self.actionSave.setText(_translate("MainWindow", "Save", None))
234 234 self.actionClose.setText(_translate("MainWindow", "Close", None))
235 235 self.actionStart.setText(_translate("MainWindow", "Start", None))
236 236 self.actionPause.setText(_translate("MainWindow", "Pause", None))
237 237 self.actionStop.setText(_translate("MainWindow", "Stop", None))
238 238 self.actionAbout.setText(_translate("MainWindow", "About", None))
239 239 self.actionOpenToolbar.setText(_translate("MainWindow", "openToolbar", None))
240 240 self.actionOpenToolbar.setToolTip(_translate("MainWindow", "Open a project", None))
241 241 self.actionCreateToolbar.setText(_translate("MainWindow", "createToolbar", None))
242 242 self.actionCreateToolbar.setToolTip(_translate("MainWindow", "Create a new project", None))
243 243 self.actionSaveToolbar.setText(_translate("MainWindow", "saveToolbar", None))
244 244 self.actionSaveToolbar.setToolTip(_translate("MainWindow", "Save a project", None))
245 245 self.actionStarToolbar.setText(_translate("MainWindow", "starToolbar", None))
246 246 self.actionStarToolbar.setToolTip(_translate("MainWindow", "Start process", None))
247 247 self.actionStopToolbar.setText(_translate("MainWindow", "stopToolbar", None))
248 248 self.actionStopToolbar.setToolTip(_translate("MainWindow", "Stop process", None))
249 249 self.actionPauseToolbar.setText(_translate("MainWindow", "pauseToolbar", None))
250 250 self.actionPauseToolbar.setToolTip(_translate("MainWindow", "Pause process", None))
251 251 self.actionAddPU.setText(_translate("MainWindow", "Add Processing Unit", None))
252 252 self.actionFTP.setText(_translate("MainWindow", "FTP", None))
253 253
254 254 def closeEvent(self, event):
255 255
256 256 reply = QtGui.QMessageBox.question(self, 'Message',
257 257 "Are you sure to quit?", QtGui.QMessageBox.Yes |
258 258 QtGui.QMessageBox.No, QtGui.QMessageBox.No)
259 259 if reply == QtGui.QMessageBox.Yes:
260 260 event.accept()
261 261 else:
262 262 event.ignore()
263 263
264 264 class Ui_BasicWindow(Ui_EnvWindow, Ui_ProjectTab, Ui_VoltageTab, Ui_SpectraTab, Ui_SpectraHeisTab, Ui_CorrelationTab):
265 265
266 266 def setupUi(self, MainWindow):
267 267
268 268 Ui_EnvWindow.setupUi(self, MainWindow)
269 269
270 270 Ui_ProjectTab.setupUi(self)
271 271 Ui_VoltageTab.setupUi(self)
272 272 Ui_SpectraTab.setupUi(self)
273 273 Ui_SpectraHeisTab.setupUi(self)
274 274 Ui_CorrelationTab.setupUi(self)
275 275
276 276 self.retranslateUi(MainWindow)
277 277
278 278 QtCore.QMetaObject.connectSlotsByName(MainWindow)
279 279
280 280 def retranslateUi(self, MainWindow):
281 281
282 282 Ui_EnvWindow.retranslateUi(self, MainWindow)
283 283
284 284 Ui_ProjectTab.retranslateUi(self)
285 285 Ui_VoltageTab.retranslateUi(self)
286 286 Ui_SpectraTab.retranslateUi(self)
287 287 Ui_SpectraHeisTab.retranslateUi(self)
288 288 Ui_CorrelationTab.retranslateUi(self)
289 289
290 290
291 291 class Ui_AdvancedWindow(Ui_EnvWindow):
292 292
293 293 def setupUi(self, AdvancedWindow):
294 294
295 295 Ui_MainWindow.setupUi(self, AdvancedWindow)
296 296
297 297 def retranslateUi(self, AdvancedWindow):
298 298
299 299 Ui_MainWindow.retranslateUi(self, AdvancedWindow)
300 300
301 301
302 302
303 303 if __name__ == "__main__":
304 304 import sys
305 305 app = QtGui.QApplication(sys.argv)
306 306 MainWindow = QtGui.QMainWindow()
307 307 ui = Ui_BasicWindow()
308 308 ui.setupUi(MainWindow)
309 309 MainWindow.show()
310 310 sys.exit(app.exec_())
311 311
@@ -1,173 +1,182
1 1
2 2 from PyQt4 import QtCore, QtGui
3 3
4 4 try:
5 5 _fromUtf8 = QtCore.QString.fromUtf8
6 6 except AttributeError:
7 7 def _fromUtf8(s):
8 8 return s
9 9
10 10 try:
11 11 _encoding = QtGui.QApplication.UnicodeUTF8
12 12 def _translate(context, text, disambig):
13 13 return QtGui.QApplication.translate(context, text, disambig, _encoding)
14 14 except AttributeError:
15 15 def _translate(context, text, disambig):
16 16 return QtGui.QApplication.translate(context, text, disambig)
17 17
18 18 class Ui_ProjectTab(object):
19 19
20 20 def setupUi(self):
21 21
22 22 self.tabProject = QtGui.QWidget()
23 23 self.tabProject.setObjectName(_fromUtf8("tabProject"))
24 24 self.gridLayout_15 = QtGui.QGridLayout(self.tabProject)
25 25 self.gridLayout_15.setObjectName(_fromUtf8("gridLayout_15"))
26 26 self.frame = QtGui.QFrame(self.tabProject)
27 27 self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
28 28 self.frame.setFrameShadow(QtGui.QFrame.Raised)
29 29 self.frame.setObjectName(_fromUtf8("frame"))
30 30 self.gridLayout_2 = QtGui.QGridLayout(self.frame)
31 31 self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
32 32 self.label = QtGui.QLabel(self.frame)
33 33 self.label.setObjectName(_fromUtf8("label"))
34 34 self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1)
35 35 self.proName = QtGui.QLineEdit(self.frame)
36 36 self.proName.setObjectName(_fromUtf8("proName"))
37 37 self.gridLayout_2.addWidget(self.proName, 0, 1, 1, 8)
38 38 self.label_11 = QtGui.QLabel(self.frame)
39 39 self.label_11.setObjectName(_fromUtf8("label_11"))
40 40 self.gridLayout_2.addWidget(self.label_11, 1, 0, 1, 1)
41 41 self.proComDataType = QtGui.QComboBox(self.frame)
42 42 self.proComDataType.setObjectName(_fromUtf8("proComDataType"))
43 43 self.proComDataType.addItem(_fromUtf8(""))
44 44 self.proComDataType.addItem(_fromUtf8(""))
45 45 self.proComDataType.addItem(_fromUtf8(""))
46 46 self.proComDataType.addItem(_fromUtf8(""))
47 47 self.gridLayout_2.addWidget(self.proComDataType, 1, 1, 1, 5)
48 48 self.proDataType = QtGui.QLineEdit(self.frame)
49 49 self.proDataType.setObjectName(_fromUtf8("proDataType"))
50 50 self.gridLayout_2.addWidget(self.proDataType, 1, 6, 1, 3)
51 51 self.label_15 = QtGui.QLabel(self.frame)
52 52 self.label_15.setObjectName(_fromUtf8("label_15"))
53 53 self.gridLayout_2.addWidget(self.label_15, 2, 0, 1, 1)
54 54 self.proToolPath = QtGui.QToolButton(self.frame)
55 55 self.proToolPath.setObjectName(_fromUtf8("proToolPath"))
56 56 self.gridLayout_2.addWidget(self.proToolPath, 2, 1, 1, 1)
57 57 self.proDataPath = QtGui.QLineEdit(self.frame)
58 58 self.proDataPath.setObjectName(_fromUtf8("proDataPath"))
59 59 self.gridLayout_2.addWidget(self.proDataPath, 2, 2, 1, 7)
60 60 self.label_23 = QtGui.QLabel(self.frame)
61 61 self.label_23.setObjectName(_fromUtf8("label_23"))
62 62 self.gridLayout_2.addWidget(self.label_23, 3, 0, 1, 1)
63 63 self.proComReadMode = QtGui.QComboBox(self.frame)
64 64 self.proComReadMode.setObjectName(_fromUtf8("proComReadMode"))
65 self.proComReadMode.addItem(_fromUtf8("------"))
65 66 self.proComReadMode.addItem(_fromUtf8(""))
66 self.proComReadMode.addItem(_fromUtf8(""))
67 self.gridLayout_2.addWidget(self.proComReadMode, 3, 1, 1, 2)
67 self.gridLayout_2.addWidget(self.proComReadMode, 3, 1, 1, 4)
68 68 self.label_33 = QtGui.QLabel(self.frame)
69 69 self.label_33.setObjectName(_fromUtf8("label_33"))
70 self.gridLayout_2.addWidget(self.label_33, 3, 5, 1, 2)
70 self.gridLayout_2.addWidget(self.label_33, 3, 5, 1, 1)
71 71 self.proDelay = QtGui.QLineEdit(self.frame)
72 72 self.proDelay.setObjectName(_fromUtf8("proDelay"))
73 self.gridLayout_2.addWidget(self.proDelay, 3, 8, 1, 1)
73 self.gridLayout_2.addWidget(self.proDelay, 3, 6, 1, 1)
74 74 self.label_32 = QtGui.QLabel(self.frame)
75 75 self.label_32.setObjectName(_fromUtf8("label_32"))
76 76 self.gridLayout_2.addWidget(self.label_32, 4, 0, 1, 1)
77 77 self.proComWalk = QtGui.QComboBox(self.frame)
78 78 self.proComWalk.setObjectName(_fromUtf8("proComWalk"))
79 79 self.proComWalk.addItem(_fromUtf8(""))
80 80 self.proComWalk.addItem(_fromUtf8(""))
81 81 self.gridLayout_2.addWidget(self.proComWalk, 4, 1, 1, 8)
82 82 self.proLoadButton = QtGui.QPushButton(self.frame)
83 83 self.proLoadButton.setObjectName(_fromUtf8("proLoadButton"))
84 84 self.gridLayout_2.addWidget(self.proLoadButton, 5, 0, 1, 9)
85 self.label_10 = QtGui.QLabel(self.frame)
86 self.label_10.setObjectName(_fromUtf8("label_10"))
87 self.gridLayout_2.addWidget(self.label_10, 3, 3, 1, 1)
85 self.labelSet = QtGui.QLabel(self.frame)
86 self.labelSet.setObjectName(_fromUtf8("labelSet"))
87 self.gridLayout_2.addWidget(self.labelSet, 3, 7, 1, 1)
88 88 self.proSet = QtGui.QLineEdit(self.frame)
89 89 self.proSet.setObjectName(_fromUtf8("proSet"))
90 self.gridLayout_2.addWidget(self.proSet, 3, 4, 1, 1)
90 self.gridLayout_2.addWidget(self.proSet, 3, 8, 1, 1)
91 self.labelIPPKm = QtGui.QLabel(self.frame)
92 self.labelIPPKm.setObjectName(_fromUtf8("labelIPPKm"))
93 self.gridLayout_2.addWidget(self.labelIPPKm, 3, 7, 1, 1)
94 self.proIPPKm = QtGui.QLineEdit(self.frame)
95 self.proIPPKm.setObjectName(_fromUtf8("proIPPKm"))
96 self.gridLayout_2.addWidget(self.proIPPKm, 3, 8, 1, 1)
97
98
91 99 self.gridLayout_15.addWidget(self.frame, 0, 0, 1, 1)
92 100 self.frame_2 = QtGui.QFrame(self.tabProject)
93 101 self.frame_2.setFrameShape(QtGui.QFrame.StyledPanel)
94 102 self.frame_2.setFrameShadow(QtGui.QFrame.Raised)
95 103 self.frame_2.setObjectName(_fromUtf8("frame_2"))
96 104 self.gridLayout_10 = QtGui.QGridLayout(self.frame_2)
97 105 self.gridLayout_10.setObjectName(_fromUtf8("gridLayout_10"))
98 106 self.label_27 = QtGui.QLabel(self.frame_2)
99 107 self.label_27.setObjectName(_fromUtf8("label_27"))
100 108 self.gridLayout_10.addWidget(self.label_27, 0, 0, 1, 1)
101 109 self.proComStartDate = QtGui.QComboBox(self.frame_2)
102 110 self.proComStartDate.setObjectName(_fromUtf8("proComStartDate"))
103 111 self.gridLayout_10.addWidget(self.proComStartDate, 0, 1, 1, 1)
104 112 self.label_28 = QtGui.QLabel(self.frame_2)
105 113 self.label_28.setObjectName(_fromUtf8("label_28"))
106 114 self.gridLayout_10.addWidget(self.label_28, 1, 0, 1, 1)
107 115 self.proComEndDate = QtGui.QComboBox(self.frame_2)
108 116 self.proComEndDate.setObjectName(_fromUtf8("proComEndDate"))
109 117 self.gridLayout_10.addWidget(self.proComEndDate, 1, 1, 1, 1)
110 118 self.label_2 = QtGui.QLabel(self.frame_2)
111 119 self.label_2.setObjectName(_fromUtf8("label_2"))
112 120 self.gridLayout_10.addWidget(self.label_2, 2, 0, 1, 1)
113 121 self.proStartTime = QtGui.QTimeEdit(self.frame_2)
114 122 self.proStartTime.setObjectName(_fromUtf8("proStartTime"))
115 123 self.gridLayout_10.addWidget(self.proStartTime, 2, 1, 1, 1)
116 124 self.label_3 = QtGui.QLabel(self.frame_2)
117 125 self.label_3.setObjectName(_fromUtf8("label_3"))
118 126 self.gridLayout_10.addWidget(self.label_3, 3, 0, 1, 1)
119 127 self.proEndTime = QtGui.QTimeEdit(self.frame_2)
120 128 self.proEndTime.setObjectName(_fromUtf8("proEndTime"))
121 129 self.gridLayout_10.addWidget(self.proEndTime, 3, 1, 1, 1)
122 130 self.label_30 = QtGui.QLabel(self.frame_2)
123 131 self.label_30.setObjectName(_fromUtf8("label_30"))
124 132 self.gridLayout_10.addWidget(self.label_30, 4, 0, 1, 1)
125 133 self.proDescription = QtGui.QTextEdit(self.frame_2)
126 134 self.proDescription.setObjectName(_fromUtf8("proDescription"))
127 135 self.gridLayout_10.addWidget(self.proDescription, 4, 1, 1, 1)
128 136 self.gridLayout_15.addWidget(self.frame_2, 1, 0, 1, 1)
129 137 self.frame_3 = QtGui.QFrame(self.tabProject)
130 138 self.frame_3.setFrameShape(QtGui.QFrame.StyledPanel)
131 139 self.frame_3.setFrameShadow(QtGui.QFrame.Raised)
132 140 self.frame_3.setObjectName(_fromUtf8("frame_3"))
133 141 self.gridLayout_14 = QtGui.QGridLayout(self.frame_3)
134 142 self.gridLayout_14.setObjectName(_fromUtf8("gridLayout_14"))
135 143 self.proOk = QtGui.QPushButton(self.frame_3)
136 144 self.proOk.setObjectName(_fromUtf8("proOk"))
137 145 self.gridLayout_14.addWidget(self.proOk, 0, 0, 1, 1)
138 146 self.proClear = QtGui.QPushButton(self.frame_3)
139 147 self.proClear.setObjectName(_fromUtf8("proClear"))
140 148 self.gridLayout_14.addWidget(self.proClear, 0, 1, 1, 1)
141 149 self.gridLayout_15.addWidget(self.frame_3, 2, 0, 1, 1)
142 150
143 151 self.tabWidgetProject.addTab(self.tabProject, _fromUtf8(""))
144 152
145 153 def retranslateUi(self):
146 154
147 155 self.label.setText(_translate("MainWindow", "Project Name :", None))
148 156 self.label_11.setText(_translate("MainWindow", "DataType :", None))
149 157 self.proComDataType.setItemText(0, _translate("MainWindow", "Voltage", None))
150 158 self.proComDataType.setItemText(1, _translate("MainWindow", "Spectra", None))
151 159 self.proComDataType.setItemText(2, _translate("MainWindow", "Fits", None))
152 160 self.proComDataType.setItemText(3, _translate("MainWindow", "USRP", None))
153 161 self.label_15.setText(_translate("MainWindow", "DataPath :", None))
154 162 self.proToolPath.setText(_translate("MainWindow", "...", None))
155 163 self.label_23.setText(_translate("MainWindow", "Read Mode:", None))
156 164 self.proComReadMode.setItemText(0, _translate("MainWindow", "Offline", None))
157 165 self.proComReadMode.setItemText(1, _translate("MainWindow", "Online", None))
158 166 self.label_33.setText(_translate("MainWindow", "Delay:", None))
159 167 self.label_32.setText(_translate("MainWindow", "Walk :", None))
160 168 self.proComWalk.setItemText(0, _translate("MainWindow", "On Files", None))
161 169 self.proComWalk.setItemText(1, _translate("MainWindow", "On Folder", None))
162 170 self.proLoadButton.setText(_translate("MainWindow", "Load", None))
163 self.label_10.setText(_translate("MainWindow", "Set:", None))
171 self.labelSet.setText(_translate("MainWindow", "Set:", None))
172 self.labelIPPKm.setText(_translate("MainWindow", "IPP (km):", None))
164 173 self.label_27.setText(_translate("MainWindow", "Star Date:", None))
165 174 self.label_28.setText(_translate("MainWindow", "End Date:", None))
166 175 self.label_2.setText(_translate("MainWindow", "Start Time:", None))
167 176 self.label_3.setText(_translate("MainWindow", "End Time:", None))
168 177 self.label_30.setText(_translate("MainWindow", "Description:", None))
169 178 self.proOk.setText(_translate("MainWindow", "Ok", None))
170 179 self.proClear.setText(_translate("MainWindow", "Clear", None))
171 180
172 181 self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabProject), _translate("MainWindow", "Project", None))
173 182 No newline at end of file
@@ -1,314 +1,324
1 1
2 2 from PyQt4 import QtCore, QtGui
3 3
4 4 try:
5 5 _fromUtf8 = QtCore.QString.fromUtf8
6 6 except AttributeError:
7 7 def _fromUtf8(s):
8 8 return s
9 9
10 10 try:
11 11 _encoding = QtGui.QApplication.UnicodeUTF8
12 12 def _translate(context, text, disambig):
13 13 return QtGui.QApplication.translate(context, text, disambig, _encoding)
14 14 except AttributeError:
15 15 def _translate(context, text, disambig):
16 16 return QtGui.QApplication.translate(context, text, disambig)
17 17
18 18 class Ui_VoltageTab(object):
19 19
20 20 def setupUi(self):
21 21
22 22 self.tabVoltage = QtGui.QWidget()
23 23 self.tabVoltage.setObjectName(_fromUtf8("tabVoltage"))
24 24
25 25 self.gridLayout_3 = QtGui.QGridLayout(self.tabVoltage)
26 26 self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
27 27
28 28 self.frame_4 = QtGui.QFrame(self.tabVoltage)
29 29 self.frame_4.setFrameShape(QtGui.QFrame.StyledPanel)
30 30 self.frame_4.setFrameShadow(QtGui.QFrame.Raised)
31 31 self.frame_4.setObjectName(_fromUtf8("frame_4"))
32 32
33 33 self.gridLayout_17 = QtGui.QGridLayout(self.frame_4)
34 34 self.gridLayout_17.setObjectName(_fromUtf8("gridLayout_17"))
35 35 self.volOpOk = QtGui.QPushButton(self.frame_4)
36 36 self.volOpOk.setObjectName(_fromUtf8("volOpOk"))
37 37 self.gridLayout_17.addWidget(self.volOpOk, 0, 0, 1, 1)
38 38 self.volGraphClear = QtGui.QPushButton(self.frame_4)
39 39 self.volGraphClear.setObjectName(_fromUtf8("volGraphClear"))
40 40 self.gridLayout_17.addWidget(self.volGraphClear, 0, 1, 1, 1)
41 41 self.gridLayout_3.addWidget(self.frame_4, 1, 1, 1, 1)
42 42
43 43
44 44 self.tabWidgetVoltage = QtGui.QTabWidget(self.tabVoltage)
45 45 self.tabWidgetVoltage.setObjectName(_fromUtf8("tabWidgetVoltage"))
46 46 self.tabopVoltage = QtGui.QWidget()
47 47 self.tabopVoltage.setObjectName(_fromUtf8("tabopVoltage"))
48 48 self.gridLayout = QtGui.QGridLayout(self.tabopVoltage)
49 49 self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
50 50 self.volOpHeights = QtGui.QLineEdit(self.tabopVoltage)
51 51 self.volOpHeights.setObjectName(_fromUtf8("volOpHeights"))
52 52 self.gridLayout.addWidget(self.volOpHeights, 4, 4, 1, 1)
53 53 self.volOpComHeights = QtGui.QComboBox(self.tabopVoltage)
54 54 self.volOpComHeights.setObjectName(_fromUtf8("volOpComHeights"))
55 55 self.volOpComHeights.addItem(_fromUtf8(""))
56 56 self.volOpComHeights.addItem(_fromUtf8(""))
57 57 self.gridLayout.addWidget(self.volOpComHeights, 4, 0, 1, 3)
58 58 self.volOpComChannels = QtGui.QComboBox(self.tabopVoltage)
59 59 self.volOpComChannels.setObjectName(_fromUtf8("volOpComChannels"))
60 60 self.volOpComChannels.addItem(_fromUtf8(""))
61 61 self.volOpComChannels.addItem(_fromUtf8(""))
62 62 self.gridLayout.addWidget(self.volOpComChannels, 2, 0, 1, 3)
63 63 self.volOpCebProfile = QtGui.QCheckBox(self.tabopVoltage)
64 64 self.volOpCebProfile.setObjectName(_fromUtf8("volOpCebProfile"))
65 65 self.gridLayout.addWidget(self.volOpCebProfile, 6, 0, 1, 3)
66 66 self.volOpComProfile = QtGui.QComboBox(self.tabopVoltage)
67 67 self.volOpComProfile.setObjectName(_fromUtf8("volOpComProfile"))
68 68 self.volOpComProfile.addItem(_fromUtf8(""))
69 69 self.volOpComProfile.addItem(_fromUtf8(""))
70 self.volOpComProfile.addItem(_fromUtf8(""))
70 71 self.gridLayout.addWidget(self.volOpComProfile, 7, 0, 1, 3)
71 72 self.volOpCebDecodification = QtGui.QCheckBox(self.tabopVoltage)
72 73 self.volOpCebDecodification.setObjectName(_fromUtf8("volOpCebDecodification"))
73 74 self.gridLayout.addWidget(self.volOpCebDecodification, 8, 0, 1, 3)
74 75 self.volOpProfile = QtGui.QLineEdit(self.tabopVoltage)
75 76 self.volOpProfile.setObjectName(_fromUtf8("volOpProfile"))
76 77 self.gridLayout.addWidget(self.volOpProfile, 7, 4, 1, 1)
77 78 self.volOpFilter = QtGui.QLineEdit(self.tabopVoltage)
78 79 self.volOpFilter.setObjectName(_fromUtf8("volOpFilter"))
79 80 self.gridLayout.addWidget(self.volOpFilter, 5, 4, 1, 1)
80 81 spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
81 82 self.gridLayout.addItem(spacerItem, 6, 4, 1, 1)
82 83 spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
83 84 self.gridLayout.addItem(spacerItem1, 8, 4, 1, 1)
84 85 spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
85 86 self.gridLayout.addItem(spacerItem2, 3, 4, 1, 1)
86 87 self.volOpChannel = QtGui.QLineEdit(self.tabopVoltage)
87 88 self.volOpChannel.setObjectName(_fromUtf8("volOpChannel"))
88 89 self.gridLayout.addWidget(self.volOpChannel, 2, 4, 1, 1)
89 self.label_4 = QtGui.QLabel(self.tabopVoltage)
90 self.label_4.setObjectName(_fromUtf8("label_4"))
91 self.gridLayout.addWidget(self.label_4, 9, 2, 1, 1)
92 90 self.volOpCebChannels = QtGui.QCheckBox(self.tabopVoltage)
93 91 self.volOpCebChannels.setObjectName(_fromUtf8("volOpCebChannels"))
94 92 self.gridLayout.addWidget(self.volOpCebChannels, 1, 0, 1, 3)
95 93 self.volOpCebHeights = QtGui.QCheckBox(self.tabopVoltage)
96 94 self.volOpCebHeights.setObjectName(_fromUtf8("volOpCebHeights"))
97 95 self.gridLayout.addWidget(self.volOpCebHeights, 3, 0, 1, 3)
98 96 self.volOpCebFilter = QtGui.QCheckBox(self.tabopVoltage)
99 97 self.volOpCebFilter.setObjectName(_fromUtf8("volOpCebFilter"))
100 98 self.gridLayout.addWidget(self.volOpCebFilter, 5, 0, 1, 3)
101 99 self.volOpRadarfrequency = QtGui.QLineEdit(self.tabopVoltage)
102 100 self.volOpRadarfrequency.setObjectName(_fromUtf8("volOpRadarfrequency"))
103 101 self.gridLayout.addWidget(self.volOpRadarfrequency, 0, 4, 1, 1)
104 102 self.volOpCebRadarfrequency = QtGui.QCheckBox(self.tabopVoltage)
105 103 self.volOpCebRadarfrequency.setObjectName(_fromUtf8("volOpCebRadarfrequency"))
106 104 self.gridLayout.addWidget(self.volOpCebRadarfrequency, 0, 0, 1, 3)
107 self.label_5 = QtGui.QLabel(self.tabopVoltage)
108 self.label_5.setObjectName(_fromUtf8("label_5"))
109 self.gridLayout.addWidget(self.label_5, 10, 2, 1, 1)
110 105 spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
111 106 self.gridLayout.addItem(spacerItem3, 1, 4, 1, 1)
112 107 self.volOpCebFlip = QtGui.QCheckBox(self.tabopVoltage)
113 108 self.volOpCebFlip.setObjectName(_fromUtf8("volOpCebFlip"))
114 109 self.gridLayout.addWidget(self.volOpCebFlip, 11, 0, 1, 3)
115 110 self.volOpFlip = QtGui.QLineEdit(self.tabopVoltage)
116 111 self.volOpFlip.setObjectName(_fromUtf8("volOpFlip"))
117 112 self.gridLayout.addWidget(self.volOpFlip, 11, 4, 1, 1)
118 113
119 114 self.volOpCebCohInt = QtGui.QCheckBox(self.tabopVoltage)
120 115 self.volOpCebCohInt.setObjectName(_fromUtf8("volOpCebCohInt"))
121 116 self.gridLayout.addWidget(self.volOpCebCohInt, 12, 0, 1, 3)
122 117 self.volOpCohInt = QtGui.QLineEdit(self.tabopVoltage)
123 118 self.volOpCohInt.setObjectName(_fromUtf8("volOpCohInt"))
124 119 self.gridLayout.addWidget(self.volOpCohInt, 12, 4, 1, 1)
125 120
121 self.volLabCodeMode = QtGui.QLabel(self.tabopVoltage)
122 self.volLabCodeMode.setObjectName(_fromUtf8("volLabCodeMode"))
123 self.gridLayout.addWidget(self.volLabCodeMode, 8, 2, 1, 1)
124 self.volLabCodeType = QtGui.QLabel(self.tabopVoltage)
125 self.volLabCodeType.setObjectName(_fromUtf8("volLabCodeType"))
126 self.gridLayout.addWidget(self.volLabCodeType, 9, 2, 1, 1)
127 self.volLabCode = QtGui.QLabel(self.tabopVoltage)
128 self.volLabCode.setObjectName(_fromUtf8("volLabCode"))
129 self.gridLayout.addWidget(self.volLabCode, 10, 2, 1, 1)
130 self.volOpComMode = QtGui.QComboBox(self.tabopVoltage)
131 self.volOpComMode.setObjectName(_fromUtf8("volOpComMode"))
132 self.volOpComMode.addItem(_fromUtf8(""))
133 self.volOpComMode.addItem(_fromUtf8(""))
134 self.gridLayout.addWidget(self.volOpComMode, 8, 4, 1, 1)
126 135 self.volOpComCode = QtGui.QComboBox(self.tabopVoltage)
127 136 self.volOpComCode.setObjectName(_fromUtf8("volOpComCode"))
128 137 self.volOpComCode.addItem(_fromUtf8(""))
129 138 self.volOpComCode.addItem(_fromUtf8(""))
130 139 self.volOpComCode.addItem(_fromUtf8(""))
131 140 self.volOpComCode.addItem(_fromUtf8(""))
132 141 self.volOpComCode.addItem(_fromUtf8(""))
133 142 self.volOpComCode.addItem(_fromUtf8(""))
134 143 self.volOpComCode.addItem(_fromUtf8(""))
135 144 self.volOpComCode.addItem(_fromUtf8(""))
136 145 self.volOpComCode.addItem(_fromUtf8(""))
137 146 self.volOpComCode.addItem(_fromUtf8(""))
138 147 self.volOpComCode.addItem(_fromUtf8(""))
139 148 self.volOpComCode.addItem(_fromUtf8(""))
140 149 self.volOpComCode.addItem(_fromUtf8(""))
150 self.volOpComCode.addItem(_fromUtf8(""))
141 151 self.gridLayout.addWidget(self.volOpComCode, 9, 4, 1, 1)
142 self.volOpComMode = QtGui.QComboBox(self.tabopVoltage)
143 self.volOpComMode.setObjectName(_fromUtf8("volOpComMode"))
144 self.volOpComMode.addItem(_fromUtf8(""))
145 self.volOpComMode.addItem(_fromUtf8(""))
146 self.gridLayout.addWidget(self.volOpComMode, 10, 4, 1, 1)
147 152 self.tabWidgetVoltage.addTab(self.tabopVoltage, _fromUtf8(""))
148
153 self.volOpCode = QtGui.QLineEdit(self.tabopVoltage)
154 self.volOpCode.setObjectName(_fromUtf8("volOpCode"))
155 self.gridLayout.addWidget(self.volOpCode, 10, 4, 1, 1)
149 156
150 157 self.tabgraphVoltage = QtGui.QWidget()
151 158 self.tabgraphVoltage.setObjectName(_fromUtf8("tabgraphVoltage"))
152 159 self.gridLayout_6 = QtGui.QGridLayout(self.tabgraphVoltage)
153 160 self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
154 161 spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
155 162 self.gridLayout_6.addItem(spacerItem4, 12, 3, 1, 1)
156 163 self.volGraphfreqrange = QtGui.QLineEdit(self.tabgraphVoltage)
157 164 self.volGraphfreqrange.setObjectName(_fromUtf8("volGraphfreqrange"))
158 165 self.gridLayout_6.addWidget(self.volGraphfreqrange, 9, 1, 1, 6)
159 166 self.volGraphPrefix = QtGui.QLineEdit(self.tabgraphVoltage)
160 167 self.volGraphPrefix.setObjectName(_fromUtf8("volGraphPrefix"))
161 168 self.gridLayout_6.addWidget(self.volGraphPrefix, 2, 1, 1, 6)
162 169 self.volGraphToolPath = QtGui.QToolButton(self.tabgraphVoltage)
163 170 self.volGraphToolPath.setObjectName(_fromUtf8("volGraphToolPath"))
164 171 self.gridLayout_6.addWidget(self.volGraphToolPath, 1, 5, 1, 2)
165 172 self.volGraphPath = QtGui.QLineEdit(self.tabgraphVoltage)
166 173 self.volGraphPath.setObjectName(_fromUtf8("volGraphPath"))
167 174 self.gridLayout_6.addWidget(self.volGraphPath, 1, 1, 1, 4)
168 175 self.label_14 = QtGui.QLabel(self.tabgraphVoltage)
169 176 self.label_14.setObjectName(_fromUtf8("label_14"))
170 177 self.gridLayout_6.addWidget(self.label_14, 6, 0, 1, 1)
171 178 spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
172 179 self.gridLayout_6.addItem(spacerItem5, 3, 3, 1, 1)
173 180 self.label_8 = QtGui.QLabel(self.tabgraphVoltage)
174 181 self.label_8.setObjectName(_fromUtf8("label_8"))
175 182 self.gridLayout_6.addWidget(self.label_8, 8, 0, 1, 1)
176 183 self.label_49 = QtGui.QLabel(self.tabgraphVoltage)
177 184 self.label_49.setObjectName(_fromUtf8("label_49"))
178 185 self.gridLayout_6.addWidget(self.label_49, 4, 3, 1, 1)
179 186 self.label_51 = QtGui.QLabel(self.tabgraphVoltage)
180 187 self.label_51.setObjectName(_fromUtf8("label_51"))
181 188 self.gridLayout_6.addWidget(self.label_51, 9, 0, 1, 1)
182 189 self.volGraphCebshow = QtGui.QCheckBox(self.tabgraphVoltage)
183 190 self.volGraphCebshow.setText(_fromUtf8(""))
184 191 self.volGraphCebshow.setObjectName(_fromUtf8("volGraphCebshow"))
185 192 self.gridLayout_6.addWidget(self.volGraphCebshow, 6, 3, 1, 1)
186 193 self.label_12 = QtGui.QLabel(self.tabgraphVoltage)
187 194 self.label_12.setObjectName(_fromUtf8("label_12"))
188 195 self.gridLayout_6.addWidget(self.label_12, 1, 0, 1, 1)
189 196 self.label_13 = QtGui.QLabel(self.tabgraphVoltage)
190 197 self.label_13.setObjectName(_fromUtf8("label_13"))
191 198 self.gridLayout_6.addWidget(self.label_13, 2, 0, 1, 1)
192 199 self.label_52 = QtGui.QLabel(self.tabgraphVoltage)
193 200 self.label_52.setObjectName(_fromUtf8("label_52"))
194 201 self.gridLayout_6.addWidget(self.label_52, 11, 0, 1, 1)
195 202 spacerItem6 = QtGui.QSpacerItem(40, 12, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
196 203 self.gridLayout_6.addItem(spacerItem6, 14, 5, 1, 2)
197 204 spacerItem7 = QtGui.QSpacerItem(18, 12, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
198 205 self.gridLayout_6.addItem(spacerItem7, 14, 3, 1, 1)
199 206 self.volGraphChannelList = QtGui.QLineEdit(self.tabgraphVoltage)
200 207 self.volGraphChannelList.setObjectName(_fromUtf8("volGraphChannelList"))
201 208 self.gridLayout_6.addWidget(self.volGraphChannelList, 8, 1, 1, 6)
202 209 self.volGraphHeightrange = QtGui.QLineEdit(self.tabgraphVoltage)
203 210 self.volGraphHeightrange.setObjectName(_fromUtf8("volGraphHeightrange"))
204 211 self.gridLayout_6.addWidget(self.volGraphHeightrange, 11, 1, 1, 6)
205 212 self.label_50 = QtGui.QLabel(self.tabgraphVoltage)
206 213 self.label_50.setObjectName(_fromUtf8("label_50"))
207 214 self.gridLayout_6.addWidget(self.label_50, 4, 4, 1, 1)
208 215 self.volGraphCebSave = QtGui.QCheckBox(self.tabgraphVoltage)
209 216 self.volGraphCebSave.setText(_fromUtf8(""))
210 217 self.volGraphCebSave.setObjectName(_fromUtf8("volGraphCebSave"))
211 218 self.gridLayout_6.addWidget(self.volGraphCebSave, 6, 4, 1, 1)
212 219 self.tabWidgetVoltage.addTab(self.tabgraphVoltage, _fromUtf8(""))
213 220
214 221 self.taboutputVoltage = QtGui.QWidget()
215 222 self.taboutputVoltage.setObjectName(_fromUtf8("taboutputVoltage"))
216 223 self.gridLayout_12 = QtGui.QGridLayout(self.taboutputVoltage)
217 224 self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12"))
218 225 self.label_36 = QtGui.QLabel(self.taboutputVoltage)
219 226 self.label_36.setObjectName(_fromUtf8("label_36"))
220 227 self.gridLayout_12.addWidget(self.label_36, 0, 0, 1, 1)
221 228 self.label_37 = QtGui.QLabel(self.taboutputVoltage)
222 229 self.label_37.setObjectName(_fromUtf8("label_37"))
223 230 self.gridLayout_12.addWidget(self.label_37, 1, 0, 1, 1)
224 231 self.volOutputPath = QtGui.QLineEdit(self.taboutputVoltage)
225 232 self.volOutputPath.setObjectName(_fromUtf8("volOutputPath"))
226 233 self.gridLayout_12.addWidget(self.volOutputPath, 1, 2, 1, 1)
227 234 self.volOutputToolPath = QtGui.QToolButton(self.taboutputVoltage)
228 235 self.volOutputToolPath.setObjectName(_fromUtf8("volOutputToolPath"))
229 236 self.gridLayout_12.addWidget(self.volOutputToolPath, 1, 3, 1, 1)
230 237 self.volOutputComData = QtGui.QComboBox(self.taboutputVoltage)
231 238 self.volOutputComData.setObjectName(_fromUtf8("volOutputComData"))
232 239 self.volOutputComData.addItem(_fromUtf8(""))
233 240 self.gridLayout_12.addWidget(self.volOutputComData, 0, 2, 1, 2)
234 241 spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
235 242 self.gridLayout_12.addItem(spacerItem8, 5, 2, 1, 1)
236 243 self.volOutputblocksperfile = QtGui.QLineEdit(self.taboutputVoltage)
237 244 self.volOutputblocksperfile.setObjectName(_fromUtf8("volOutputblocksperfile"))
238 245 self.gridLayout_12.addWidget(self.volOutputblocksperfile, 3, 2, 1, 1)
239 246 self.label_7 = QtGui.QLabel(self.taboutputVoltage)
240 247 self.label_7.setObjectName(_fromUtf8("label_7"))
241 248 self.gridLayout_12.addWidget(self.label_7, 3, 0, 1, 1)
242 249 self.label_35 = QtGui.QLabel(self.taboutputVoltage)
243 250 self.label_35.setObjectName(_fromUtf8("label_35"))
244 251 self.gridLayout_12.addWidget(self.label_35, 4, 0, 1, 1)
245 252 self.volOutputprofilesperblock = QtGui.QLineEdit(self.taboutputVoltage)
246 253 self.volOutputprofilesperblock.setObjectName(_fromUtf8("volOutputprofilesperblock"))
247 254 self.gridLayout_12.addWidget(self.volOutputprofilesperblock, 4, 2, 1, 1)
248 255 self.tabWidgetVoltage.addTab(self.taboutputVoltage, _fromUtf8(""))
249 256 self.gridLayout_3.addWidget(self.tabWidgetVoltage, 0, 1, 1, 1)
250 257
251 258 self.tabWidgetProject.addTab(self.tabVoltage, _fromUtf8(""))
252 259
253 260 self.tabWidgetVoltage.setCurrentIndex(0)
254 261
255 262 def retranslateUi(self):
256 263
257 264 self.volOpOk.setText(_translate("MainWindow", "Ok", None))
258 265 self.volGraphClear.setText(_translate("MainWindow", "Clear", None))
259 266 self.volOpComHeights.setItemText(0, _translate("MainWindow", "Value", None))
260 267 self.volOpComHeights.setItemText(1, _translate("MainWindow", "Index", None))
261 268 self.volOpComChannels.setItemText(0, _translate("MainWindow", "Value", None))
262 269 self.volOpComChannels.setItemText(1, _translate("MainWindow", "Index", None))
263 270 self.volOpCebProfile.setText(_translate("MainWindow", "Profile Selector", None))
264 271 self.volOpComProfile.setItemText(0, _translate("MainWindow", "Profile List", None))
265 self.volOpComProfile.setItemText(1, _translate("MainWindow", "Profile Range List", None))
272 self.volOpComProfile.setItemText(1, _translate("MainWindow", "Profile Range", None))
273 self.volOpComProfile.setItemText(2, _translate("MainWindow", "List of Profile Ranges", None))
266 274 self.volOpCebDecodification.setText(_translate("MainWindow", "Decoder", None))
267 275 self.volOpCebCohInt.setText(_translate("MainWindow", "Coherent Integration", None))
268 276 self.volOpCebFlip.setText(_translate("MainWindow", "Flip", None))
269 self.label_4.setText(_translate("MainWindow", "Code:", None))
277 self.volLabCodeType.setText(_translate("MainWindow", "Code type:", None))
270 278 self.volOpCebChannels.setText(_translate("MainWindow", "Select Channels", None))
271 279 self.volOpCebHeights.setText(_translate("MainWindow", "Select Heights", None))
272 280 self.volOpCebFilter.setText(_translate("MainWindow", "Filter", None))
273 281 self.volOpCebRadarfrequency.setText(_translate("MainWindow", "Radar Frequency", None))
274 self.label_5.setText(_translate("MainWindow", "Mode:", None))
275 self.volOpComCode.setItemText(0, _translate("MainWindow", "Barker 3", None))
276 self.volOpComCode.setItemText(1, _translate("MainWindow", "Barker 4", None))
277 self.volOpComCode.setItemText(2, _translate("MainWindow", "Barker 5", None))
278 self.volOpComCode.setItemText(3, _translate("MainWindow", "Barker 7", None))
279 self.volOpComCode.setItemText(4, _translate("MainWindow", "Barker 11", None))
280 self.volOpComCode.setItemText(5, _translate("MainWindow", "Barker 13", None))
281 self.volOpComCode.setItemText(6, _translate("MainWindow", "Barker 3 + Comp.", None))
282 self.volOpComCode.setItemText(7, _translate("MainWindow", "Barker 4 + Comp.", None))
283 self.volOpComCode.setItemText(8, _translate("MainWindow", "Barker 5 + Comp.", None))
284 self.volOpComCode.setItemText(9, _translate("MainWindow", "Barker 7 + Comp.", None))
285 self.volOpComCode.setItemText(10, _translate("MainWindow", "Barker 11+ Comp.", None))
286 self.volOpComCode.setItemText(11, _translate("MainWindow", "Barker 13+ Comp.", None))
287 self.volOpComCode.setItemText(12, _translate("MainWindow", "Read from header", None))
282 self.volLabCodeMode.setText(_translate("MainWindow", "Mode:", None))
283 self.volLabCode.setText(_translate("MainWindow", "Code:", None))
284 self.volOpComCode.setItemText(0, _translate("MainWindow", "Read from header", None))
285 self.volOpComCode.setItemText(1, _translate("MainWindow", "Barker 3", None))
286 self.volOpComCode.setItemText(2, _translate("MainWindow", "Barker 4", None))
287 self.volOpComCode.setItemText(3, _translate("MainWindow", "Barker 5", None))
288 self.volOpComCode.setItemText(4, _translate("MainWindow", "Barker 7", None))
289 self.volOpComCode.setItemText(5, _translate("MainWindow", "Barker 11", None))
290 self.volOpComCode.setItemText(6, _translate("MainWindow", "Barker 13", None))
291 self.volOpComCode.setItemText(7, _translate("MainWindow", "Barker 3 + Comp.", None))
292 self.volOpComCode.setItemText(8, _translate("MainWindow", "Barker 4 + Comp.", None))
293 self.volOpComCode.setItemText(9, _translate("MainWindow", "Barker 5 + Comp.", None))
294 self.volOpComCode.setItemText(10, _translate("MainWindow", "Barker 7 + Comp.", None))
295 self.volOpComCode.setItemText(11, _translate("MainWindow", "Barker 11+ Comp.", None))
296 self.volOpComCode.setItemText(12, _translate("MainWindow", "Barker 13+ Comp.", None))
297 self.volOpComCode.setItemText(13, _translate("MainWindow", "User defined", None))
288 298 self.volOpComMode.setItemText(0, _translate("MainWindow", "Time", None))
289 self.volOpComMode.setItemText(1, _translate("MainWindow", "Freq 1", None))
299 self.volOpComMode.setItemText(1, _translate("MainWindow", "Frequency", None))
290 300 self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.tabopVoltage), _translate("MainWindow", "Operation", None))
291 301
292 302 self.volGraphToolPath.setText(_translate("MainWindow", "...", None))
293 303 self.label_14.setText(_translate("MainWindow", "Scope", None))
294 304 self.label_8.setText(_translate("MainWindow", "Channel List", None))
295 305 self.label_49.setText(_translate("MainWindow", "Show", None))
296 self.label_51.setText(_translate("MainWindow", "Freq/Vel", None))
306 self.label_51.setText(_translate("MainWindow", "Height range", None))
297 307 self.label_12.setText(_translate("MainWindow", "Path :", None))
298 self.label_13.setText(_translate("MainWindow", "Prefix:", None))
299 self.label_52.setText(_translate("MainWindow", "Height range", None))
308 self.label_13.setText(_translate("MainWindow", "Figure name:", None))
309 self.label_52.setText(_translate("MainWindow", "Amplitude", None))
300 310 self.label_50.setText(_translate("MainWindow", "Save", None))
301 311 self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.tabgraphVoltage), _translate("MainWindow", "Graphics", None))
302 312
303 313 self.label_36.setText(_translate("MainWindow", "Type:", None))
304 314 self.label_37.setText(_translate("MainWindow", "Path:", None))
305 315 self.volOutputToolPath.setText(_translate("MainWindow", "...", None))
306 316 self.volOutputComData.setItemText(0, _translate("MainWindow", ".rawdata", None))
307 317 self.label_7.setText(_translate("MainWindow", "Blocks per File : ", None))
308 318 self.label_35.setText(_translate("MainWindow", "Profiles per Block: ", None))
309 319 self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.taboutputVoltage), _translate("MainWindow", "Output", None))
310 320
311 321 self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabVoltage), _translate("MainWindow", "Voltage", None))
312 322
313 323
314 324 No newline at end of file
@@ -1,610 +1,610
1 1 import os
2 2 import numpy
3 3 import time, datetime
4 4 import mpldriver
5 5
6 6 from schainpy.model.proc.jroproc_base import Operation
7 7
8 8 def isRealtime(utcdatatime):
9 9 utcnow = time.mktime(time.localtime())
10 10 delta = abs(utcnow - utcdatatime) # abs
11 11 if delta >= 30.:
12 12 return False
13 13 return True
14 14
15 15 class Figure(Operation):
16 16
17 17 __driver = mpldriver
18 18 __isConfigThread = False
19 19 fig = None
20 20
21 21 id = None
22 22 wintitle = None
23 23 width = None
24 24 height = None
25 25 nplots = None
26 26 timerange = None
27 27
28 28 axesObjList = []
29 29
30 30 WIDTH = None
31 31 HEIGHT = None
32 32 PREFIX = 'fig'
33 33
34 34 xmin = None
35 35 xmax = None
36 36
37 37 counter_imagwr = 0
38 38
39 39 figfile = None
40 40
41 41 def __init__(self):
42 42
43 43 raise ValueError, "This method is not implemented"
44 44
45 45 def __del__(self):
46 46
47 47 self.__driver.closeFigure()
48 48
49 49 def getFilename(self, name, ext='.png'):
50 50
51 51 path = '%s%03d' %(self.PREFIX, self.id)
52 52 filename = '%s_%s%s' %(self.PREFIX, name, ext)
53 53 return os.path.join(path, filename)
54 54
55 55 def getAxesObjList(self):
56 56
57 57 return self.axesObjList
58 58
59 59 def getSubplots(self):
60 60
61 61 raise ValueError, "Abstract method: This method should be defined"
62 62
63 63 def getScreenDim(self, widthplot, heightplot):
64 64
65 65 nrow, ncol = self.getSubplots()
66 66
67 67 widthscreen = widthplot*ncol
68 68 heightscreen = heightplot*nrow
69 69
70 70 return widthscreen, heightscreen
71 71
72 72 def getTimeLim(self, x, xmin=None, xmax=None, timerange=None):
73 73
74 74 if self.xmin != None and self.xmax != None:
75 75 if timerange == None:
76 76 timerange = self.xmax - self.xmin
77 77 xmin = self.xmin + timerange
78 78 xmax = self.xmax + timerange
79 79
80 80 return xmin, xmax
81 81
82 82 if timerange == None and (xmin==None or xmax==None):
83 83 timerange = 14400 #seconds
84 84 #raise ValueError, "(timerange) or (xmin & xmax) should be defined"
85 85
86 86 if timerange != None:
87 87 txmin = x[0] - x[0] % min(timerange/10, 10*60)
88 88 else:
89 89 txmin = x[0] - x[0] % 10*60
90 90
91 91 thisdatetime = datetime.datetime.utcfromtimestamp(txmin)
92 92 thisdate = datetime.datetime.combine(thisdatetime.date(), datetime.time(0,0,0))
93 93
94 94 if timerange != None:
95 95 xmin = (thisdatetime - thisdate).seconds/(60*60.)
96 96 xmax = xmin + timerange/(60*60.)
97 97
98 98 mindt = thisdate + datetime.timedelta(hours=xmin) - datetime.timedelta(seconds=time.timezone)
99 99 xmin_sec = time.mktime(mindt.timetuple())
100 100
101 101 maxdt = thisdate + datetime.timedelta(hours=xmax) - datetime.timedelta(seconds=time.timezone)
102 102 xmax_sec = time.mktime(maxdt.timetuple())
103 103
104 104 return xmin_sec, xmax_sec
105 105
106 106 def init(self, id, nplots, wintitle):
107 107
108 108 raise ValueError, "This method has been replaced with createFigure"
109 109
110 110 def createFigure(self, id, wintitle, widthplot=None, heightplot=None, show=True):
111 111
112 112 """
113 113 Crea la figura de acuerdo al driver y parametros seleccionados seleccionados.
114 114 Las dimensiones de la pantalla es calculada a partir de los atributos self.WIDTH
115 115 y self.HEIGHT y el numero de subplots (nrow, ncol)
116 116
117 117 Input:
118 118 id : Los parametros necesarios son
119 119 wintitle :
120 120
121 121 """
122 122
123 123 if widthplot == None:
124 124 widthplot = self.WIDTH
125 125
126 126 if heightplot == None:
127 127 heightplot = self.HEIGHT
128 128
129 129 self.id = id
130 130
131 131 self.wintitle = wintitle
132 132
133 133 self.widthscreen, self.heightscreen = self.getScreenDim(widthplot, heightplot)
134 134
135 135 self.fig = self.__driver.createFigure(id=self.id,
136 136 wintitle=self.wintitle,
137 137 width=self.widthscreen,
138 138 height=self.heightscreen,
139 139 show=show)
140 140
141 141 self.axesObjList = []
142 142 self.counter_imagwr = 0
143 143
144 144
145 145 def setDriver(self, driver=mpldriver):
146 146
147 147 self.__driver = driver
148 148
149 149 def setTitle(self, title):
150 150
151 151 self.__driver.setTitle(self.fig, title)
152 152
153 153 def setWinTitle(self, title):
154 154
155 155 self.__driver.setWinTitle(self.fig, title=title)
156 156
157 157 def setTextFromAxes(self, text):
158 158
159 159 raise ValueError, "Este metodo ha sido reemplazaado con el metodo setText de la clase Axes"
160 160
161 161 def makeAxes(self, nrow, ncol, xpos, ypos, colspan, rowspan):
162 162
163 163 raise ValueError, "Este metodo ha sido reemplazaado con el metodo addAxes"
164 164
165 165 def addAxes(self, *args):
166 166 """
167 167
168 168 Input:
169 169 *args : Los parametros necesarios son
170 170 nrow, ncol, xpos, ypos, colspan, rowspan
171 171 """
172 172
173 173 axesObj = Axes(self.fig, *args)
174 174 self.axesObjList.append(axesObj)
175 175
176 176 def saveFigure(self, figpath, figfile, *args):
177 177
178 178 filename = os.path.join(figpath, figfile)
179 179
180 180 fullpath = os.path.split(filename)[0]
181 181
182 182 if not os.path.exists(fullpath):
183 183 subpath = os.path.split(fullpath)[0]
184 184
185 185 if not os.path.exists(subpath):
186 186 os.mkdir(subpath)
187 187
188 188 os.mkdir(fullpath)
189 189
190 190 self.__driver.saveFigure(self.fig, filename, *args)
191 191
192 192 def save(self, figpath, figfile=None, save=True, ftp=False, wr_period=1, thisDatetime=None, update_figfile=True):
193 193
194 194 self.counter_imagwr += 1
195 195 if self.counter_imagwr < wr_period:
196 196 return
197 197
198 198 self.counter_imagwr = 0
199 199
200 200 if save:
201 201
202 202 if figfile == None:
203 203
204 204 if not thisDatetime:
205 205 raise ValueError, "Saving figure: figfile or thisDatetime should be defined"
206 206 return
207 207
208 208 str_datetime = thisDatetime.strftime("%Y%m%d_%H%M%S")
209 209 figfile = self.getFilename(name = str_datetime)
210 210
211 211 if self.figfile == None:
212 212 self.figfile = figfile
213 213
214 214 if update_figfile:
215 215 self.figfile = figfile
216 216
217 217 # store png plot to local folder
218 218 self.saveFigure(figpath, self.figfile)
219 219
220 220
221 221 if not ftp:
222 222 return
223 223
224 224 if not thisDatetime:
225 225 return
226 226
227 227 # store png plot to FTP server according to RT-Web format
228 name = self.getNameToFtp(thisDatetime, self.FTP_WEI, self.EXP_CODE, self.SUB_EXP_CODE, self.PLOT_CODE, self.PLOT_POS)
229 ftp_filename = os.path.join(figpath, name)
228 ftp_filename = self.getNameToFtp(thisDatetime, self.FTP_WEI, self.EXP_CODE, self.SUB_EXP_CODE, self.PLOT_CODE, self.PLOT_POS)
229 # ftp_filename = os.path.join(figpath, name)
230 230 self.saveFigure(figpath, ftp_filename)
231 231
232 232 def getNameToFtp(self, thisDatetime, FTP_WEI, EXP_CODE, SUB_EXP_CODE, PLOT_CODE, PLOT_POS):
233 233 YEAR_STR = '%4.4d'%thisDatetime.timetuple().tm_year
234 234 DOY_STR = '%3.3d'%thisDatetime.timetuple().tm_yday
235 235 FTP_WEI = '%2.2d'%FTP_WEI
236 236 EXP_CODE = '%3.3d'%EXP_CODE
237 237 SUB_EXP_CODE = '%2.2d'%SUB_EXP_CODE
238 238 PLOT_CODE = '%2.2d'%PLOT_CODE
239 239 PLOT_POS = '%2.2d'%PLOT_POS
240 240 name = YEAR_STR + DOY_STR + FTP_WEI + EXP_CODE + SUB_EXP_CODE + PLOT_CODE + PLOT_POS
241 241 return name
242 242
243 243 def draw(self):
244 244
245 245 self.__driver.draw(self.fig)
246 246
247 247 def run(self):
248 248
249 249 raise ValueError, "This method is not implemented"
250 250
251 251 def close(self, show=False):
252 252
253 253 self.__driver.closeFigure(show=show, fig=self.fig)
254 254
255 255 axesList = property(getAxesObjList)
256 256
257 257
258 258 class Axes:
259 259
260 260 __driver = mpldriver
261 261 fig = None
262 262 ax = None
263 263 plot = None
264 264 __missing = 1E30
265 265 __firsttime = None
266 266
267 267 __showprofile = False
268 268
269 269 xmin = None
270 270 xmax = None
271 271 ymin = None
272 272 ymax = None
273 273 zmin = None
274 274 zmax = None
275 275
276 276 x_buffer = None
277 277 z_buffer = None
278 278
279 279 decimationx = None
280 280 decimationy = None
281 281
282 282 __MAXNUMX = 300
283 283 __MAXNUMY = 150
284 284
285 285 def __init__(self, *args):
286 286
287 287 """
288 288
289 289 Input:
290 290 *args : Los parametros necesarios son
291 291 fig, nrow, ncol, xpos, ypos, colspan, rowspan
292 292 """
293 293
294 294 ax = self.__driver.createAxes(*args)
295 295 self.fig = args[0]
296 296 self.ax = ax
297 297 self.plot = None
298 298
299 299 self.__firsttime = True
300 300 self.idlineList = []
301 301
302 302 self.x_buffer = numpy.array([])
303 303 self.z_buffer = numpy.array([])
304 304
305 305 def setText(self, text):
306 306
307 307 self.__driver.setAxesText(self.ax, text)
308 308
309 309 def setXAxisAsTime(self):
310 310 pass
311 311
312 312 def pline(self, x, y,
313 313 xmin=None, xmax=None,
314 314 ymin=None, ymax=None,
315 315 xlabel='', ylabel='',
316 316 title='',
317 317 **kwargs):
318 318
319 319 """
320 320
321 321 Input:
322 322 x :
323 323 y :
324 324 xmin :
325 325 xmax :
326 326 ymin :
327 327 ymax :
328 328 xlabel :
329 329 ylabel :
330 330 title :
331 331 **kwargs : Los parametros aceptados son
332 332
333 333 ticksize
334 334 ytick_visible
335 335 """
336 336
337 337 if self.__firsttime:
338 338
339 339 if xmin == None: xmin = numpy.nanmin(x)
340 340 if xmax == None: xmax = numpy.nanmax(x)
341 341 if ymin == None: ymin = numpy.nanmin(y)
342 342 if ymax == None: ymax = numpy.nanmax(y)
343 343
344 344 self.plot = self.__driver.createPline(self.ax, x, y,
345 345 xmin, xmax,
346 346 ymin, ymax,
347 347 xlabel=xlabel,
348 348 ylabel=ylabel,
349 349 title=title,
350 350 **kwargs)
351 351
352 352 self.idlineList.append(0)
353 353 self.__firsttime = False
354 354 return
355 355
356 356 self.__driver.pline(self.plot, x, y, xlabel=xlabel,
357 357 ylabel=ylabel,
358 358 title=title)
359 359
360 360 def addpline(self, x, y, idline, **kwargs):
361 361 lines = self.ax.lines
362 362
363 363 if idline in self.idlineList:
364 364 self.__driver.set_linedata(self.ax, x, y, idline)
365 365
366 366 if idline not in(self.idlineList):
367 367 self.__driver.addpline(self.ax, x, y, **kwargs)
368 368 self.idlineList.append(idline)
369 369
370 370 return
371 371
372 372 def pmultiline(self, x, y,
373 373 xmin=None, xmax=None,
374 374 ymin=None, ymax=None,
375 375 xlabel='', ylabel='',
376 376 title='',
377 377 **kwargs):
378 378
379 379 if self.__firsttime:
380 380
381 381 if xmin == None: xmin = numpy.nanmin(x)
382 382 if xmax == None: xmax = numpy.nanmax(x)
383 383 if ymin == None: ymin = numpy.nanmin(y)
384 384 if ymax == None: ymax = numpy.nanmax(y)
385 385
386 386 self.plot = self.__driver.createPmultiline(self.ax, x, y,
387 387 xmin, xmax,
388 388 ymin, ymax,
389 389 xlabel=xlabel,
390 390 ylabel=ylabel,
391 391 title=title,
392 392 **kwargs)
393 393 self.__firsttime = False
394 394 return
395 395
396 396 self.__driver.pmultiline(self.plot, x, y, xlabel=xlabel,
397 397 ylabel=ylabel,
398 398 title=title)
399 399
400 400 def pmultilineyaxis(self, x, y,
401 401 xmin=None, xmax=None,
402 402 ymin=None, ymax=None,
403 403 xlabel='', ylabel='',
404 404 title='',
405 405 **kwargs):
406 406
407 407 if self.__firsttime:
408 408
409 409 if xmin == None: xmin = numpy.nanmin(x)
410 410 if xmax == None: xmax = numpy.nanmax(x)
411 411 if ymin == None: ymin = numpy.nanmin(y)
412 412 if ymax == None: ymax = numpy.nanmax(y)
413 413
414 414 self.plot = self.__driver.createPmultilineYAxis(self.ax, x, y,
415 415 xmin, xmax,
416 416 ymin, ymax,
417 417 xlabel=xlabel,
418 418 ylabel=ylabel,
419 419 title=title,
420 420 **kwargs)
421 421 if self.xmin == None: self.xmin = xmin
422 422 if self.xmax == None: self.xmax = xmax
423 423 if self.ymin == None: self.ymin = ymin
424 424 if self.ymax == None: self.ymax = ymax
425 425
426 426 self.__firsttime = False
427 427 return
428 428
429 429 self.__driver.pmultilineyaxis(self.plot, x, y, xlabel=xlabel,
430 430 ylabel=ylabel,
431 431 title=title)
432 432
433 433 def pcolor(self, x, y, z,
434 434 xmin=None, xmax=None,
435 435 ymin=None, ymax=None,
436 436 zmin=None, zmax=None,
437 437 xlabel='', ylabel='',
438 438 title='', rti = False, colormap='jet',
439 439 **kwargs):
440 440
441 441 """
442 442 Input:
443 443 x :
444 444 y :
445 445 x :
446 446 xmin :
447 447 xmax :
448 448 ymin :
449 449 ymax :
450 450 zmin :
451 451 zmax :
452 452 xlabel :
453 453 ylabel :
454 454 title :
455 455 **kwargs : Los parametros aceptados son
456 456 ticksize=9,
457 457 cblabel=''
458 458 rti = True or False
459 459 """
460 460
461 461 if self.__firsttime:
462 462
463 463 if xmin == None: xmin = numpy.nanmin(x)
464 464 if xmax == None: xmax = numpy.nanmax(x)
465 465 if ymin == None: ymin = numpy.nanmin(y)
466 466 if ymax == None: ymax = numpy.nanmax(y)
467 467 if zmin == None: zmin = numpy.nanmin(z)
468 468 if zmax == None: zmax = numpy.nanmax(z)
469 469
470 470
471 471 self.plot = self.__driver.createPcolor(self.ax, x, y, z,
472 472 xmin, xmax,
473 473 ymin, ymax,
474 474 zmin, zmax,
475 475 xlabel=xlabel,
476 476 ylabel=ylabel,
477 477 title=title,
478 478 colormap=colormap,
479 479 **kwargs)
480 480
481 481 if self.xmin == None: self.xmin = xmin
482 482 if self.xmax == None: self.xmax = xmax
483 483 if self.ymin == None: self.ymin = ymin
484 484 if self.ymax == None: self.ymax = ymax
485 485 if self.zmin == None: self.zmin = zmin
486 486 if self.zmax == None: self.zmax = zmax
487 487
488 488 self.__firsttime = False
489 489 return
490 490
491 491 if rti:
492 492 self.__driver.addpcolor(self.ax, x, y, z, self.zmin, self.zmax,
493 493 xlabel=xlabel,
494 494 ylabel=ylabel,
495 495 title=title,
496 496 colormap=colormap)
497 497 return
498 498
499 499 self.__driver.pcolor(self.plot, z,
500 500 xlabel=xlabel,
501 501 ylabel=ylabel,
502 502 title=title)
503 503
504 504 def pcolorbuffer(self, x, y, z,
505 505 xmin=None, xmax=None,
506 506 ymin=None, ymax=None,
507 507 zmin=None, zmax=None,
508 508 xlabel='', ylabel='',
509 509 title='', rti = True, colormap='jet',
510 510 maxNumX = None, maxNumY = None,
511 511 **kwargs):
512 512
513 513 if maxNumX == None:
514 514 maxNumX = self.__MAXNUMX
515 515
516 516 if maxNumY == None:
517 517 maxNumY = self.__MAXNUMY
518 518
519 519 if self.__firsttime:
520 520 self.z_buffer = z
521 521 self.x_buffer = numpy.hstack((self.x_buffer, x))
522 522
523 523 if xmin == None: xmin = numpy.nanmin(x)
524 524 if xmax == None: xmax = numpy.nanmax(x)
525 525 if ymin == None: ymin = numpy.nanmin(y)
526 526 if ymax == None: ymax = numpy.nanmax(y)
527 527 if zmin == None: zmin = numpy.nanmin(z)
528 528 if zmax == None: zmax = numpy.nanmax(z)
529 529
530 530
531 531 self.plot = self.__driver.createPcolor(self.ax, self.x_buffer, y, z,
532 532 xmin, xmax,
533 533 ymin, ymax,
534 534 zmin, zmax,
535 535 xlabel=xlabel,
536 536 ylabel=ylabel,
537 537 title=title,
538 538 colormap=colormap,
539 539 **kwargs)
540 540
541 541 if self.xmin == None: self.xmin = xmin
542 542 if self.xmax == None: self.xmax = xmax
543 543 if self.ymin == None: self.ymin = ymin
544 544 if self.ymax == None: self.ymax = ymax
545 545 if self.zmin == None: self.zmin = zmin
546 546 if self.zmax == None: self.zmax = zmax
547 547
548 548 self.__firsttime = False
549 549 return
550 550
551 551 self.x_buffer = numpy.hstack((self.x_buffer, x[-1]))
552 552 self.z_buffer = numpy.hstack((self.z_buffer, z))
553 553
554 554 if self.decimationx == None:
555 555 deltax = float(self.xmax - self.xmin)/maxNumX
556 556 deltay = float(self.ymax - self.ymin)/maxNumY
557 557
558 558 resolutionx = self.x_buffer[2]-self.x_buffer[0]
559 559 resolutiony = y[1]-y[0]
560 560
561 561 self.decimationx = numpy.ceil(deltax / resolutionx)
562 562 self.decimationy = numpy.ceil(deltay / resolutiony)
563 563
564 564 z_buffer = self.z_buffer.reshape(-1,len(y))
565 565
566 566 x_buffer = self.x_buffer[::self.decimationx]
567 567 y_buffer = y[::self.decimationy]
568 568 z_buffer = z_buffer[::self.decimationx, ::self.decimationy]
569 569 #===================================================
570 570
571 571 x_buffer, y_buffer, z_buffer = self.__fillGaps(x_buffer, y_buffer, z_buffer)
572 572
573 573 self.__driver.addpcolorbuffer(self.ax, x_buffer, y_buffer, z_buffer, self.zmin, self.zmax,
574 574 xlabel=xlabel,
575 575 ylabel=ylabel,
576 576 title=title,
577 577 colormap=colormap)
578 578
579 579 def polar(self, x, y,
580 580 title='', xlabel='',ylabel='',**kwargs):
581 581
582 582 if self.__firsttime:
583 583 self.plot = self.__driver.createPolar(self.ax, x, y, title = title, xlabel = xlabel, ylabel = ylabel)
584 584 self.__firsttime = False
585 585 self.x_buffer = x
586 586 self.y_buffer = y
587 587 return
588 588
589 589 self.x_buffer = numpy.hstack((self.x_buffer,x))
590 590 self.y_buffer = numpy.hstack((self.y_buffer,y))
591 591 self.__driver.polar(self.plot, self.x_buffer, self.y_buffer, xlabel=xlabel,
592 592 ylabel=ylabel,
593 593 title=title)
594 594
595 595 def __fillGaps(self, x_buffer, y_buffer, z_buffer):
596 596
597 597 deltas = x_buffer[1:] - x_buffer[0:-1]
598 598 x_median = numpy.median(deltas)
599 599
600 600 index = numpy.where(deltas >= 2*x_median)
601 601
602 602 if len(index[0]) != 0:
603 603 z_buffer[index[0],::] = self.__missing
604 604 z_buffer = numpy.ma.masked_inside(z_buffer,0.99*self.__missing,1.01*self.__missing)
605 605
606 606 return x_buffer, y_buffer, z_buffer
607 607
608 608
609 609
610 610 No newline at end of file
@@ -1,577 +1,580
1 1 '''
2 2 Created on Jul 3, 2014
3 3
4 4 @author: roj-idl71
5 5 '''
6 6 import datetime
7 7 import numpy
8 8
9 9 try:
10 10 from gevent import sleep
11 11 except:
12 12 from time import sleep
13 13
14 14 from schainpy.model.data.jroheaderIO import RadarControllerHeader, SystemHeader
15 15 from schainpy.model.data.jrodata import Voltage
16 16 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
17 17
18 18 try:
19 19 import digital_rf_hdf5
20 20 except:
21 21 print 'You should install "digital_rf_hdf5" module if you want to read USRP data'
22 22
23 23 class USRPReader(ProcessingUnit):
24 24 '''
25 25 classdocs
26 26 '''
27 27
28 28 def __init__(self):
29 29 '''
30 30 Constructor
31 31 '''
32 32
33 33 ProcessingUnit.__init__(self)
34 34
35 35 self.dataOut = Voltage()
36 36 self.__printInfo = True
37 37 self.__flagDiscontinuousBlock = False
38 38 self.__bufferIndex = 9999999
39 39
40 40 self.__ippKm = None
41 41 self.__codeType = 0
42 42 self.__nCode = None
43 43 self.__nBaud = None
44 44 self.__code = None
45 45
46 46 def __getCurrentSecond(self):
47 47
48 48 return self.__thisUnixSample/self.__sample_rate
49 49
50 50 thisSecond = property(__getCurrentSecond, "I'm the 'thisSecond' property.")
51 51
52 52 def __setFileHeader(self):
53 53 '''
54 54 In this method will be initialized every parameter of dataOut object (header, no data)
55 55 '''
56 56
57 57 self.dataOut.radarControllerHeaderObj = RadarControllerHeader(ippKm=self.__ippKm,
58 58 txA=0,
59 59 txB=0,
60 60 nWindows=1,
61 61 nHeights=self.__nSamples,
62 62 firstHeight=self.__firstHeigth,
63 63 deltaHeight=self.__deltaHeigth,
64 64 codeType=self.__codeType,
65 65 nCode=self.__nCode, nBaud=self.__nBaud,
66 66 code = self.__code)
67 67
68 68 self.dataOut.systemHeaderObj = SystemHeader(nSamples=self.__nSamples,
69 69 nProfiles=1024,
70 70 nChannels=len(self.__channelList),
71 71 adcResolution=14)
72 72
73 73 self.dataOut.type = "Voltage"
74 74
75 75 self.dataOut.data = None
76 76
77 77 self.dataOut.dtype = numpy.dtype([('real','<i8'),('imag','<i8')])
78 78
79 79 # self.dataOut.nChannels = 0
80 80
81 81 # self.dataOut.nHeights = 0
82 82
83 83 self.dataOut.nProfiles = 1
84 84
85 85 self.dataOut.heightList = self.__firstHeigth + numpy.arange(self.__nSamples, dtype = numpy.float)*self.__deltaHeigth
86 86
87 87 self.dataOut.channelList = self.__channelList
88 88
89 89 self.dataOut.blocksize = self.dataOut.getNChannels() * self.dataOut.getNHeights()
90 90
91 91 # self.dataOut.channelIndexList = None
92 92
93 93 self.dataOut.flagNoData = True
94 94
95 95 #Set to TRUE if the data is discontinuous
96 96 self.dataOut.flagDiscontinuousBlock = False
97 97
98 98 self.dataOut.utctime = None
99 99
100 100 self.dataOut.timeZone = self.__timezone/60 #timezone like jroheader, difference in minutes between UTC and localtime
101 101
102 102 self.dataOut.dstFlag = 0
103 103
104 104 self.dataOut.errorCount = 0
105 105
106 106 self.dataOut.nCohInt = 1
107 107
108 108 self.dataOut.flagDecodeData = False #asumo que la data esta decodificada
109 109
110 110 self.dataOut.flagDeflipData = False #asumo que la data esta sin flip
111 111
112 112 self.dataOut.flagShiftFFT = False
113 113
114 114 self.dataOut.ippSeconds = 1.0*self.__nSamples/self.__sample_rate
115 115
116 116 #Time interval between profiles
117 117 #self.dataOut.timeInterval = self.dataOut.ippSeconds * self.dataOut.nCohInt
118 118
119 119 self.dataOut.frequency = self.__frequency
120 120
121 121 self.dataOut.realtime = self.__online
122 122
123 123 def findDatafiles(self, path, startDate=None, endDate=None):
124 124
125 125 try:
126 126 digitalReadObj = digital_rf_hdf5.read_hdf5(path, load_all_metadata=True)
127 127 except:
128 128 digitalReadObj = digital_rf_hdf5.read_hdf5(path)
129 129
130 130 channelNameList = digitalReadObj.get_channels()
131 131
132 if not channelNameList:
133 return []
134
132 135 metadata_dict = digitalReadObj.get_rf_file_metadata(channelNameList[0])
133 136
134 137 sample_rate = metadata_dict['sample_rate'][0]
135 138
136 139 this_metadata_file = digitalReadObj.get_metadata(channelNameList[0])
137 140
138 141 try:
139 142 timezone = this_metadata_file['timezone'].value
140 143 except:
141 144 timezone = 0
142 145
143 146 startUTCSecond, endUTCSecond = digitalReadObj.get_bounds(channelNameList[0])/sample_rate - timezone
144 147
145 148 startDatetime = datetime.datetime.utcfromtimestamp(startUTCSecond)
146 149 endDatatime = datetime.datetime.utcfromtimestamp(endUTCSecond)
147 150
148 151 if not startDate:
149 152 startDate = startDatetime.date()
150 153
151 154 if not endDate:
152 155 endDate = endDatatime.date()
153 156
154 157 dateList = []
155 158
156 159 thisDatetime = startDatetime
157 160
158 161 while(thisDatetime<=endDatatime):
159 162
160 163 thisDate = thisDatetime.date()
161 164
162 165 if thisDate < startDate:
163 166 continue
164 167
165 168 if thisDate > endDate:
166 169 break
167 170
168 171 dateList.append(thisDate)
169 172 thisDatetime += datetime.timedelta(1)
170 173
171 174 return dateList
172 175
173 176 def setup(self, path = None,
174 177 startDate = None,
175 178 endDate = None,
176 179 startTime = datetime.time(0,0,0),
177 180 endTime = datetime.time(23,59,59),
178 181 channelList = None,
179 182 nSamples = None,
180 183 ippKm = 60,
181 184 online = False,
182 185 delay = 60,
183 186 buffer_size = None,
184 187 nbuffer = 1024,
185 188 **kwargs):
186 189 '''
187 190 In this method we should set all initial parameters.
188 191
189 192 Inputs:
190 193 path
191 194 startDate
192 195 endDate
193 196 startTime
194 197 endTime
195 198 set
196 199 expLabel
197 200 ext
198 201 online
199 202 delay
200 203 '''
201 204
202 205 if not buffer_size:
203 206 buffer_size = nbuffer
204 207
205 208 try:
206 209 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path, load_all_metadata=True)
207 210 except:
208 211 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path)
209 212
210 213 channelNameList = self.digitalReadObj.get_channels()
211 214
212 215 if not channelNameList:
213 216 raise IOError, "[Reading] The path doesn,t have any files .. "
214 217
215 218 if not channelList:
216 219 channelList = range(len(channelNameList))
217 220
218 221 ########## Reading metadata ######################
219 222
220 223 metadata_dict = self.digitalReadObj.get_rf_file_metadata(channelNameList[channelList[0]])
221 224
222 225 self.__sample_rate = metadata_dict['sample_rate'][0]
223 226 self.__samples_per_file = metadata_dict['samples_per_file'][0]
224 227 self.__deltaHeigth = 1e6*0.15/self.__sample_rate
225 228
226 229 this_metadata_file = self.digitalReadObj.get_metadata(channelNameList[channelList[0]])
227 230
228 231 self.__frequency = this_metadata_file['center_frequencies'].value
229 232 try:
230 233 self.__timezone = this_metadata_file['timezone'].value
231 234 except:
232 235 self.__timezone = 0
233 236
234 237 self.__firstHeigth = 0
235 238
236 239 try:
237 240 codeType = this_metadata_file['codeType'].value
238 241 except:
239 242 codeType = 0
240 243
241 244 nCode = 0
242 245 nBaud = 0
243 246 code = None
244 247
245 248 if codeType:
246 249 nCode = this_metadata_file['nCode'].value
247 250 nBaud = this_metadata_file['nBaud'].value
248 251 code = this_metadata_file['code'].value
249 252
250 253 if not ippKm:
251 254 try:
252 255 #seconds to km
253 256 ippKm = 1e6*0.15*this_metadata_file['ipp'].value
254 257 except:
255 258 ippKm = None
256 259
257 260 ####################################################
258 261 startUTCSecond = None
259 262 endUTCSecond = None
260 263
261 264 if startDate:
262 265 startDatetime = datetime.datetime.combine(startDate, startTime)
263 266 startUTCSecond = (startDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
264 267
265 268 if endDate:
266 269 endDatetime = datetime.datetime.combine(endDate, endTime)
267 270 endUTCSecond = (endDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
268 271
269 272 start_index, end_index = self.digitalReadObj.get_bounds(channelNameList[channelList[0]])
270 273
271 274 if not startUTCSecond:
272 275 startUTCSecond = start_index/self.__sample_rate
273 276
274 277 if start_index > startUTCSecond*self.__sample_rate:
275 278 startUTCSecond = start_index/self.__sample_rate
276 279
277 280 if not endUTCSecond:
278 281 endUTCSecond = end_index/self.__sample_rate
279 282
280 283 if end_index < endUTCSecond*self.__sample_rate:
281 284 endUTCSecond = end_index/self.__sample_rate
282 285
283 286 if not nSamples:
284 287 if not ippKm:
285 288 raise ValueError, "[Reading] nSamples or ippKm should be defined"
286 289
287 290 nSamples = ippKm / (1e6*0.15/self.__sample_rate)
288 291
289 292 channelBoundList = []
290 293 channelNameListFiltered = []
291 294
292 295 for thisIndexChannel in channelList:
293 296 thisChannelName = channelNameList[thisIndexChannel]
294 297 start_index, end_index = self.digitalReadObj.get_bounds(thisChannelName)
295 298 channelBoundList.append((start_index, end_index))
296 299 channelNameListFiltered.append(thisChannelName)
297 300
298 301 self.profileIndex = 0
299 302
300 303 self.__delay = delay
301 304 self.__ippKm = ippKm
302 305 self.__codeType = codeType
303 306 self.__nCode = nCode
304 307 self.__nBaud = nBaud
305 308 self.__code = code
306 309
307 310 self.__datapath = path
308 311 self.__online = online
309 312 self.__channelList = channelList
310 313 self.__channelNameList = channelNameListFiltered
311 314 self.__channelBoundList = channelBoundList
312 315 self.__nSamples = nSamples
313 316 self.__samples_to_read = buffer_size*nSamples
314 317 self.__nChannels = len(self.__channelList)
315 318
316 319 self.__startUTCSecond = startUTCSecond
317 320 self.__endUTCSecond = endUTCSecond
318 321
319 322 self.__timeInterval = 1.0 * self.__samples_to_read/self.__sample_rate #Time interval
320 323
321 324 if online:
322 325 # self.__thisUnixSample = int(endUTCSecond*self.__sample_rate - 4*self.__samples_to_read)
323 326 startUTCSecond = numpy.floor(endUTCSecond)
324 327
325 328 self.__thisUnixSample = int(startUTCSecond*self.__sample_rate) - self.__samples_to_read
326 329
327 330 self.__data_buffer = numpy.zeros((self.__nChannels, self.__samples_to_read), dtype = numpy.complex)
328 331
329 332 self.__setFileHeader()
330 333 self.isConfig = True
331 334
332 335 print "[Reading] USRP Data was found from %s to %s " %(
333 336 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
334 337 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
335 338 )
336 339
337 340 print "[Reading] Starting process from ", datetime.datetime.utcfromtimestamp(startUTCSecond - self.__timezone), " to ", datetime.datetime.utcfromtimestamp(endUTCSecond - self.__timezone)
338 341
339 342 def __reload(self):
340 343
341 344 if not self.__online:
342 345 return
343 346
344 347 # print
345 348 # print "%s not in range [%s, %s]" %(
346 349 # datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
347 350 # datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
348 351 # datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
349 352 # )
350 353 print "[Reading] reloading metadata ..."
351 354
352 355 try:
353 356 self.digitalReadObj.reload(complete_update=True)
354 357 except:
355 358 self.digitalReadObj.reload()
356 359
357 360 start_index, end_index = self.digitalReadObj.get_bounds(self.__channelNameList[self.__channelList[0]])
358 361
359 362 if start_index > self.__startUTCSecond*self.__sample_rate:
360 363 self.__startUTCSecond = 1.0*start_index/self.__sample_rate
361 364
362 365 if end_index > self.__endUTCSecond*self.__sample_rate:
363 366 self.__endUTCSecond = 1.0*end_index/self.__sample_rate
364 367 print
365 368 print "[Reading] New timerange found [%s, %s] " %(
366 369 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
367 370 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
368 371 )
369 372
370 373 return True
371 374
372 375 return False
373 376
374 377 def __readNextBlock(self, seconds=30, volt_scale = 218776):
375 378 '''
376 379 '''
377 380
378 381 #Set the next data
379 382 self.__flagDiscontinuousBlock = False
380 383 self.__thisUnixSample += self.__samples_to_read
381 384
382 385 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
383 386 print "[Reading] There are no more data into selected timerange"
384 387
385 388 self.__reload()
386 389
387 390 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
388 391 self.__thisUnixSample -= self.__samples_to_read
389 392 return False
390 393
391 394 indexChannel = 0
392 395
393 396 dataOk = False
394 397
395 398 for thisChannelName in self.__channelNameList:
396 399
397 400 try:
398 401 result = self.digitalReadObj.read_vector_c81d(self.__thisUnixSample,
399 402 self.__samples_to_read,
400 403 thisChannelName)
401 404
402 405 except IOError, e:
403 406 #read next profile
404 407 self.__flagDiscontinuousBlock = True
405 408 print e
406 409 break
407 410
408 411 if result.shape[0] != self.__samples_to_read:
409 412 self.__flagDiscontinuousBlock = True
410 413 print "[Reading] %s: Too few samples were found, just %d samples" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
411 414 result.shape[0])
412 415 break
413 416
414 417 self.__data_buffer[indexChannel,:] = result*volt_scale
415 418
416 419 indexChannel += 1
417 420
418 421 dataOk = True
419 422
420 423 self.__utctime = self.__thisUnixSample/self.__sample_rate
421 424
422 425 if not dataOk:
423 426 return False
424 427
425 428 print "[Reading] %s: %d samples <> %f sec" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
426 429 self.__samples_to_read,
427 430 self.__timeInterval)
428 431
429 432 self.__bufferIndex = 0
430 433
431 434 return True
432 435
433 436 def __isBufferEmpty(self):
434 437
435 438 if self.__bufferIndex <= self.__samples_to_read - self.__nSamples:
436 439 return False
437 440
438 441 return True
439 442
440 443 def getData(self, seconds=30, nTries=5):
441 444
442 445 '''
443 446 This method gets the data from files and put the data into the dataOut object
444 447
445 448 In addition, increase el the buffer counter in one.
446 449
447 450 Return:
448 451 data : retorna un perfil de voltages (alturas * canales) copiados desde el
449 452 buffer. Si no hay mas archivos a leer retorna None.
450 453
451 454 Affected:
452 455 self.dataOut
453 456 self.profileIndex
454 457 self.flagDiscontinuousBlock
455 458 self.flagIsNewBlock
456 459 '''
457 460
458 461 err_counter = 0
459 462 self.dataOut.flagNoData = True
460 463
461 464 if self.__isBufferEmpty():
462 465
463 466 self.__flagDiscontinuousBlock = False
464 467
465 468 while True:
466 469 if self.__readNextBlock():
467 470 break
468 471
469 472 if self.__thisUnixSample > self.__endUTCSecond*self.__sample_rate:
470 473 return False
471 474
472 475 if self.__flagDiscontinuousBlock:
473 476 print '[Reading] discontinuous block found ... continue with the next block'
474 477 continue
475 478
476 479 if not self.__online:
477 480 return False
478 481
479 482 err_counter += 1
480 483 if err_counter > nTries:
481 484 return False
482 485
483 486 print '[Reading] waiting %d seconds to read a new block' %seconds
484 487 sleep(seconds)
485 488
486 489 self.dataOut.data = self.__data_buffer[:,self.__bufferIndex:self.__bufferIndex+self.__nSamples]
487 490 self.dataOut.utctime = (self.__thisUnixSample + self.__bufferIndex)/self.__sample_rate
488 491 self.dataOut.flagNoData = False
489 492 self.dataOut.flagDiscontinuousBlock = self.__flagDiscontinuousBlock
490 493
491 494 self.__bufferIndex += self.__nSamples
492 495 self.profileIndex += 1
493 496
494 497 return True
495 498
496 499 def printInfo(self):
497 500 '''
498 501 '''
499 502 if self.__printInfo == False:
500 503 return
501 504
502 505 # self.systemHeaderObj.printInfo()
503 506 # self.radarControllerHeaderObj.printInfo()
504 507
505 508 self.__printInfo = False
506 509
507 510 def printNumberOfBlock(self):
508 511 '''
509 512 '''
510 513
511 514 print self.profileIndex
512 515
513 516 def run(self, **kwargs):
514 517 '''
515 518 This method will be called many times so here you should put all your code
516 519 '''
517 520
518 521 if not self.isConfig:
519 522 self.setup(**kwargs)
520 523
521 524 self.getData(seconds=self.__delay)
522 525
523 526 return
524 527
525 528 class USRPWriter(Operation):
526 529 '''
527 530 classdocs
528 531 '''
529 532
530 533 def __init__(self):
531 534 '''
532 535 Constructor
533 536 '''
534 537 self.dataOut = None
535 538
536 539 def setup(self, dataIn, path, blocksPerFile, set=0, ext=None):
537 540 '''
538 541 In this method we should set all initial parameters.
539 542
540 543 Input:
541 544 dataIn : Input data will also be outputa data
542 545
543 546 '''
544 547 self.dataOut = dataIn
545 548
546 549
547 550
548 551
549 552
550 553 self.isConfig = True
551 554
552 555 return
553 556
554 557 def run(self, dataIn, **kwargs):
555 558 '''
556 559 This method will be called many times so here you should put all your code
557 560
558 561 Inputs:
559 562
560 563 dataIn : object with the data
561 564
562 565 '''
563 566
564 567 if not self.isConfig:
565 568 self.setup(dataIn, **kwargs)
566 569
567 570
568 571 if __name__ == '__main__':
569 572
570 573 readObj = USRPReader()
571 574
572 575 while True:
573 576 readObj.run(path='/Volumes/DATA/haystack/passive_radar/')
574 577 # readObj.printInfo()
575 578 readObj.printNumberOfBlock()
576 579
577 580 No newline at end of file
@@ -1,1043 +1,1051
1 1 import numpy
2 2
3 3 from jroproc_base import ProcessingUnit, Operation
4 4 from schainpy.model.data.jrodata import Voltage
5 5
6 6 class VoltageProc(ProcessingUnit):
7 7
8 8
9 9 def __init__(self):
10 10
11 11 ProcessingUnit.__init__(self)
12 12
13 13 # self.objectDict = {}
14 14 self.dataOut = Voltage()
15 15 self.flip = 1
16 16
17 17 def run(self):
18 18 if self.dataIn.type == 'AMISR':
19 19 self.__updateObjFromAmisrInput()
20 20
21 21 if self.dataIn.type == 'Voltage':
22 22 self.dataOut.copy(self.dataIn)
23 23
24 24 # self.dataOut.copy(self.dataIn)
25 25
26 26 def __updateObjFromAmisrInput(self):
27 27
28 28 self.dataOut.timeZone = self.dataIn.timeZone
29 29 self.dataOut.dstFlag = self.dataIn.dstFlag
30 30 self.dataOut.errorCount = self.dataIn.errorCount
31 31 self.dataOut.useLocalTime = self.dataIn.useLocalTime
32 32
33 33 self.dataOut.flagNoData = self.dataIn.flagNoData
34 34 self.dataOut.data = self.dataIn.data
35 35 self.dataOut.utctime = self.dataIn.utctime
36 36 self.dataOut.channelList = self.dataIn.channelList
37 37 # self.dataOut.timeInterval = self.dataIn.timeInterval
38 38 self.dataOut.heightList = self.dataIn.heightList
39 39 self.dataOut.nProfiles = self.dataIn.nProfiles
40 40
41 41 self.dataOut.nCohInt = self.dataIn.nCohInt
42 42 self.dataOut.ippSeconds = self.dataIn.ippSeconds
43 43 self.dataOut.frequency = self.dataIn.frequency
44 44
45 45 self.dataOut.azimuth = self.dataIn.azimuth
46 46 self.dataOut.zenith = self.dataIn.zenith
47 47
48 48 self.dataOut.beam.codeList = self.dataIn.beam.codeList
49 49 self.dataOut.beam.azimuthList = self.dataIn.beam.azimuthList
50 50 self.dataOut.beam.zenithList = self.dataIn.beam.zenithList
51 51 #
52 52 # pass#
53 53 #
54 54 # def init(self):
55 55 #
56 56 #
57 57 # if self.dataIn.type == 'AMISR':
58 58 # self.__updateObjFromAmisrInput()
59 59 #
60 60 # if self.dataIn.type == 'Voltage':
61 61 # self.dataOut.copy(self.dataIn)
62 62 # # No necesita copiar en cada init() los atributos de dataIn
63 63 # # la copia deberia hacerse por cada nuevo bloque de datos
64 64
65 65 def selectChannels(self, channelList):
66 66
67 67 channelIndexList = []
68 68
69 69 for channel in channelList:
70 70 if channel not in self.dataOut.channelList:
71 71 raise ValueError, "Channel %d is not in %s" %(channel, str(self.dataOut.channelList))
72 72
73 73 index = self.dataOut.channelList.index(channel)
74 74 channelIndexList.append(index)
75 75
76 76 self.selectChannelsByIndex(channelIndexList)
77 77
78 78 def selectChannelsByIndex(self, channelIndexList):
79 79 """
80 80 Selecciona un bloque de datos en base a canales segun el channelIndexList
81 81
82 82 Input:
83 83 channelIndexList : lista sencilla de canales a seleccionar por ej. [2,3,7]
84 84
85 85 Affected:
86 86 self.dataOut.data
87 87 self.dataOut.channelIndexList
88 88 self.dataOut.nChannels
89 89 self.dataOut.m_ProcessingHeader.totalSpectra
90 90 self.dataOut.systemHeaderObj.numChannels
91 91 self.dataOut.m_ProcessingHeader.blockSize
92 92
93 93 Return:
94 94 None
95 95 """
96 96
97 97 for channelIndex in channelIndexList:
98 98 if channelIndex not in self.dataOut.channelIndexList:
99 99 print channelIndexList
100 100 raise ValueError, "The value %d in channelIndexList is not valid" %channelIndex
101 101
102 102 # nChannels = len(channelIndexList)
103 103 if self.dataOut.flagDataAsBlock:
104 104 """
105 105 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
106 106 """
107 107 data = self.dataOut.data[channelIndexList,:,:]
108 108 else:
109 109 data = self.dataOut.data[channelIndexList,:]
110 110
111 111 self.dataOut.data = data
112 112 self.dataOut.channelList = [self.dataOut.channelList[i] for i in channelIndexList]
113 113 # self.dataOut.nChannels = nChannels
114 114
115 115 return 1
116 116
117 117 def selectHeights(self, minHei=None, maxHei=None):
118 118 """
119 119 Selecciona un bloque de datos en base a un grupo de valores de alturas segun el rango
120 120 minHei <= height <= maxHei
121 121
122 122 Input:
123 123 minHei : valor minimo de altura a considerar
124 124 maxHei : valor maximo de altura a considerar
125 125
126 126 Affected:
127 127 Indirectamente son cambiados varios valores a travez del metodo selectHeightsByIndex
128 128
129 129 Return:
130 130 1 si el metodo se ejecuto con exito caso contrario devuelve 0
131 131 """
132 132
133 133 if minHei == None:
134 134 minHei = self.dataOut.heightList[0]
135 135
136 136 if maxHei == None:
137 137 maxHei = self.dataOut.heightList[-1]
138 138
139 139 if (minHei < self.dataOut.heightList[0]) or (minHei > maxHei):
140 140 raise ValueError, "some value in (%d,%d) is not valid" % (minHei, maxHei)
141 141
142 142
143 143 if (maxHei > self.dataOut.heightList[-1]):
144 144 maxHei = self.dataOut.heightList[-1]
145 145 # raise ValueError, "some value in (%d,%d) is not valid" % (minHei, maxHei)
146 146
147 147 minIndex = 0
148 148 maxIndex = 0
149 149 heights = self.dataOut.heightList
150 150
151 151 inda = numpy.where(heights >= minHei)
152 152 indb = numpy.where(heights <= maxHei)
153 153
154 154 try:
155 155 minIndex = inda[0][0]
156 156 except:
157 157 minIndex = 0
158 158
159 159 try:
160 160 maxIndex = indb[0][-1]
161 161 except:
162 162 maxIndex = len(heights)
163 163
164 164 self.selectHeightsByIndex(minIndex, maxIndex)
165 165
166 166 return 1
167 167
168 168
169 169 def selectHeightsByIndex(self, minIndex, maxIndex):
170 170 """
171 171 Selecciona un bloque de datos en base a un grupo indices de alturas segun el rango
172 172 minIndex <= index <= maxIndex
173 173
174 174 Input:
175 175 minIndex : valor de indice minimo de altura a considerar
176 176 maxIndex : valor de indice maximo de altura a considerar
177 177
178 178 Affected:
179 179 self.dataOut.data
180 180 self.dataOut.heightList
181 181
182 182 Return:
183 183 1 si el metodo se ejecuto con exito caso contrario devuelve 0
184 184 """
185 185
186 186 if (minIndex < 0) or (minIndex > maxIndex):
187 187 raise ValueError, "some value in (%d,%d) is not valid" % (minIndex, maxIndex)
188 188
189 189 if (maxIndex >= self.dataOut.nHeights):
190 190 maxIndex = self.dataOut.nHeights
191 191 # raise ValueError, "some value in (%d,%d) is not valid" % (minIndex, maxIndex)
192 192
193 193 # nHeights = maxIndex - minIndex + 1
194 194
195 195 #voltage
196 196 if self.dataOut.flagDataAsBlock:
197 197 """
198 198 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
199 199 """
200 200 data = self.dataOut.data[:,minIndex:maxIndex,:]
201 201 else:
202 202 data = self.dataOut.data[:,minIndex:maxIndex]
203 203
204 204 # firstHeight = self.dataOut.heightList[minIndex]
205 205
206 206 self.dataOut.data = data
207 207 self.dataOut.heightList = self.dataOut.heightList[minIndex:maxIndex]
208 208
209 if self.dataOut.nHeights <= 1:
210 raise ValueError, "selectHeights: Too few heights. Current number of heights is %d" %(self.dataOut.nHeights)
211
209 212 return 1
210 213
211 214
212 215 def filterByHeights(self, window):
213 216
214 217 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
215 218
216 219 if window == None:
217 220 window = (self.dataOut.radarControllerHeaderObj.txA/self.dataOut.radarControllerHeaderObj.nBaud) / deltaHeight
218 221
219 222 newdelta = deltaHeight * window
220 223 r = self.dataOut.nHeights % window
224 newheights = (self.dataOut.nHeights-r)/window
225
226 if newheights <= 1:
227 raise ValueError, "filterByHeights: Too few heights. Current number of heights is %d and window is %d" %(self.dataOut.nHeights, window)
221 228
222 229 if self.dataOut.flagDataAsBlock:
223 230 """
224 231 Si la data es obtenida por bloques, dimension = [nChannels, nProfiles, nHeis]
225 232 """
226 233 buffer = self.dataOut.data[:, :, 0:self.dataOut.nHeights-r]
227 234 buffer = buffer.reshape(self.dataOut.nChannels,self.dataOut.nProfiles,self.dataOut.nHeights/window,window)
228 235 buffer = numpy.sum(buffer,3)
229 236
230 237 else:
231 238 buffer = self.dataOut.data[:,0:self.dataOut.nHeights-r]
232 239 buffer = buffer.reshape(self.dataOut.nChannels,self.dataOut.nHeights/window,window)
233 240 buffer = numpy.sum(buffer,2)
234 241
235 self.dataOut.data = buffer.copy()
236 self.dataOut.heightList = numpy.arange(self.dataOut.heightList[0],newdelta*(self.dataOut.nHeights-r)/window,newdelta)
242 self.dataOut.data = buffer
243 self.dataOut.heightList = self.dataOut.heightList[0] + numpy.arange( newheights )*newdelta
237 244 self.dataOut.windowOfFilter = window
238 245
239 246 def setH0(self, h0, deltaHeight = None):
240 247
241 248 if not deltaHeight:
242 249 deltaHeight = self.dataOut.heightList[1] - self.dataOut.heightList[0]
243 250
244 251 nHeights = self.dataOut.nHeights
245 252
246 253 newHeiRange = h0 + numpy.arange(nHeights)*deltaHeight
247 254
248 255 self.dataOut.heightList = newHeiRange
249 256
250 257 def deFlip(self, channelList = []):
251 258
252 259 data = self.dataOut.data.copy()
253 260
254 261 if self.dataOut.flagDataAsBlock:
255 262 flip = self.flip
256 263 profileList = range(self.dataOut.nProfiles)
257 264
258 265 if not channelList:
259 266 for thisProfile in profileList:
260 267 data[:,thisProfile,:] = data[:,thisProfile,:]*flip
261 268 flip *= -1.0
262 269 else:
263 270 for thisChannel in channelList:
264 271 if thisChannel not in self.dataOut.channelList:
265 272 continue
266 273
267 274 for thisProfile in profileList:
268 275 data[thisChannel,thisProfile,:] = data[thisChannel,thisProfile,:]*flip
269 276 flip *= -1.0
270 277
271 278 self.flip = flip
272 279
273 280 else:
274 281 if not channelList:
275 282 data[:,:] = data[:,:]*self.flip
276 283 else:
277 284 for thisChannel in channelList:
278 285 if thisChannel not in self.dataOut.channelList:
279 286 continue
280 287
281 288 data[thisChannel,:] = data[thisChannel,:]*self.flip
282 289
283 290 self.flip *= -1.
284 291
285 292 self.dataOut.data = data
286 293
287 294 def setRadarFrequency(self, frequency=None):
288 295
289 296 if frequency != None:
290 297 self.dataOut.frequency = frequency
291 298
292 299 return 1
293 300
294 301 class CohInt(Operation):
295 302
296 303 isConfig = False
297 304
298 305 __profIndex = 0
299 306 __withOverapping = False
300 307
301 308 __byTime = False
302 309 __initime = None
303 310 __lastdatatime = None
304 311 __integrationtime = None
305 312
306 313 __buffer = None
307 314
308 315 __dataReady = False
309 316
310 317 n = None
311 318
312 319
313 320 def __init__(self):
314 321
315 322 Operation.__init__(self)
316 323
317 324 # self.isConfig = False
318 325
319 326 def setup(self, n=None, timeInterval=None, overlapping=False, byblock=False):
320 327 """
321 328 Set the parameters of the integration class.
322 329
323 330 Inputs:
324 331
325 332 n : Number of coherent integrations
326 333 timeInterval : Time of integration. If the parameter "n" is selected this one does not work
327 334 overlapping :
328 335
329 336 """
330 337
331 338 self.__initime = None
332 339 self.__lastdatatime = 0
333 340 self.__buffer = None
334 341 self.__dataReady = False
335 342 self.byblock = byblock
336 343
337 344 if n == None and timeInterval == None:
338 345 raise ValueError, "n or timeInterval should be specified ..."
339 346
340 347 if n != None:
341 348 self.n = n
342 349 self.__byTime = False
343 350 else:
344 351 self.__integrationtime = timeInterval #* 60. #if (type(timeInterval)!=integer) -> change this line
345 352 self.n = 9999
346 353 self.__byTime = True
347 354
348 355 if overlapping:
349 356 self.__withOverapping = True
350 357 self.__buffer = None
351 358 else:
352 359 self.__withOverapping = False
353 360 self.__buffer = 0
354 361
355 362 self.__profIndex = 0
356 363
357 364 def putData(self, data):
358 365
359 366 """
360 367 Add a profile to the __buffer and increase in one the __profileIndex
361 368
362 369 """
363 370
364 371 if not self.__withOverapping:
365 372 self.__buffer += data.copy()
366 373 self.__profIndex += 1
367 374 return
368 375
369 376 #Overlapping data
370 377 nChannels, nHeis = data.shape
371 378 data = numpy.reshape(data, (1, nChannels, nHeis))
372 379
373 380 #If the buffer is empty then it takes the data value
374 381 if self.__buffer == None:
375 382 self.__buffer = data
376 383 self.__profIndex += 1
377 384 return
378 385
379 386 #If the buffer length is lower than n then stakcing the data value
380 387 if self.__profIndex < self.n:
381 388 self.__buffer = numpy.vstack((self.__buffer, data))
382 389 self.__profIndex += 1
383 390 return
384 391
385 392 #If the buffer length is equal to n then replacing the last buffer value with the data value
386 393 self.__buffer = numpy.roll(self.__buffer, -1, axis=0)
387 394 self.__buffer[self.n-1] = data
388 395 self.__profIndex = self.n
389 396 return
390 397
391 398
392 399 def pushData(self):
393 400 """
394 401 Return the sum of the last profiles and the profiles used in the sum.
395 402
396 403 Affected:
397 404
398 405 self.__profileIndex
399 406
400 407 """
401 408
402 409 if not self.__withOverapping:
403 410 data = self.__buffer
404 411 n = self.__profIndex
405 412
406 413 self.__buffer = 0
407 414 self.__profIndex = 0
408 415
409 416 return data, n
410 417
411 418 #Integration with Overlapping
412 419 data = numpy.sum(self.__buffer, axis=0)
413 420 n = self.__profIndex
414 421
415 422 return data, n
416 423
417 424 def byProfiles(self, data):
418 425
419 426 self.__dataReady = False
420 427 avgdata = None
421 428 # n = None
422 429
423 430 self.putData(data)
424 431
425 432 if self.__profIndex == self.n:
426 433
427 434 avgdata, n = self.pushData()
428 435 self.__dataReady = True
429 436
430 437 return avgdata
431 438
432 439 def byTime(self, data, datatime):
433 440
434 441 self.__dataReady = False
435 442 avgdata = None
436 443 n = None
437 444
438 445 self.putData(data)
439 446
440 447 if (datatime - self.__initime) >= self.__integrationtime:
441 448 avgdata, n = self.pushData()
442 449 self.n = n
443 450 self.__dataReady = True
444 451
445 452 return avgdata
446 453
447 454 def integrate(self, data, datatime=None):
448 455
449 456 if self.__initime == None:
450 457 self.__initime = datatime
451 458
452 459 if self.__byTime:
453 460 avgdata = self.byTime(data, datatime)
454 461 else:
455 462 avgdata = self.byProfiles(data)
456 463
457 464
458 465 self.__lastdatatime = datatime
459 466
460 467 if avgdata == None:
461 468 return None, None
462 469
463 470 avgdatatime = self.__initime
464 471
465 472 deltatime = datatime -self.__lastdatatime
466 473
467 474 if not self.__withOverapping:
468 475 self.__initime = datatime
469 476 else:
470 477 self.__initime += deltatime
471 478
472 479 return avgdata, avgdatatime
473 480
474 481 def integrateByBlock(self, dataOut):
475 482
476 483 times = int(dataOut.data.shape[1]/self.n)
477 484 avgdata = numpy.zeros((dataOut.nChannels, times, dataOut.nHeights), dtype=numpy.complex)
478 485
479 486 id_min = 0
480 487 id_max = self.n
481 488
482 489 for i in range(times):
483 490 junk = dataOut.data[:,id_min:id_max,:]
484 491 avgdata[:,i,:] = junk.sum(axis=1)
485 492 id_min += self.n
486 493 id_max += self.n
487 494
488 495 timeInterval = dataOut.ippSeconds*self.n
489 496 avgdatatime = (times - 1) * timeInterval + dataOut.utctime
490 497 self.__dataReady = True
491 498 return avgdata, avgdatatime
492 499
493 500 def run(self, dataOut, **kwargs):
494 501
495 502 if not self.isConfig:
496 503 self.setup(**kwargs)
497 504 self.isConfig = True
498 505
499 506 if dataOut.flagDataAsBlock:
500 507 """
501 508 Si la data es leida por bloques, dimension = [nChannels, nProfiles, nHeis]
502 509 """
503 510 avgdata, avgdatatime = self.integrateByBlock(dataOut)
504 511 else:
505 512 avgdata, avgdatatime = self.integrate(dataOut.data, dataOut.utctime)
506 513
507 514 # dataOut.timeInterval *= n
508 515 dataOut.flagNoData = True
509 516
510 517 if self.__dataReady:
511 518 dataOut.data = avgdata
512 519 dataOut.nCohInt *= self.n
513 520 dataOut.utctime = avgdatatime
514 521 # dataOut.timeInterval = dataOut.ippSeconds * dataOut.nCohInt
515 522 dataOut.flagNoData = False
516 523
517 524 class Decoder(Operation):
518 525
519 526 isConfig = False
520 527 __profIndex = 0
521 528
522 529 code = None
523 530
524 531 nCode = None
525 532 nBaud = None
526 533
527 534
528 535 def __init__(self):
529 536
530 537 Operation.__init__(self)
531 538
532 539 self.times = None
533 540 self.osamp = None
534 541 # self.__setValues = False
535 542 self.isConfig = False
536 543
537 544 def setup(self, code, osamp, dataOut):
538 545
539 546 self.__profIndex = 0
540 547
541 548 self.code = code
542 549
543 550 self.nCode = len(code)
544 551 self.nBaud = len(code[0])
545 552
546 553 if (osamp != None) and (osamp >1):
547 554 self.osamp = osamp
548 555 self.code = numpy.repeat(code, repeats=self.osamp, axis=1)
549 556 self.nBaud = self.nBaud*self.osamp
550 557
551 558 self.__nChannels = dataOut.nChannels
552 559 self.__nProfiles = dataOut.nProfiles
553 560 self.__nHeis = dataOut.nHeights
554 561
555 562 if dataOut.flagDataAsBlock:
556 563
557 564 self.ndatadec = self.__nHeis #- self.nBaud + 1
558 565
559 566 self.datadecTime = numpy.zeros((self.__nChannels, self.__nProfiles, self.ndatadec), dtype=numpy.complex)
560 567
561 568 else:
562 569
563 570 __codeBuffer = numpy.zeros((self.nCode, self.__nHeis), dtype=numpy.complex)
564 571
565 572 __codeBuffer[:,0:self.nBaud] = self.code
566 573
567 574 self.fft_code = numpy.conj(numpy.fft.fft(__codeBuffer, axis=1))
568 575
569 576 self.ndatadec = self.__nHeis #- self.nBaud + 1
570 577
571 578 self.datadecTime = numpy.zeros((self.__nChannels, self.ndatadec), dtype=numpy.complex)
572 579
573 580 def convolutionInFreq(self, data):
574 581
575 582 fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
576 583
577 584 fft_data = numpy.fft.fft(data, axis=1)
578 585
579 586 conv = fft_data*fft_code
580 587
581 588 data = numpy.fft.ifft(conv,axis=1)
582 589
583 590 datadec = data#[:,:]
584 591
585 592 return datadec
586 593
587 594 def convolutionInFreqOpt(self, data):
588 595
589 596 raise NotImplementedError
590 597
591 598 # fft_code = self.fft_code[self.__profIndex].reshape(1,-1)
592 599 #
593 600 # data = cfunctions.decoder(fft_code, data)
594 601 #
595 602 # datadec = data#[:,:]
596 603 #
597 604 # return datadec
598 605
599 606 def convolutionInTime(self, data):
600 607
601 608 code = self.code[self.__profIndex]
602 609
603 610 for i in range(self.__nChannels):
604 611 self.datadecTime[i,:] = numpy.correlate(data[i,:], code, mode='same')
605 612
606 613 return self.datadecTime
607 614
608 615 def convolutionByBlockInTime(self, data):
609 616
610 617 repetitions = self.__nProfiles / self.nCode
611 618
612 619 junk = numpy.lib.stride_tricks.as_strided(self.code, (repetitions, self.code.size), (0, self.code.itemsize))
613 620 junk = junk.flatten()
614 621 code_block = numpy.reshape(junk, (self.nCode*repetitions, self.nBaud))
615 622
616 623 for i in range(self.__nChannels):
617 624 for j in range(self.__nProfiles):
618 625 self.datadecTime[i,j,:] = numpy.correlate(data[i,j,:], code_block[j,:], mode='same')
619 626
620 627 return self.datadecTime
621 628
622 def run(self, dataOut, code=None, nCode=None, nBaud=None, mode = 0, times=None, osamp=None):
629 def run(self, dataOut, code=None, nCode=None, nBaud=None, mode = 0, osamp=None):
623 630
624 631 if not self.isConfig:
625 632
626 633 if code == None:
627 634 code = dataOut.code
628 635 else:
629 636 code = numpy.array(code).reshape(nCode,nBaud)
630 637
631 638 self.setup(code, osamp, dataOut)
632 639
633 640 self.isConfig = True
634 641
635 642 if dataOut.flagDataAsBlock:
636 643 """
637 644 Decoding when data have been read as block,
638 645 """
639 646 datadec = self.convolutionByBlockInTime(dataOut.data)
640 647
641 648 else:
642 649 """
643 650 Decoding when data have been read profile by profile
644 651 """
645 652 if mode == 0:
646 653 datadec = self.convolutionInTime(dataOut.data)
647 654
648 655 if mode == 1:
649 656 datadec = self.convolutionInFreq(dataOut.data)
650 657
651 658 if mode == 2:
652 659 datadec = self.convolutionInFreqOpt(dataOut.data)
653 660
654 661 dataOut.code = self.code
655 662 dataOut.nCode = self.nCode
656 663 dataOut.nBaud = self.nBaud
657 dataOut.radarControllerHeaderObj.code = self.code
658 dataOut.radarControllerHeaderObj.nCode = self.nCode
659 dataOut.radarControllerHeaderObj.nBaud = self.nBaud
660 664
661 665 dataOut.data = datadec
662 666
663 667 dataOut.heightList = dataOut.heightList[0:self.ndatadec]
664 668
665 669 dataOut.flagDecodeData = True #asumo q la data esta decodificada
666 670
667 671 if self.__profIndex == self.nCode-1:
668 672 self.__profIndex = 0
669 673 return 1
670 674
671 675 self.__profIndex += 1
672 676
673 677 return 1
674 678 # dataOut.flagDeflipData = True #asumo q la data no esta sin flip
675 679
676 680
677 681 class ProfileConcat(Operation):
678 682
679 683 isConfig = False
680 684 buffer = None
681 685
682 686 def __init__(self):
683 687
684 688 Operation.__init__(self)
685 689 self.profileIndex = 0
686 690
687 691 def reset(self):
688 692 self.buffer = numpy.zeros_like(self.buffer)
689 693 self.start_index = 0
690 694 self.times = 1
691 695
692 696 def setup(self, data, m, n=1):
693 697 self.buffer = numpy.zeros((data.shape[0],data.shape[1]*m),dtype=type(data[0,0]))
694 698 self.nHeights = data.nHeights
695 699 self.start_index = 0
696 700 self.times = 1
697 701
698 702 def concat(self, data):
699 703
700 704 self.buffer[:,self.start_index:self.profiles*self.times] = data.copy()
701 705 self.start_index = self.start_index + self.nHeights
702 706
703 707 def run(self, dataOut, m):
704 708
705 709 dataOut.flagNoData = True
706 710
707 711 if not self.isConfig:
708 712 self.setup(dataOut.data, m, 1)
709 713 self.isConfig = True
710 714
711 715 if dataOut.flagDataAsBlock:
712 716
713 717 raise ValueError, "ProfileConcat can only be used when voltage have been read profile by profile, getBlock = False"
714 718
715 719 else:
716 720 self.concat(dataOut.data)
717 721 self.times += 1
718 722 if self.times > m:
719 723 dataOut.data = self.buffer
720 724 self.reset()
721 725 dataOut.flagNoData = False
722 726 # se deben actualizar mas propiedades del header y del objeto dataOut, por ejemplo, las alturas
723 727 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
724 728 xf = dataOut.heightList[0] + dataOut.nHeights * deltaHeight * m
725 729 dataOut.heightList = numpy.arange(dataOut.heightList[0], xf, deltaHeight)
726 730 dataOut.ippSeconds *= m
727 731
728 732 class ProfileSelector(Operation):
729 733
730 734 profileIndex = None
731 735 # Tamanho total de los perfiles
732 736 nProfiles = None
733 737
734 738 def __init__(self):
735 739
736 740 Operation.__init__(self)
737 741 self.profileIndex = 0
738 742
739 743 def incIndex(self):
740 744
741 745 self.profileIndex += 1
742 746
743 747 if self.profileIndex >= self.nProfiles:
744 748 self.profileIndex = 0
745 749
746 750 def isThisProfileInRange(self, profileIndex, minIndex, maxIndex):
747 751
748 752 if profileIndex < minIndex:
749 753 return False
750 754
751 755 if profileIndex > maxIndex:
752 756 return False
753 757
754 758 return True
755 759
756 760 def isThisProfileInList(self, profileIndex, profileList):
757 761
758 762 if profileIndex not in profileList:
759 763 return False
760 764
761 765 return True
762 766
763 767 def run(self, dataOut, profileList=None, profileRangeList=None, beam=None, byblock=False, rangeList = None):
764 768
765 769 """
766 770 ProfileSelector:
767 771
768 772 Inputs:
769 773 profileList : Index of profiles selected. Example: profileList = (0,1,2,7,8)
770 774
771 775 profileRangeList : Minimum and maximum profile indexes. Example: profileRangeList = (4, 30)
772 776
773 777 rangeList : List of profile ranges. Example: rangeList = ((4, 30), (32, 64), (128, 256))
774 778
775 779 """
776 780
777 781 dataOut.flagNoData = True
778 782 self.nProfiles = dataOut.nProfiles
779 783
780 784 if dataOut.flagDataAsBlock:
781 785 """
782 786 data dimension = [nChannels, nProfiles, nHeis]
783 787 """
784 788 if profileList != None:
785 789 dataOut.data = dataOut.data[:,profileList,:]
786 790 dataOut.nProfiles = len(profileList)
787 791 dataOut.profileIndex = dataOut.nProfiles - 1
788 else:
792
793 if profileRangeList != None:
789 794 minIndex = profileRangeList[0]
790 795 maxIndex = profileRangeList[1]
791 796
792 797 dataOut.data = dataOut.data[:,minIndex:maxIndex+1,:]
793 798 dataOut.nProfiles = maxIndex - minIndex + 1
794 799 dataOut.profileIndex = dataOut.nProfiles - 1
795 800
801 if rangeList != None:
802 raise ValueError, "Profile Selector: Not implemented for rangeList yet"
803
796 804 dataOut.flagNoData = False
797 805
798 806 return True
799 807
800 808 else:
801 809 """
802 810 data dimension = [nChannels, nHeis]
803 811
804 812 """
805 813 if profileList != None:
806 814
807 815 dataOut.nProfiles = len(profileList)
808 816
809 817 if self.isThisProfileInList(dataOut.profileIndex, profileList):
810 818 dataOut.flagNoData = False
811 819 dataOut.profileIndex = self.profileIndex
812 820
813 821 self.incIndex()
814 822 return True
815 823
816 824
817 825 if profileRangeList != None:
818 826
819 827 minIndex = profileRangeList[0]
820 828 maxIndex = profileRangeList[1]
821 829
822 830 dataOut.nProfiles = maxIndex - minIndex + 1
823 831
824 832 if self.isThisProfileInRange(dataOut.profileIndex, minIndex, maxIndex):
825 833 dataOut.flagNoData = False
826 834 dataOut.profileIndex = self.profileIndex
827 835
828 836 self.incIndex()
829 837 return True
830 838
831 839 if rangeList != None:
832 840
833 841 nProfiles = 0
834 842
835 843 for thisRange in rangeList:
836 844 minIndex = thisRange[0]
837 845 maxIndex = thisRange[1]
838 846
839 847 nProfiles += maxIndex - minIndex + 1
840 848
841 849 dataOut.nProfiles = nProfiles
842 850
843 851 for thisRange in rangeList:
844 852
845 853 minIndex = thisRange[0]
846 854 maxIndex = thisRange[1]
847 855
848 856 if self.isThisProfileInRange(dataOut.profileIndex, minIndex, maxIndex):
849 857
850 858 # print "profileIndex = ", dataOut.profileIndex
851 859
852 860 dataOut.flagNoData = False
853 861 dataOut.profileIndex = self.profileIndex
854 862
855 863 self.incIndex()
856 864 break
857 865 return True
858 866
859 867
860 868 if beam != None: #beam is only for AMISR data
861 869 if self.isThisProfileInList(dataOut.profileIndex, dataOut.beamRangeDict[beam]):
862 870 dataOut.flagNoData = False
863 871 dataOut.profileIndex = self.profileIndex
864 872
865 873 self.incIndex()
866 874 return 1
867 875
868 raise ValueError, "ProfileSelector needs profileList or profileRangeList"
876 raise ValueError, "ProfileSelector needs profileList, profileRangeList or rangeList parameter"
869 877
870 878 return 0
871 879
872 880
873 881
874 882 class Reshaper(Operation):
875 883
876 884 def __init__(self):
877 885
878 886 Operation.__init__(self)
879 887 self.updateNewHeights = True
880 888
881 889 def run(self, dataOut, shape):
882 890
883 891 if not dataOut.flagDataAsBlock:
884 892 raise ValueError, "Reshaper can only be used when voltage have been read as Block, getBlock = True"
885 893
886 894 if len(shape) != 3:
887 895 raise ValueError, "shape len should be equal to 3, (nChannels, nProfiles, nHeis)"
888 896
889 897 shape_tuple = tuple(shape)
890 898 dataOut.data = numpy.reshape(dataOut.data, shape_tuple)
891 899 dataOut.flagNoData = False
892 900
893 901 if self.updateNewHeights:
894 902
895 903 old_nheights = dataOut.nHeights
896 904 new_nheights = dataOut.data.shape[2]
897 905 factor = 1.0*new_nheights / old_nheights
898 906
899 907 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
900 908
901 909 xf = dataOut.heightList[0] + dataOut.nHeights * deltaHeight * factor
902 910
903 911 dataOut.heightList = numpy.arange(dataOut.heightList[0], xf, deltaHeight)
904 912
905 913 dataOut.nProfiles = dataOut.data.shape[1]
906 914
907 915 dataOut.ippSeconds *= factor
908 916
909 917 import collections
910 918 from scipy.stats import mode
911 919
912 920 class Synchronize(Operation):
913 921
914 922 isConfig = False
915 923 __profIndex = 0
916 924
917 925 def __init__(self):
918 926
919 927 Operation.__init__(self)
920 928 # self.isConfig = False
921 929 self.__powBuffer = None
922 930 self.__startIndex = 0
923 931 self.__pulseFound = False
924 932
925 933 def __findTxPulse(self, dataOut, channel=0, pulse_with = None):
926 934
927 935 #Read data
928 936
929 937 powerdB = dataOut.getPower(channel = channel)
930 938 noisedB = dataOut.getNoise(channel = channel)[0]
931 939
932 940 self.__powBuffer.extend(powerdB.flatten())
933 941
934 942 dataArray = numpy.array(self.__powBuffer)
935 943
936 944 filteredPower = numpy.correlate(dataArray, dataArray[0:self.__nSamples], "same")
937 945
938 946 maxValue = numpy.nanmax(filteredPower)
939 947
940 948 if maxValue < noisedB + 10:
941 949 #No se encuentra ningun pulso de transmision
942 950 return None
943 951
944 952 maxValuesIndex = numpy.where(filteredPower > maxValue - 0.1*abs(maxValue))[0]
945 953
946 954 if len(maxValuesIndex) < 2:
947 955 #Solo se encontro un solo pulso de transmision de un baudio, esperando por el siguiente TX
948 956 return None
949 957
950 958 phasedMaxValuesIndex = maxValuesIndex - self.__nSamples
951 959
952 960 #Seleccionar solo valores con un espaciamiento de nSamples
953 961 pulseIndex = numpy.intersect1d(maxValuesIndex, phasedMaxValuesIndex)
954 962
955 963 if len(pulseIndex) < 2:
956 964 #Solo se encontro un pulso de transmision con ancho mayor a 1
957 965 return None
958 966
959 967 spacing = pulseIndex[1:] - pulseIndex[:-1]
960 968
961 969 #remover senales que se distancien menos de 10 unidades o muestras
962 970 #(No deberian existir IPP menor a 10 unidades)
963 971
964 972 realIndex = numpy.where(spacing > 10 )[0]
965 973
966 974 if len(realIndex) < 2:
967 975 #Solo se encontro un pulso de transmision con ancho mayor a 1
968 976 return None
969 977
970 978 #Eliminar pulsos anchos (deja solo la diferencia entre IPPs)
971 979 realPulseIndex = pulseIndex[realIndex]
972 980
973 981 period = mode(realPulseIndex[1:] - realPulseIndex[:-1])[0][0]
974 982
975 983 print "IPP = %d samples" %period
976 984
977 985 self.__newNSamples = dataOut.nHeights #int(period)
978 986 self.__startIndex = int(realPulseIndex[0])
979 987
980 988 return 1
981 989
982 990
983 991 def setup(self, nSamples, nChannels, buffer_size = 4):
984 992
985 993 self.__powBuffer = collections.deque(numpy.zeros( buffer_size*nSamples,dtype=numpy.float),
986 994 maxlen = buffer_size*nSamples)
987 995
988 996 bufferList = []
989 997
990 998 for i in range(nChannels):
991 999 bufferByChannel = collections.deque(numpy.zeros( buffer_size*nSamples, dtype=numpy.complex) + numpy.NAN,
992 1000 maxlen = buffer_size*nSamples)
993 1001
994 1002 bufferList.append(bufferByChannel)
995 1003
996 1004 self.__nSamples = nSamples
997 1005 self.__nChannels = nChannels
998 1006 self.__bufferList = bufferList
999 1007
1000 1008 def run(self, dataOut, channel = 0):
1001 1009
1002 1010 if not self.isConfig:
1003 1011 nSamples = dataOut.nHeights
1004 1012 nChannels = dataOut.nChannels
1005 1013 self.setup(nSamples, nChannels)
1006 1014 self.isConfig = True
1007 1015
1008 1016 #Append new data to internal buffer
1009 1017 for thisChannel in range(self.__nChannels):
1010 1018 bufferByChannel = self.__bufferList[thisChannel]
1011 1019 bufferByChannel.extend(dataOut.data[thisChannel])
1012 1020
1013 1021 if self.__pulseFound:
1014 1022 self.__startIndex -= self.__nSamples
1015 1023
1016 1024 #Finding Tx Pulse
1017 1025 if not self.__pulseFound:
1018 1026 indexFound = self.__findTxPulse(dataOut, channel)
1019 1027
1020 1028 if indexFound == None:
1021 1029 dataOut.flagNoData = True
1022 1030 return
1023 1031
1024 1032 self.__arrayBuffer = numpy.zeros((self.__nChannels, self.__newNSamples), dtype = numpy.complex)
1025 1033 self.__pulseFound = True
1026 1034 self.__startIndex = indexFound
1027 1035
1028 1036 #If pulse was found ...
1029 1037 for thisChannel in range(self.__nChannels):
1030 1038 bufferByChannel = self.__bufferList[thisChannel]
1031 1039 #print self.__startIndex
1032 1040 x = numpy.array(bufferByChannel)
1033 1041 self.__arrayBuffer[thisChannel] = x[self.__startIndex:self.__startIndex+self.__newNSamples]
1034 1042
1035 1043 deltaHeight = dataOut.heightList[1] - dataOut.heightList[0]
1036 1044 dataOut.heightList = numpy.arange(self.__newNSamples)*deltaHeight
1037 1045 # dataOut.ippSeconds = (self.__newNSamples / deltaHeight)/1e6
1038 1046
1039 1047 dataOut.data = self.__arrayBuffer
1040 1048
1041 1049 self.__startIndex += self.__newNSamples
1042 1050
1043 1051 return No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now