##// END OF EJS Templates
Bugs fixed: Error selecting FTP parameters in Signal Chain GUI
Miguel Valdez -
r606:ed924449cee7
parent child
Show More
@@ -1,1194 +1,1209
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 value = self.value
48 48 format = self.format
49 49
50 50 if self.__formated_value != None:
51 51
52 52 return self.__formated_value
53 53
54 54 if format == 'str':
55 55 self.__formated_value = str(value)
56 56 return self.__formated_value
57 57
58 58 if value == '':
59 59 raise ValueError, "%s: This parameter value is empty" %self.name
60 60
61 61 if format == 'bool':
62 62 value = int(value)
63 63
64 64 if format == 'list':
65 65 strList = value.split(',')
66 66
67 67 self.__formated_value = strList
68 68
69 69 return self.__formated_value
70 70
71 71 if format == 'intlist':
72 72 """
73 73 Example:
74 74 value = (0,1,2)
75 75 """
76 76 value = value.replace('(', '')
77 77 value = value.replace(')', '')
78 78
79 79 value = value.replace('[', '')
80 80 value = value.replace(']', '')
81 81
82 82 strList = value.split(',')
83 83 intList = [int(x) for x in strList]
84 84
85 85 self.__formated_value = intList
86 86
87 87 return self.__formated_value
88 88
89 89 if format == 'floatlist':
90 90 """
91 91 Example:
92 92 value = (0.5, 1.4, 2.7)
93 93 """
94 94
95 95 value = value.replace('(', '')
96 96 value = value.replace(')', '')
97 97
98 98 value = value.replace('[', '')
99 99 value = value.replace(']', '')
100 100
101 101 strList = value.split(',')
102 102 floatList = [float(x) for x in strList]
103 103
104 104 self.__formated_value = floatList
105 105
106 106 return self.__formated_value
107 107
108 108 if format == 'date':
109 109 strList = value.split('/')
110 110 intList = [int(x) for x in strList]
111 111 date = datetime.date(intList[0], intList[1], intList[2])
112 112
113 113 self.__formated_value = date
114 114
115 115 return self.__formated_value
116 116
117 117 if format == 'time':
118 118 strList = value.split(':')
119 119 intList = [int(x) for x in strList]
120 120 time = datetime.time(intList[0], intList[1], intList[2])
121 121
122 122 self.__formated_value = time
123 123
124 124 return self.__formated_value
125 125
126 126 if format == 'pairslist':
127 127 """
128 128 Example:
129 129 value = (0,1),(1,2)
130 130 """
131 131
132 132 value = value.replace('(', '')
133 133 value = value.replace(')', '')
134 134
135 135 value = value.replace('[', '')
136 136 value = value.replace(']', '')
137 137
138 138 strList = value.split(',')
139 139 intList = [int(item) for item in strList]
140 140 pairList = []
141 141 for i in range(len(intList)/2):
142 142 pairList.append((intList[i*2], intList[i*2 + 1]))
143 143
144 144 self.__formated_value = pairList
145 145
146 146 return self.__formated_value
147 147
148 148 if format == 'multilist':
149 149 """
150 150 Example:
151 151 value = (0,1,2),(3,4,5)
152 152 """
153 153 multiList = ast.literal_eval(value)
154 154
155 155 if type(multiList[0]) == int:
156 156 multiList = ast.literal_eval("(" + value + ")")
157 157
158 158 self.__formated_value = multiList
159 159
160 160 return self.__formated_value
161 161
162 162 format_func = eval(format)
163 163
164 164 self.__formated_value = format_func(value)
165 165
166 166 return self.__formated_value
167 167
168 168 def updateId(self, new_id):
169 169
170 170 self.id = str(new_id)
171 171
172 172 def setup(self, id, name, value, format='str'):
173 173
174 174 self.id = str(id)
175 175 self.name = name
176 176 self.value = str(value)
177 177 self.format = str.lower(format)
178 178
179 179 def update(self, name, value, format='str'):
180 180
181 181 self.name = name
182 182 self.value = str(value)
183 183 self.format = format
184 184
185 185 def makeXml(self, opElement):
186 186
187 187 parmElement = SubElement(opElement, self.ELEMENTNAME)
188 188 parmElement.set('id', str(self.id))
189 189 parmElement.set('name', self.name)
190 190 parmElement.set('value', self.value)
191 191 parmElement.set('format', self.format)
192 192
193 193 def readXml(self, parmElement):
194 194
195 195 self.id = parmElement.get('id')
196 196 self.name = parmElement.get('name')
197 197 self.value = parmElement.get('value')
198 198 self.format = str.lower(parmElement.get('format'))
199 199
200 200 #Compatible with old signal chain version
201 201 if self.format == 'int' and self.name == 'idfigure':
202 202 self.name = 'id'
203 203
204 204 def printattr(self):
205 205
206 206 print "Parameter[%s]: name = %s, value = %s, format = %s" %(self.id, self.name, self.value, self.format)
207 207
208 208 class OperationConf():
209 209
210 210 id = None
211 211 name = None
212 212 priority = None
213 213 type = None
214 214
215 215 parmConfObjList = []
216 216
217 217 ELEMENTNAME = 'Operation'
218 218
219 219 def __init__(self):
220 220
221 221 self.id = '0'
222 222 self.name = None
223 223 self.priority = None
224 224 self.type = 'self'
225 225
226 226
227 227 def __getNewId(self):
228 228
229 229 return int(self.id)*10 + len(self.parmConfObjList) + 1
230 230
231 231 def updateId(self, new_id):
232 232
233 233 self.id = str(new_id)
234 234
235 235 n = 1
236 236 for parmObj in self.parmConfObjList:
237 237
238 238 idParm = str(int(new_id)*10 + n)
239 239 parmObj.updateId(idParm)
240 240
241 241 n += 1
242 242
243 243 def getElementName(self):
244 244
245 245 return self.ELEMENTNAME
246 246
247 247 def getParameterObjList(self):
248 248
249 249 return self.parmConfObjList
250 250
251 251 def getParameterObj(self, parameterName):
252 252
253 253 for parmConfObj in self.parmConfObjList:
254 254
255 255 if parmConfObj.name != parameterName:
256 256 continue
257 257
258 258 return parmConfObj
259 259
260 260 return None
261 261
262 def getParameterObjfromValue(self,parameterValue):
262 def getParameterObjfromValue(self, parameterValue):
263
263 264 for parmConfObj in self.parmConfObjList:
264 265
265 266 if parmConfObj.getValue() != parameterValue:
266 267 continue
267 268
268 269 return parmConfObj.getValue()
269 270
270 271 return None
271 272
272 273 def getParameterValue(self, parameterName):
273 274
274 275 parameterObj = self.getParameterObj(parameterName)
276
277 if not parameterObj:
278 return None
279
275 280 value = parameterObj.getValue()
276 281
277 282 return value
278 283
279 284 def setup(self, id, name, priority, type):
280 285
281 286 self.id = str(id)
282 287 self.name = name
283 288 self.type = type
284 289 self.priority = priority
285 290
286 291 self.parmConfObjList = []
287 292
288 293 def removeParameters(self):
289 294
290 295 for obj in self.parmConfObjList:
291 296 del obj
292 297
293 298 self.parmConfObjList = []
294 299
295 300 def addParameter(self, name, value, format='str'):
296 301
297 302 id = self.__getNewId()
298 303
299 304 parmConfObj = ParameterConf()
300 305 parmConfObj.setup(id, name, value, format)
301 306
302 307 self.parmConfObjList.append(parmConfObj)
303 308
304 309 return parmConfObj
305 310
306 311 def changeParameter(self, name, value, format='str'):
307 312
308 313 parmConfObj = self.getParameterObj(name)
309 314 parmConfObj.update(name, value, format)
310 315
311 316 return parmConfObj
312 317
313 318 def makeXml(self, upElement):
314 319
315 320 opElement = SubElement(upElement, self.ELEMENTNAME)
316 321 opElement.set('id', str(self.id))
317 322 opElement.set('name', self.name)
318 323 opElement.set('type', self.type)
319 324 opElement.set('priority', str(self.priority))
320 325
321 326 for parmConfObj in self.parmConfObjList:
322 327 parmConfObj.makeXml(opElement)
323 328
324 329 def readXml(self, opElement):
325 330
326 331 self.id = opElement.get('id')
327 332 self.name = opElement.get('name')
328 333 self.type = opElement.get('type')
329 334 self.priority = opElement.get('priority')
330 335
331 336 #Compatible with old signal chain version
332 337 #Use of 'run' method instead 'init'
333 338 if self.type == 'self' and self.name == 'init':
334 339 self.name = 'run'
335 340
336 341 self.parmConfObjList = []
337 342
338 343 parmElementList = opElement.getiterator(ParameterConf().getElementName())
339 344
340 345 for parmElement in parmElementList:
341 346 parmConfObj = ParameterConf()
342 347 parmConfObj.readXml(parmElement)
343 348
344 349 #Compatible with old signal chain version
345 350 #If an 'plot' OPERATION is found, changes name operation by the value of its type PARAMETER
346 351 if self.type != 'self' and self.name == 'Plot':
347 352 if parmConfObj.format == 'str' and parmConfObj.name == 'type':
348 353 self.name = parmConfObj.value
349 354 continue
350 355
351 356 self.parmConfObjList.append(parmConfObj)
352 357
353 358 def printattr(self):
354 359
355 360 print "%s[%s]: name = %s, type = %s, priority = %s" %(self.ELEMENTNAME,
356 361 self.id,
357 362 self.name,
358 363 self.type,
359 364 self.priority)
360 365
361 366 for parmConfObj in self.parmConfObjList:
362 367 parmConfObj.printattr()
363 368
364 369 def createObject(self):
365 370
366 371 if self.type == 'self':
367 372 raise ValueError, "This operation type cannot be created"
368 373
369 374 if self.type == 'external' or self.type == 'other':
370 375 className = eval(self.name)
371 376 opObj = className()
372 377
373 378 return opObj
374 379
375 380 class ProcUnitConf():
376 381
377 382 id = None
378 383 name = None
379 384 datatype = None
380 385 inputId = None
381 386 parentId = None
382 387
383 388 opConfObjList = []
384 389
385 390 procUnitObj = None
386 391 opObjList = []
387 392
388 393 ELEMENTNAME = 'ProcUnit'
389 394
390 395 def __init__(self):
391 396
392 397 self.id = None
393 398 self.datatype = None
394 399 self.name = None
395 400 self.inputId = None
396 401
397 402 self.opConfObjList = []
398 403
399 404 self.procUnitObj = None
400 405 self.opObjDict = {}
401 406
402 407 def __getPriority(self):
403 408
404 409 return len(self.opConfObjList)+1
405 410
406 411 def __getNewId(self):
407 412
408 413 return int(self.id)*10 + len(self.opConfObjList) + 1
409 414
410 415 def getElementName(self):
411 416
412 417 return self.ELEMENTNAME
413 418
414 419 def getId(self):
415 420
416 421 return self.id
417 422
418 423 def updateId(self, new_id, parentId=parentId):
419 424
420 425
421 426 new_id = int(parentId)*10 + (int(self.id) % 10)
422 427 new_inputId = int(parentId)*10 + (int(self.inputId) % 10)
423 428
424 429 #If this proc unit has not inputs
425 430 if self.inputId == '0':
426 431 new_inputId = 0
427 432
428 433 n = 1
429 434 for opConfObj in self.opConfObjList:
430 435
431 436 idOp = str(int(new_id)*10 + n)
432 437 opConfObj.updateId(idOp)
433 438
434 439 n += 1
435 440
436 441 self.parentId = str(parentId)
437 442 self.id = str(new_id)
438 443 self.inputId = str(new_inputId)
439 444
440 445
441 446 def getInputId(self):
442 447
443 448 return self.inputId
444 449
445 450 def getOperationObjList(self):
446 451
447 452 return self.opConfObjList
448 453
449 454 def getOperationObj(self, name=None):
450 455
451 456 for opConfObj in self.opConfObjList:
452 457
453 458 if opConfObj.name != name:
454 459 continue
455 460
456 461 return opConfObj
457 462
458 463 return None
459 464
460 def getOpObjfromParamValue(self,value=None):
465 def getOpObjfromParamValue(self, value=None):
461 466
462 467 for opConfObj in self.opConfObjList:
463 468 if opConfObj.getParameterObjfromValue(parameterValue=value) != value:
464 469 continue
465 470 return opConfObj
466 471 return None
467 472
468 473 def getProcUnitObj(self):
469 474
470 475 return self.procUnitObj
471 476
472 477 def setup(self, id, name, datatype, inputId, parentId=None):
473 478
474 479 #Compatible with old signal chain version
475 480 if datatype==None and name==None:
476 481 raise ValueError, "datatype or name should be defined"
477 482
478 483 if name==None:
479 484 if 'Proc' in datatype:
480 485 name = datatype
481 486 else:
482 487 name = '%sProc' %(datatype)
483 488
484 489 if datatype==None:
485 490 datatype = name.replace('Proc','')
486 491
487 492 self.id = str(id)
488 493 self.name = name
489 494 self.datatype = datatype
490 495 self.inputId = inputId
491 496 self.parentId = parentId
492 497
493 498 self.opConfObjList = []
494 499
495 500 self.addOperation(name='run', optype='self')
496 501
497 502 def removeOperations(self):
498 503
499 504 for obj in self.opConfObjList:
500 505 del obj
501 506
502 507 self.opConfObjList = []
503 508 self.addOperation(name='run')
504 509
505 510 def addParameter(self, **kwargs):
506 511 '''
507 512 Add parameters to "run" operation
508 513 '''
509 514 opObj = self.opConfObjList[0]
510 515
511 516 opObj.addParameter(**kwargs)
512 517
513 518 return opObj
514 519
515 520 def addOperation(self, name, optype='self'):
516 521
517 522 id = self.__getNewId()
518 523 priority = self.__getPriority()
519 524
520 525 opConfObj = OperationConf()
521 526 opConfObj.setup(id, name=name, priority=priority, type=optype)
522 527
523 528 self.opConfObjList.append(opConfObj)
524 529
525 530 return opConfObj
526 531
527 532 def makeXml(self, procUnitElement):
528 533
529 534 upElement = SubElement(procUnitElement, self.ELEMENTNAME)
530 535 upElement.set('id', str(self.id))
531 536 upElement.set('name', self.name)
532 537 upElement.set('datatype', self.datatype)
533 538 upElement.set('inputId', str(self.inputId))
534 539
535 540 for opConfObj in self.opConfObjList:
536 541 opConfObj.makeXml(upElement)
537 542
538 543 def readXml(self, upElement):
539 544
540 545 self.id = upElement.get('id')
541 546 self.name = upElement.get('name')
542 547 self.datatype = upElement.get('datatype')
543 548 self.inputId = upElement.get('inputId')
544 549
545 550 if self.ELEMENTNAME == "ReadUnit":
546 551 self.datatype = self.datatype.replace("Reader", "")
547 552
548 553 if self.ELEMENTNAME == "ProcUnit":
549 554 self.datatype = self.datatype.replace("Proc", "")
550 555
551 556 if self.inputId == 'None':
552 557 self.inputId = '0'
553 558
554 559 self.opConfObjList = []
555 560
556 561 opElementList = upElement.getiterator(OperationConf().getElementName())
557 562
558 563 for opElement in opElementList:
559 564 opConfObj = OperationConf()
560 565 opConfObj.readXml(opElement)
561 566 self.opConfObjList.append(opConfObj)
562 567
563 568 def printattr(self):
564 569
565 570 print "%s[%s]: name = %s, datatype = %s, inputId = %s" %(self.ELEMENTNAME,
566 571 self.id,
567 572 self.name,
568 573 self.datatype,
569 574 self.inputId)
570 575
571 576 for opConfObj in self.opConfObjList:
572 577 opConfObj.printattr()
573 578
574 579 def createObjects(self):
575 580
576 581 className = eval(self.name)
577 582 procUnitObj = className()
578 583
579 584 for opConfObj in self.opConfObjList:
580 585
581 586 if opConfObj.type == 'self':
582 587 continue
583 588
584 589 opObj = opConfObj.createObject()
585 590
586 591 self.opObjDict[opConfObj.id] = opObj
587 592 procUnitObj.addOperation(opObj, opConfObj.id)
588 593
589 594 self.procUnitObj = procUnitObj
590 595
591 596 return procUnitObj
592 597
593 598 def run(self):
594 599
595 600 finalSts = False
596 601
597 602 for opConfObj in self.opConfObjList:
598 603
599 604 kwargs = {}
600 605 for parmConfObj in opConfObj.getParameterObjList():
601 606 if opConfObj.name == 'run' and parmConfObj.name == 'datatype':
602 607 continue
603 608
604 609 kwargs[parmConfObj.name] = parmConfObj.getValue()
605 610
606 611 #print "\tRunning the '%s' operation with %s" %(opConfObj.name, opConfObj.id)
607 612 sts = self.procUnitObj.call(opType = opConfObj.type,
608 613 opName = opConfObj.name,
609 614 opId = opConfObj.id,
610 615 **kwargs)
611 616 finalSts = finalSts or sts
612 617
613 618 return finalSts
614 619
615 620 def close(self):
616 621
617 622 for opConfObj in self.opConfObjList:
618 623 if opConfObj.type == 'self':
619 624 continue
620 625
621 626 opObj = self.procUnitObj.getOperationObj(opConfObj.id)
622 627 opObj.close()
623 628
624 629 self.procUnitObj.close()
625 630
626 631 return
627 632
628 633 class ReadUnitConf(ProcUnitConf):
629 634
630 635 path = None
631 636 startDate = None
632 637 endDate = None
633 638 startTime = None
634 639 endTime = None
635 640
636 641 ELEMENTNAME = 'ReadUnit'
637 642
638 643 def __init__(self):
639 644
640 645 self.id = None
641 646 self.datatype = None
642 647 self.name = None
643 648 self.inputId = None
644 649
645 650 self.parentId = None
646 651
647 652 self.opConfObjList = []
648 653 self.opObjList = []
649 654
650 655 def getElementName(self):
651 656
652 657 return self.ELEMENTNAME
653 658
654 659 def setup(self, id, name, datatype, path, startDate="", endDate="", startTime="", endTime="", parentId=None, **kwargs):
655 660
656 661 #Compatible with old signal chain version
657 662 if datatype==None and name==None:
658 663 raise ValueError, "datatype or name should be defined"
659 664
660 665 if name==None:
661 666 if 'Reader' in datatype:
662 667 name = datatype
663 668 else:
664 669 name = '%sReader' %(datatype)
665 670
666 671 if datatype==None:
667 672 datatype = name.replace('Reader','')
668 673
669 674 self.id = id
670 675 self.name = name
671 676 self.datatype = datatype
672 677
673 678 self.path = path
674 679 self.startDate = startDate
675 680 self.endDate = endDate
676 681 self.startTime = startTime
677 682 self.endTime = endTime
678 683
679 684 self.inputId = '0'
680 685 self.parentId = parentId
681 686
682 687 self.addRunOperation(**kwargs)
683 688
684 689 def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs):
685 690
686 691 #Compatible with old signal chain version
687 692 if datatype==None and name==None:
688 693 raise ValueError, "datatype or name should be defined"
689 694
690 695 if name==None:
691 696 if 'Reader' in datatype:
692 697 name = datatype
693 698 else:
694 699 name = '%sReader' %(datatype)
695 700
696 701 if datatype==None:
697 702 datatype = name.replace('Reader','')
698 703
699 704 self.datatype = datatype
700 705 self.name = name
701 706 self.path = path
702 707 self.startDate = startDate
703 708 self.endDate = endDate
704 709 self.startTime = startTime
705 710 self.endTime = endTime
706 711
707 712 self.inputId = '0'
708 713 self.parentId = parentId
709 714
710 715 self.updateRunOperation(**kwargs)
711 716
712 717 def addRunOperation(self, **kwargs):
713 718
714 719 opObj = self.addOperation(name = 'run', optype = 'self')
715 720
716 721 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
717 722 opObj.addParameter(name='path' , value=self.path, format='str')
718 723 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
719 724 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
720 725 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
721 726 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
722 727
723 728 for key, value in kwargs.items():
724 729 opObj.addParameter(name=key, value=value, format=type(value).__name__)
725 730
726 731 return opObj
727 732
728 733 def updateRunOperation(self, **kwargs):
729 734
730 735 opObj = self.getOperationObj(name = 'run')
731 736 opObj.removeParameters()
732 737
733 738 opObj.addParameter(name='datatype' , value=self.datatype, format='str')
734 739 opObj.addParameter(name='path' , value=self.path, format='str')
735 740 opObj.addParameter(name='startDate' , value=self.startDate, format='date')
736 741 opObj.addParameter(name='endDate' , value=self.endDate, format='date')
737 742 opObj.addParameter(name='startTime' , value=self.startTime, format='time')
738 743 opObj.addParameter(name='endTime' , value=self.endTime, format='time')
739 744
740 745 for key, value in kwargs.items():
741 746 opObj.addParameter(name=key, value=value, format=type(value).__name__)
742 747
743 748 return opObj
744 749
745 750 class Project():
746 751
747 752 id = None
748 753 name = None
749 754 description = None
750 755 # readUnitConfObjList = None
751 756 procUnitConfObjDict = None
752 757
753 758 ELEMENTNAME = 'Project'
754 759
755 760 def __init__(self, control=None, dataq=None):
756 761
757 762 self.id = None
758 763 self.name = None
759 764 self.description = None
760 765
761 766 self.procUnitConfObjDict = {}
762 767
763 768 #global data_q
764 769 #data_q = dataq
765 770
766 771 if control==None:
767 772 control = {'stop':False,'pause':False}
768 773
769 774 self.control = control
770 775
771 776 def __getNewId(self):
772 777
773 778 id = int(self.id)*10 + len(self.procUnitConfObjDict) + 1
774 779
775 780 return str(id)
776 781
777 782 def getElementName(self):
778 783
779 784 return self.ELEMENTNAME
780 785
781 786 def getId(self):
782 787
783 788 return self.id
784 789
785 790 def updateId(self, new_id):
786 791
787 792 self.id = str(new_id)
788 793
789 794 keyList = self.procUnitConfObjDict.keys()
790 795 keyList.sort()
791 796
792 797 n = 1
793 798 newProcUnitConfObjDict = {}
794 799
795 800 for procKey in keyList:
796 801
797 802 procUnitConfObj = self.procUnitConfObjDict[procKey]
798 803 idProcUnit = str(int(self.id)*10 + n)
799 804 procUnitConfObj.updateId(idProcUnit, parentId = self.id)
800 805
801 806 newProcUnitConfObjDict[idProcUnit] = procUnitConfObj
802 807 n += 1
803 808
804 809 self.procUnitConfObjDict = newProcUnitConfObjDict
805 810
806 811 def setup(self, id, name, description):
807 812
808 813 self.id = str(id)
809 814 self.name = name
810 815 self.description = description
811 816
812 817 def update(self, name, description):
813 818
814 819 self.name = name
815 820 self.description = description
816 821
817 822 def addReadUnit(self, datatype=None, name=None, **kwargs):
818 823
819 824 idReadUnit = self.__getNewId()
820 825
821 826 readUnitConfObj = ReadUnitConf()
822 827 readUnitConfObj.setup(idReadUnit, name, datatype, parentId=self.id, **kwargs)
823 828
824 829 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
825 830
826 831 return readUnitConfObj
827 832
828 833 def addProcUnit(self, inputId='0', datatype=None, name=None):
829 834
830 835 idProcUnit = self.__getNewId()
831 836
832 837 procUnitConfObj = ProcUnitConf()
833 838 procUnitConfObj.setup(idProcUnit, name, datatype, inputId, parentId=self.id)
834 839
835 840 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
836 841
837 842 return procUnitConfObj
838 843
839 844 def removeProcUnit(self, id):
840 845
841 846 if id in self.procUnitConfObjDict.keys():
842 847 self.procUnitConfObjDict.pop(id)
843 848
844 849 def getReadUnitId(self):
845 850
846 851 readUnitConfObj = self.getReadUnitObj()
847 852
848 853 return readUnitConfObj.id
849 854
850 855 def getReadUnitObj(self):
851 856
852 857 for obj in self.procUnitConfObjDict.values():
853 858 if obj.getElementName() == "ReadUnit":
854 859 return obj
855 860
856 861 return None
857 862
858 def getProcUnitObj(self, id):
863 def getProcUnitObj(self, id=None, name=None):
864
865 if id != None:
866 return self.procUnitConfObjDict[id]
867
868 if name != None:
869 return self.getProcUnitObjByName(name)
870
871 return None
859 872
860 return self.procUnitConfObjDict[id]
861
862 873 def getProcUnitObjByName(self, name):
863 874
864 875 for obj in self.procUnitConfObjDict.values():
865 876 if obj.name == name:
866 877 return obj
867 878
868 879 return None
869
880
881 def procUnitItems(self):
882
883 return self.procUnitConfObjDict.items()
884
870 885 def makeXml(self):
871 886
872 887 projectElement = Element('Project')
873 888 projectElement.set('id', str(self.id))
874 889 projectElement.set('name', self.name)
875 890 projectElement.set('description', self.description)
876 891
877 892 # for readUnitConfObj in self.readUnitConfObjList:
878 893 # readUnitConfObj.makeXml(projectElement)
879 894
880 895 for procUnitConfObj in self.procUnitConfObjDict.values():
881 896 procUnitConfObj.makeXml(projectElement)
882 897
883 898 self.projectElement = projectElement
884 899
885 900 def writeXml(self, filename):
886 901
887 902 self.makeXml()
888 903
889 904 #print prettify(self.projectElement)
890 905
891 906 ElementTree(self.projectElement).write(filename, method='xml')
892 907
893 908 def readXml(self, filename):
894 909
895 910 #tree = ET.parse(filename)
896 911 self.projectElement = None
897 912 # self.readUnitConfObjList = []
898 913 self.procUnitConfObjDict = {}
899 914
900 915 self.projectElement = ElementTree().parse(filename)
901 916
902 917 self.project = self.projectElement.tag
903 918
904 919 self.id = self.projectElement.get('id')
905 920 self.name = self.projectElement.get('name')
906 921 self.description = self.projectElement.get('description')
907 922
908 923 readUnitElementList = self.projectElement.getiterator(ReadUnitConf().getElementName())
909 924
910 925 for readUnitElement in readUnitElementList:
911 926 readUnitConfObj = ReadUnitConf()
912 927 readUnitConfObj.readXml(readUnitElement)
913 928
914 929 if readUnitConfObj.parentId == None:
915 930 readUnitConfObj.parentId = self.id
916 931
917 932 self.procUnitConfObjDict[readUnitConfObj.getId()] = readUnitConfObj
918 933
919 934 procUnitElementList = self.projectElement.getiterator(ProcUnitConf().getElementName())
920 935
921 936 for procUnitElement in procUnitElementList:
922 937 procUnitConfObj = ProcUnitConf()
923 938 procUnitConfObj.readXml(procUnitElement)
924 939
925 940 if procUnitConfObj.parentId == None:
926 941 procUnitConfObj.parentId = self.id
927 942
928 943 self.procUnitConfObjDict[procUnitConfObj.getId()] = procUnitConfObj
929 944
930 945 def printattr(self):
931 946
932 947 print "Project[%s]: name = %s, description = %s" %(self.id,
933 948 self.name,
934 949 self.description)
935 950
936 951 # for readUnitConfObj in self.readUnitConfObjList:
937 952 # readUnitConfObj.printattr()
938 953
939 954 for procUnitConfObj in self.procUnitConfObjDict.values():
940 955 procUnitConfObj.printattr()
941 956
942 957 def createObjects(self):
943 958
944 959 # for readUnitConfObj in self.readUnitConfObjList:
945 960 # readUnitConfObj.createObjects()
946 961
947 962 for procUnitConfObj in self.procUnitConfObjDict.values():
948 963 procUnitConfObj.createObjects()
949 964
950 965 def __connect(self, objIN, thisObj):
951 966
952 967 thisObj.setInput(objIN.getOutputObj())
953 968
954 969 def connectObjects(self):
955 970
956 971 for thisPUConfObj in self.procUnitConfObjDict.values():
957 972
958 973 inputId = thisPUConfObj.getInputId()
959 974
960 975 if int(inputId) == 0:
961 976 continue
962 977
963 978 #Get input object
964 979 puConfINObj = self.procUnitConfObjDict[inputId]
965 980 puObjIN = puConfINObj.getProcUnitObj()
966 981
967 982 #Get current object
968 983 thisPUObj = thisPUConfObj.getProcUnitObj()
969 984
970 985 self.__connect(puObjIN, thisPUObj)
971 986
972 987 def run(self):
973 988
974 989 # for readUnitConfObj in self.readUnitConfObjList:
975 990 # readUnitConfObj.run()
976 991 print
977 992 print "*"*40
978 993 print " Starting SIGNAL CHAIN PROCESSING "
979 994 print "*"*40
980 995 print
981 996
982 997 keyList = self.procUnitConfObjDict.keys()
983 998 keyList.sort()
984 999
985 1000 while(True):
986 1001
987 1002 finalSts = False
988 1003
989 1004 for procKey in keyList:
990 1005 # print "Running the '%s' process with %s" %(procUnitConfObj.name, procUnitConfObj.id)
991 1006
992 1007 procUnitConfObj = self.procUnitConfObjDict[procKey]
993 1008 sts = procUnitConfObj.run()
994 1009 finalSts = finalSts or sts
995 1010
996 1011 #If every process unit finished so end process
997 1012 if not(finalSts):
998 1013 print "Every process unit have finished"
999 1014 break
1000 1015
1001 1016 if self.control['pause']:
1002 1017 print "Process suspended"
1003 1018
1004 1019 while True:
1005 1020 sleep(0.1)
1006 1021
1007 1022 if not self.control['pause']:
1008 1023 break
1009 1024
1010 1025 if self.control['stop']:
1011 1026 break
1012 1027 print "Process reinitialized"
1013 1028
1014 1029 if self.control['stop']:
1015 1030 print "Process stopped"
1016 1031 break
1017 1032
1018 1033 #Closing every process
1019 1034 for procKey in keyList:
1020 1035 procUnitConfObj = self.procUnitConfObjDict[procKey]
1021 1036 procUnitConfObj.close()
1022 1037
1023 1038 print "Process finished"
1024 1039
1025 1040 def start(self, filename):
1026 1041
1027 1042 self.writeXml(filename)
1028 1043 self.readXml(filename)
1029 1044
1030 1045 self.createObjects()
1031 1046 self.connectObjects()
1032 1047 self.run()
1033 1048
1034 1049 class ControllerThread(threading.Thread, Project):
1035 1050
1036 1051 def __init__(self, filename):
1037 1052
1038 1053 threading.Thread.__init__(self)
1039 1054 Project.__init__(self)
1040 1055
1041 1056 self.setDaemon(True)
1042 1057
1043 1058 self.filename = filename
1044 1059 self.control = {'stop':False, 'pause':False}
1045 1060
1046 1061 def stop(self):
1047 1062 self.control['stop'] = True
1048 1063
1049 1064 def pause(self):
1050 1065 self.control['pause'] = not(self.control['pause'])
1051 1066
1052 1067 def run(self):
1053 1068 self.control['stop'] = False
1054 1069 self.control['pause'] = False
1055 1070
1056 1071 self.readXml(self.filename)
1057 1072 self.createObjects()
1058 1073 self.connectObjects()
1059 1074 Project.run(self)
1060 1075
1061 1076 if __name__ == '__main__':
1062 1077
1063 1078 desc = "Segundo Test"
1064 1079 filename = "schain.xml"
1065 1080
1066 1081 controllerObj = Project()
1067 1082
1068 1083 controllerObj.setup(id = '191', name='test01', description=desc)
1069 1084
1070 1085 readUnitConfObj = controllerObj.addReadUnit(datatype='Voltage',
1071 1086 path='data/rawdata/',
1072 1087 startDate='2011/01/01',
1073 1088 endDate='2012/12/31',
1074 1089 startTime='00:00:00',
1075 1090 endTime='23:59:59',
1076 1091 online=1,
1077 1092 walk=1)
1078 1093
1079 1094 # opObj00 = readUnitConfObj.addOperation(name='printInfo')
1080 1095
1081 1096 procUnitConfObj0 = controllerObj.addProcUnit(datatype='Voltage', inputId=readUnitConfObj.getId())
1082 1097
1083 1098 opObj10 = procUnitConfObj0.addOperation(name='selectChannels')
1084 1099 opObj10.addParameter(name='channelList', value='3,4,5', format='intlist')
1085 1100
1086 1101 opObj10 = procUnitConfObj0.addOperation(name='selectHeights')
1087 1102 opObj10.addParameter(name='minHei', value='90', format='float')
1088 1103 opObj10.addParameter(name='maxHei', value='180', format='float')
1089 1104
1090 1105 opObj12 = procUnitConfObj0.addOperation(name='CohInt', optype='external')
1091 1106 opObj12.addParameter(name='n', value='10', format='int')
1092 1107
1093 1108 procUnitConfObj1 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj0.getId())
1094 1109 procUnitConfObj1.addParameter(name='nFFTPoints', value='32', format='int')
1095 1110 # procUnitConfObj1.addParameter(name='pairList', value='(0,1),(0,2),(1,2)', format='')
1096 1111
1097 1112
1098 1113 opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1099 1114 opObj11.addParameter(name='idfigure', value='1', format='int')
1100 1115 opObj11.addParameter(name='wintitle', value='SpectraPlot0', format='str')
1101 1116 opObj11.addParameter(name='zmin', value='40', format='int')
1102 1117 opObj11.addParameter(name='zmax', value='90', format='int')
1103 1118 opObj11.addParameter(name='showprofile', value='1', format='int')
1104 1119
1105 1120 # opObj11 = procUnitConfObj1.addOperation(name='CrossSpectraPlot', optype='external')
1106 1121 # opObj11.addParameter(name='idfigure', value='2', format='int')
1107 1122 # opObj11.addParameter(name='wintitle', value='CrossSpectraPlot', format='str')
1108 1123 # opObj11.addParameter(name='zmin', value='40', format='int')
1109 1124 # opObj11.addParameter(name='zmax', value='90', format='int')
1110 1125
1111 1126
1112 1127 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Voltage', inputId=procUnitConfObj0.getId())
1113 1128 #
1114 1129 # opObj12 = procUnitConfObj2.addOperation(name='CohInt', optype='external')
1115 1130 # opObj12.addParameter(name='n', value='2', format='int')
1116 1131 # opObj12.addParameter(name='overlapping', value='1', format='int')
1117 1132 #
1118 1133 # procUnitConfObj3 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj2.getId())
1119 1134 # procUnitConfObj3.addParameter(name='nFFTPoints', value='32', format='int')
1120 1135 #
1121 1136 # opObj11 = procUnitConfObj3.addOperation(name='SpectraPlot', optype='external')
1122 1137 # opObj11.addParameter(name='idfigure', value='2', format='int')
1123 1138 # opObj11.addParameter(name='wintitle', value='SpectraPlot1', format='str')
1124 1139 # opObj11.addParameter(name='zmin', value='40', format='int')
1125 1140 # opObj11.addParameter(name='zmax', value='90', format='int')
1126 1141 # opObj11.addParameter(name='showprofile', value='1', format='int')
1127 1142
1128 1143 # opObj11 = procUnitConfObj1.addOperation(name='RTIPlot', optype='external')
1129 1144 # opObj11.addParameter(name='idfigure', value='10', format='int')
1130 1145 # opObj11.addParameter(name='wintitle', value='RTI', format='str')
1131 1146 ## opObj11.addParameter(name='xmin', value='21', format='float')
1132 1147 ## opObj11.addParameter(name='xmax', value='22', format='float')
1133 1148 # opObj11.addParameter(name='zmin', value='40', format='int')
1134 1149 # opObj11.addParameter(name='zmax', value='90', format='int')
1135 1150 # opObj11.addParameter(name='showprofile', value='1', format='int')
1136 1151 # opObj11.addParameter(name='timerange', value=str(60), format='int')
1137 1152
1138 1153 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1139 1154 # opObj10.addParameter(name='channelList', value='0,2,4,6', format='intlist')
1140 1155 #
1141 1156 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1142 1157 # opObj12.addParameter(name='n', value='2', format='int')
1143 1158 #
1144 1159 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1145 1160 # opObj11.addParameter(name='idfigure', value='2', format='int')
1146 1161 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1147 1162 # opObj11.addParameter(name='zmin', value='70', format='int')
1148 1163 # opObj11.addParameter(name='zmax', value='90', format='int')
1149 1164 #
1150 1165 # opObj10 = procUnitConfObj1.addOperation(name='selectChannels')
1151 1166 # opObj10.addParameter(name='channelList', value='2,6', format='intlist')
1152 1167 #
1153 1168 # opObj12 = procUnitConfObj1.addOperation(name='IncohInt', optype='external')
1154 1169 # opObj12.addParameter(name='n', value='2', format='int')
1155 1170 #
1156 1171 # opObj11 = procUnitConfObj1.addOperation(name='SpectraPlot', optype='external')
1157 1172 # opObj11.addParameter(name='idfigure', value='3', format='int')
1158 1173 # opObj11.addParameter(name='wintitle', value='SpectraPlot10', format='str')
1159 1174 # opObj11.addParameter(name='zmin', value='70', format='int')
1160 1175 # opObj11.addParameter(name='zmax', value='90', format='int')
1161 1176
1162 1177
1163 1178 # opObj12 = procUnitConfObj1.addOperation(name='decoder')
1164 1179 # opObj12.addParameter(name='ncode', value='2', format='int')
1165 1180 # opObj12.addParameter(name='nbauds', value='8', format='int')
1166 1181 # opObj12.addParameter(name='code0', value='001110011', format='int')
1167 1182 # opObj12.addParameter(name='code1', value='001110011', format='int')
1168 1183
1169 1184
1170 1185
1171 1186 # procUnitConfObj2 = controllerObj.addProcUnit(datatype='Spectra', inputId=procUnitConfObj1.getId())
1172 1187 #
1173 1188 # opObj21 = procUnitConfObj2.addOperation(name='IncohInt', optype='external')
1174 1189 # opObj21.addParameter(name='n', value='2', format='int')
1175 1190 #
1176 1191 # opObj11 = procUnitConfObj2.addOperation(name='SpectraPlot', optype='external')
1177 1192 # opObj11.addParameter(name='idfigure', value='4', format='int')
1178 1193 # opObj11.addParameter(name='wintitle', value='SpectraPlot OBJ 2', format='str')
1179 1194 # opObj11.addParameter(name='zmin', value='70', format='int')
1180 1195 # opObj11.addParameter(name='zmax', value='90', format='int')
1181 1196
1182 1197 print "Escribiendo el archivo XML"
1183 1198
1184 1199 controllerObj.writeXml(filename)
1185 1200
1186 1201 print "Leyendo el archivo XML"
1187 1202 controllerObj.readXml(filename)
1188 1203 #controllerObj.printattr()
1189 1204
1190 1205 controllerObj.createObjects()
1191 1206 controllerObj.connectObjects()
1192 1207 controllerObj.run()
1193 1208
1194 1209 No newline at end of file
This diff has been collapsed as it changes many lines, (1076 lines changed) Show them Hide them
@@ -1,5588 +1,5840
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 15 import ast
16 16
17 17 from PyQt4.QtGui import QMainWindow
18 18 from PyQt4.QtCore import pyqtSignature
19 19 from PyQt4.QtCore import pyqtSignal
20 20 from PyQt4 import QtCore
21 21 from PyQt4 import QtGui
22 22
23 23 from schainpy.gui.viewer.ui_unitprocess import Ui_UnitProcess
24 24 from schainpy.gui.viewer.ui_ftp import Ui_Ftp
25 25 from schainpy.gui.viewer.ui_mainwindow import Ui_BasicWindow
26 26 from schainpy.controller import Project, ControllerThread
27 27
28 28 from propertiesViewModel import TreeModel, PropertyBuffer
29 29 from parametersModel import ProjectParms
30 30
31 31 from schainpy.gui.figures import tools
32 # from schainpy.gui.viewcontroller.comm import ControllerThread
33 32
34 33 FIGURES_PATH = tools.get_path()
35 34 TEMPORAL_FILE = ".temp.xml"
36 35
37 36 def isRadarFile(file):
38 37 try:
39 38 year = int(file[1:5])
40 39 doy = int(file[5:8])
41 40 set = int(file[8:11])
42 41 except:
43 42 return 0
44 43
45 44 return 1
46 45
47 46 def isRadarPath(path):
48 47 try:
49 48 year = int(path[1:5])
50 49 doy = int(path[5:8])
51 50 except:
52 51 return 0
53 52
54 53 return 1
55 54
56 55 class BasicWindow(QMainWindow, Ui_BasicWindow):
57 56 """
58 57 """
59 58 def __init__(self, parent=None):
60 59 """
61 60
62 61 """
63 62 QMainWindow.__init__(self, parent)
64 63 self.setupUi(self)
65 64 self.__puObjDict = {}
66 65 self.__itemTreeDict = {}
67 66 self.readUnitConfObjList = []
68 67 self.operObjList = []
69 68 self.projecObjView = None
70 69 self.idProject = 0
71 70 # self.idImag = 0
72 71
73 72 self.idImagscope = 0
74 73 self.idImagspectra = 0
75 74 self.idImagcross = 0
76 75 self.idImagrti = 0
77 76 self.idImagcoherence = 0
78 77 self.idImagpower = 0
79 78 self.idImagrtinoise = 0
80 79 self.idImagspectraHeis = 0
81 80 self.idImagrtiHeis = 0
82 81
83 82 self.dataPath = None
84 83 self.online = 0
85 84 self.walk = 0
86 85 self.create = False
87 86 self.selectedItemTree = None
88 87 self.controllerObj = None
89 88 # self.commCtrlPThread = None
90 89 # self.create_figure()
91 90 self.temporalFTP = ftpBuffer()
92 91 self.projectProperCaracteristica = []
93 92 self.projectProperPrincipal = []
94 93 self.projectProperDescripcion = []
95 94 self.volProperCaracteristica = []
96 95 self.volProperPrincipal = []
97 96 self.volProperDescripcion = []
98 97 self.specProperCaracteristica = []
99 98 self.specProperPrincipal = []
100 99 self.specProperDescripcion = []
101 100
102 101 self.specHeisProperCaracteristica = []
103 102 self.specHeisProperPrincipal = []
104 103 self.specHeisProperDescripcion = []
105 104
106 105 # self.pathWorkSpace = './'
107 106
108 107 self.__projectObjDict = {}
109 108 self.__operationObjDict = {}
110
111 self.__ftpProcUnitAdded = False
112 self.__ftpProcUnitId = None
109
110 self.__puLocalFolder2FTP = {}
113 111 self.__initialized = False
114 112
115 113 # self.create_comm()
116 114 self.create_updating_timer()
117 115 self.setParameter()
118 116
119 117 @pyqtSignature("")
120 118 def on_actionOpen_triggered(self):
121 119 """
122 120 Slot documentation goes here.
123 121 """
124 122 self.openProject()
125 123
126 124 @pyqtSignature("")
127 125 def on_actionCreate_triggered(self):
128 126 """
129 127 Slot documentation goes here.
130 128 """
131 129 self.setInputsProject_View()
132 130 self.create = True
133 131
134 132 @pyqtSignature("")
135 133 def on_actionSave_triggered(self):
136 134 """
137 135 Slot documentation goes here.
138 136 """
139 137 self.saveProject()
140 138
141 139 @pyqtSignature("")
142 140 def on_actionClose_triggered(self):
143 141 """
144 142 Slot documentation goes here.
145 143 """
146 144 self.close()
147 145
148 146 @pyqtSignature("")
149 147 def on_actionStart_triggered(self):
150 148 """
151 149 """
152 150 self.playProject()
153 151
154 152 @pyqtSignature("")
155 153 def on_actionPause_triggered(self):
156 154 """
157 155 """
158 156 self.pauseProject()
159 157
160 158 @pyqtSignature("")
161 159 def on_actionStop_triggered(self):
162 160 """
163 161 """
164 162 self.stopProject()
165 163
166 164 @pyqtSignature("")
167 165 def on_actionFTP_triggered(self):
168 166 """
169 167 """
170 168 self.configFTPWindowObj = Ftp(self)
171 # if self.temporalFTP.create:
172 if self.temporalFTP.createforView:
173 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
174 self.configFTPWindowObj.setParmsfromTemporal(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
169
170 if not self.temporalFTP.create:
171 self.temporalFTP.setwithoutconfiguration()
172
173 self.configFTPWindowObj.setParmsfromTemporal(self.temporalFTP.server,
174 self.temporalFTP.remotefolder,
175 self.temporalFTP.username,
176 self.temporalFTP.password,
177 self.temporalFTP.ftp_wei,
178 self.temporalFTP.exp_code,
179 self.temporalFTP.sub_exp_code,
180 self.temporalFTP.plot_pos)
181
175 182 self.configFTPWindowObj.show()
176 183 self.configFTPWindowObj.closed.connect(self.createFTPConfig)
177 184
178 185 def createFTPConfig(self):
179 186
180 187 if not self.configFTPWindowObj.create:
181 188 self.console.clear()
182 189 self.console.append("There is no FTP configuration")
183 190 return
191
184 192 self.console.append("Push Ok in Spectra view to Add FTP Configuration")
185 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.configFTPWindowObj.getParmsFromFtpWindow()
186 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos)
193
194 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.configFTPWindowObj.getParmsFromFtpWindow()
195 self.temporalFTP.save(server=server,
196 remotefolder=remotefolder,
197 username=username,
198 password=password,
199 ftp_wei=ftp_wei,
200 exp_code=exp_code,
201 sub_exp_code=sub_exp_code,
202 plot_pos=plot_pos)
187 203
188 204 @pyqtSignature("")
189 205 def on_actionOpenToolbar_triggered(self):
190 206 """
191 207 Slot documentation goes here.
192 208 """
193 209 self.openProject()
194 210
195 211 @pyqtSignature("")
196 212 def on_actionCreateToolbar_triggered(self):
197 213 """
198 214 Slot documentation goes here.
199 215 """
200 216 self.setInputsProject_View()
201 217 self.create = True
202 218
203 219 @pyqtSignature("")
204 220 def on_actionAddPU_triggered(self):
205 221 if len(self.__projectObjDict) == 0:
206 222 outputstr = "First Create a Project then add Processing Unit"
207 223 self.console.clear()
208 224 self.console.append(outputstr)
209 225 return 0
210 226 else:
211 227 self.addPUWindow()
212 228 self.console.clear()
213 229 self.console.append("Please, Choose the type of Processing Unit")
214 230 self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
215 231 self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
216 232 self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
217 233
218 234
219 235 @pyqtSignature("")
220 236 def on_actionSaveToolbar_triggered(self):
221 237 """
222 238 Slot documentation goes here.
223 239 """
224 240 self.saveProject()
225 241
226 242 @pyqtSignature("")
227 243 def on_actionStarToolbar_triggered(self):
228 244 """
229 245 Slot documentation goes here.
230 246 """
231 247 self.playProject()
232 248
233 249 @pyqtSignature("")
234 250 def on_actionPauseToolbar_triggered(self):
235 251
236 252 self.pauseProject()
237 253
238 254 @pyqtSignature("")
239 255 def on_actionStopToolbar_triggered(self):
240 256 """
241 257 Slot documentation goes here.
242 258 """
243 259 self.stopProject()
244 260
245 261 @pyqtSignature("int")
246 262 def on_proComReadMode_activated(self, index):
247 263 """
248 264 SELECCION DEL MODO DE LECTURA ON=1, OFF=0
249 265 """
250 266 if index == 0:
251 267 self.online = 0
252 268 self.proDelay.setText("0")
253 269 self.proSet.setText("")
254 270 self.proSet.setEnabled(False)
255 271 self.proDelay.setEnabled(False)
256 272 elif index == 1:
257 273 self.online = 1
258 274 self.proSet.setText(" ")
259 275 self.proDelay.setText("5")
260 276 self.proSet.setEnabled(True)
261 277 self.proDelay.setEnabled(True)
262 278
263 279 @pyqtSignature("int")
264 280 def on_proComDataType_activated(self, index):
265 281 """
266 282 Voltage or Spectra
267 283 """
268 284 self.labelSet.show()
269 285 self.proSet.show()
270 286
271 287 self.labelIPPKm.hide()
272 288 self.proIPPKm.hide()
273 289
274 290 if index == 0:
275 291 extension = '.r'
276 292 elif index == 1:
277 293 extension = '.pdata'
278 294 elif index == 2:
279 295 extension = '.fits'
280 296 elif index == 3:
281 297 extension = '.hdf5'
282 298
283 299 self.labelSet.hide()
284 300 self.proSet.hide()
285 301 self.labelIPPKm.show()
286 302 self.proIPPKm.show()
287 303
288 304 self.proDataType.setText(extension)
289 305
290 306 @pyqtSignature("int")
291 307 def on_proComWalk_activated(self, index):
292 308 """
293 309
294 310 """
295 311 if index == 0:
296 312 self.walk = 0
297 313 elif index == 1:
298 314 self.walk = 1
299 315
300 316 @pyqtSignature("")
301 317 def on_proToolPath_clicked(self):
302 318 """
303 319 Choose your path
304 320 """
305 321
306 322 current_dpath = './'
307 323 if self.dataPath:
308 324 current_dpath = self.dataPath
309 325
310 326 datapath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', current_dpath, QtGui.QFileDialog.ShowDirsOnly))
311 327
312 328 #If it was canceled
313 329 if not datapath:
314 330 return
315 331
316 332 #If any change was done
317 333 if datapath == self.dataPath:
318 334 return
319 335
320 336 self.proDataPath.setText(datapath)
321 337
322 338 self.actionStart.setEnabled(False)
323 339 self.actionStarToolbar.setEnabled(False)
324 340 self.proOk.setEnabled(False)
325 341
326 342 self.proComStartDate.clear()
327 343 self.proComEndDate.clear()
328 344
329 345 if not os.path.exists(datapath):
330 346
331 347 self.console.clear()
332 348 self.console.append("Write a correct a path")
333 349 return
334 350
335 351 self.dataPath = datapath
336 352
337 353 self.console.clear()
338 354 self.console.append("Select the read mode and press 'load button'")
339 355
340 356
341 357 @pyqtSignature("")
342 358 def on_proLoadButton_clicked(self):
343 359
344 360 self.console.clear()
345 361
346 362 parameter_list = self.checkInputsProject()
347 363
348 364 if not parameter_list[0]:
349 365 return
350 366
351 367 parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set = parameter_list
352 368
353 369 if read_mode == "Offline":
354 370 self.proComStartDate.clear()
355 371 self.proComEndDate.clear()
356 372 self.proComStartDate.setEnabled(True)
357 373 self.proComEndDate.setEnabled(True)
358 374 self.proStartTime.setEnabled(True)
359 375 self.proEndTime.setEnabled(True)
360 376 self.frame_2.setEnabled(True)
361 377
362 378 if read_mode == "Online":
363 379 self.proComStartDate.addItem("2000/01/30")
364 380 self.proComEndDate.addItem("2016/12/31")
365 381 self.proComStartDate.setEnabled(False)
366 382 self.proComEndDate.setEnabled(False)
367 383 self.proStartTime.setEnabled(False)
368 384 self.proEndTime.setEnabled(False)
369 385 self.frame_2.setEnabled(True)
370 386
371 387 self.loadDays(data_path, ext, walk)
372 388
373 389 @pyqtSignature("int")
374 390 def on_proComStartDate_activated(self, index):
375 391 """
376 392 SELECCION DEL RANGO DE FECHAS -START DATE
377 393 """
378 394 stopIndex = self.proComEndDate.count() - self.proComEndDate.currentIndex()
379 395 self.proComEndDate.clear()
380 396 for i in self.dateList[index:]:
381 397 self.proComEndDate.addItem(i)
382 398 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - stopIndex)
383 399
384 400 @pyqtSignature("int")
385 401 def on_proComEndDate_activated(self, index):
386 402 """
387 403 SELECCION DEL RANGO DE FECHAS-END DATE
388 404 """
389 405 startIndex = self.proComStartDate.currentIndex()
390 406 stopIndex = self.proComEndDate.count() - index
391 407 self.proComStartDate.clear()
392 408 for i in self.dateList[:len(self.dateList) - stopIndex + 1]:
393 409 self.proComStartDate.addItem(i)
394 410 self.proComStartDate.setCurrentIndex(startIndex)
395 411
396 412 @pyqtSignature("")
397 413 def on_proOk_clicked(self):
398 414 """
399 415 AΓ±ade al Obj XML de Projecto, name,datatype,date,time,readmode,wait,etc, crea el readUnitProcess del archivo xml.
400 416 Prepara la configuraciΓ³n del diΓ‘grama del Arbol del treeView numero 2
401 417 """
402 418
403 419 self.actionStart.setEnabled(False)
404 420 self.actionStarToolbar.setEnabled(False)
405 421
406 422 if self.create:
407 423
408 424 projectId = self.__getNewProjectId()
409 425
410 426 if not projectId:
411 427 return 0
412 428
413 429 projectObjView = self.createProjectView(projectId)
414 430
415 431 if not projectObjView:
416 432 return 0
417 433
418 434 readUnitObj = self.createReadUnitView(projectObjView)
419 435
420 436 if not readUnitObj:
421 437 return 0
422 438
423 439 else:
424 440 projectObjView = self.updateProjectView()
425 441
426 442 if not projectObjView:
427 443 return 0
428 444
429 445 projectId = projectObjView.getId()
430 446 idReadUnit = projectObjView.getReadUnitId()
431 447 readUnitObj = self.updateReadUnitView(projectObjView, idReadUnit)
432 448
433 449 if not readUnitObj:
434 450 return 0
435 451
436 452 self.__itemTreeDict[projectId].setText(projectObjView.name)
437 453 # Project Properties
438 454 self.refreshProjectProperties(projectObjView)
439 455 # Disable tabProject after finish the creation
440 456
441 457 self.actionStart.setEnabled(True)
442 458 self.actionStarToolbar.setEnabled(True)
443 459 self.console.clear()
444 460 self.console.append("The project parameters were validated")
445 461
446 462 return 1
447 463
448 464 @pyqtSignature("")
449 465 def on_proClear_clicked(self):
450 466
451 467 self.console.clear()
452 468
453 469 @pyqtSignature("int")
454 470 def on_volOpCebChannels_stateChanged(self, p0):
455 471 """
456 472 Check Box habilita operaciones de SelecciοΏ½n de Canales
457 473 """
458 474 if p0 == 2:
459 475 self.volOpComChannels.setEnabled(True)
460 476 self.volOpChannel.setEnabled(True)
461 477
462 478 if p0 == 0:
463 479 self.volOpComChannels.setEnabled(False)
464 480 self.volOpChannel.setEnabled(False)
465 481 self.volOpChannel.clear()
466 482
467 483 @pyqtSignature("int")
468 484 def on_volOpCebHeights_stateChanged(self, p0):
469 485 """
470 486 Check Box habilita operaciones de SelecciοΏ½n de Alturas
471 487 """
472 488 if p0 == 2:
473 489 self.volOpHeights.setEnabled(True)
474 490 self.volOpComHeights.setEnabled(True)
475 491
476 492 if p0 == 0:
477 493 self.volOpHeights.setEnabled(False)
478 494 self.volOpHeights.clear()
479 495 self.volOpComHeights.setEnabled(False)
480 496
481 497 @pyqtSignature("int")
482 498 def on_volOpCebFilter_stateChanged(self, p0):
483 499 """
484 500 Name='Decoder', optype='other'
485 501 """
486 502 if p0 == 2:
487 503 self.volOpFilter.setEnabled(True)
488 504
489 505 if p0 == 0:
490 506 self.volOpFilter.setEnabled(False)
491 507 self.volOpFilter.clear()
492 508
493 509 @pyqtSignature("int")
494 510 def on_volOpCebProfile_stateChanged(self, p0):
495 511 """
496 512 Check Box habilita ingreso del rango de Perfiles
497 513 """
498 514 if p0 == 2:
499 515 self.volOpComProfile.setEnabled(True)
500 516 self.volOpProfile.setEnabled(True)
501 517
502 518 if p0 == 0:
503 519 self.volOpComProfile.setEnabled(False)
504 520 self.volOpProfile.setEnabled(False)
505 521 self.volOpProfile.clear()
506 522
507 523 @pyqtSignature("int")
508 524 def on_volOpComProfile_activated(self, index):
509 525 """
510 526 Check Box habilita ingreso del rango de Perfiles
511 527 """
512 528 #Profile List
513 529 if index == 0:
514 530 self.volOpProfile.setToolTip('List of selected profiles. Example: 0, 1, 2, 3, 4, 5, 6, 7')
515 531
516 532 #Profile Range
517 533 if index == 1:
518 534 self.volOpProfile.setToolTip('Minimum and maximum profile index. Example: 0, 7')
519 535
520 536 #Profile Range List
521 537 if index == 2:
522 538 self.volOpProfile.setToolTip('List of profile ranges. Example: (0, 7), (12, 19), (100, 200)')
523 539
524 540 @pyqtSignature("int")
525 541 def on_volOpCebDecodification_stateChanged(self, p0):
526 542 """
527 543 Check Box habilita
528 544 """
529 545 if p0 == 2:
530 546 self.volOpComCode.setEnabled(True)
531 547 self.volOpComMode.setEnabled(True)
532 548 if p0 == 0:
533 549 self.volOpComCode.setEnabled(False)
534 550 self.volOpComMode.setEnabled(False)
535 551
536 552 @pyqtSignature("int")
537 553 def on_volOpComCode_activated(self, index):
538 554 """
539 555 Check Box habilita ingreso
540 556 """
541 557 if index == 13:
542 558 self.volOpCode.setEnabled(True)
543 559 else:
544 560 self.volOpCode.setEnabled(False)
545 561
546 562 if index == 0:
547 563 code = ''
548 564 self.volOpCode.setText(str(code))
549 565 return
550 566
551 567 if index == 1:
552 568 code = '(1,1,-1)'
553 569 nCode = '1'
554 570 nBaud = '3'
555 571 if index == 2:
556 572 code = '(1,1,-1,1)'
557 573 nCode = '1'
558 574 nBaud = '4'
559 575 if index == 3:
560 576 code = '(1,1,1,-1,1)'
561 577 nCode = '1'
562 578 nBaud = '5'
563 579 if index == 4:
564 580 code = '(1,1,1,-1,-1,1,-1)'
565 581 nCode = '1'
566 582 nBaud = '7'
567 583 if index == 5:
568 584 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1)'
569 585 nCode = '1'
570 586 nBaud = '11'
571 587 if index == 6:
572 588 code = '(1,1,1,1,1,-1,-1,1,1,-1,1,-1,1)'
573 589 nCode = '1'
574 590 nBaud = '13'
575 591 if index == 7:
576 592 code = '(1,1,-1,-1,-1,1)'
577 593 nCode = '2'
578 594 nBaud = '3'
579 595 if index == 8:
580 596 code = '(1,1,-1,1,-1,-1,1,-1)'
581 597 nCode = '2'
582 598 nBaud = '4'
583 599 if index == 9:
584 600 code = '(1,1,1,-1,1,-1,-1,-1,1,-1)'
585 601 nCode = '2'
586 602 nBaud = '5'
587 603 if index == 10:
588 604 code = '(1,1,1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1)'
589 605 nCode = '2'
590 606 nBaud = '7'
591 607 if index == 11:
592 608 code = '(1,1,1,-1,-1,-1,1,-1,-1,1,-1,-1 ,-1 ,-1 ,1 ,1,1,-1 ,1 ,1 ,-1 ,1)'
593 609 nCode = '2'
594 610 nBaud = '11'
595 611 if index == 12:
596 612 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 613 nCode = '2'
598 614 nBaud = '13'
599 615
600 616 code = ast.literal_eval(code)
601 617 nCode = int(nCode)
602 618 nBaud = int(nBaud)
603 619
604 620 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
605 621
606 622 self.volOpCode.setText(str(code))
607 623
608 624 @pyqtSignature("int")
609 625 def on_volOpCebFlip_stateChanged(self, p0):
610 626 """
611 627 Check Box habilita ingresode del numero de Integraciones a realizar
612 628 """
613 629 if p0 == 2:
614 630 self.volOpFlip.setEnabled(True)
615 631 if p0 == 0:
616 632 self.volOpFlip.setEnabled(False)
617 633 self.volOpFlip.clear()
618 634
619 635 @pyqtSignature("int")
620 636 def on_volOpCebCohInt_stateChanged(self, p0):
621 637 """
622 638 Check Box habilita ingresode del numero de Integraciones a realizar
623 639 """
624 640 if p0 == 2:
625 641 self.volOpCohInt.setEnabled(True)
626 642 if p0 == 0:
627 643 self.volOpCohInt.setEnabled(False)
628 644 self.volOpCohInt.clear()
629 645
630 646 @pyqtSignature("int")
631 647 def on_volOpCebRadarfrequency_stateChanged(self, p0):
632 648 """
633 649 Check Box habilita ingresode del numero de Integraciones a realizar
634 650 """
635 651 if p0 == 2:
636 652 self.volOpRadarfrequency.setEnabled(True)
637 653 if p0 == 0:
638 654 self.volOpRadarfrequency.clear()
639 655 self.volOpRadarfrequency.setEnabled(False)
640 656
641 657 @pyqtSignature("")
642 658 def on_volOutputToolPath_clicked(self):
643 659 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
644 660 self.volOutputPath.setText(dirOutPath)
645 661
646 662 @pyqtSignature("")
647 663 def on_specOutputToolPath_clicked(self):
648 664 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
649 665 self.specOutputPath.setText(dirOutPath)
650 666
651 667 @pyqtSignature("")
652 668 def on_specHeisOutputToolPath_clicked(self):
653 669 dirOutPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
654 670 self.specHeisOutputPath.setText(dirOutPath)
655 671
656 672 @pyqtSignature("")
657 673 def on_specHeisOutputMetadaToolPath_clicked(self):
658 674
659 675 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
660 676 self.specHeisOutputMetada.setText(filename)
661 677
662 678 @pyqtSignature("")
663 679 def on_volOpOk_clicked(self):
664 680 """
665 681 BUSCA EN LA LISTA DE OPERACIONES DEL TIPO VOLTAJE Y LES AοΏ½ADE EL PARAMETRO ADECUADO ESPERANDO LA ACEPTACION DEL USUARIO
666 682 PARA AGREGARLO AL ARCHIVO DE CONFIGURACION XML
667 683 """
668 684
669 685 checkPath = False
670 686
671 687 self.actionSaveToolbar.setEnabled(False)
672 688 self.actionStarToolbar.setEnabled(False)
673 689
674 690 puObj = self.getSelectedItemObj()
675 691 puObj.removeOperations()
676 692
677 693 if self.volOpCebRadarfrequency.isChecked():
678 694 value = str(self.volOpRadarfrequency.text())
679 695 format = 'float'
680 696 name_operation = 'setRadarFrequency'
681 697 name_parameter = 'frequency'
682 698 if not value == "":
683 699 try:
684 radarfreq = float(self.volOpRadarfrequency.text())
700 radarfreq = float(self.volOpRadarfrequency.text())*1e6
685 701 except:
686 702 self.console.clear()
687 703 self.console.append("Write the parameter Radar Frequency type float")
688 704 return 0
689 705 opObj = puObj.addOperation(name=name_operation)
690 706 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
691 707
692 708 if self.volOpCebChannels.isChecked():
693 709 value = str(self.volOpChannel.text())
694 710
695 711 if value == "":
696 712 print "Please fill channel list"
697 713 return 0
698 714
699 715 format = 'intlist'
700 716 if self.volOpComChannels.currentIndex() == 0:
701 717 name_operation = "selectChannels"
702 718 name_parameter = 'channelList'
703 719 else:
704 720 name_operation = "selectChannelsByIndex"
705 721 name_parameter = 'channelIndexList'
706 722
707 723 opObj = puObj.addOperation(name=name_operation)
708 724 opObj.addParameter(name=name_parameter, value=value, format=format)
709 725
710 726 if self.volOpCebHeights.isChecked():
711 727 value = str(self.volOpHeights.text())
712 728
713 729 if value == "":
714 730 print "Please fill height range"
715 731 return 0
716 732
717 733 valueList = value.split(',')
718 734 format = 'float'
719 735 if self.volOpComHeights.currentIndex() == 0:
720 736 name_operation = 'selectHeights'
721 737 name_parameter1 = 'minHei'
722 738 name_parameter2 = 'maxHei'
723 739 else:
724 740 name_operation = 'selectHeightsByIndex'
725 741 name_parameter1 = 'minIndex'
726 742 name_parameter2 = 'maxIndex'
727 743
728 744 opObj = puObj.addOperation(name=name_operation)
729 745 opObj.addParameter(name=name_parameter1, value=valueList[0], format=format)
730 746 opObj.addParameter(name=name_parameter2, value=valueList[1], format=format)
731 747
732 748 if self.volOpCebFilter.isChecked():
733 749 value = str(self.volOpFilter.text())
734 750 if value == "":
735 751 print "Please fill filter value"
736 752 return 0
737 753
738 754 format = 'int'
739 755 name_operation = 'filterByHeights'
740 756 name_parameter = 'window'
741 757 opObj = puObj.addOperation(name=name_operation)
742 758 opObj.addParameter(name=name_parameter, value=value, format=format)
743 759
744 760 if self.volOpCebProfile.isChecked():
745 761 value = str(self.volOpProfile.text())
746 762
747 763 if value == "":
748 764 print "Please fill profile value"
749 765 return 0
750 766
751 767 format = 'intlist'
752 768 optype = 'other'
753 769 name_operation = 'ProfileSelector'
754 770 if self.volOpComProfile.currentIndex() == 0:
755 771 name_parameter = 'profileList'
756 772 if self.volOpComProfile.currentIndex() == 1:
757 773 name_parameter = 'profileRangeList'
758 774 if self.volOpComProfile.currentIndex() == 2:
759 775 name_parameter = 'rangeList'
760 776
761 777 opObj = puObj.addOperation(name='ProfileSelector', optype='other')
762 778 opObj.addParameter(name=name_parameter, value=value, format=format)
763 779
764 780 if self.volOpCebDecodification.isChecked():
765 781
766 782 if self.volOpComMode.currentIndex() == 0:
767 783 mode = '0'
768 784 if self.volOpComMode.currentIndex() == 1:
769 785 mode = '1'
770 786 if self.volOpComMode.currentIndex() == 2:
771 787 mode = '2'
772 788
773 789 if self.volOpComCode.currentIndex() == 0:
774 790 opObj = puObj.addOperation(name='Decoder', optype='other')
775 791 opObj.addParameter(name='mode', value=mode, format='int')
776 792 else:
777 793 #User defined
778 794 code = str(self.volOpCode.text())
779 795 try:
780 796 code_tmp = ast.literal_eval(code)
781 797 except:
782 798 code_tmp = []
783 799
784 800 if len(code_tmp) < 1:
785 801 self.console.append("Please fill the code value")
786 802 return 0
787 803
788 804 if len(code_tmp) == 1 or type(code_tmp[0]) != int:
789 805 nBaud = len(code_tmp[0])
790 806 nCode = len(code_tmp)
791 807 else:
792 808 nBaud = len(code_tmp)
793 809 nCode = 1
794 810
795 811 opObj = puObj.addOperation(name='Decoder', optype='other')
796 812
797 813 code = code.replace("(", "")
798 814 code = code.replace(")", "")
799 815 code = code.replace("[", "")
800 816 code = code.replace("]", "")
801 817 opObj.addParameter(name='code', value=code, format='intlist')
802 818 opObj.addParameter(name='nCode', value=nCode, format='int')
803 819 opObj.addParameter(name='nBaud', value=nBaud, format='int')
804 820 opObj.addParameter(name='mode', value=mode, format='int')
805 821
806 822 if self.volOpCebFlip.isChecked():
807 823 name_operation = 'deFlip'
808 824 optype = 'self'
809 825 value = str(self.volOpFlip.text())
810 826 name_parameter = 'channelList'
811 827 format = 'intlist'
812 828
813 829 opObj = puObj.addOperation(name=name_operation, optype=optype)
814 830 if value:
815 831 opObj.addParameter(name=name_parameter, value=value, format=format)
816 832
817 833 if self.volOpCebCohInt.isChecked():
818 834 name_operation = 'CohInt'
819 835 optype = 'other'
820 836 value = str(self.volOpCohInt.text())
821 837
822 838 if value == "":
823 839 print "Please fill number of coherent integrations"
824 840 return 0
825 841
826 842 name_parameter = 'n'
827 843 format = 'float'
828 844
829 845 opObj = puObj.addOperation(name=name_operation, optype=optype)
830 846 opObj.addParameter(name=name_parameter, value=value, format=format)
831 847
832 848 if self.volGraphCebshow.isChecked():
833 849 name_operation = 'Scope'
834 850 optype = 'other'
835 851 name_parameter = 'type'
836 852 value = 'Scope'
837 853 if self.idImagscope == 0:
838 854 self.idImagscope = 100
839 855 else:
840 856 self.idImagscope = self.idImagscope + 1
841 857
842 858 name_parameter1 = 'id'
843 859 value1 = int(self.idImagscope)
844 860 format1 = 'int'
845 861 format = 'str'
846 862
847 863 opObj = puObj.addOperation(name=name_operation, optype=optype)
848 864 # opObj.addParameter(name=name_parameter, value=value, format=format)
849 865 opObj.addParameter(name=name_parameter1, value=opObj.id, format=format1)
850 866
851 867 channelList = str(self.volGraphChannelList.text()).replace(" ","")
852 868 xvalue = str(self.volGraphfreqrange.text()).replace(" ","")
853 869 yvalue = str(self.volGraphHeightrange.text()).replace(" ","")
854 870
855 871 if channelList:
856 872 opObj.addParameter(name='channelList', value=channelList, format='intlist')
857 873
858 874 if xvalue:
859 875 xvalueList = xvalue.split(',')
860 876 try:
861 877 value0 = float(xvalueList[0])
862 878 value1 = float(xvalueList[1])
863 879 except:
864 880 return 0
865 881 opObj.addParameter(name='xmin', value=value0, format='float')
866 882 opObj.addParameter(name='xmax', value=value1, format='float')
867 883
868 884
869 885 if not yvalue == "":
870 886 yvalueList = yvalue.split(",")
871 887 try:
872 888 value0 = int(yvalueList[0])
873 889 value1 = int(yvalueList[1])
874 890 except:
875 891 return 0
876 892
877 893 opObj.addParameter(name='ymin', value=value0, format='int')
878 894 opObj.addParameter(name='ymax', value=value1, format='int')
879 895
880 896 if self.volGraphCebSave.isChecked():
881 897 checkPath = True
882 898 opObj.addParameter(name='save', value='1', format='int')
883 899 opObj.addParameter(name='figpath', value=self.volGraphPath.text(), format='str')
884 900 value = str(self.volGraphPrefix.text()).replace(" ","")
885 901 if value:
886 902 opObj.addParameter(name='figfile', value=value, format='str')
887 903
888 904 localfolder = None
889 905 if checkPath:
890 906 localfolder = str(self.volGraphPath.text())
891 907 if localfolder == '':
892 908 self.console.clear()
893 909 self.console.append("Graphic path should be defined")
894 910 return 0
895 911
896 912 # if something happend
897 913 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Voltage')
898 914 if parms_ok:
899 915 name_operation = 'VoltageWriter'
900 916 optype = 'other'
901 917 name_parameter1 = 'path'
902 918 name_parameter2 = 'blocksPerFile'
903 919 name_parameter3 = 'profilesPerBlock'
904 920 value1 = output_path
905 921 value2 = blocksperfile
906 922 value3 = profilesperblock
907 923 format = "int"
908 924 opObj = puObj.addOperation(name=name_operation, optype=optype)
909 925 opObj.addParameter(name=name_parameter1, value=value1)
910 926 opObj.addParameter(name=name_parameter2, value=value2, format=format)
911 927 opObj.addParameter(name=name_parameter3, value=value3, format=format)
912 928
913 929 self.console.clear()
914 930 try:
915 931 self.refreshPUProperties(puObj)
916 932 except:
917 933 self.console.append("Check input parameters")
918 934 return 0
919 935
920 936 self.console.append("If you want to save your project")
921 937 self.console.append("click on your project name in the Tree Project Explorer")
922 938
923 939 self.actionSaveToolbar.setEnabled(True)
924 940 self.actionStarToolbar.setEnabled(True)
925 941
926 942 return 1
927 943
928 944 """
929 945 Voltage Graph
930 946 """
931 947 @pyqtSignature("int")
932 948 def on_volGraphCebSave_stateChanged(self, p0):
933 949 """
934 950 Check Box habilita ingresode del numero de Integraciones a realizar
935 951 """
936 952 if p0 == 2:
937 953 self.volGraphPath.setEnabled(True)
938 954 self.volGraphPrefix.setEnabled(True)
939 955 self.volGraphToolPath.setEnabled(True)
940 956
941 957 if p0 == 0:
942 958 self.volGraphPath.setEnabled(False)
943 959 self.volGraphPrefix.setEnabled(False)
944 960 self.volGraphToolPath.setEnabled(False)
945 961
946 962 @pyqtSignature("")
947 963 def on_volGraphToolPath_clicked(self):
948 964 """
949 965 Donde se guardan los DATOS
950 966 """
951 967 self.dataPath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
952 968 self.volGraphPath.setText(self.dataPath)
953 969
954 970 # if not os.path.exists(self.dataPath):
955 971 # self.volGraphOk.setEnabled(False)
956 972 # return
957 973
958 974 @pyqtSignature("int")
959 975 def on_volGraphCebshow_stateChanged(self, p0):
960 976 """
961 977 Check Box habilita ingresode del numero de Integraciones a realizar
962 978 """
963 979 if p0 == 0:
964 980
965 981 self.volGraphChannelList.setEnabled(False)
966 982 self.volGraphfreqrange.setEnabled(False)
967 983 self.volGraphHeightrange.setEnabled(False)
968 984 if p0 == 2:
969 985
970 986 self.volGraphChannelList.setEnabled(True)
971 987 self.volGraphfreqrange.setEnabled(True)
972 988 self.volGraphHeightrange.setEnabled(True)
973 989
974 990 """
975 991 Spectra operation
976 992 """
977 993 @pyqtSignature("int")
978 994 def on_specOpCebRadarfrequency_stateChanged(self, p0):
979 995 """
980 996 Check Box habilita ingresode del numero de Integraciones a realizar
981 997 """
982 998 if p0 == 2:
983 999 self.specOpRadarfrequency.setEnabled(True)
984 1000 if p0 == 0:
985 1001 self.specOpRadarfrequency.clear()
986 1002 self.specOpRadarfrequency.setEnabled(False)
987 1003
988 1004
989 1005 @pyqtSignature("int")
990 1006 def on_specOpCebCrossSpectra_stateChanged(self, p0):
991 1007 """
992 1008 Habilita la opcion de aοΏ½adir el parοΏ½metro CrossSpectra a la Unidad de Procesamiento .
993 1009 """
994 1010 if p0 == 2:
995 1011 # self.specOpnFFTpoints.setEnabled(True)
996 1012 self.specOppairsList.setEnabled(True)
997 1013 if p0 == 0:
998 1014 # self.specOpnFFTpoints.setEnabled(False)
999 1015 self.specOppairsList.setEnabled(False)
1000 1016
1001 1017 @pyqtSignature("int")
1002 1018 def on_specOpCebChannel_stateChanged(self, p0):
1003 1019 """
1004 1020 Habilita la opcion de aοΏ½adir el parοΏ½metro numero de Canales a la Unidad de Procesamiento .
1005 1021 """
1006 1022 if p0 == 2:
1007 1023 self.specOpChannel.setEnabled(True)
1008 1024 self.specOpComChannel.setEnabled(True)
1009 1025 if p0 == 0:
1010 1026 self.specOpChannel.setEnabled(False)
1011 1027 self.specOpComChannel.setEnabled(False)
1012 1028
1013 1029 @pyqtSignature("int")
1014 1030 def on_specOpCebHeights_stateChanged(self, p0):
1015 1031 """
1016 1032 Habilita la opcion de aοΏ½adir el parοΏ½metro de alturas a la Unidad de Procesamiento .
1017 1033 """
1018 1034 if p0 == 2:
1019 1035 self.specOpComHeights.setEnabled(True)
1020 1036 self.specOpHeights.setEnabled(True)
1021 1037 if p0 == 0:
1022 1038 self.specOpComHeights.setEnabled(False)
1023 1039 self.specOpHeights.setEnabled(False)
1024 1040
1025 1041
1026 1042 @pyqtSignature("int")
1027 1043 def on_specOpCebIncoherent_stateChanged(self, p0):
1028 1044 """
1029 1045 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
1030 1046 """
1031 1047 if p0 == 2:
1032 1048 self.specOpIncoherent.setEnabled(True)
1033 1049 if p0 == 0:
1034 1050 self.specOpIncoherent.setEnabled(False)
1035 1051
1036 1052 @pyqtSignature("int")
1037 1053 def on_specOpCebRemoveDC_stateChanged(self, p0):
1038 1054 """
1039 1055 Habilita la opcion de aοΏ½adir el parοΏ½metro remover DC a la Unidad de Procesamiento .
1040 1056 """
1041 1057 if p0 == 2:
1042 1058 self.specOpComRemoveDC.setEnabled(True)
1043 1059 if p0 == 0:
1044 1060 self.specOpComRemoveDC.setEnabled(False)
1045 1061
1046 1062 @pyqtSignature("int")
1047 1063 def on_specOpCebgetNoise_stateChanged(self, p0):
1048 1064 """
1049 1065 Habilita la opcion de aοΏ½adir la estimacion de ruido a la Unidad de Procesamiento .
1050 1066 """
1051 1067 if p0 == 2:
1052 1068 self.specOpgetNoise.setEnabled(True)
1053 1069
1054 1070 if p0 == 0:
1055 1071 self.specOpgetNoise.setEnabled(False)
1056 1072
1057 1073 @pyqtSignature("")
1058 1074 def on_specOpOk_clicked(self):
1059 1075 """
1060 1076 AΓ‘ADE OPERACION SPECTRA
1061 1077 """
1062 1078
1063 1079 addFTP = False
1064 1080 checkPath = False
1065 1081
1066 1082 self.actionSaveToolbar.setEnabled(False)
1067 1083 self.actionStarToolbar.setEnabled(False)
1068 1084
1069 1085 projectObj = self.getSelectedProjectObj()
1070 1086 puObj = self.getSelectedItemObj()
1071 1087
1072 1088 puObj.removeOperations()
1073 1089
1074 1090 if self.specOpCebRadarfrequency.isChecked():
1075 1091 value = self.specOpRadarfrequency.text()
1076 1092 format = 'float'
1077 1093 name_operation = 'setRadarFrequency'
1078 1094 name_parameter = 'frequency'
1079 1095 if not value == "":
1080 1096 try:
1081 radarfreq = float(self.specOpRadarfrequency.text())
1097 radarfreq = float(self.specOpRadarfrequency.text())*1e6
1082 1098 except:
1083 1099 self.console.clear()
1084 1100 self.console.append("Write the parameter Radar Frequency type float")
1085 1101 return 0
1086 1102 opObj = puObj.addOperation(name=name_operation)
1087 1103 opObj.addParameter(name=name_parameter, value=radarfreq, format=format)
1088 1104
1089 1105 inputId = puObj.getInputId()
1090 1106 inputPuObj = projectObj.getProcUnitObj(inputId)
1091 1107
1092 1108 if inputPuObj.datatype == 'Voltage' or inputPuObj.datatype == 'USRP':
1093 1109
1094 1110 try:
1095 1111 value = int(self.specOpnFFTpoints.text())
1096 1112 puObj.addParameter(name='nFFTPoints', value=value, format='int')
1097 1113 except:
1098 1114 self.console.clear()
1099 1115 self.console.append("Please write the number of FFT")
1100 1116 return 0
1101 1117
1102 1118 try:
1103 1119 value1 = int(self.specOpProfiles.text())
1104 1120 puObj.addParameter(name='nProfiles', value=value1, format='int')
1105 1121 except:
1106 1122 self.console.append("Please Write the number of Profiles")
1107 1123
1108 1124 try:
1109 1125 value2 = int(self.specOpippFactor.text())
1110 1126 puObj.addParameter(name='ippFactor' , value=value2 , format='int')
1111 1127 except:
1112 1128 self.console.append("Please Write the Number of IppFactor")
1113 1129
1114 1130
1115 1131 if self.specOpCebCrossSpectra.isChecked():
1116 1132 name_parameter = 'pairsList'
1117 1133 format = 'pairslist'
1118 1134 value2 = self.specOppairsList.text()
1119 1135
1120 1136 if value2 == "":
1121 1137 print "Please fill the pairs list field"
1122 1138 return 0
1123 1139
1124 1140 puObj.addParameter(name=name_parameter, value=value2, format=format)
1125 1141
1126 1142 if self.specOpCebHeights.isChecked():
1127 1143 value = str(self.specOpHeights.text())
1128 1144
1129 1145 if value == "":
1130 1146 print "Please fill height range"
1131 1147 return 0
1132 1148
1133 1149 valueList = value.split(',')
1134 1150 format = 'float'
1135 1151 value0 = valueList[0]
1136 1152 value1 = valueList[1]
1137 1153
1138 1154 if self.specOpComHeights.currentIndex() == 0:
1139 1155 name_operation = 'selectHeights'
1140 1156 name_parameter1 = 'minHei'
1141 1157 name_parameter2 = 'maxHei'
1142 1158 else:
1143 1159 name_operation = 'selectHeightsByIndex'
1144 1160 name_parameter1 = 'minIndex'
1145 1161 name_parameter2 = 'maxIndex'
1146 1162 opObj = puObj.addOperation(name=name_operation)
1147 1163 opObj.addParameter(name=name_parameter1, value=value0, format=format)
1148 1164 opObj.addParameter(name=name_parameter2, value=value1, format=format)
1149 1165
1150 1166 if self.specOpCebChannel.isChecked():
1151 1167 value = str(self.specOpChannel.text())
1152 1168
1153 1169 if value == "":
1154 1170 print "Please fill channel list"
1155 1171 return 0
1156 1172
1157 1173 format = 'intlist'
1158 1174 if self.specOpComChannel.currentIndex() == 0:
1159 1175 name_operation = "selectChannels"
1160 1176 name_parameter = 'channelList'
1161 1177 else:
1162 1178 name_operation = "selectChannelsByIndex"
1163 1179 name_parameter = 'channelIndexList'
1164 1180
1165 1181 opObj = puObj.addOperation(name=name_operation)
1166 1182 opObj.addParameter(name=name_parameter, value=value, format=format)
1167 1183
1168 1184 if self.specOpCebIncoherent.isChecked():
1169 1185 value = str(self.specOpIncoherent.text())
1170 1186
1171 1187 if value == "":
1172 1188 print "Please fill Incoherent integration value"
1173 1189 return 0
1174 1190
1175 1191 name_operation = 'IncohInt'
1176 1192 optype = 'other'
1177 1193 if self.specOpCobIncInt.currentIndex() == 0:
1178 1194 name_parameter = 'timeInterval'
1179 1195 format = 'float'
1180 1196 else:
1181 1197 name_parameter = 'n'
1182 1198 format = 'float'
1183 1199
1184 1200 opObj = puObj.addOperation(name=name_operation, optype=optype)
1185 1201 opObj.addParameter(name=name_parameter, value=value, format=format)
1186 1202
1187 1203 if self.specOpCebRemoveDC.isChecked():
1188 1204 name_operation = 'removeDC'
1189 1205 name_parameter = 'mode'
1190 1206 format = 'int'
1191 1207 if self.specOpComRemoveDC.currentIndex() == 0:
1192 1208 value = 1
1193 1209 else:
1194 1210 value = 2
1195 1211 opObj = puObj.addOperation(name=name_operation)
1196 1212 opObj.addParameter(name=name_parameter, value=value, format=format)
1197 1213
1198 1214 if self.specOpCebRemoveInt.isChecked():
1199 1215 name_operation = 'removeInterference'
1200 1216 opObj = puObj.addOperation(name=name_operation)
1201 1217
1202 1218
1203 1219 if self.specOpCebgetNoise.isChecked():
1204 1220 value = self.specOpgetNoise.text()
1205 1221 valueList = value.split(',')
1206 1222 format = 'float'
1207 1223 name_operation = "getNoise"
1208 1224 opObj = puObj.addOperation(name=name_operation)
1209 1225
1210 1226 if not value == '':
1211 1227 valueList = value.split(',')
1212 1228 length = len(valueList)
1213 1229 if length == 1:
1214 1230 try:
1215 1231 value1 = float(valueList[0])
1216 1232 except:
1217 1233 self.console.clear()
1218 1234 self.console.append("Please Write correct parameter Get Noise")
1219 1235 return 0
1220 1236 name1 = 'minHei'
1221 1237 opObj.addParameter(name=name1, value=value1, format=format)
1222 1238 elif length == 2:
1223 1239 try:
1224 1240 value1 = float(valueList[0])
1225 1241 value2 = float(valueList[1])
1226 1242 except:
1227 1243 self.console.clear()
1228 1244 self.console.append("Please Write corrects parameter Get Noise")
1229 1245 return 0
1230 1246 name1 = 'minHei'
1231 1247 name2 = 'maxHei'
1232 1248 opObj.addParameter(name=name1, value=value1, format=format)
1233 1249 opObj.addParameter(name=name2, value=value2, format=format)
1234 1250
1235 1251 elif length == 3:
1236 1252 try:
1237 1253 value1 = float(valueList[0])
1238 1254 value2 = float(valueList[1])
1239 1255 value3 = float(valueList[2])
1240 1256 except:
1241 1257 self.console.clear()
1242 1258 self.console.append("Please Write corrects parameter Get Noise")
1243 1259 return 0
1244 1260 name1 = 'minHei'
1245 1261 name2 = 'maxHei'
1246 1262 name3 = 'minVel'
1247 1263 opObj.addParameter(name=name1, value=value1, format=format)
1248 1264 opObj.addParameter(name=name2, value=value2, format=format)
1249 1265 opObj.addParameter(name=name3, value=value3, format=format)
1250 1266
1251 1267 elif length == 4:
1252 1268 try:
1253 1269 value1 = float(valueList[0])
1254 1270 value2 = float(valueList[1])
1255 1271 value3 = float(valueList[2])
1256 1272 value4 = float(valueList[3])
1257 1273 except:
1258 1274 self.console.clear()
1259 1275 self.console.append("Please Write corrects parameter Get Noise")
1260 1276 return 0
1261 1277 name1 = 'minHei'
1262 1278 name2 = 'maxHei'
1263 1279 name3 = 'minVel'
1264 1280 name4 = 'maxVel'
1265 1281 opObj.addParameter(name=name1, value=value1, format=format)
1266 1282 opObj.addParameter(name=name2, value=value2, format=format)
1267 1283 opObj.addParameter(name=name3, value=value3, format=format)
1268 1284 opObj.addParameter(name=name4, value=value4, format=format)
1269 1285
1270 1286 elif length > 4:
1271 1287 self.console.clear()
1272 1288 self.console.append("Get Noise Operation only accepts 4 parameters")
1273 1289 return 0
1274 1290
1275 1291 channelList = str(self.specGgraphChannelList.text()).replace(" ","")
1276 1292 vel_range = str(self.specGgraphFreq.text()).replace(" ","")
1277 1293 hei_range = str(self.specGgraphHeight.text()).replace(" ","")
1278 1294 db_range = str(self.specGgraphDbsrange.text()).replace(" ","")
1279 1295
1280 1296 trange = str(self.specGgraphTminTmax.text()).replace(" ","")
1281 1297 magrange = str(self.specGgraphmagnitud.text()).replace(" ","")
1282 1298 phaserange = str(self.specGgraphPhase.text()).replace(" ","")
1283 1299 # timerange = str(self.specGgraphTimeRange.text()).replace(" ","")
1284 1300
1285 1301 figpath = str(self.specGraphPath.text())
1286 1302 figfile = str(self.specGraphPrefix.text()).replace(" ","")
1287 1303 try:
1288 1304 wrperiod = int(str(self.specGgraphftpratio.text()).replace(" ",""))
1289 1305 except:
1290 1306 wrperiod = None
1291 1307
1292 1308 #-----Spectra Plot-----
1293 1309 if self.specGraphCebSpectraplot.isChecked():
1294 1310
1295 1311 opObj = puObj.addOperation(name='SpectraPlot', optype='other')
1296 1312 opObj.addParameter(name='id', value=opObj.id, format='int')
1297 1313
1298 1314 if not channelList == '':
1299 1315 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1300 1316
1301 1317 if not vel_range == '':
1302 1318 xvalueList = vel_range.split(',')
1303 1319 try:
1304 1320 value1 = float(xvalueList[0])
1305 1321 value2 = float(xvalueList[1])
1306 1322 except:
1307 1323 self.console.clear()
1308 1324 self.console.append("Invalid velocity/frequency range")
1309 1325 return 0
1310 1326
1311 1327 opObj.addParameter(name='xmin', value=value1, format='float')
1312 1328 opObj.addParameter(name='xmax', value=value2, format='float')
1313 1329
1314 1330 if not hei_range == '':
1315 1331 yvalueList = hei_range.split(",")
1316 1332 try:
1317 1333 value1 = float(yvalueList[0])
1318 1334 value2 = float(yvalueList[1])
1319 1335 except:
1320 1336 self.console.clear()
1321 1337 self.console.append("Invalid height range")
1322 1338 return 0
1323 1339
1324 1340 opObj.addParameter(name='ymin', value=value1, format='float')
1325 1341 opObj.addParameter(name='ymax', value=value2, format='float')
1326 1342
1327 1343 if not db_range == '':
1328 1344 zvalueList = db_range.split(",")
1329 1345 try:
1330 1346 value1 = float(zvalueList[0])
1331 1347 value2 = float(zvalueList[1])
1332 1348 except:
1333 1349 self.console.clear()
1334 1350 self.console.append("Invalid db range")
1335 1351 return 0
1336 1352
1337 1353 opObj.addParameter(name='zmin', value=value1, format='float')
1338 1354 opObj.addParameter(name='zmax', value=value2, format='float')
1339 1355
1340 1356 if self.specGraphSaveSpectra.isChecked():
1341 1357 checkPath = True
1342 1358 opObj.addParameter(name='save', value=1 , format='bool')
1343 1359 opObj.addParameter(name='figpath', value=figpath, format='str')
1344 1360 if figfile:
1345 1361 opObj.addParameter(name='figfile', value=figfile, format='str')
1346 1362 if wrperiod:
1347 1363 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1348 1364
1349 1365 if self.specGraphftpSpectra.isChecked():
1350 1366 opObj.addParameter(name='ftp', value='1', format='int')
1351 1367 self.addFTPConf2Operation(puObj, opObj)
1352 1368 addFTP = True
1353 1369
1354 1370 if self.specGraphCebCrossSpectraplot.isChecked():
1355 1371
1356 1372 opObj = puObj.addOperation(name='CrossSpectraPlot', optype='other')
1357 1373 # opObj.addParameter(name='power_cmap', value='jet', format='str')
1358 1374 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1359 1375 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1360 1376 opObj.addParameter(name='id', value=opObj.id, format='int')
1361 1377
1362 1378 if not vel_range == '':
1363 1379 xvalueList = vel_range.split(',')
1364 1380 try:
1365 1381 value1 = float(xvalueList[0])
1366 1382 value2 = float(xvalueList[1])
1367 1383 except:
1368 1384 self.console.clear()
1369 1385 self.console.append("Invalid velocity/frequency range")
1370 1386 return 0
1371 1387
1372 1388 opObj.addParameter(name='xmin', value=value1, format='float')
1373 1389 opObj.addParameter(name='xmax', value=value2, format='float')
1374 1390
1375 1391 if not hei_range == '':
1376 1392 yvalueList = hei_range.split(",")
1377 1393 try:
1378 1394 value1 = float(yvalueList[0])
1379 1395 value2 = float(yvalueList[1])
1380 1396 except:
1381 1397 self.console.clear()
1382 1398 self.console.append("Invalid height range")
1383 1399 return 0
1384 1400
1385 1401 opObj.addParameter(name='ymin', value=value1, format='float')
1386 1402 opObj.addParameter(name='ymax', value=value2, format='float')
1387 1403
1388 1404 if not db_range == '':
1389 1405 zvalueList = db_range.split(",")
1390 1406 try:
1391 1407 value1 = float(zvalueList[0])
1392 1408 value2 = float(zvalueList[1])
1393 1409 except:
1394 1410 self.console.clear()
1395 1411 self.console.append("Invalid db range")
1396 1412 return 0
1397 1413
1398 1414 opObj.addParameter(name='zmin', value=value1, format='float')
1399 1415 opObj.addParameter(name='zmax', value=value2, format='float')
1400 1416
1401 1417 if not magrange == '':
1402 1418 zvalueList = magrange.split(",")
1403 1419 try:
1404 1420 value1 = float(zvalueList[0])
1405 1421 value2 = float(zvalueList[1])
1406 1422 except:
1407 1423 self.console.clear()
1408 1424 self.console.append("Invalid magnitude range")
1409 1425 return 0
1410 1426
1411 1427 opObj.addParameter(name='coh_min', value=value1, format='float')
1412 1428 opObj.addParameter(name='coh_max', value=value2, format='float')
1413 1429
1414 1430 if not phaserange == '':
1415 1431 zvalueList = phaserange.split(",")
1416 1432 try:
1417 1433 value1 = float(zvalueList[0])
1418 1434 value2 = float(zvalueList[1])
1419 1435 except:
1420 1436 self.console.clear()
1421 1437 self.console.append("Invalid phase range")
1422 1438 return 0
1423 1439
1424 1440 opObj.addParameter(name='phase_min', value=value1, format='float')
1425 1441 opObj.addParameter(name='phase_max', value=value2, format='float')
1426 1442
1427 1443 if self.specGraphSaveCross.isChecked():
1428 1444 checkPath = True
1429 1445 opObj.addParameter(name='save', value='1', format='bool')
1430 1446 opObj.addParameter(name='figpath', value=figpath, format='str')
1431 1447 if figfile:
1432 1448 opObj.addParameter(name='figfile', value=figfile, format='str')
1433 1449 if wrperiod:
1434 1450 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1435 1451
1436 1452 if self.specGraphftpCross.isChecked():
1437 1453 opObj.addParameter(name='ftp', value='1', format='int')
1438 1454 self.addFTPConf2Operation(puObj, opObj)
1439 1455 addFTP = True
1440 1456
1441 1457 if self.specGraphCebRTIplot.isChecked():
1442 1458
1443 1459 opObj = puObj.addOperation(name='RTIPlot', optype='other')
1444 1460 opObj.addParameter(name='id', value=opObj.id, format='int')
1445 1461
1446 1462 if not channelList == '':
1447 1463 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1448 1464
1449 1465 if not trange == '':
1450 1466 xvalueList = trange.split(',')
1451 1467 try:
1452 1468 value1 = float(xvalueList[0])
1453 1469 value2 = float(xvalueList[1])
1454 1470 except:
1455 1471 self.console.clear()
1456 1472 self.console.append("Invalid time range")
1457 1473 return 0
1458 1474
1459 1475 opObj.addParameter(name='xmin', value=value1, format='float')
1460 1476 opObj.addParameter(name='xmax', value=value2, format='float')
1461 1477
1462 1478 # if not timerange == '':
1463 1479 # try:
1464 1480 # timerange = float(timerange)
1465 1481 # except:
1466 1482 # self.console.clear()
1467 1483 # self.console.append("Invalid time range")
1468 1484 # return 0
1469 1485 #
1470 1486 # opObj.addParameter(name='timerange', value=timerange, format='float')
1471 1487
1472 1488 if not hei_range == '':
1473 1489 yvalueList = hei_range.split(",")
1474 1490 try:
1475 1491 value1 = float(yvalueList[0])
1476 1492 value2 = float(yvalueList[1])
1477 1493 except:
1478 1494 self.console.clear()
1479 1495 self.console.append("Invalid height range")
1480 1496 return 0
1481 1497
1482 1498 opObj.addParameter(name='ymin', value=value1, format='float')
1483 1499 opObj.addParameter(name='ymax', value=value2, format='float')
1484 1500
1485 1501 if not db_range == '':
1486 1502 zvalueList = db_range.split(",")
1487 1503 try:
1488 1504 value1 = float(zvalueList[0])
1489 1505 value2 = float(zvalueList[1])
1490 1506 except:
1491 1507 self.console.clear()
1492 1508 self.console.append("Invalid db range")
1493 1509 return 0
1494 1510
1495 1511 opObj.addParameter(name='zmin', value=value1, format='float')
1496 1512 opObj.addParameter(name='zmax', value=value2, format='float')
1497 1513
1498 1514 if self.specGraphSaveRTIplot.isChecked():
1499 1515 checkPath = True
1500 1516 opObj.addParameter(name='save', value='1', format='bool')
1501 1517 opObj.addParameter(name='figpath', value=figpath, format='str')
1502 1518 if figfile:
1503 1519 opObj.addParameter(name='figfile', value=value, format='str')
1504 1520 if wrperiod:
1505 1521 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1506 1522
1507 1523 if self.specGraphftpRTIplot.isChecked():
1508 1524 opObj.addParameter(name='ftp', value='1', format='int')
1509 1525 self.addFTPConf2Operation(puObj, opObj)
1510 1526 addFTP = True
1511 1527
1512 1528 if self.specGraphCebCoherencmap.isChecked():
1513 1529
1514 1530 opObj = puObj.addOperation(name='CoherenceMap', optype='other')
1515 1531 # opObj.addParameter(name=name_parameter, value=value, format=format)
1516 1532 # opObj.addParameter(name='coherence_cmap', value='jet', format='str')
1517 1533 # opObj.addParameter(name='phase_cmap', value='RdBu_r', format='str')
1518 1534 opObj.addParameter(name='id', value=opObj.id, format='int')
1519 1535
1520 1536 # if not timerange == '':
1521 1537 # try:
1522 1538 # timerange = int(timerange)
1523 1539 # except:
1524 1540 # self.console.clear()
1525 1541 # self.console.append("Invalid time range")
1526 1542 # return 0
1527 1543 #
1528 1544 # opObj.addParameter(name='timerange', value=timerange, format='int')
1529 1545
1530 1546 if not trange == '':
1531 1547 xvalueList = trange.split(',')
1532 1548 try:
1533 1549 value1 = float(xvalueList[0])
1534 1550 value2 = float(xvalueList[1])
1535 1551 except:
1536 1552 self.console.clear()
1537 1553 self.console.append("Invalid time range")
1538 1554 return 0
1539 1555
1540 1556 opObj.addParameter(name='xmin', value=value1, format='float')
1541 1557 opObj.addParameter(name='xmax', value=value2, format='float')
1542 1558
1543 1559 if not hei_range == '':
1544 1560 yvalueList = hei_range.split(",")
1545 1561 try:
1546 1562 value1 = float(yvalueList[0])
1547 1563 value2 = float(yvalueList[1])
1548 1564 except:
1549 1565 self.console.clear()
1550 1566 self.console.append("Invalid height range")
1551 1567 return 0
1552 1568
1553 1569 opObj.addParameter(name='ymin', value=value1, format='float')
1554 1570 opObj.addParameter(name='ymax', value=value2, format='float')
1555 1571
1556 1572 if not magrange == '':
1557 1573 zvalueList = magrange.split(",")
1558 1574 try:
1559 1575 value1 = float(zvalueList[0])
1560 1576 value2 = float(zvalueList[1])
1561 1577 except:
1562 1578 self.console.clear()
1563 1579 self.console.append("Invalid magnitude range")
1564 1580 return 0
1565 1581
1566 1582 opObj.addParameter(name='zmin', value=value1, format='float')
1567 1583 opObj.addParameter(name='zmax', value=value2, format='float')
1568 1584
1569 1585 if not phaserange == '':
1570 1586 zvalueList = phaserange.split(",")
1571 1587 try:
1572 1588 value1 = float(zvalueList[0])
1573 1589 value2 = float(zvalueList[1])
1574 1590 except:
1575 1591 self.console.clear()
1576 1592 self.console.append("Invalid phase range")
1577 1593 return 0
1578 1594
1579 1595 opObj.addParameter(name='phase_min', value=value1, format='float')
1580 1596 opObj.addParameter(name='phase_max', value=value2, format='float')
1581 1597
1582 1598 if self.specGraphSaveCoherencemap.isChecked():
1583 1599 checkPath = True
1584 1600 opObj.addParameter(name='save', value='1', format='bool')
1585 1601 opObj.addParameter(name='figpath', value=figpath, format='str')
1586 1602 if figfile:
1587 1603 opObj.addParameter(name='figfile', value=value, format='str')
1588 1604 if wrperiod:
1589 1605 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1590 1606
1591 1607 if self.specGraphftpCoherencemap.isChecked():
1592 1608 opObj.addParameter(name='ftp', value='1', format='int')
1593 1609 self.addFTPConf2Operation(puObj, opObj)
1594 1610 addFTP = True
1595 1611
1596 1612 if self.specGraphPowerprofile.isChecked():
1597 1613
1598 1614 opObj = puObj.addOperation(name='PowerProfilePlot', optype='other')
1599 1615 opObj.addParameter(name='id', value=opObj.id, format='int')
1600 1616
1601 1617 if not channelList == '':
1602 1618 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1603 1619
1604 1620 if not db_range == '':
1605 1621 xvalueList = db_range.split(',')
1606 1622 try:
1607 1623 value1 = float(xvalueList[0])
1608 1624 value2 = float(xvalueList[1])
1609 1625 except:
1610 1626 self.console.clear()
1611 1627 self.console.append("Invalid db range")
1612 1628 return 0
1613 1629
1614 1630 opObj.addParameter(name='xmin', value=value1, format='float')
1615 1631 opObj.addParameter(name='xmax', value=value2, format='float')
1616 1632
1617 1633 if not hei_range == '':
1618 1634 yvalueList = hei_range.split(",")
1619 1635 try:
1620 1636 value1 = float(yvalueList[0])
1621 1637 value2 = float(yvalueList[1])
1622 1638 except:
1623 1639 self.console.clear()
1624 1640 self.console.append("Invalid height range")
1625 1641 return 0
1626 1642
1627 1643 opObj.addParameter(name='ymin', value=value1, format='float')
1628 1644 opObj.addParameter(name='ymax', value=value2, format='float')
1629 1645
1630 1646 if self.specGraphSavePowerprofile.isChecked():
1631 1647 checkPath = True
1632 1648 opObj.addParameter(name='save', value='1', format='bool')
1633 1649 opObj.addParameter(name='figpath', value=figpath, format='str')
1634 1650 if figfile:
1635 1651 opObj.addParameter(name='figfile', value=value, format='str')
1636 1652 if wrperiod:
1637 1653 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1638 1654
1639 1655 if self.specGraphftpPowerprofile.isChecked():
1640 1656 opObj.addParameter(name='ftp', value='1', format='int')
1641 1657 self.addFTPConf2Operation(puObj, opObj)
1642 1658 addFTP = True
1643 1659 # rti noise
1644 1660
1645 1661 if self.specGraphCebRTInoise.isChecked():
1646 1662
1647 1663 opObj = puObj.addOperation(name='Noise', optype='other')
1648 1664 opObj.addParameter(name='id', value=opObj.id, format='int')
1649 1665
1650 1666 if not channelList == '':
1651 1667 opObj.addParameter(name='channelList', value=channelList, format='intlist')
1652 1668
1653 1669 # if not timerange == '':
1654 1670 # try:
1655 1671 # timerange = float(timerange)
1656 1672 # except:
1657 1673 # self.console.clear()
1658 1674 # self.console.append("Invalid time range")
1659 1675 # return 0
1660 1676 #
1661 1677 # opObj.addParameter(name='timerange', value=timerange, format='float')
1662 1678
1663 1679 if not trange == '':
1664 1680 xvalueList = trange.split(',')
1665 1681 try:
1666 1682 value1 = float(xvalueList[0])
1667 1683 value2 = float(xvalueList[1])
1668 1684 except:
1669 1685 self.console.clear()
1670 1686 self.console.append("Invalid time range")
1671 1687 return 0
1672 1688
1673 1689 opObj.addParameter(name='xmin', value=value1, format='float')
1674 1690 opObj.addParameter(name='xmax', value=value2, format='float')
1675 1691
1676 1692 if not db_range == '':
1677 1693 yvalueList = db_range.split(",")
1678 1694 try:
1679 1695 value1 = float(yvalueList[0])
1680 1696 value2 = float(yvalueList[1])
1681 1697 except:
1682 1698 self.console.clear()
1683 1699 self.console.append("Invalid db range")
1684 1700 return 0
1685 1701
1686 1702 opObj.addParameter(name='ymin', value=value1, format='float')
1687 1703 opObj.addParameter(name='ymax', value=value2, format='float')
1688 1704
1689 1705 if self.specGraphSaveRTInoise.isChecked():
1690 1706 checkPath = True
1691 1707 opObj.addParameter(name='save', value='1', format='bool')
1692 1708 opObj.addParameter(name='figpath', value=figpath, format='str')
1693 1709 if figfile:
1694 1710 opObj.addParameter(name='figfile', value=value, format='str')
1695 1711 if wrperiod:
1696 1712 opObj.addParameter(name='wr_period', value=wrperiod,format='int')
1697 1713
1698 1714 # test_ftp
1699 1715 if self.specGraphftpRTInoise.isChecked():
1700 1716 opObj.addParameter(name='ftp', value='1', format='int')
1701 1717 self.addFTPConf2Operation(puObj, opObj)
1702 1718 addFTP = True
1703 1719
1704 1720 if checkPath:
1705 1721 if not figpath:
1706 1722 self.console.clear()
1707 1723 self.console.append("Graphic path should be defined")
1708 1724 return 0
1709 1725
1710 if addFTP:
1711 if not figpath:
1726 if addFTP and not figpath:
1712 1727 self.console.clear()
1713 1728 self.console.append("You have to save the plots before sending them to FTP Server")
1714 1729 return 0
1715
1716 if not self.temporalFTP.create:
1717 self.temporalFTP.setwithoutconfiguration()
1718
1719 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
1720 self.addFTPProcUnitView(server, username, password, remotefolder,
1721 ftp_wei, exp_code, sub_exp_code, plot_pos,
1722 localfolder=figpath)
1723 else:
1724 self.removeFTPProcUnitView()
1725
1730
1726 1731 # if something happend
1727 1732 parms_ok, output_path, blocksperfile, profilesperblock = self.checkInputsPUSave(datatype='Spectra')
1728 1733 if parms_ok:
1729 1734 opObj = puObj.addOperation(name='SpectraWriter', optype='other')
1730 1735 opObj.addParameter(name='path', value=output_path)
1731 1736 opObj.addParameter(name='blocksPerFile', value=blocksperfile, format='int')
1732 1737 opObj.addParameter(name='profilesPerBlock', value=profilesperblock, format='int')
1733 1738
1734 1739 self.console.clear()
1735 1740 try:
1736 1741 self.refreshPUProperties(puObj)
1737 1742 except:
1738 1743 self.console.append("Check input parameters")
1739 1744 return 0
1740 1745
1741 1746 self.console.append("If you want to save your project")
1742 1747 self.console.append("click on your project name in the Tree Project Explorer")
1743 1748
1744 1749 self.actionSaveToolbar.setEnabled(True)
1745 1750 self.actionStarToolbar.setEnabled(True)
1746 1751
1747 1752 return 1
1748 1753
1749 1754 """
1750 1755 Spectra Graph
1751 1756 """
1752 1757 @pyqtSignature("int")
1753 1758 def on_specGraphCebSpectraplot_stateChanged(self, p0):
1754 1759
1755 1760 self.__checkSpecGraphFilters()
1756 1761
1757 1762
1758 1763 @pyqtSignature("int")
1759 1764 def on_specGraphCebCrossSpectraplot_stateChanged(self, p0):
1760 1765
1761 1766 self.__checkSpecGraphFilters()
1762 1767
1763 1768 @pyqtSignature("int")
1764 1769 def on_specGraphCebRTIplot_stateChanged(self, p0):
1765 1770
1766 1771 self.__checkSpecGraphFilters()
1767 1772
1768 1773
1769 1774 @pyqtSignature("int")
1770 1775 def on_specGraphCebRTInoise_stateChanged(self, p0):
1771 1776
1772 1777 self.__checkSpecGraphFilters()
1773 1778
1774 1779
1775 1780 @pyqtSignature("int")
1776 1781 def on_specGraphCebCoherencmap_stateChanged(self, p0):
1777 1782
1778 1783 self.__checkSpecGraphFilters()
1779 1784
1780 1785 @pyqtSignature("int")
1781 1786 def on_specGraphPowerprofile_stateChanged(self, p0):
1782 1787
1783 1788 self.__checkSpecGraphFilters()
1784 1789
1785 1790 @pyqtSignature("int")
1786 1791 def on_specGraphPhase_stateChanged(self, p0):
1787 1792
1788 1793 self.__checkSpecGraphFilters()
1789 1794
1790 1795 @pyqtSignature("int")
1791 1796 def on_specGraphSaveSpectra_stateChanged(self, p0):
1792 1797 """
1793 1798 """
1794 1799 self.__checkSpecGraphSaving()
1795 1800
1796 1801 @pyqtSignature("int")
1797 1802 def on_specGraphSaveCross_stateChanged(self, p0):
1798 1803
1799 1804 self.__checkSpecGraphSaving()
1800 1805
1801 1806 @pyqtSignature("int")
1802 1807 def on_specGraphSaveRTIplot_stateChanged(self, p0):
1803 1808
1804 1809 self.__checkSpecGraphSaving()
1805 1810
1806 1811 @pyqtSignature("int")
1807 1812 def on_specGraphSaveRTInoise_stateChanged(self, p0):
1808 1813
1809 1814 self.__checkSpecGraphSaving()
1810 1815
1811 1816 @pyqtSignature("int")
1812 1817 def on_specGraphSaveCoherencemap_stateChanged(self, p0):
1813 1818
1814 1819 self.__checkSpecGraphSaving()
1815 1820
1816 1821 @pyqtSignature("int")
1817 1822 def on_specGraphSavePowerprofile_stateChanged(self, p0):
1818 1823
1819 1824 self.__checkSpecGraphSaving()
1820 1825
1821 1826 @pyqtSignature("int")
1822 1827 def on_specGraphftpSpectra_stateChanged(self, p0):
1823 1828 """
1824 1829 """
1825 1830 self.__checkSpecGraphFTP()
1826 1831
1827 1832
1828 1833 @pyqtSignature("int")
1829 1834 def on_specGraphftpCross_stateChanged(self, p0):
1830 1835
1831 1836 self.__checkSpecGraphFTP()
1832 1837
1833 1838 @pyqtSignature("int")
1834 1839 def on_specGraphftpRTIplot_stateChanged(self, p0):
1835 1840
1836 1841 self.__checkSpecGraphFTP()
1837 1842
1838 1843 @pyqtSignature("int")
1839 1844 def on_specGraphftpRTInoise_stateChanged(self, p0):
1840 1845
1841 1846 self.__checkSpecGraphFTP()
1842 1847
1843 1848 @pyqtSignature("int")
1844 1849 def on_specGraphftpCoherencemap_stateChanged(self, p0):
1845 1850
1846 1851 self.__checkSpecGraphFTP()
1847 1852
1848 1853 @pyqtSignature("int")
1849 1854 def on_specGraphftpPowerprofile_stateChanged(self, p0):
1850 1855
1851 1856 self.__checkSpecGraphFTP()
1852 1857
1853 1858 @pyqtSignature("")
1854 1859 def on_specGraphToolPath_clicked(self):
1855 1860 """
1856 1861 """
1857 1862 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
1858 1863 self.specGraphPath.setText(self.savePath)
1859 1864 if not os.path.exists(self.savePath):
1860 1865 self.console.clear()
1861 1866 self.console.append("Write a correct a path")
1862 1867 return
1863 1868
1864 1869 @pyqtSignature("")
1865 1870 def on_specGraphClear_clicked(self):
1866 1871 return
1867 1872
1868 1873 @pyqtSignature("")
1869 1874 def on_specHeisGraphToolPath_clicked(self):
1870 1875 """
1871 1876 """
1872 1877 self.savePath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
1873 1878 self.specHeisGraphPath.setText(self.savePath)
1874 1879 if not os.path.exists(self.savePath):
1875 1880 self.console.clear()
1876 1881 self.console.append("Write a correct a path")
1877 1882 return
1878 1883
1879 1884 @pyqtSignature("int")
1880 1885 def on_specHeisOpCebIncoherent_stateChanged(self, p0):
1881 1886 """
1882 1887 Habilita la opcion de aοΏ½adir el parοΏ½metro integraciones incoherentes a la Unidad de Procesamiento .
1883 1888 """
1884 1889 if p0 == 2:
1885 1890 self.specHeisOpIncoherent.setEnabled(True)
1886 1891 self.specHeisOpCobIncInt.setEnabled(True)
1887 1892 if p0 == 0:
1888 1893 self.specHeisOpIncoherent.setEnabled(False)
1889 1894 self.specHeisOpCobIncInt.setEnabled(False)
1890 1895
1891 1896 @pyqtSignature("")
1892 1897 def on_specHeisOpOk_clicked(self):
1893 1898 """
1894 1899 AΓ‘ADE OPERACION SPECTRAHEIS
1895 1900 """
1896 1901 addFTP = False
1897 1902 checkPath = False
1898 1903
1899 1904 self.actionSaveToolbar.setEnabled(False)
1900 1905 self.actionStarToolbar.setEnabled(False)
1901 1906
1902 1907 puObj = self.getSelectedItemObj()
1903 1908 puObj.removeOperations()
1904 1909
1905 1910 if self.specHeisOpCebIncoherent.isChecked():
1906 1911 value = self.specHeisOpIncoherent.text()
1907 1912 name_operation = 'IncohInt4SpectraHeis'
1908 1913 optype = 'other'
1909 1914 if self.specOpCobIncInt.currentIndex() == 0:
1910 1915 name_parameter = 'timeInterval'
1911 1916 format = 'float'
1912 1917 opObj = puObj.addOperation(name=name_operation, optype=optype)
1913 1918 opObj.addParameter(name=name_parameter, value=value, format=format)
1914 1919
1915 1920 # ---- Spectra Plot-----
1916 1921 if self.specHeisGraphCebSpectraplot.isChecked():
1917 1922 name_operation = 'SpectraHeisScope'
1918 1923 optype = 'other'
1919 1924 name_parameter = 'type'
1920 1925 value = 'SpectraHeisScope'
1921 1926 format = 'str'
1922 1927 if self.idImagspectraHeis == 0:
1923 1928 self.idImagspectraHeis = 800
1924 1929 else:
1925 1930 self.idImagspectraHeis = self.idImagspectraHeis + 1
1926 1931 name_parameter1 = 'id'
1927 1932 value1 = int(self.idImagspectraHeis)
1928 1933 format1 = 'int'
1929 1934
1930 1935 format = 'str'
1931 1936
1932 1937 channelList = self.specHeisGgraphChannelList.text()
1933 1938 xvalue = self.specHeisGgraphXminXmax.text()
1934 1939 yvalue = self.specHeisGgraphYminYmax.text()
1935 1940 opObj = puObj.addOperation(name=name_operation, optype=optype)
1936 1941 # opObj.addParameter(name=name_parameter, value=value, format=format)
1937 1942 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
1938 1943
1939 1944 if not channelList == '':
1940 1945 name_parameter = 'channelList'
1941 1946 format = 'intlist'
1942 1947 opObj.addParameter(name=name_parameter, value=channelList, format=format)
1943 1948
1944 1949 if not xvalue == '':
1945 1950 xvalueList = xvalue.split(',')
1946 1951 try:
1947 1952 value1 = float(xvalueList[0])
1948 1953 value2 = float(xvalueList[1])
1949 1954 except:
1950 1955 self.console.clear()
1951 1956 self.console.append("Please Write corrects parameter xmin-xmax")
1952 1957 return 0
1953 1958 name1 = 'xmin'
1954 1959 name2 = 'xmax'
1955 1960 format = 'float'
1956 1961 opObj.addParameter(name=name1, value=value1, format=format)
1957 1962 opObj.addParameter(name=name2, value=value2, format=format)
1958 1963 #------specHeisGgraphYmin-Ymax---
1959 1964 if not yvalue == '':
1960 1965 yvalueList = yvalue.split(",")
1961 1966 try:
1962 1967 value1 = float(yvalueList[0])
1963 1968 value2 = float(yvalueList[1])
1964 1969 except:
1965 1970 self.console.clear()
1966 1971 self.console.append("Please Write corrects parameter Ymix-Ymax")
1967 1972 return 0
1968 1973 name1 = 'ymin'
1969 1974 name2 = 'ymax'
1970 1975 format = 'float'
1971 1976 opObj.addParameter(name=name1, value=value1, format=format)
1972 1977 opObj.addParameter(name=name2, value=value2, format=format)
1973 1978
1974 1979 if self.specHeisGraphSaveSpectra.isChecked():
1975 1980 checkPath = True
1976 1981 name_parameter1 = 'save'
1977 1982 name_parameter2 = 'figpath'
1978 1983 name_parameter3 = 'figfile'
1979 1984 value1 = '1'
1980 1985 value2 = self.specHeisGraphPath.text()
1981 1986 value3 = self.specHeisGraphPrefix.text()
1982 1987 format1 = 'bool'
1983 1988 format2 = 'str'
1984 1989 opObj.addParameter(name=name_parameter1, value=value1 , format=format1)
1985 1990 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
1986 1991 if not value3 == "":
1987 1992 try:
1988 1993 value3 = str(self.specHeisGraphPrefix.text())
1989 1994 except:
1990 1995 self.console.clear()
1991 1996 self.console.append("Please Write prefix")
1992 1997 return 0
1993 1998 opObj.addParameter(name='figfile', value=self.specHeisGraphPrefix.text(), format='str')
1994 1999
1995 2000 # opObj.addParameter(name=name_parameter3, value=value3, format=format2)
1996 2001 # opObj.addParameter(name='wr_period', value='5',format='int')
1997 2002
1998 2003 if self.specHeisGraphftpSpectra.isChecked():
1999 2004 opObj.addParameter(name='ftp', value='1', format='int')
2000 2005 self.addFTPConf2Operation(puObj, opObj)
2001 2006 addFTP = True
2002 2007
2003 2008 if self.specHeisGraphCebRTIplot.isChecked():
2004 2009 name_operation = 'RTIfromSpectraHeis'
2005 2010 optype = 'other'
2006 2011 name_parameter = 'type'
2007 2012 value = 'RTIfromSpectraHeis'
2008 2013 format = 'str'
2009 2014
2010 2015 if self.idImagrtiHeis == 0:
2011 2016 self.idImagrtiHeis = 900
2012 2017 else:
2013 2018 self.idImagrtiHeis = self.idImagrtiHeis + 1
2014 2019
2015 2020 name_parameter1 = 'id'
2016 2021 value1 = int(self.idImagrtiHeis)
2017 2022 format1 = 'int'
2018 2023
2019 2024 format = 'str'
2020 2025
2021 2026 opObj = puObj.addOperation(name=name_operation, optype=optype)
2022 2027 # opObj.addParameter(name=name_parameter, value=value, format=format)
2023 2028 opObj.addParameter(name=name_parameter1, value=value1, format=format1)
2024 2029
2025 2030 channelList = self.specHeisGgraphChannelList.text()
2026 2031 xvalue = self.specHeisGgraphTminTmax.text()
2027 2032 yvalue = self.specHeisGgraphYminYmax.text()
2028 2033 timerange = self.specHeisGgraphTimeRange.text()
2029 2034
2030 2035 if not channelList == '':
2031 2036 opObj.addParameter(name='channelList', value=channelList, format='intlist')
2032 2037
2033 2038 if not xvalue == '':
2034 2039 xvalueList = xvalue.split(',')
2035 2040 try:
2036 2041 value = float(xvalueList[0])
2037 2042 value = float(xvalueList[1])
2038 2043 except:
2039 2044 return 0
2040 2045 format = 'float'
2041 2046 opObj.addParameter(name='xmin', value=xvalueList[0], format=format)
2042 2047 opObj.addParameter(name='xmax', value=xvalueList[1], format=format)
2043 2048
2044 2049 if not timerange == '':
2045 2050 format = 'int'
2046 2051 try:
2047 2052 timerange = int(timerange)
2048 2053 except:
2049 2054 return 0
2050 2055 opObj.addParameter(name='timerange', value=timerange, format=format)
2051 2056
2052 2057
2053 2058 if not yvalue == '':
2054 2059 yvalueList = yvalue.split(",")
2055 2060 try:
2056 2061 value = float(yvalueList[0])
2057 2062 value = float(yvalueList[1])
2058 2063 except:
2059 2064 return 0
2060 2065 format = 'float'
2061 2066 opObj.addParameter(name='ymin', value=yvalueList[0], format=format)
2062 2067 opObj.addParameter(name='ymax', value=yvalueList[1], format=format)
2063 2068
2064 2069 if self.specHeisGraphSaveRTIplot.isChecked():
2065 2070 checkPath = True
2066 2071 opObj.addParameter(name='save', value='1', format='bool')
2067 2072 opObj.addParameter(name='figpath', value=self.specHeisGraphPath.text(), format='str')
2068 2073 value = self.specHeisGraphPrefix.text()
2069 2074 if not value == "":
2070 2075 try:
2071 2076 value = str(self.specHeisGraphPrefix.text())
2072 2077 except:
2073 2078 self.console.clear()
2074 2079 self.console.append("Please Write prefix")
2075 2080 return 0
2076 2081 opObj.addParameter(name='figfile', value=value, format='str')
2077 2082
2078 2083 # test_ftp
2079 2084 if self.specHeisGraphftpRTIplot.isChecked():
2080 2085 opObj.addParameter(name='ftp', value='1', format='int')
2081 2086 self.addFTPConf2Operation(puObj, opObj)
2082 2087 addFTP = True
2083 2088
2084 2089 localfolder = None
2085 2090 if checkPath:
2086 2091 localfolder = str(self.specGraphPath.text())
2087 2092 if localfolder == '':
2088 2093 self.console.clear()
2089 2094 self.console.append("Graphic path should be defined")
2090 2095 return 0
2091 2096
2092 if addFTP:
2093 if not localfolder:
2097 if addFTP and not localfolder:
2094 2098 self.console.clear()
2095 2099 self.console.append("You have to save the plots before sending them to FTP Server")
2096 2100 return 0
2097 2101
2098 if not self.temporalFTP.create:
2099 self.temporalFTP.setwithoutconfiguration()
2100
2101 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
2102 self.addFTPProcUnitView(server, username, password, remotefolder,
2103 ftp_wei, exp_code, sub_exp_code, plot_pos,
2104 localfolder=localfolder)
2105 else:
2106 self.removeFTPProcUnitView()
2107
2108 2102 # if something happened
2109 2103 parms_ok, output_path, blocksperfile, metada = self.checkInputsPUSave(datatype='SpectraHeis')
2110 2104 if parms_ok:
2111 2105 name_operation = 'FitsWriter'
2112 2106 optype = 'other'
2113 2107 name_parameter1 = 'path'
2114 2108 name_parameter2 = 'dataBlocksPerFile'
2115 2109 name_parameter3 = 'metadatafile'
2116 2110 value1 = output_path
2117 2111 value2 = blocksperfile
2118 2112 value3 = metada
2119 2113 format2 = "int"
2120 2114 format3 = "str"
2121 2115 opObj = puObj.addOperation(name=name_operation, optype=optype)
2122 2116 opObj.addParameter(name=name_parameter1, value=value1)
2123 2117 opObj.addParameter(name=name_parameter2, value=value2, format=format2)
2124 2118 opObj.addParameter(name=name_parameter3, value=value3, format=format3)
2125 2119
2126 2120 self.console.clear()
2127 2121 try:
2128 2122 self.refreshPUProperties(puObj)
2129 2123 except:
2130 2124 self.console.append("Check input parameters")
2131 2125 return 0
2132 2126
2133 2127 self.console.append("Click on save icon ff you want to save your project")
2134 2128
2135 2129 self.actionSaveToolbar.setEnabled(True)
2136 2130 self.actionStarToolbar.setEnabled(True)
2137 2131
2138 2132 return 1
2139 2133 @pyqtSignature("int")
2140 2134 def on_specHeisGraphCebSpectraplot_stateChanged(self, p0):
2141 2135
2142 2136 if p0 == 2:
2143 2137 self.specHeisGgraphChannelList.setEnabled(True)
2144 2138 self.specHeisGgraphXminXmax.setEnabled(True)
2145 2139 self.specHeisGgraphYminYmax.setEnabled(True)
2146 2140 if p0 == 0:
2147 2141 self.specHeisGgraphXminXmax.setEnabled(False)
2148 2142 self.specHeisGgraphYminYmax.setEnabled(False)
2149 2143
2150 2144 @pyqtSignature("int")
2151 2145 def on_specHeisGraphCebRTIplot_stateChanged(self, p0):
2152 2146
2153 2147 if p0 == 2:
2154 2148 self.specHeisGgraphChannelList.setEnabled(True)
2155 2149 self.specHeisGgraphTminTmax.setEnabled(True)
2156 2150 self.specHeisGgraphYminYmax.setEnabled(True)
2157 2151 self.specHeisGgraphTimeRange.setEnabled(True)
2158 2152
2159 2153 if p0 == 0:
2160 2154 self.specHeisGgraphTminTmax.setEnabled(False)
2161 2155 self.specHeisGgraphYminYmax.setEnabled(False)
2162 2156 self.specHeisGgraphTimeRange.setEnabled(False)
2163 2157
2164 2158 @pyqtSignature("int")
2165 2159 def on_specHeisGraphSaveSpectra_stateChanged(self, p0):
2166 2160 """
2167 2161 """
2168 2162 if p0 == 2:
2169 2163 self.specHeisGraphPath.setEnabled(True)
2170 2164 self.specHeisGraphPrefix.setEnabled(True)
2171 2165 self.specHeisGraphToolPath.setEnabled(True)
2172 2166 if p0 == 0:
2173 2167 self.specHeisGraphPath.setEnabled(False)
2174 2168 self.specHeisGraphPrefix.setEnabled(False)
2175 2169 self.specHeisGraphToolPath.setEnabled(False)
2176 2170
2177 2171 @pyqtSignature("int")
2178 2172 def on_specHeisGraphSaveRTIplot_stateChanged(self, p0):
2179 2173 if p0 == 2:
2180 2174 self.specHeisGraphPath.setEnabled(True)
2181 2175 self.specHeisGraphPrefix.setEnabled(True)
2182 2176 self.specHeisGraphToolPath.setEnabled(True)
2183 2177
2184 2178 @pyqtSignature("int")
2185 2179 def on_specHeisGraphftpSpectra_stateChanged(self, p0):
2186 2180 """
2187 2181 """
2188 2182 if p0 == 2:
2189 2183 self.specHeisGgraphftpratio.setEnabled(True)
2190 2184
2191 2185 if p0 == 0:
2192 2186 self.specHeisGgraphftpratio.setEnabled(False)
2193 2187
2194 2188 @pyqtSignature("int")
2195 2189 def on_specHeisGraphftpRTIplot_stateChanged(self, p0):
2196 2190 if p0 == 2:
2197 2191 self.specHeisGgraphftpratio.setEnabled(True)
2198 2192
2199 2193 @pyqtSignature("")
2200 2194 def on_specHeisGraphClear_clicked(self):
2201 2195 pass
2202 2196
2203 2197 def __checkSpecGraphSaving(self):
2204 2198
2205 2199 enable = False
2206 2200
2207 2201 if self.specGraphSaveSpectra.checkState():
2208 2202 enable = True
2209 2203
2210 2204 if self.specGraphSaveCross.checkState():
2211 2205 enable = True
2212 2206
2213 2207 if self.specGraphSaveRTIplot.checkState():
2214 2208 enable = True
2215 2209
2216 2210 if self.specGraphSaveCoherencemap.checkState():
2217 2211 enable = True
2218 2212
2219 2213 if self.specGraphSavePowerprofile.checkState():
2220 2214 enable = True
2221 2215
2222 2216 if self.specGraphSaveRTInoise.checkState():
2223 2217 enable = True
2224 2218
2225 2219 self.specGraphPath.setEnabled(enable)
2226 2220 self.specGraphPrefix.setEnabled(enable)
2227 2221 self.specGraphToolPath.setEnabled(enable)
2228 2222
2229 2223 self.specGgraphftpratio.setEnabled(enable)
2230 2224
2231 2225 def __checkSpecGraphFTP(self):
2232 2226
2233 2227 enable = False
2234 2228
2235 2229 if self.specGraphftpSpectra.checkState():
2236 2230 enable = True
2237 2231
2238 2232 if self.specGraphftpCross.checkState():
2239 2233 enable = True
2240 2234
2241 2235 if self.specGraphftpRTIplot.checkState():
2242 2236 enable = True
2243 2237
2244 2238 if self.specGraphftpCoherencemap.checkState():
2245 2239 enable = True
2246 2240
2247 2241 if self.specGraphftpPowerprofile.checkState():
2248 2242 enable = True
2249 2243
2250 2244 if self.specGraphftpRTInoise.checkState():
2251 2245 enable = True
2252 2246
2253 2247 # self.specGgraphftpratio.setEnabled(enable)
2254 2248
2255 2249 def __checkSpecGraphFilters(self):
2256 2250
2257 2251 freq = False
2258 2252 height = False
2259 2253 db = False
2260 2254 time = False
2261 2255 magnitud = False
2262 2256 phase = False
2263 2257 channelList = False
2264 2258
2265 2259 if self.specGraphCebSpectraplot.checkState():
2266 2260 freq = True
2267 2261 height = True
2268 2262 db = True
2269 2263 channelList = True
2270 2264
2271 2265 if self.specGraphCebCrossSpectraplot.checkState():
2272 2266 freq = True
2273 2267 height = True
2274 2268 db = True
2275 2269 magnitud = True
2276 2270 phase = True
2277 2271
2278 2272 if self.specGraphCebRTIplot.checkState():
2279 2273 height = True
2280 2274 db = True
2281 2275 time = True
2282 2276 channelList = True
2283 2277
2284 2278 if self.specGraphCebCoherencmap.checkState():
2285 2279 height = True
2286 2280 time = True
2287 2281 magnitud = True
2288 2282 phase = True
2289 2283
2290 2284 if self.specGraphPowerprofile.checkState():
2291 2285 height = True
2292 2286 db = True
2293 2287 channelList = True
2294 2288
2295 2289 if self.specGraphCebRTInoise.checkState():
2296 2290 db = True
2297 2291 time = True
2298 2292 channelList = True
2299 2293
2300 2294
2301 2295 self.specGgraphFreq.setEnabled(freq)
2302 2296 self.specGgraphHeight.setEnabled(height)
2303 2297 self.specGgraphDbsrange.setEnabled(db)
2304 2298 self.specGgraphTminTmax.setEnabled(time)
2305 2299
2306 2300 self.specGgraphmagnitud.setEnabled(magnitud)
2307 2301 self.specGgraphPhase.setEnabled(phase)
2308 2302 self.specGgraphChannelList.setEnabled(channelList)
2309 2303
2310 2304 def __getParmsFromProjectWindow(self):
2311 2305 """
2312 2306 Check Inputs Project:
2313 2307 - project_name
2314 2308 - datatype
2315 2309 - ext
2316 2310 - data_path
2317 2311 - readmode
2318 2312 - delay
2319 2313 - set
2320 2314 - walk
2321 2315 """
2322 2316 parms_ok = True
2323 2317
2324 2318 project_name = str(self.proName.text())
2325 2319
2326 2320 if project_name == '' or project_name == None:
2327 2321 outputstr = "Enter a project Name"
2328 2322 self.console.append(outputstr)
2329 2323 parms_ok = False
2330 2324 project_name = None
2331 2325
2332 2326 description = str(self.proDescription.toPlainText())
2333 2327
2334 2328 datatype = str(self.proComDataType.currentText())
2335 2329
2336 2330 ext = str(self.proDataType.text())
2337 2331
2338 2332 dpath = str(self.proDataPath.text())
2339 2333
2340 2334 if dpath == '':
2341 2335 outputstr = 'Datapath is empty'
2342 2336 self.console.append(outputstr)
2343 2337 parms_ok = False
2344 2338 dpath = None
2345 2339
2346 2340 if dpath != None:
2347 2341 if not os.path.isdir(dpath):
2348 2342 outputstr = 'Datapath (%s) does not exist' % dpath
2349 2343 self.console.append(outputstr)
2350 2344 parms_ok = False
2351 2345 dpath = None
2352 2346
2353 2347 online = int(self.proComReadMode.currentIndex())
2354 2348
2355 2349 delay = None
2356 2350 if online==1:
2357 2351 try:
2358 2352 delay = int(str(self.proDelay.text()))
2359 2353 except:
2360 2354 outputstr = 'Delay value (%s) must be a integer number' %str(self.proDelay.text())
2361 2355 self.console.append(outputstr)
2362 2356 parms_ok = False
2363 2357
2364 2358
2365 2359 set = None
2366 2360 value = str(self.proSet.text())
2367 2361 try:
2368 2362 set = int(value)
2369 2363 except:
2370 2364 pass
2371 2365
2372 2366 ippKm = None
2373 2367
2374 2368 value = str(self.proIPPKm.text())
2375 2369
2376 2370 try:
2377 2371 ippKm = float(value)
2378 2372 except:
2379 2373 if datatype=="USRP":
2380 2374 outputstr = 'IPP value (%s) must be a float number' % str(self.proIPPKm.text())
2381 2375 self.console.append(outputstr)
2382 2376 parms_ok = False
2383 2377
2384 2378 walk = int(self.proComWalk.currentIndex())
2385 2379
2386 2380 startDate = str(self.proComStartDate.currentText())
2387 2381 endDate = str(self.proComEndDate.currentText())
2388 2382
2389 2383 # startDateList = startDate.split("/")
2390 2384 # endDateList = endDate.split("/")
2391 2385 #
2392 2386 # startDate = datetime.date(int(startDateList[0]), int(startDateList[1]), int(startDateList[2]))
2393 2387 # endDate = datetime.date(int(endDateList[0]), int(endDateList[1]), int(endDateList[2]))
2394 2388
2395 2389 startTime = self.proStartTime.time()
2396 2390 endTime = self.proEndTime.time()
2397 2391
2398 2392 startTime = str(startTime.toString("H:m:s"))
2399 2393 endTime = str(endTime.toString("H:m:s"))
2400 2394
2401 2395 projectParms = ProjectParms()
2402 2396
2403 2397 projectParms.name = project_name
2404 2398 projectParms.description = description
2405 2399 projectParms.datatype = datatype
2406 2400 projectParms.ext = ext
2407 2401 projectParms.dpath = dpath
2408 2402 projectParms.online = online
2409 2403 projectParms.startDate = startDate
2410 2404 projectParms.endDate = endDate
2411 2405 projectParms.startTime = startTime
2412 2406 projectParms.endTime = endTime
2413 2407 projectParms.delay=delay
2414 2408 projectParms.walk=walk
2415 2409 projectParms.set=set
2416 2410 projectParms.ippKm=ippKm
2417 2411 projectParms.parmsOk=parms_ok
2418 2412
2419 2413 return projectParms
2420 2414
2421 2415
2422 2416 def __getParmsFromProjectObj(self, projectObjView):
2423 2417
2424 2418 parms_ok = True
2425 2419
2426 2420 project_name, description = projectObjView.name, projectObjView.description
2427 2421
2428 2422 readUnitObj = projectObjView.getReadUnitObj()
2429 2423 datatype = readUnitObj.datatype
2430 2424
2431 2425 operationObj = readUnitObj.getOperationObj(name='run')
2432 2426
2433 2427 dpath = operationObj.getParameterValue(parameterName='path')
2434 2428 startDate = operationObj.getParameterValue(parameterName='startDate')
2435 2429 endDate = operationObj.getParameterValue(parameterName='endDate')
2436 2430
2437 2431 startDate = startDate.strftime("%Y/%m/%d")
2438 2432 endDate = endDate.strftime("%Y/%m/%d")
2439 2433
2440 2434 startTime = operationObj.getParameterValue(parameterName='startTime')
2441 2435 endTime = operationObj.getParameterValue(parameterName='endTime')
2442 2436
2443 2437 startTime = startTime.strftime("%H:%M:%S")
2444 2438 endTime = endTime.strftime("%H:%M:%S")
2445 2439
2446 2440 online = 0
2447 2441 try:
2448 2442 online = operationObj.getParameterValue(parameterName='online')
2449 2443 except:
2450 2444 pass
2451 2445
2452 2446 delay = ''
2453 2447 try:
2454 2448 delay = operationObj.getParameterValue(parameterName='delay')
2455 2449 except:
2456 2450 pass
2457 2451
2458 2452 walk = 0
2459 2453 try:
2460 2454 walk = operationObj.getParameterValue(parameterName='walk')
2461 2455 except:
2462 2456 pass
2463 2457
2464 2458 set = ''
2465 2459 try:
2466 2460 set = operationObj.getParameterValue(parameterName='set')
2467 2461 except:
2468 2462 pass
2469 2463
2470 2464 ippKm = ''
2471 2465 if datatype.lower() == 'usrp':
2472 2466 try:
2473 2467 ippKm = operationObj.getParameterValue(parameterName='ippKm')
2474 2468 except:
2475 2469 pass
2476 2470
2477 2471 projectParms = ProjectParms()
2478 2472
2479 2473 projectParms.name = project_name
2480 2474 projectParms.description = description
2481 2475 projectParms.datatype = datatype
2482 2476 projectParms.ext = None
2483 2477 projectParms.dpath = dpath
2484 2478 projectParms.online = online
2485 2479 projectParms.startDate = startDate
2486 2480 projectParms.endDate = endDate
2487 2481 projectParms.startTime = startTime
2488 2482 projectParms.endTime = endTime
2489 2483 projectParms.delay=delay
2490 2484 projectParms.walk=walk
2491 2485 projectParms.set=set
2492 2486 projectParms.ippKm=ippKm
2493 2487 projectParms.parmsOk=parms_ok
2494 2488
2495 2489 return projectParms
2496 2490
2497 2491 def refreshProjectWindow2(self, projectObjView):
2498 2492
2499 2493 projectParms = self.__getParmsFromProjectObj(projectObjView)
2500 2494
2501 2495 index = projectParms.getDatatypeIndex()
2502 2496
2503 2497 self.proName.setText(projectParms.name)
2504 2498 self.proDescription.clear()
2505 2499 self.proDescription.append(projectParms.description)
2506 2500
2507 2501 self.on_proComDataType_activated(index=index)
2508 2502 self.proDataPath.setText(projectParms.dpath)
2509 2503 self.proComDataType.setCurrentIndex(index)
2510 2504 self.proComReadMode.setCurrentIndex(projectParms.online)
2511 2505 self.proDelay.setText(str(projectParms.delay))
2512 2506 self.proSet.setText(str(projectParms.set))
2513 2507 self.proIPPKm.setText(str(projectParms.ippKm))
2514 2508
2515 2509 dateList = self.loadDays(data_path = projectParms.dpath,
2516 2510 ext = projectParms.getExt(),
2517 2511 walk = projectParms.walk,
2518 2512 expLabel = projectParms.expLabel)
2519 2513
2520 2514 try:
2521 2515 startDateIndex = dateList.index(projectParms.startDate)
2522 2516 except:
2523 2517 startDateIndex = 0
2524 2518
2525 2519 try:
2526 2520 endDateIndex = dateList.index(projectParms.endDate)
2527 2521 except:
2528 2522 endDateIndex = int(self.proComEndDate.count()-1)
2529 2523
2530 2524 self.proComStartDate.setCurrentIndex(startDateIndex)
2531 2525 self.proComEndDate.setCurrentIndex(endDateIndex)
2532 2526
2533 2527 startlist = projectParms.startTime.split(":")
2534 2528 endlist = projectParms.endTime.split(":")
2535 2529
2536 2530 self.time.setHMS(int(startlist[0]), int(startlist[1]), int(startlist[2]))
2537 2531 self.proStartTime.setTime(self.time)
2538 2532
2539 2533 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
2540 2534 self.proEndTime.setTime(self.time)
2541 2535
2542 2536
2543 2537 def __refreshVoltageWindow(self, puObj):
2544 2538
2545 2539 opObj = puObj.getOperationObj(name='setRadarFrequency')
2546 2540 if opObj == None:
2547 2541 self.volOpRadarfrequency.clear()
2548 2542 self.volOpCebRadarfrequency.setCheckState(0)
2549 2543 else:
2550 2544 value = opObj.getParameterValue(parameterName='frequency')
2551 value = str(value)
2545 value = str(float(value)/1e6)
2552 2546 self.volOpRadarfrequency.setText(value)
2553 2547 self.volOpRadarfrequency.setEnabled(True)
2554 2548 self.volOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2555 2549
2556 2550 opObj = puObj.getOperationObj(name="selectChannels")
2557 2551
2558 2552 if opObj == None:
2559 2553 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2560 2554
2561 2555 if opObj == None:
2562 2556 self.volOpChannel.clear()
2563 2557 self.volOpCebChannels.setCheckState(0)
2564 2558 else:
2565 2559 channelEnabled = False
2566 2560 try:
2567 2561 value = opObj.getParameterValue(parameterName='channelList')
2568 2562 value = str(value)[1:-1]
2569 2563 channelEnabled = True
2570 2564 channelMode = 0
2571 2565 except:
2572 2566 pass
2573 2567 try:
2574 2568 value = opObj.getParameterValue(parameterName='channelIndexList')
2575 2569 value = str(value)[1:-1]
2576 2570 channelEnabled = True
2577 2571 channelMode = 1
2578 2572 except:
2579 2573 pass
2580 2574
2581 2575 if channelEnabled:
2582 2576 self.volOpChannel.setText(value)
2583 2577 self.volOpChannel.setEnabled(True)
2584 2578 self.volOpCebChannels.setCheckState(QtCore.Qt.Checked)
2585 2579 self.volOpComChannels.setCurrentIndex(channelMode)
2586 2580
2587 2581 opObj = puObj.getOperationObj(name="selectHeights")
2588 2582 if opObj == None:
2589 2583 self.volOpHeights.clear()
2590 2584 self.volOpCebHeights.setCheckState(0)
2591 2585 else:
2592 2586 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2593 2587 value1 = str(value1)
2594 2588 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2595 2589 value2 = str(value2)
2596 2590 value = value1 + "," + value2
2597 2591 self.volOpHeights.setText(value)
2598 2592 self.volOpHeights.setEnabled(True)
2599 2593 self.volOpCebHeights.setCheckState(QtCore.Qt.Checked)
2600 2594
2601 2595 opObj = puObj.getOperationObj(name="filterByHeights")
2602 2596 if opObj == None:
2603 2597 self.volOpFilter.clear()
2604 2598 self.volOpCebFilter.setCheckState(0)
2605 2599 else:
2606 2600 value = opObj.getParameterValue(parameterName='window')
2607 2601 value = str(value)
2608 2602 self.volOpFilter.setText(value)
2609 2603 self.volOpFilter.setEnabled(True)
2610 2604 self.volOpCebFilter.setCheckState(QtCore.Qt.Checked)
2611 2605
2612 2606 opObj = puObj.getOperationObj(name="ProfileSelector")
2613 2607 if opObj == None:
2614 2608 self.volOpProfile.clear()
2615 2609 self.volOpCebProfile.setCheckState(0)
2616 2610 else:
2617 2611 for parmObj in opObj.getParameterObjList():
2618 2612
2619 2613 if parmObj.name == "profileList":
2620 2614 value = parmObj.getValue()
2621 2615 value = str(value)[1:-1]
2622 2616 self.volOpProfile.setText(value)
2623 2617 self.volOpProfile.setEnabled(True)
2624 2618 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2625 2619 self.volOpComProfile.setCurrentIndex(0)
2626 2620
2627 2621 if parmObj.name == "profileRangeList":
2628 2622 value = parmObj.getValue()
2629 2623 value = str(value)[1:-1]
2630 2624 self.volOpProfile.setText(value)
2631 2625 self.volOpProfile.setEnabled(True)
2632 2626 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2633 2627 self.volOpComProfile.setCurrentIndex(1)
2634 2628
2635 2629 if parmObj.name == "rangeList":
2636 2630 value = parmObj.getValue()
2637 2631 value = str(value)[1:-1]
2638 2632 self.volOpProfile.setText(value)
2639 2633 self.volOpProfile.setEnabled(True)
2640 2634 self.volOpCebProfile.setCheckState(QtCore.Qt.Checked)
2641 2635 self.volOpComProfile.setCurrentIndex(2)
2642 2636
2643 2637 opObj = puObj.getOperationObj(name="Decoder")
2644 2638 self.volOpCode.setText("")
2645 2639 if opObj == None:
2646 2640 self.volOpCebDecodification.setCheckState(0)
2647 2641 else:
2648 2642 self.volOpCebDecodification.setCheckState(QtCore.Qt.Checked)
2649 2643
2650 2644 parmObj = opObj.getParameterObj('code')
2651 2645
2652 2646 if parmObj == None:
2653 2647 self.volOpComCode.setCurrentIndex(0)
2654 2648 else:
2655 2649
2656 2650 parmObj1 = opObj.getParameterObj('nCode')
2657 2651 parmObj2 = opObj.getParameterObj('nBaud')
2658 2652
2659 2653 if parmObj1 == None or parmObj2 == None:
2660 2654 self.volOpComCode.setCurrentIndex(0)
2661 2655 else:
2662 2656 code = ast.literal_eval(str(parmObj.getValue()))
2663 2657 nCode = parmObj1.getValue()
2664 2658 nBaud = parmObj2.getValue()
2665 2659
2666 2660 code = numpy.asarray(code).reshape((nCode, nBaud)).tolist()
2667 2661
2668 2662 #User defined by default
2669 2663 self.volOpComCode.setCurrentIndex(13)
2670 2664 self.volOpCode.setText(str(code))
2671 2665
2672 2666 if nCode == 1:
2673 2667 if nBaud == 3:
2674 2668 self.volOpComCode.setCurrentIndex(1)
2675 2669 if nBaud == 4:
2676 2670 self.volOpComCode.setCurrentIndex(2)
2677 2671 if nBaud == 5:
2678 2672 self.volOpComCode.setCurrentIndex(3)
2679 2673 if nBaud == 7:
2680 2674 self.volOpComCode.setCurrentIndex(4)
2681 2675 if nBaud == 11:
2682 2676 self.volOpComCode.setCurrentIndex(5)
2683 2677 if nBaud == 13:
2684 2678 self.volOpComCode.setCurrentIndex(6)
2685 2679
2686 2680 if nCode == 2:
2687 2681 if nBaud == 3:
2688 2682 self.volOpComCode.setCurrentIndex(7)
2689 2683 if nBaud == 4:
2690 2684 self.volOpComCode.setCurrentIndex(8)
2691 2685 if nBaud == 5:
2692 2686 self.volOpComCode.setCurrentIndex(9)
2693 2687 if nBaud == 7:
2694 2688 self.volOpComCode.setCurrentIndex(10)
2695 2689 if nBaud == 11:
2696 2690 self.volOpComCode.setCurrentIndex(11)
2697 2691 if nBaud == 13:
2698 2692 self.volOpComCode.setCurrentIndex(12)
2699 2693
2700 2694
2701 2695 opObj = puObj.getOperationObj(name="deFlip")
2702 2696 if opObj == None:
2703 2697 self.volOpFlip.clear()
2704 2698 self.volOpFlip.setEnabled(False)
2705 2699 self.volOpCebFlip.setCheckState(0)
2706 2700 else:
2707 2701 try:
2708 2702 value = opObj.getParameterValue(parameterName='channelList')
2709 2703 value = str(value)[1:-1]
2710 2704 except:
2711 2705 value = ""
2712 2706
2713 2707 self.volOpFlip.setText(value)
2714 2708 self.volOpFlip.setEnabled(True)
2715 2709 self.volOpCebFlip.setCheckState(QtCore.Qt.Checked)
2716 2710
2717 2711 opObj = puObj.getOperationObj(name="CohInt")
2718 2712 if opObj == None:
2719 2713 self.volOpCohInt.clear()
2720 2714 self.volOpCebCohInt.setCheckState(0)
2721 2715 else:
2722 2716 value = opObj.getParameterValue(parameterName='n')
2723 2717 self.volOpCohInt.setText(str(value))
2724 2718 self.volOpCohInt.setEnabled(True)
2725 2719 self.volOpCebCohInt.setCheckState(QtCore.Qt.Checked)
2726 2720
2727 2721 opObj = puObj.getOperationObj(name='Scope')
2728 2722 if opObj == None:
2729 2723 self.volGraphCebshow.setCheckState(0)
2730 2724 else:
2731 2725 self.volGraphCebshow.setCheckState(QtCore.Qt.Checked)
2732 2726
2733 2727 parmObj = opObj.getParameterObj(parameterName='channelList')
2734 2728
2735 2729 if parmObj == None:
2736 2730 self.volGraphChannelList.clear()
2737 2731 else:
2738 2732 value = parmObj.getValue()
2739 2733 value = str(value)
2740 2734 self.volGraphChannelList.setText(value)
2741 2735 self.volOpProfile.setEnabled(True)
2742 2736
2743 2737 parmObj1 = opObj.getParameterObj(parameterName='xmin')
2744 2738 parmObj2 = opObj.getParameterObj(parameterName='xmax')
2745 2739
2746 2740 if parmObj1 == None or parmObj2 ==None:
2747 2741 self.volGraphfreqrange.clear()
2748 2742 else:
2749 2743 value1 = parmObj1.getValue()
2750 2744 value1 = str(value1)
2751 2745 value2 = parmObj2.getValue()
2752 2746 value2 = str(value2)
2753 2747 value = value1 + "," + value2
2754 2748 self.volGraphfreqrange.setText(value)
2755 2749
2756 2750 parmObj1 = opObj.getParameterObj(parameterName='ymin')
2757 2751 parmObj2 = opObj.getParameterObj(parameterName='ymax')
2758 2752
2759 2753 if parmObj1 == None or parmObj2 ==None:
2760 2754 self.volGraphHeightrange.clear()
2761 2755 else:
2762 2756 value1 = parmObj1.getValue()
2763 2757 value1 = str(value1)
2764 2758 value2 = parmObj2.getValue()
2765 2759 value2 = str(value2)
2766 2760 value = value1 + "," + value2
2767 2761 value2 = str(value2)
2768 2762 self.volGraphHeightrange.setText(value)
2769 2763
2770 2764 parmObj = opObj.getParameterObj(parameterName='save')
2771 2765
2772 2766 if parmObj == None:
2773 2767 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2774 2768 else:
2775 2769 value = parmObj.getValue()
2776 2770 if int(value):
2777 2771 self.volGraphCebSave.setCheckState(QtCore.Qt.Checked)
2778 2772 else:
2779 2773 self.volGraphCebSave.setCheckState(QtCore.Qt.Unchecked)
2780 2774
2781 2775 parmObj = opObj.getParameterObj(parameterName='figpath')
2782 2776 if parmObj == None:
2783 2777 self.volGraphPath.clear()
2784 2778 else:
2785 2779 value = parmObj.getValue()
2786 2780 path = str(value)
2787 2781 self.volGraphPath.setText(path)
2788 2782
2789 2783 parmObj = opObj.getParameterObj(parameterName='figfile')
2790 2784 if parmObj == None:
2791 2785 self.volGraphPrefix.clear()
2792 2786 else:
2793 2787 value = parmObj.getValue()
2794 2788 figfile = str(value)
2795 2789 self.volGraphPrefix.setText(figfile)
2796 2790
2797 2791 # outputVoltageWrite
2798 2792 opObj = puObj.getOperationObj(name='VoltageWriter')
2799 2793
2800 2794 if opObj == None:
2801 2795 self.volOutputPath.clear()
2802 2796 self.volOutputblocksperfile.clear()
2803 2797 self.volOutputprofilesperblock.clear()
2804 2798 else:
2805 2799 parmObj = opObj.getParameterObj(parameterName='path')
2806 2800 if parmObj == None:
2807 2801 self.volOutputPath.clear()
2808 2802 else:
2809 2803 value = parmObj.getValue()
2810 2804 path = str(value)
2811 2805 self.volOutputPath.setText(path)
2812 2806
2813 2807 parmObj = opObj.getParameterObj(parameterName='blocksPerFile')
2814 2808 if parmObj == None:
2815 2809 self.volOutputblocksperfile.clear()
2816 2810 else:
2817 2811 value = parmObj.getValue()
2818 2812 blocksperfile = str(value)
2819 2813 self.volOutputblocksperfile.setText(blocksperfile)
2820 2814
2821 2815 parmObj = opObj.getParameterObj(parameterName='profilesPerBlock')
2822 2816 if parmObj == None:
2823 2817 self.volOutputprofilesperblock.clear()
2824 2818 else:
2825 2819 value = parmObj.getValue()
2826 2820 profilesPerBlock = str(value)
2827 2821 self.volOutputprofilesperblock.setText(profilesPerBlock)
2828 2822
2829 2823 return
2830 2824
2831 2825 def __refreshSpectraWindow(self, puObj):
2832 2826
2833 2827 inputId = puObj.getInputId()
2834 2828 inputPUObj = self.__puObjDict[inputId]
2835 2829
2836 2830 if inputPUObj.datatype == 'Voltage':
2837 2831 self.specOpnFFTpoints.setEnabled(True)
2838 2832 self.specOpProfiles.setEnabled(True)
2839 2833 self.specOpippFactor.setEnabled(True)
2840 2834 else:
2841 2835 self.specOpnFFTpoints.setEnabled(False)
2842 2836 self.specOpProfiles.setEnabled(False)
2843 2837 self.specOpippFactor.setEnabled(False)
2844 2838
2845 2839 opObj = puObj.getOperationObj(name='setRadarFrequency')
2846 2840 if opObj == None:
2847 2841 self.specOpRadarfrequency.clear()
2848 2842 self.specOpCebRadarfrequency.setCheckState(0)
2849 2843 else:
2850 2844 value = opObj.getParameterValue(parameterName='frequency')
2851 value = str(value)
2845 value = str(float(value)/1e6)
2852 2846 self.specOpRadarfrequency.setText(value)
2853 2847 self.specOpRadarfrequency.setEnabled(True)
2854 2848 self.specOpCebRadarfrequency.setCheckState(QtCore.Qt.Checked)
2855 2849
2856 2850 opObj = puObj.getOperationObj(name="run")
2857 2851 if opObj == None:
2858 2852 self.specOpnFFTpoints.clear()
2859 2853 self.specOpProfiles.clear()
2860 2854 self.specOpippFactor.clear()
2861 2855 else:
2862 2856 parmObj = opObj.getParameterObj(parameterName='nFFTPoints')
2863 2857 if parmObj == None:
2864 2858 self.specOpnFFTpoints.clear()
2865 2859 else:
2866 2860 self.specOpnFFTpoints.setEnabled(True)
2867 2861 value = opObj.getParameterValue(parameterName='nFFTPoints')
2868 2862 self.specOpnFFTpoints.setText(str(value))
2869 2863
2870 2864 parmObj = opObj.getParameterObj(parameterName='nProfiles')
2871 2865 if parmObj == None:
2872 2866 self.specOpProfiles.clear()
2873 2867 else:
2874 2868 self.specOpProfiles.setEnabled(True)
2875 2869 value = opObj.getParameterValue(parameterName='nProfiles')
2876 2870 self.specOpProfiles.setText(str(value))
2877 2871
2878 2872 parmObj = opObj.getParameterObj(parameterName='ippFactor')
2879 2873 if parmObj == None:
2880 2874 self.specOpippFactor.clear()
2881 2875 else:
2882 2876 self.specOpippFactor.setEnabled(True)
2883 2877 value = opObj.getParameterValue(parameterName='ippFactor')
2884 2878 self.specOpippFactor.setText(str(value))
2885 2879
2886 2880 opObj = puObj.getOperationObj(name="run")
2887 2881 if opObj == None:
2888 2882 self.specOppairsList.clear()
2889 2883 self.specOpCebCrossSpectra.setCheckState(0)
2890 2884 else:
2891 2885 parmObj = opObj.getParameterObj(parameterName='pairsList')
2892 2886 if parmObj == None:
2893 2887 self.specOppairsList.clear()
2894 2888 self.specOpCebCrossSpectra.setCheckState(0)
2895 2889 else:
2896 2890 value = opObj.getParameterValue(parameterName='pairsList')
2897 2891 value = str(value)[1:-1]
2898 2892 self.specOppairsList.setText(str(value))
2899 2893 self.specOppairsList.setEnabled(True)
2900 2894 self.specOpCebCrossSpectra.setCheckState(QtCore.Qt.Checked)
2901 2895
2902 2896 opObj = puObj.getOperationObj(name="selectChannels")
2903 2897
2904 2898 if opObj == None:
2905 2899 opObj = puObj.getOperationObj(name="selectChannelsByIndex")
2906 2900
2907 2901 if opObj == None:
2908 2902 self.specOpChannel.clear()
2909 2903 self.specOpCebChannel.setCheckState(0)
2910 2904 else:
2911 2905 channelEnabled = False
2912 2906 try:
2913 2907 value = opObj.getParameterValue(parameterName='channelList')
2914 2908 value = str(value)[1:-1]
2915 2909 channelEnabled = True
2916 2910 channelMode = 0
2917 2911 except:
2918 2912 pass
2919 2913 try:
2920 2914 value = opObj.getParameterValue(parameterName='channelIndexList')
2921 2915 value = str(value)[1:-1]
2922 2916 channelEnabled = True
2923 2917 channelMode = 1
2924 2918 except:
2925 2919 pass
2926 2920
2927 2921 if channelEnabled:
2928 2922 self.specOpChannel.setText(value)
2929 2923 self.specOpChannel.setEnabled(True)
2930 2924 self.specOpCebChannel.setCheckState(QtCore.Qt.Checked)
2931 2925 self.specOpComChannel.setCurrentIndex(channelMode)
2932 2926
2933 2927 opObj = puObj.getOperationObj(name="selectHeights")
2934 2928 if opObj == None:
2935 2929 self.specOpHeights.clear()
2936 2930 self.specOpCebHeights.setCheckState(0)
2937 2931 else:
2938 2932 value1 = int(opObj.getParameterValue(parameterName='minHei'))
2939 2933 value1 = str(value1)
2940 2934 value2 = int(opObj.getParameterValue(parameterName='maxHei'))
2941 2935 value2 = str(value2)
2942 2936 value = value1 + "," + value2
2943 2937 self.specOpHeights.setText(value)
2944 2938 self.specOpHeights.setEnabled(True)
2945 2939 self.specOpCebHeights.setCheckState(QtCore.Qt.Checked)
2946 2940
2947 2941 opObj = puObj.getOperationObj(name="IncohInt")
2948 2942 if opObj == None:
2949 2943 self.specOpIncoherent.clear()
2950 2944 self.specOpCebIncoherent.setCheckState(0)
2951 2945 else:
2952 2946 for parmObj in opObj.getParameterObjList():
2953 2947 if parmObj.name == 'timeInterval':
2954 2948 value = opObj.getParameterValue(parameterName='timeInterval')
2955 2949 value = float(value)
2956 2950 self.specOpIncoherent.setText(str(value))
2957 2951 self.specOpIncoherent.setEnabled(True)
2958 2952 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
2959 2953 self.specOpCobIncInt.setCurrentIndex(0)
2960 2954
2961 2955 if parmObj.name == 'n':
2962 2956 value = opObj.getParameterValue(parameterName='n')
2963 2957 value = float(value)
2964 2958 self.specOpIncoherent.setText(str(value))
2965 2959 self.specOpIncoherent.setEnabled(True)
2966 2960 self.specOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
2967 2961 self.specOpCobIncInt.setCurrentIndex(1)
2968 2962
2969 2963 opObj = puObj.getOperationObj(name="removeDC")
2970 2964 if opObj == None:
2971 2965 self.specOpCebRemoveDC.setCheckState(0)
2972 2966 else:
2973 2967 self.specOpCebRemoveDC.setCheckState(QtCore.Qt.Checked)
2974 2968 value = opObj.getParameterValue(parameterName='mode')
2975 2969 if value == 1:
2976 2970 self.specOpComRemoveDC.setCurrentIndex(0)
2977 2971 elif value == 2:
2978 2972 self.specOpComRemoveDC.setCurrentIndex(1)
2979 2973
2980 2974 opObj = puObj.getOperationObj(name="removeInterference")
2981 2975 if opObj == None:
2982 2976 self.specOpCebRemoveInt.setCheckState(0)
2983 2977 else:
2984 2978 self.specOpCebRemoveInt.setCheckState(QtCore.Qt.Checked)
2985 2979
2986 2980 opObj = puObj.getOperationObj(name='getNoise')
2987 2981 if opObj == None:
2988 2982 self.specOpCebgetNoise.setCheckState(0)
2989 2983 self.specOpgetNoise.clear()
2990 2984 else:
2991 2985 self.specOpCebgetNoise.setCheckState(QtCore.Qt.Checked)
2992 2986 parmObj = opObj.getParameterObj(parameterName='minHei')
2993 2987 if parmObj == None:
2994 2988 self.specOpgetNoise.clear()
2995 2989 value1 = None
2996 2990 else:
2997 2991 value1 = opObj.getParameterValue(parameterName='minHei')
2998 2992 value1 = str(value1)
2999 2993 parmObj = opObj.getParameterObj(parameterName='maxHei')
3000 2994 if parmObj == None:
3001 2995 value2 = None
3002 2996 value = value1
3003 2997 self.specOpgetNoise.setText(value)
3004 2998 self.specOpgetNoise.setEnabled(True)
3005 2999 else:
3006 3000 value2 = opObj.getParameterValue(parameterName='maxHei')
3007 3001 value2 = str(value2)
3008 3002 parmObj = opObj.getParameterObj(parameterName='minVel')
3009 3003 if parmObj == None:
3010 3004 value3 = None
3011 3005 value = value1 + "," + value2
3012 3006 self.specOpgetNoise.setText(value)
3013 3007 self.specOpgetNoise.setEnabled(True)
3014 3008 else:
3015 3009 value3 = opObj.getParameterValue(parameterName='minVel')
3016 3010 value3 = str(value3)
3017 3011 parmObj = opObj.getParameterObj(parameterName='maxVel')
3018 3012 if parmObj == None:
3019 3013 value4 = None
3020 3014 value = value1 + "," + value2 + "," + value3
3021 3015 self.specOpgetNoise.setText(value)
3022 3016 self.specOpgetNoise.setEnabled(True)
3023 3017 else:
3024 3018 value4 = opObj.getParameterValue(parameterName='maxVel')
3025 3019 value4 = str(value4)
3026 3020 value = value1 + "," + value2 + "," + value3 + ',' + value4
3027 3021 self.specOpgetNoise.setText(value)
3028 3022 self.specOpgetNoise.setEnabled(True)
3029
3023
3024 self.specGraphPath.clear()
3025 self.specGraphPrefix.clear()
3026 self.specGgraphFreq.clear()
3027 self.specGgraphHeight.clear()
3028 self.specGgraphDbsrange.clear()
3029 self.specGgraphmagnitud.clear()
3030 self.specGgraphPhase.clear()
3031 self.specGgraphChannelList.clear()
3032 self.specGgraphTminTmax.clear()
3033 self.specGgraphTimeRange.clear()
3034 self.specGgraphftpratio.clear()
3035
3030 3036 opObj = puObj.getOperationObj(name='SpectraPlot')
3031 3037
3032 3038 if opObj == None:
3033 3039 self.specGraphCebSpectraplot.setCheckState(0)
3034 3040 self.specGraphSaveSpectra.setCheckState(0)
3035 3041 self.specGraphftpSpectra.setCheckState(0)
3036 3042 else:
3037 3043 operationSpectraPlot = "Enable"
3038 3044 self.specGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3039 3045 parmObj = opObj.getParameterObj(parameterName='channelList')
3040 3046 if parmObj == None:
3041 3047 self.specGgraphChannelList.clear()
3042 3048 else:
3043 3049 value = opObj.getParameterValue(parameterName='channelList')
3044 3050 channelListSpectraPlot = str(value)[1:-1]
3045 3051 self.specGgraphChannelList.setText(channelListSpectraPlot)
3046 3052 self.specGgraphChannelList.setEnabled(True)
3047 3053
3048 3054 parmObj = opObj.getParameterObj(parameterName='xmin')
3049 3055 if parmObj == None:
3050 3056 self.specGgraphFreq.clear()
3051 3057 else:
3052 3058 value1 = opObj.getParameterValue(parameterName='xmin')
3053 3059 value1 = str(value1)
3054 3060 value2 = opObj.getParameterValue(parameterName='xmax')
3055 3061 value2 = str(value2)
3056 3062 value = value1 + "," + value2
3057 3063 self.specGgraphFreq.setText(value)
3058 3064 self.specGgraphFreq.setEnabled(True)
3059 3065
3060 3066 parmObj = opObj.getParameterObj(parameterName='ymin')
3061 3067 if parmObj == None:
3062 3068 self.specGgraphHeight.clear()
3063 3069 else:
3064 3070 value1 = opObj.getParameterValue(parameterName='ymin')
3065 3071 value1 = str(value1)
3066 3072 value2 = opObj.getParameterValue(parameterName='ymax')
3067 3073 value2 = str(value2)
3068 3074 value = value1 + "," + value2
3069 3075 self.specGgraphHeight.setText(value)
3070 3076 self.specGgraphHeight.setEnabled(True)
3071 3077
3072 3078 parmObj = opObj.getParameterObj(parameterName='zmin')
3073 3079 if parmObj == None:
3074 3080 self.specGgraphDbsrange.clear()
3075 3081 else:
3076 3082 value1 = opObj.getParameterValue(parameterName='zmin')
3077 3083 value1 = str(value1)
3078 3084 value2 = opObj.getParameterValue(parameterName='zmax')
3079 3085 value2 = str(value2)
3080 3086 value = value1 + "," + value2
3081 3087 self.specGgraphDbsrange.setText(value)
3082 3088 self.specGgraphDbsrange.setEnabled(True)
3083 3089
3084
3085 parmObj = opObj.getParameterObj(parameterName="figpath")
3090 parmObj = opObj.getParameterObj(parameterName="save")
3086 3091 if parmObj == None:
3087 3092 self.specGraphSaveSpectra.setCheckState(0)
3088 3093 else:
3089 3094 self.specGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3090 value = opObj.getParameterValue(parameterName='figpath')
3091 self.specGraphPath.setText(value)
3092
3095
3093 3096 parmObj = opObj.getParameterObj(parameterName="ftp")
3094 3097 if parmObj == None:
3095 3098 self.specGraphftpSpectra.setCheckState(0)
3096 3099 else:
3097 3100 self.specGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3098 try:
3099 value = opObj.getParameterValue(parameterName='wr_period')
3100 except:
3101 value = " "
3101
3102 parmObj = opObj.getParameterObj(parameterName="figpath")
3103 if parmObj:
3104 value = parmObj.getValue()
3105 self.specGraphPath.setText(value)
3106
3107 parmObj = opObj.getParameterObj(parameterName="wr_period")
3108 if parmObj:
3109 value = parmObj.getValue()
3102 3110 self.specGgraphftpratio.setText(str(value))
3103
3111
3112 ########################################################
3113 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3114 if parmObj:
3115 value = parmObj.getValue()
3116 self.temporalFTP.ftp_wei = str(value)
3117
3118 parmObj = opObj.getParameterObj(parameterName="exp_code")
3119 if parmObj:
3120 value = parmObj.getValue()
3121 self.temporalFTP.exp_code = str(value)
3122
3123 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3124 if parmObj:
3125 value = parmObj.getValue()
3126 self.temporalFTP.sub_exp_code = str(value)
3127
3128 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3129 if parmObj:
3130 value = parmObj.getValue()
3131 self.temporalFTP.plot_pos = str(value)
3132
3104 3133 opObj = puObj.getOperationObj(name='CrossSpectraPlot')
3105 3134
3106 3135 if opObj == None:
3107 3136 self.specGraphCebCrossSpectraplot.setCheckState(0)
3108 3137 self.specGraphSaveCross.setCheckState(0)
3109 3138 self.specGraphftpCross.setCheckState(0)
3110 3139 else:
3111 3140 operationCrossSpectraPlot = "Enable"
3112 3141 self.specGraphCebCrossSpectraplot.setCheckState(QtCore.Qt.Checked)
3113 3142 parmObj = opObj.getParameterObj(parameterName='xmin')
3114 3143 if parmObj == None:
3115 3144 self.specGgraphFreq.clear()
3116 3145 else:
3117 3146 value1 = opObj.getParameterValue(parameterName='xmin')
3118 3147 value1 = str(value1)
3119 3148 value2 = opObj.getParameterValue(parameterName='xmax')
3120 3149 value2 = str(value2)
3121 3150 value = value1 + "," + value2
3122 3151 self.specGgraphFreq.setText(value)
3123 3152 self.specGgraphFreq.setEnabled(True)
3124 3153
3125 3154 parmObj = opObj.getParameterObj(parameterName='ymin')
3126 3155 if parmObj == None:
3127 3156 self.specGgraphHeight.clear()
3128 3157 else:
3129 3158 value1 = opObj.getParameterValue(parameterName='ymin')
3130 3159 value1 = str(value1)
3131 3160 value2 = opObj.getParameterValue(parameterName='ymax')
3132 3161 value2 = str(value2)
3133 3162 value = value1 + "," + value2
3134 3163 self.specGgraphHeight.setText(value)
3135 3164 self.specGgraphHeight.setEnabled(True)
3136 3165
3137 3166 parmObj = opObj.getParameterObj(parameterName='zmin')
3138 3167 if parmObj == None:
3139 3168 self.specGgraphDbsrange.clear()
3140 3169 else:
3141 3170 value1 = opObj.getParameterValue(parameterName='zmin')
3142 3171 value1 = str(value1)
3143 3172 value2 = opObj.getParameterValue(parameterName='zmax')
3144 3173 value2 = str(value2)
3145 3174 value = value1 + "," + value2
3146 3175 self.specGgraphDbsrange.setText(value)
3147 3176 self.specGgraphDbsrange.setEnabled(True)
3148 3177
3149 3178 parmObj = opObj.getParameterObj(parameterName='coh_min')
3150 3179 if parmObj == None:
3151 3180 self.specGgraphmagnitud.clear()
3152 3181 else:
3153 3182 value1 = opObj.getParameterValue(parameterName='coh_min')
3154 3183 value1 = str(value1)
3155 3184 value2 = opObj.getParameterValue(parameterName='coh_max')
3156 3185 value2 = str(value2)
3157 3186 value = value1 + "," + value2
3158 3187 self.specGgraphmagnitud.setText(value)
3159 3188 self.specGgraphmagnitud.setEnabled(True)
3160 3189
3161 3190 parmObj = opObj.getParameterObj(parameterName='phase_min')
3162 3191 if parmObj == None:
3163 3192 self.specGgraphPhase.clear()
3164 3193 else:
3165 3194 value1 = opObj.getParameterValue(parameterName='phase_min')
3166 3195 value1 = str(value1)
3167 3196 value2 = opObj.getParameterValue(parameterName='phase_max')
3168 3197 value2 = str(value2)
3169 3198 value = value1 + "," + value2
3170 3199 self.specGgraphPhase.setText(value)
3171 3200 self.specGgraphPhase.setEnabled(True)
3172
3173 parmObj = opObj.getParameterObj(parameterName="figpath")
3201
3202 parmObj = opObj.getParameterObj(parameterName="save")
3174 3203 if parmObj == None:
3175 3204 self.specGraphSaveCross.setCheckState(0)
3176
3177 3205 else:
3178 3206 self.specGraphSaveCross.setCheckState(QtCore.Qt.Checked)
3179 value = opObj.getParameterValue(parameterName='figpath')
3180 self.specGraphPath.setText(value)
3181
3207
3182 3208 parmObj = opObj.getParameterObj(parameterName="ftp")
3183 3209 if parmObj == None:
3184 3210 self.specGraphftpCross.setCheckState(0)
3185 3211 else:
3186 3212 self.specGraphftpCross.setCheckState(QtCore.Qt.Checked)
3187 try:
3188 value = opObj.getParameterValue(parameterName='wr_period')
3189 except:
3190 value = " "
3213
3214 parmObj = opObj.getParameterObj(parameterName="figpath")
3215 if parmObj:
3216 value = parmObj.getValue()
3217 self.specGraphPath.setText(value)
3218
3219 parmObj = opObj.getParameterObj(parameterName="wr_period")
3220 if parmObj:
3221 value = parmObj.getValue()
3191 3222 self.specGgraphftpratio.setText(str(value))
3192
3223
3224 ########################################################
3225 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3226 if parmObj:
3227 value = parmObj.getValue()
3228 self.temporalFTP.ftp_wei = str(value)
3229
3230 parmObj = opObj.getParameterObj(parameterName="exp_code")
3231 if parmObj:
3232 value = parmObj.getValue()
3233 self.temporalFTP.exp_code = str(value)
3234
3235 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3236 if parmObj:
3237 value = parmObj.getValue()
3238 self.temporalFTP.sub_exp_code = str(value)
3239
3240 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3241 if parmObj:
3242 value = parmObj.getValue()
3243 self.temporalFTP.plot_pos = str(value)
3244
3193 3245 opObj = puObj.getOperationObj(name='RTIPlot')
3194 # opObj = puObj.getOpObjfromParamValue(value="RTIPlot")
3246
3195 3247 if opObj == None:
3196 3248 self.specGraphCebRTIplot.setCheckState(0)
3197 3249 self.specGraphSaveRTIplot.setCheckState(0)
3198 3250 self.specGraphftpRTIplot.setCheckState(0)
3199 3251 else:
3200 3252 self.specGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3201 3253 parmObj = opObj.getParameterObj(parameterName='channelList')
3202 3254 if parmObj == None:
3203 self.specGgraphChannelList.clear()
3255 self.specGgraphChannelList.clear()
3204 3256 else:
3205 3257 value = opObj.getParameterValue(parameterName='channelList')
3206 3258 channelListRTIPlot = str(value)[1:-1]
3207 3259 self.specGgraphChannelList.setText(channelListRTIPlot)
3208 3260 self.specGgraphChannelList.setEnabled(True)
3209 3261
3210 3262 parmObj = opObj.getParameterObj(parameterName='xmin')
3211 3263 if parmObj == None:
3212 3264 self.specGgraphTminTmax.clear()
3213 3265 else:
3214 value1 = opObj.getParameterValue(parameterName='xmin')
3215 value1 = str(value1)
3216 value2 = opObj.getParameterValue(parameterName='xmax')
3217 value2 = str(value2)
3218 value = value1 + "," + value2
3219 self.specGgraphTminTmax.setText(value)
3220 self.specGgraphTminTmax.setEnabled(True)
3266 value1 = opObj.getParameterValue(parameterName='xmin')
3267 value1 = str(value1)
3268 value2 = opObj.getParameterValue(parameterName='xmax')
3269 value2 = str(value2)
3270 value = value1 + "," + value2
3271 self.specGgraphTminTmax.setText(value)
3272 self.specGgraphTminTmax.setEnabled(True)
3221 3273
3222 3274 parmObj = opObj.getParameterObj(parameterName='timerange')
3223 3275 if parmObj == None:
3224 3276 self.specGgraphTimeRange.clear()
3225 3277 else:
3226 value1 = opObj.getParameterValue(parameterName='timerange')
3227 value1 = str(value1)
3228 self.specGgraphTimeRange.setText(value1)
3229 self.specGgraphTimeRange.setEnabled(True)
3278 value1 = opObj.getParameterValue(parameterName='timerange')
3279 value1 = str(value1)
3280 self.specGgraphTimeRange.setText(value1)
3281 self.specGgraphTimeRange.setEnabled(True)
3230 3282
3231 3283 parmObj = opObj.getParameterObj(parameterName='ymin')
3232 3284 if parmObj == None:
3233 3285 self.specGgraphHeight.clear()
3234 3286 else:
3235 value1 = opObj.getParameterValue(parameterName='ymin')
3236 value1 = str(value1)
3237 value2 = opObj.getParameterValue(parameterName='ymax')
3238 value2 = str(value2)
3239 value = value1 + "," + value2
3240 self.specGgraphHeight.setText(value)
3241 self.specGgraphHeight.setEnabled(True)
3287 value1 = opObj.getParameterValue(parameterName='ymin')
3288 value1 = str(value1)
3289 value2 = opObj.getParameterValue(parameterName='ymax')
3290 value2 = str(value2)
3291 value = value1 + "," + value2
3292 self.specGgraphHeight.setText(value)
3293 self.specGgraphHeight.setEnabled(True)
3242 3294
3243 3295 parmObj = opObj.getParameterObj(parameterName='zmin')
3244 3296 if parmObj == None:
3245 3297 self.specGgraphDbsrange.clear()
3246 3298 else:
3247 value1 = opObj.getParameterValue(parameterName='zmin')
3248 value1 = str(value1)
3249 value2 = opObj.getParameterValue(parameterName='zmax')
3250 value2 = str(value2)
3251 value = value1 + "," + value2
3252 self.specGgraphDbsrange.setText(value)
3253 self.specGgraphDbsrange.setEnabled(True)
3254
3255 parmObj = opObj.getParameterObj(parameterName="figpath")
3299 value1 = opObj.getParameterValue(parameterName='zmin')
3300 value1 = str(value1)
3301 value2 = opObj.getParameterValue(parameterName='zmax')
3302 value2 = str(value2)
3303 value = value1 + "," + value2
3304 self.specGgraphDbsrange.setText(value)
3305 self.specGgraphDbsrange.setEnabled(True)
3306
3307 parmObj = opObj.getParameterObj(parameterName="save")
3256 3308 if parmObj == None:
3257 3309 self.specGraphSaveRTIplot.setCheckState(0)
3258 3310 else:
3259 3311 self.specGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3260 value = opObj.getParameterValue(parameterName='figpath')
3261 self.specGraphPath.setText(value)
3262
3312
3263 3313 parmObj = opObj.getParameterObj(parameterName="ftp")
3264 3314 if parmObj == None:
3265 3315 self.specGraphftpRTIplot.setCheckState(0)
3266 3316 else:
3267 3317 self.specGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3268 try:
3269 value = opObj.getParameterValue(parameterName='wr_period')
3270 except:
3271 value = " "
3318
3319 parmObj = opObj.getParameterObj(parameterName="figpath")
3320 if parmObj:
3321 value = parmObj.getValue()
3322 self.specGraphPath.setText(value)
3323
3324 parmObj = opObj.getParameterObj(parameterName="wr_period")
3325 if parmObj:
3326 value = parmObj.getValue()
3272 3327 self.specGgraphftpratio.setText(str(value))
3273
3328
3329 ########################################################
3330 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3331 if parmObj:
3332 value = parmObj.getValue()
3333 self.temporalFTP.ftp_wei = str(value)
3334
3335 parmObj = opObj.getParameterObj(parameterName="exp_code")
3336 if parmObj:
3337 value = parmObj.getValue()
3338 self.temporalFTP.exp_code = str(value)
3339
3340 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3341 if parmObj:
3342 value = parmObj.getValue()
3343 self.temporalFTP.sub_exp_code = str(value)
3344
3345 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3346 if parmObj:
3347 value = parmObj.getValue()
3348 self.temporalFTP.plot_pos = str(value)
3349
3274 3350 opObj = puObj.getOperationObj(name='CoherenceMap')
3275 # opObj = puObj.getOpObjfromParamValue(value="CoherenceMap")
3351
3276 3352 if opObj == None:
3277 3353 self.specGraphCebCoherencmap.setCheckState(0)
3278 3354 self.specGraphSaveCoherencemap.setCheckState(0)
3279 3355 self.specGraphftpCoherencemap.setCheckState(0)
3280 3356 else:
3281 3357 operationCoherenceMap = "Enable"
3282 3358 self.specGraphCebCoherencmap.setCheckState(QtCore.Qt.Checked)
3283 3359 parmObj = opObj.getParameterObj(parameterName='xmin')
3284 3360 if parmObj == None:
3285 3361 self.specGgraphTminTmax.clear()
3286 3362 else:
3287 3363 value1 = opObj.getParameterValue(parameterName='xmin')
3288 3364 value1 = str(value1)
3289 3365 value2 = opObj.getParameterValue(parameterName='xmax')
3290 3366 value2 = str(value2)
3291 3367 value = value1 + "," + value2
3292 3368 self.specGgraphTminTmax.setText(value)
3293 3369 self.specGgraphTminTmax.setEnabled(True)
3294 3370
3295 3371 parmObj = opObj.getParameterObj(parameterName='timerange')
3296 3372 if parmObj == None:
3297 3373 self.specGgraphTimeRange.clear()
3298 3374 else:
3299 3375 value1 = opObj.getParameterValue(parameterName='timerange')
3300 3376 value1 = str(value1)
3301 3377 self.specGgraphTimeRange.setText(value1)
3302 3378 self.specGgraphTimeRange.setEnabled(True)
3303 3379
3304 3380 parmObj = opObj.getParameterObj(parameterName='ymin')
3305 3381 if parmObj == None:
3306 3382 self.specGgraphHeight.clear()
3307 3383 else:
3308 3384 value1 = opObj.getParameterValue(parameterName='ymin')
3309 3385 value1 = str(value1)
3310 3386 value2 = opObj.getParameterValue(parameterName='ymax')
3311 3387 value2 = str(value2)
3312 3388 value = value1 + "," + value2
3313 3389 self.specGgraphHeight.setText(value)
3314 3390 self.specGgraphHeight.setEnabled(True)
3315 3391
3316 3392 parmObj = opObj.getParameterObj(parameterName='zmin')
3317 3393 if parmObj == None:
3318 3394 self.specGgraphmagnitud.clear()
3319 3395 else:
3320 3396 value1 = opObj.getParameterValue(parameterName='zmin')
3321 3397 value1 = str(value1)
3322 3398 value2 = opObj.getParameterValue(parameterName='zmax')
3323 3399 value2 = str(value2)
3324 3400 value = value1 + "," + value2
3325 3401 self.specGgraphmagnitud.setText(value)
3326 3402 self.specGgraphmagnitud.setEnabled(True)
3327 3403
3328 3404 parmObj = opObj.getParameterObj(parameterName='coh_min')
3329 3405 if parmObj == None:
3330 3406 self.specGgraphmagnitud.clear()
3331 3407 else:
3332 3408 value1 = opObj.getParameterValue(parameterName='coh_min')
3333 3409 value1 = str(value1)
3334 3410 value2 = opObj.getParameterValue(parameterName='coh_max')
3335 3411 value2 = str(value2)
3336 3412 value = value1 + "," + value2
3337 3413 self.specGgraphmagnitud.setText(value)
3338 3414 self.specGgraphmagnitud.setEnabled(True)
3339 3415
3340 3416 parmObj = opObj.getParameterObj(parameterName='phase_min')
3341 3417 if parmObj == None:
3342 3418 self.specGgraphPhase.clear()
3343 3419 else:
3344 3420 value1 = opObj.getParameterValue(parameterName='phase_min')
3345 3421 value1 = str(value1)
3346 3422 value2 = opObj.getParameterValue(parameterName='phase_max')
3347 3423 value2 = str(value2)
3348 3424 value = value1 + "," + value2
3349 3425 self.specGgraphPhase.setText(value)
3350 3426 self.specGgraphPhase.setEnabled(True)
3351
3352 parmObj = opObj.getParameterObj(parameterName="figpath")
3427
3428 parmObj = opObj.getParameterObj(parameterName="save")
3353 3429 if parmObj == None:
3354 3430 self.specGraphSaveCoherencemap.setCheckState(0)
3355 3431 else:
3356 3432 self.specGraphSaveCoherencemap.setCheckState(QtCore.Qt.Checked)
3357 value = opObj.getParameterValue(parameterName='figpath')
3358 self.specGraphPath.setText(value)
3359
3433
3360 3434 parmObj = opObj.getParameterObj(parameterName="ftp")
3361 3435 if parmObj == None:
3362 3436 self.specGraphftpCoherencemap.setCheckState(0)
3363 3437 else:
3364 3438 self.specGraphftpCoherencemap.setCheckState(QtCore.Qt.Checked)
3365 try:
3366 value = opObj.getParameterValue(parameterName='wr_period')
3367 except:
3368 value = " "
3439
3440 parmObj = opObj.getParameterObj(parameterName="figpath")
3441 if parmObj:
3442 value = parmObj.getValue()
3443 self.specGraphPath.setText(value)
3444
3445 parmObj = opObj.getParameterObj(parameterName="wr_period")
3446 if parmObj:
3447 value = parmObj.getValue()
3369 3448 self.specGgraphftpratio.setText(str(value))
3370
3449
3450 ########################################################
3451 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3452 if parmObj:
3453 value = parmObj.getValue()
3454 self.temporalFTP.ftp_wei = str(value)
3455
3456 parmObj = opObj.getParameterObj(parameterName="exp_code")
3457 if parmObj:
3458 value = parmObj.getValue()
3459 self.temporalFTP.exp_code = str(value)
3460
3461 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3462 if parmObj:
3463 value = parmObj.getValue()
3464 self.temporalFTP.sub_exp_code = str(value)
3465
3466 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3467 if parmObj:
3468 value = parmObj.getValue()
3469 self.temporalFTP.plot_pos = str(value)
3470
3371 3471 opObj = puObj.getOperationObj(name='PowerProfilePlot')
3372 # opObj = puObj.getOpObjfromParamValue(value="PowerProfilePlot")
3472
3373 3473 if opObj == None:
3374 3474 self.specGraphPowerprofile.setCheckState(0)
3375 3475 self.specGraphSavePowerprofile.setCheckState(0)
3376 3476 self.specGraphftpPowerprofile.setCheckState(0)
3377 3477 operationPowerProfilePlot = "Disabled"
3378 3478 channelList = None
3379 3479 freq_vel = None
3380 3480 heightsrange = None
3381 3481 else:
3382 3482 operationPowerProfilePlot = "Enable"
3383 3483 self.specGraphPowerprofile.setCheckState(QtCore.Qt.Checked)
3384 3484 parmObj = opObj.getParameterObj(parameterName='xmin')
3385 3485 if parmObj == None:
3386 3486 self.specGgraphDbsrange.clear()
3387 3487 else:
3388 value1 = opObj.getParameterValue(parameterName='xmin')
3389 value1 = str(value1)
3390 value2 = opObj.getParameterValue(parameterName='xmax')
3391 value2 = str(value2)
3392 value = value1 + "," + value2
3393 self.specGgraphDbsrange.setText(value)
3394 self.specGgraphDbsrange.setEnabled(True)
3488 value1 = opObj.getParameterValue(parameterName='xmin')
3489 value1 = str(value1)
3490 value2 = opObj.getParameterValue(parameterName='xmax')
3491 value2 = str(value2)
3492 value = value1 + "," + value2
3493 self.specGgraphDbsrange.setText(value)
3494 self.specGgraphDbsrange.setEnabled(True)
3395 3495
3396 3496 parmObj = opObj.getParameterObj(parameterName='ymin')
3397 3497 if parmObj == None:
3398 3498 self.specGgraphHeight.clear()
3399 3499 else:
3400 value1 = opObj.getParameterValue(parameterName='ymin')
3401 value1 = str(value1)
3402 value2 = opObj.getParameterValue(parameterName='ymax')
3403 value2 = str(value2)
3404 value = value1 + "," + value2
3405 self.specGgraphHeight.setText(value)
3406 self.specGgraphHeight.setEnabled(True)
3407
3408 parmObj = opObj.getParameterObj(parameterName="figpath")
3500 value1 = opObj.getParameterValue(parameterName='ymin')
3501 value1 = str(value1)
3502 value2 = opObj.getParameterValue(parameterName='ymax')
3503 value2 = str(value2)
3504 value = value1 + "," + value2
3505 self.specGgraphHeight.setText(value)
3506 self.specGgraphHeight.setEnabled(True)
3507
3508 parmObj = opObj.getParameterObj(parameterName="save")
3409 3509 if parmObj == None:
3410 3510 self.specGraphSavePowerprofile.setCheckState(0)
3411 3511 else:
3412 self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked)
3413 value = opObj.getParameterValue(parameterName='figpath')
3414 self.specGraphPath.setText(value)
3415
3512 self.specGraphSavePowerprofile.setCheckState(QtCore.Qt.Checked)
3513
3416 3514 parmObj = opObj.getParameterObj(parameterName="ftp")
3417 3515 if parmObj == None:
3418 self.specGraphftpPowerprofile.setCheckState(0)
3516 self.specGraphftpPowerprofile.setCheckState(0)
3419 3517 else:
3420 3518 self.specGraphftpPowerprofile.setCheckState(QtCore.Qt.Checked)
3421 try:
3422 value = opObj.getParameterValue(parameterName='wr_period')
3423 except:
3424 value = " "
3519
3520 parmObj = opObj.getParameterObj(parameterName="figpath")
3521 if parmObj:
3522 value = parmObj.getValue()
3523 self.specGraphPath.setText(value)
3524
3525 parmObj = opObj.getParameterObj(parameterName="wr_period")
3526 if parmObj:
3527 value = parmObj.getValue()
3425 3528 self.specGgraphftpratio.setText(str(value))
3426 # -noise
3529
3530 ########################################################
3531 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3532 if parmObj:
3533 value = parmObj.getValue()
3534 self.temporalFTP.ftp_wei = str(value)
3535
3536 parmObj = opObj.getParameterObj(parameterName="exp_code")
3537 if parmObj:
3538 value = parmObj.getValue()
3539 self.temporalFTP.exp_code = str(value)
3540
3541 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3542 if parmObj:
3543 value = parmObj.getValue()
3544 self.temporalFTP.sub_exp_code = str(value)
3545
3546 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3547 if parmObj:
3548 value = parmObj.getValue()
3549 self.temporalFTP.plot_pos = str(value)
3550
3427 3551 opObj = puObj.getOperationObj(name='Noise')
3428 # opObj = puObj.getOpObjfromParamValue(value="Noise")
3552
3429 3553 if opObj == None:
3430 3554 self.specGraphCebRTInoise.setCheckState(0)
3431 3555 self.specGraphSaveRTInoise.setCheckState(0)
3432 3556 self.specGraphftpRTInoise.setCheckState(0)
3433 3557 else:
3434 3558 self.specGraphCebRTInoise.setCheckState(QtCore.Qt.Checked)
3435 3559 parmObj = opObj.getParameterObj(parameterName='channelList')
3436 3560 if parmObj == None:
3437 3561 self.specGgraphChannelList.clear()
3438 3562 else:
3439 3563 value = opObj.getParameterValue(parameterName='channelList')
3440 3564 channelListRTINoise = str(value)[1:-1]
3441 3565 self.specGgraphChannelList.setText(channelListRTINoise)
3442 3566 self.specGgraphChannelList.setEnabled(True)
3443 3567
3444 3568 parmObj = opObj.getParameterObj(parameterName='xmin')
3445 3569 if parmObj == None:
3446 3570 self.specGgraphTminTmax.clear()
3447 3571 else:
3448 value1 = opObj.getParameterValue(parameterName='xmin')
3449 value1 = str(value1)
3450 value2 = opObj.getParameterValue(parameterName='xmax')
3451 value2 = str(value2)
3452 value = value1 + "," + value2
3453 self.specGgraphTminTmax.setText(value)
3454 self.specGgraphTminTmax.setEnabled(True)
3572 value1 = opObj.getParameterValue(parameterName='xmin')
3573 value1 = str(value1)
3574 value2 = opObj.getParameterValue(parameterName='xmax')
3575 value2 = str(value2)
3576 value = value1 + "," + value2
3577 self.specGgraphTminTmax.setText(value)
3578 self.specGgraphTminTmax.setEnabled(True)
3455 3579
3456 3580 parmObj = opObj.getParameterObj(parameterName='timerange')
3457 3581 if parmObj == None:
3458 3582 self.specGgraphTimeRange.clear()
3459 3583 else:
3460 value1 = opObj.getParameterValue(parameterName='timerange')
3461 value1 = str(value1)
3462 self.specGgraphTimeRange.setText(value1)
3463 self.specGgraphTimeRange.setEnabled(True)
3584 value1 = opObj.getParameterValue(parameterName='timerange')
3585 value1 = str(value1)
3586 self.specGgraphTimeRange.setText(value1)
3587 self.specGgraphTimeRange.setEnabled(True)
3464 3588
3465 3589
3466 3590 parmObj = opObj.getParameterObj(parameterName='ymin')
3467 3591 if parmObj == None:
3468 3592 self.specGgraphDbsrange.clear()
3469 3593 else:
3470 value1 = opObj.getParameterValue(parameterName='ymin')
3471 value1 = str(value1)
3472 value2 = opObj.getParameterValue(parameterName='ymax')
3473 value2 = str(value2)
3474 value = value1 + "," + value2
3475 self.specGgraphDbsrange.setText(value)
3476 self.specGgraphDbsrange.setEnabled(True)
3594 value1 = opObj.getParameterValue(parameterName='ymin')
3595 value1 = str(value1)
3596 value2 = opObj.getParameterValue(parameterName='ymax')
3597 value2 = str(value2)
3598 value = value1 + "," + value2
3599 self.specGgraphDbsrange.setText(value)
3600 self.specGgraphDbsrange.setEnabled(True)
3477 3601
3478 parmObj = opObj.getParameterObj(parameterName="figpath")
3602 parmObj = opObj.getParameterObj(parameterName="save")
3479 3603 if parmObj == None:
3480 3604 self.specGraphSaveRTInoise.setCheckState(0)
3481 3605 else:
3482 self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked)
3483 value = opObj.getParameterValue(parameterName='figpath')
3484 self.specGraphPath.setText(value)
3485
3606 self.specGraphSaveRTInoise.setCheckState(QtCore.Qt.Checked)
3607
3486 3608 parmObj = opObj.getParameterObj(parameterName="ftp")
3487 3609 if parmObj == None:
3488 3610 self.specGraphftpRTInoise.setCheckState(0)
3489 3611 else:
3490 self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked)
3491 try:
3492 value = opObj.getParameterValue(parameterName='wr_period')
3493 except:
3494 value = " "
3495 self.specGgraphftpratio.setText(str(value))
3496
3497 # outputSpectraWrite
3612 self.specGraphftpRTInoise.setCheckState(QtCore.Qt.Checked)
3613
3614 parmObj = opObj.getParameterObj(parameterName="figpath")
3615 if parmObj:
3616 value = parmObj.getValue()
3617 self.specGraphPath.setText(value)
3618
3619 parmObj = opObj.getParameterObj(parameterName="wr_period")
3620 if parmObj:
3621 value = parmObj.getValue()
3622 self.specGgraphftpratio.setText(str(value))
3623
3624 ########################################################
3625 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3626 if parmObj:
3627 value = parmObj.getValue()
3628 self.temporalFTP.ftp_wei = str(value)
3629
3630 parmObj = opObj.getParameterObj(parameterName="exp_code")
3631 if parmObj:
3632 value = parmObj.getValue()
3633 self.temporalFTP.exp_code = str(value)
3634
3635 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3636 if parmObj:
3637 value = parmObj.getValue()
3638 self.temporalFTP.sub_exp_code = str(value)
3639
3640 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3641 if parmObj:
3642 value = parmObj.getValue()
3643 self.temporalFTP.plot_pos = str(value)
3644
3498 3645 opObj = puObj.getOperationObj(name='SpectraWriter')
3499 3646 if opObj == None:
3500 3647 self.specOutputPath.clear()
3501 3648 self.specOutputblocksperfile.clear()
3502 3649 self.specOutputprofileperblock.clear()
3503 3650 else:
3504 3651 value = opObj.getParameterObj(parameterName='path')
3505 3652 if value == None:
3506 3653 self.specOutputPath.clear()
3507 3654 else:
3508 3655 value = opObj.getParameterValue(parameterName='path')
3509 3656 path = str(value)
3510 3657 self.specOutputPath.setText(path)
3511 3658 value = opObj.getParameterObj(parameterName='blocksPerFile')
3512 3659 if value == None:
3513 3660 self.specOutputblocksperfile.clear()
3514 3661 else:
3515 3662 value = opObj.getParameterValue(parameterName='blocksPerFile')
3516 3663 blocksperfile = str(value)
3517 3664 self.specOutputblocksperfile.setText(blocksperfile)
3518 3665 value = opObj.getParameterObj(parameterName='profilesPerBlock')
3519 3666 if value == None:
3520 3667 self.specOutputprofileperblock.clear()
3521 3668 else:
3522 3669 value = opObj.getParameterValue(parameterName='profilesPerBlock')
3523 3670 profilesPerBlock = str(value)
3524 3671 self.specOutputprofileperblock.setText(profilesPerBlock)
3525 3672
3526 3673 return
3527 3674
3528 3675 def __refreshSpectraHeisWindow(self, puObj):
3529 3676
3530 3677 opObj = puObj.getOperationObj(name="IncohInt4SpectraHeis")
3531 3678 if opObj == None:
3532 3679 self.specHeisOpIncoherent.clear()
3533 3680 self.specHeisOpCebIncoherent.setCheckState(0)
3534 3681 else:
3535 3682 for parmObj in opObj.getParameterObjList():
3536 3683 if parmObj.name == 'timeInterval':
3537 3684 value = opObj.getParameterValue(parameterName='timeInterval')
3538 3685 value = float(value)
3539 3686 self.specHeisOpIncoherent.setText(str(value))
3540 3687 self.specHeisOpIncoherent.setEnabled(True)
3541 3688 self.specHeisOpCebIncoherent.setCheckState(QtCore.Qt.Checked)
3542 3689 self.specHeisOpCobIncInt.setCurrentIndex(0)
3543 3690
3544 3691 # SpectraHeis Graph
3692
3693 self.specHeisGgraphXminXmax.clear()
3694 self.specHeisGgraphYminYmax.clear()
3695
3696 self.specHeisGgraphChannelList.clear()
3697 self.specHeisGgraphTminTmax.clear()
3698 self.specHeisGgraphTimeRange.clear()
3699 self.specHeisGgraphftpratio.clear()
3700
3545 3701 opObj = puObj.getOperationObj(name='SpectraHeisScope')
3546 # opObj = puObj.getOpObjfromParamValue(value="SpectraHeisScope")
3547 3702 if opObj == None:
3548 3703 self.specHeisGraphCebSpectraplot.setCheckState(0)
3549 3704 self.specHeisGraphSaveSpectra.setCheckState(0)
3550 3705 self.specHeisGraphftpSpectra.setCheckState(0)
3551
3552 3706 else:
3553 3707 operationSpectraHeisScope = "Enable"
3554 3708 self.specHeisGraphCebSpectraplot.setCheckState(QtCore.Qt.Checked)
3709
3555 3710 parmObj = opObj.getParameterObj(parameterName='channelList')
3556 3711 if parmObj == None:
3557 self.specHeisGgraphChannelList.clear()
3712 self.specHeisGgraphChannelList.clear()
3558 3713 else:
3559 3714 value = opObj.getParameterValue(parameterName='channelList')
3560 3715 channelListSpectraHeisScope = str(value)[1:-1]
3561 3716 self.specHeisGgraphChannelList.setText(channelListSpectraHeisScope)
3562 3717 self.specHeisGgraphChannelList.setEnabled(True)
3563 3718
3564 3719 parmObj = opObj.getParameterObj(parameterName='xmin')
3565 3720 if parmObj == None:
3566 3721 self.specHeisGgraphXminXmax.clear()
3567 3722 else:
3568 value1 = opObj.getParameterValue(parameterName='xmin')
3569 value1 = str(value1)
3570 value2 = opObj.getParameterValue(parameterName='xmax')
3571 value2 = str(value2)
3572 value = value1 + "," + value2
3573 self.specHeisGgraphXminXmax.setText(value)
3574 self.specHeisGgraphXminXmax.setEnabled(True)
3723 value1 = opObj.getParameterValue(parameterName='xmin')
3724 value1 = str(value1)
3725 value2 = opObj.getParameterValue(parameterName='xmax')
3726 value2 = str(value2)
3727 value = value1 + "," + value2
3728 self.specHeisGgraphXminXmax.setText(value)
3729 self.specHeisGgraphXminXmax.setEnabled(True)
3575 3730
3576 3731 parmObj = opObj.getParameterObj(parameterName='ymin')
3577 3732 if parmObj == None:
3578 3733 self.specHeisGgraphYminYmax.clear()
3579 3734 else:
3580 value1 = opObj.getParameterValue(parameterName='ymin')
3581 value1 = str(value1)
3582 value2 = opObj.getParameterValue(parameterName='ymax')
3583 value2 = str(value2)
3584 value = value1 + "," + value2
3585 self.specHeisGgraphYminYmax.setText(value)
3586 self.specHeisGgraphYminYmax.setEnabled(True)
3587
3588 parmObj = opObj.getParameterObj(parameterName="figpath")
3735 value1 = opObj.getParameterValue(parameterName='ymin')
3736 value1 = str(value1)
3737 value2 = opObj.getParameterValue(parameterName='ymax')
3738 value2 = str(value2)
3739 value = value1 + "," + value2
3740 self.specHeisGgraphYminYmax.setText(value)
3741 self.specHeisGgraphYminYmax.setEnabled(True)
3742
3743 parmObj = opObj.getParameterObj(parameterName="save")
3589 3744 if parmObj == None:
3590 self.specHeisGraphSaveSpectra.setCheckState(0)
3745 self.specHeisGraphSaveSpectra.setCheckState(0)
3591 3746 else:
3592 self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3593 value = opObj.getParameterValue(parameterName='figpath')
3594 self.specHeisGraphPath.setText(value)
3595
3747 self.specHeisGraphSaveSpectra.setCheckState(QtCore.Qt.Checked)
3748
3596 3749 parmObj = opObj.getParameterObj(parameterName="ftp")
3597 3750 if parmObj == None:
3598 self.specHeisGraphftpSpectra.setCheckState(0)
3751 self.specHeisGraphftpSpectra.setCheckState(0)
3599 3752 else:
3600 self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3601 try:
3602 value = opObj.getParameterValue(parameterName='wr_period')
3603 except:
3604 value = " "
3605 self.specHeisGgraphftpratio.setText(str(value))
3606
3607 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
3608 # opObj = puObj.getOpObjfromParamValue(value="RTIfromSpectraHeis")
3753 self.specHeisGraphftpSpectra.setCheckState(QtCore.Qt.Checked)
3754
3755 parmObj = opObj.getParameterObj(parameterName="figpath")
3756 if parmObj:
3757 value = parmObj.getValue()
3758 self.specHeisGraphPath.setText(value)
3759
3760 parmObj = opObj.getParameterObj(parameterName="wr_period")
3761 if parmObj:
3762 value = parmObj.getValue()
3763 self.specHeisGgraphftpratio.setText(str(value))
3764
3765 ########################################################
3766 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3767 if parmObj:
3768 value = parmObj.getValue()
3769 self.temporalFTP.ftp_wei = str(value)
3770
3771 parmObj = opObj.getParameterObj(parameterName="exp_code")
3772 if parmObj:
3773 value = parmObj.getValue()
3774 self.temporalFTP.exp_code = str(value)
3775
3776 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3777 if parmObj:
3778 value = parmObj.getValue()
3779 self.temporalFTP.sub_exp_code = str(value)
3780
3781 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3782 if parmObj:
3783 value = parmObj.getValue()
3784 self.temporalFTP.plot_pos = str(value)
3785
3786 opObj = puObj.getOperationObj(name='RTIfromSpectraHeis')
3787
3609 3788 if opObj == None:
3610 3789 self.specHeisGraphCebRTIplot.setCheckState(0)
3611 3790 self.specHeisGraphSaveRTIplot.setCheckState(0)
3612 3791 self.specHeisGraphftpRTIplot.setCheckState(0)
3613 3792 else:
3614 3793 self.specHeisGraphCebRTIplot.setCheckState(QtCore.Qt.Checked)
3615 3794 parmObj = opObj.getParameterObj(parameterName='channelList')
3616 3795 if parmObj == None:
3617 self.specHeisGgraphChannelList.clear()
3796 self.specHeisGgraphChannelList.clear()
3618 3797 else:
3619 3798 value = opObj.getParameterValue(parameterName='channelList')
3620 3799 channelListRTIPlot = str(value)[1:-1]
3621 3800 self.specGgraphChannelList.setText(channelListRTIPlot)
3622 3801 self.specGgraphChannelList.setEnabled(True)
3623 3802
3624 3803 parmObj = opObj.getParameterObj(parameterName='xmin')
3625 3804 if parmObj == None:
3626 3805 self.specHeisGgraphTminTmax.clear()
3627 3806 else:
3628 value1 = opObj.getParameterValue(parameterName='xmin')
3629 value1 = str(value1)
3630 value2 = opObj.getParameterValue(parameterName='xmax')
3631 value2 = str(value2)
3632 value = value1 + "," + value2
3633 self.specHeisGgraphTminTmax.setText(value)
3634 self.specHeisGgraphTminTmax.setEnabled(True)
3807 value1 = opObj.getParameterValue(parameterName='xmin')
3808 value1 = str(value1)
3809 value2 = opObj.getParameterValue(parameterName='xmax')
3810 value2 = str(value2)
3811 value = value1 + "," + value2
3812 self.specHeisGgraphTminTmax.setText(value)
3813 self.specHeisGgraphTminTmax.setEnabled(True)
3635 3814
3636 3815 parmObj = opObj.getParameterObj(parameterName='timerange')
3637 3816 if parmObj == None:
3638 3817 self.specGgraphTimeRange.clear()
3639 3818 else:
3640 value1 = opObj.getParameterValue(parameterName='timerange')
3641 value1 = str(value1)
3642 self.specHeisGgraphTimeRange.setText(value1)
3643 self.specHeisGgraphTimeRange.setEnabled(True)
3819 value1 = opObj.getParameterValue(parameterName='timerange')
3820 value1 = str(value1)
3821 self.specHeisGgraphTimeRange.setText(value1)
3822 self.specHeisGgraphTimeRange.setEnabled(True)
3644 3823
3645 3824 parmObj = opObj.getParameterObj(parameterName='ymin')
3646 3825 if parmObj == None:
3647 3826 self.specHeisGgraphYminYmax.clear()
3648 3827 else:
3649 value1 = opObj.getParameterValue(parameterName='ymin')
3650 value1 = str(value1)
3651 value2 = opObj.getParameterValue(parameterName='ymax')
3652 value2 = str(value2)
3653 value = value1 + "," + value2
3654 self.specHeisGgraphYminYmax.setText(value)
3655 self.specHeisGgraphYminYmax.setEnabled(True)
3656
3657 parmObj = opObj.getParameterObj(parameterName="figpath")
3828 value1 = opObj.getParameterValue(parameterName='ymin')
3829 value1 = str(value1)
3830 value2 = opObj.getParameterValue(parameterName='ymax')
3831 value2 = str(value2)
3832 value = value1 + "," + value2
3833 self.specHeisGgraphYminYmax.setText(value)
3834 self.specHeisGgraphYminYmax.setEnabled(True)
3835
3836 parmObj = opObj.getParameterObj(parameterName="save")
3658 3837 if parmObj == None:
3659 3838 self.specHeisGraphSaveRTIplot.setCheckState(0)
3660 3839 else:
3661 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3662 value = opObj.getParameterValue(parameterName='figpath')
3663 self.specHeisGraphPath.setText(value)
3664
3840 self.specHeisGraphSaveRTIplot.setCheckState(QtCore.Qt.Checked)
3841
3665 3842 parmObj = opObj.getParameterObj(parameterName="ftp")
3666 3843 if parmObj == None:
3667 3844 self.specHeisGraphftpRTIplot.setCheckState(0)
3668 3845 else:
3669 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3670 try:
3671 value = opObj.getParameterValue(parameterName='wr_period')
3672 except:
3673 value = " "
3674 self.specHeisGgraphftpratio.setText(str(value))
3846 self.specHeisGraphftpRTIplot.setCheckState(QtCore.Qt.Checked)
3847
3848 parmObj = opObj.getParameterObj(parameterName="figpath")
3849 if parmObj:
3850 value = parmObj.getValue()
3851 self.specHeisGraphPath.setText(value)
3852
3853 parmObj = opObj.getParameterObj(parameterName="wr_period")
3854 if parmObj:
3855 value = parmObj.getValue()
3856 self.specHeisGgraphftpratio.setText(str(value))
3857
3858 ########################################################
3859 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
3860 if parmObj:
3861 value = parmObj.getValue()
3862 self.temporalFTP.ftp_wei = str(value)
3675 3863
3864 parmObj = opObj.getParameterObj(parameterName="exp_code")
3865 if parmObj:
3866 value = parmObj.getValue()
3867 self.temporalFTP.exp_code = str(value)
3868
3869 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
3870 if parmObj:
3871 value = parmObj.getValue()
3872 self.temporalFTP.sub_exp_code = str(value)
3873
3874 parmObj = opObj.getParameterObj(parameterName="plot_pos")
3875 if parmObj:
3876 value = parmObj.getValue()
3877 self.temporalFTP.plot_pos = str(value)
3878
3676 3879 # outputSpectraHeisWrite
3677 3880 opObj = puObj.getOperationObj(name='FitsWriter')
3678 3881 if opObj == None:
3679 3882 self.specHeisOutputPath.clear()
3680 3883 self.specHeisOutputblocksperfile.clear()
3681 3884 self.specHeisOutputMetada.clear()
3682 3885 else:
3683 3886 value = opObj.getParameterObj(parameterName='path')
3684 3887 if value == None:
3685 3888 self.specHeisOutputPath.clear()
3686 3889 else:
3687 3890 value = opObj.getParameterValue(parameterName='path')
3688 3891 path = str(value)
3689 3892 self.specHeisOutputPath.setText(path)
3690 3893 value = opObj.getParameterObj(parameterName='dataBlocksPerFile')
3691 3894 if value == None:
3692 3895 self.specHeisOutputblocksperfile.clear()
3693 3896 else:
3694 3897 value = opObj.getParameterValue(parameterName='dataBlocksPerFile')
3695 3898 blocksperfile = str(value)
3696 3899 self.specHeisOutputblocksperfile.setText(blocksperfile)
3697 3900 value = opObj.getParameterObj(parameterName='metadatafile')
3698 3901 if value == None:
3699 3902 self.specHeisOutputMetada.clear()
3700 3903 else:
3701 3904 value = opObj.getParameterValue(parameterName='metadatafile')
3702 3905 metada = str(value)
3703 3906 self.specHeisOutputMetada.setText(metada)
3704 3907
3705 3908 return
3706 3909
3707 3910 def __refreshCorrelationWindow(self, puObj):
3708 3911 pass
3709 3912
3710 3913 def refreshPUWindow(self, puObj):
3711 3914
3712 3915 if puObj.datatype == 'Voltage':
3713 3916 self.__refreshVoltageWindow(puObj)
3714 3917
3715 3918 if puObj.datatype == 'Spectra':
3716 3919 self.__refreshSpectraWindow(puObj)
3717 3920
3718 3921 if puObj.datatype == 'SpectraHeis':
3719 3922 self.__refreshSpectraHeisWindow(puObj)
3720 3923
3721 3924 def refreshProjectProperties(self, projectObjView):
3722 3925
3723 3926 propertyBuffObj = PropertyBuffer()
3724 3927 name = projectObjView.name
3725 3928
3726 3929 propertyBuffObj.append("Properties", "Name", projectObjView.name),
3727 3930 propertyBuffObj.append("Properties", "Description", projectObjView.description)
3728 3931 propertyBuffObj.append("Properties", "Workspace", self.pathWorkSpace)
3729 3932
3730 3933 readUnitObj = projectObjView.getReadUnitObj()
3731 3934 runOperationObj = readUnitObj.getOperationObj(name='run')
3732 3935
3733 3936 for thisParmObj in runOperationObj.getParameterObjList():
3734 3937 propertyBuffObj.append("Reading parms", thisParmObj.name, str(thisParmObj.getValue()))
3735 3938
3736 3939 propertiesModel = propertyBuffObj.getPropertyModel()
3737 3940
3738 3941 self.treeProjectProperties.setModel(propertiesModel)
3739 3942 self.treeProjectProperties.expandAll()
3740 3943 self.treeProjectProperties.resizeColumnToContents(0)
3741 3944 self.treeProjectProperties.resizeColumnToContents(1)
3742 3945
3743 3946 def refreshPUProperties(self, puObjView):
3744 3947
3948 ############ FTP CONFIG ################################
3949 if puObjView.id in self.__puLocalFolder2FTP.keys():
3950 self.__puLocalFolder2FTP.pop(puObjView.id)
3951 ########################################################
3952
3745 3953 propertyBuffObj = PropertyBuffer()
3746 3954
3747 3955 for thisOp in puObjView.getOperationObjList():
3748 3956
3749 3957 operationName = thisOp.name
3958
3750 3959 if operationName == 'run':
3751 3960 operationName = 'Properties'
3752 else:
3753 if not thisOp.getParameterObjList():
3754 propertyBuffObj.append(operationName, '--', '--')
3961
3962 if not thisOp.getParameterObjList():
3963 propertyBuffObj.append(operationName, '--', '--')
3964 continue
3755 3965
3756 3966 for thisParmObj in thisOp.getParameterObjList():
3757
3758 3967 propertyBuffObj.append(operationName, thisParmObj.name, str(thisParmObj.getValue()))
3759
3968
3969 ############ FTP CONFIG ################################
3970 if thisParmObj.name == 'ftp' and thisParmObj.getValue():
3971 figpath = thisOp.getParameterValue('figpath')
3972 if not figpath:
3973 continue
3974 self.__puLocalFolder2FTP[puObjView.id] = figpath
3975 ########################################################
3976
3760 3977 propertiesModel = propertyBuffObj.getPropertyModel()
3761 3978
3762 3979 self.treeProjectProperties.setModel(propertiesModel)
3763 3980 self.treeProjectProperties.expandAll()
3764 3981 self.treeProjectProperties.resizeColumnToContents(0)
3765 3982 self.treeProjectProperties.resizeColumnToContents(1)
3766 3983
3767 3984 def refreshGraphicsId(self):
3768 3985
3769 3986 projectObj = self.getSelectedProjectObj()
3770 3987
3771 3988 for idPU, puObj in projectObj.procUnitConfObjDict.items():
3772 3989
3773 3990 for opObj in puObj.getOperationObjList():
3774 3991
3775 3992 if opObj.name not in ('Scope', 'SpectraPlot', 'CrossSpectraPlot', 'RTIPlot', 'CoherenceMap', 'PowerProfilePlot', 'Noise', 'SpectraHeisScope', 'RTIfromSpectraHeis'):
3776 3993 continue
3777 3994
3778 3995 opObj.changeParameter(name='id', value=opObj.id, format='int')
3779 3996
3780 3997 def on_click(self, index):
3781 3998
3782 3999 self.selectedItemTree = self.projectExplorerModel.itemFromIndex(index)
3783 4000
3784 4001 projectObjView = self.getSelectedProjectObj()
3785 4002
3786 4003 if not projectObjView:
3787 4004 return
3788 4005
3789 4006 self.create = False
3790 4007 selectedObjView = self.getSelectedItemObj()
3791 4008
3792 4009 #A project has been selected
3793 4010 if projectObjView == selectedObjView:
3794 4011
3795 4012 self.refreshProjectWindow2(projectObjView)
3796 4013 self.refreshProjectProperties(projectObjView)
3797 4014
3798 4015 self.tabProject.setEnabled(True)
3799 4016 self.tabVoltage.setEnabled(False)
3800 4017 self.tabSpectra.setEnabled(False)
3801 4018 self.tabCorrelation.setEnabled(False)
3802 4019 self.tabSpectraHeis.setEnabled(False)
3803 4020 self.tabWidgetProject.setCurrentWidget(self.tabProject)
3804 4021
3805 4022 return
3806 4023
3807 4024 #A processing unit has been selected
3808 4025 voltEnable = False
3809 4026 specEnable = False
3810 4027 corrEnable = False
3811 4028 specHeisEnable = False
3812 4029 tabSelected = self.tabProject
3813 4030
3814 4031 puObj = selectedObjView
3815 4032
3816 if self.selectedItemTree.text() == 'Voltage':
3817 voltEnable = True
3818 tabSelected = self.tabVoltage
3819
3820 if self.selectedItemTree.text() == 'Spectra':
3821 specEnable = True
3822 tabSelected = self.tabSpectra
3823
3824 if self.selectedItemTree.text() == 'Correlation':
3825 corrEnable = True
3826 tabSelected = self.tabCorrelation
3827
3828 if self.selectedItemTree.text() == 'SpectraHeis':
3829 specHeisEnable = True
3830 tabSelected = self.tabSpectraHeis
3831
3832 self.refreshPUWindow(puObj=puObj)
4033 self.refreshPUWindow(puObj)
3833 4034 self.refreshPUProperties(puObj)
3834
3835 self.tabProject.setEnabled(False)
3836 self.tabVoltage.setEnabled(voltEnable)
3837 self.tabSpectra.setEnabled(specEnable)
3838 self.tabCorrelation.setEnabled(corrEnable)
3839 self.tabSpectraHeis.setEnabled(specHeisEnable)
3840 self.tabWidgetProject.setCurrentWidget(tabSelected)
4035 self.showtabPUCreated(puObj.datatype)
3841 4036
3842 4037 def on_right_click(self, pos):
3843 4038
3844 4039 self.menu = QtGui.QMenu()
3845 4040 quitAction0 = self.menu.addAction("Create a New Project")
3846 4041 quitAction1 = self.menu.addAction("Create a New Processing Unit")
3847 4042 quitAction2 = self.menu.addAction("Delete Item")
3848 4043 quitAction3 = self.menu.addAction("Quit")
3849 4044
3850 4045 if len(self.__itemTreeDict) == 0:
3851 4046 quitAction2.setEnabled(False)
3852 4047 else:
3853 4048 quitAction2.setEnabled(True)
3854 4049
3855 4050 action = self.menu.exec_(self.mapToGlobal(pos))
3856 4051
3857 4052 if action == quitAction0:
3858 4053 self. setInputsProject_View()
3859 4054 self.create = True
3860 4055
3861 4056 if action == quitAction1:
3862 4057 if len(self.__projectObjDict) == 0:
3863 4058 outputstr = "You need to create a Project before adding a Processing Unit"
3864 4059 self.console.clear()
3865 4060 self.console.append(outputstr)
3866 4061 return 0
3867 4062 else:
3868 4063 self.addPUWindow()
3869 4064 self.console.clear()
3870 4065 self.console.append("Please, Choose the type of Processing Unit")
3871 4066 # self.console.append("If your Datatype is rawdata, you will start with processing unit Type Voltage")
3872 4067 # self.console.append("If your Datatype is pdata, you will choose between processing unit Type Spectra or Correlation")
3873 4068 # self.console.append("If your Datatype is fits, you will start with processing unit Type SpectraHeis")
3874 4069
3875 4070 if action == quitAction2:
3876 4071 index = self.selectedItemTree
3877 4072 try:
3878 4073 index.parent()
3879 4074 except:
3880 4075 self.console.append('Please first select a Project or Processing Unit')
3881 4076 return 0
3882 4077 # print index.parent(),index
3883 4078 if index.parent() == None:
3884 4079 self.projectExplorerModel.removeRow(index.row())
3885 4080 else:
3886 4081 index.parent().removeRow(index.row())
3887 4082 self.removeItemTreeFromProject()
3888 4083 self.console.clear()
3889 4084 # for i in self.projectExplorerTree.selectionModel().selection().indexes():
3890 4085 # print i.row()
3891 4086
3892 4087 if action == quitAction3:
3893 4088 self.close()
3894 4089 return 0
3895 4090
3896 4091 def create_updating_timer(self):
3897 4092 self.comm_data_timer = QtCore.QTimer(self)
3898 4093 self.comm_data_timer.timeout.connect(self.on_comm_updating_timer)
3899 4094 self.comm_data_timer.start(1000)
3900 4095
3901 4096 def createProjectView(self, id):
3902 4097
3903 4098 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3904 4099 id = str(id)
3905 4100 projectParms = self.__getParmsFromProjectWindow()
3906 4101
3907 4102 if not projectParms.isValid():
3908 4103 return None
3909 4104
3910 4105 projectObjView = Project()
3911 4106 projectObjView.setup(id=id, name=projectParms.name, description=projectParms.description)
3912 4107
3913 4108 self.__projectObjDict[id] = projectObjView
3914 4109 self.addProject2ProjectExplorer(id=id, name=projectObjView.name)
3915 4110
3916 4111 self.create = False
3917 4112
3918 4113 return projectObjView
3919 4114
3920 4115 def updateProjectView(self):
3921 4116
3922 4117 # project_name, description, datatype, data_path, starDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3923 4118
3924 4119 projectParms = self.__getParmsFromProjectWindow()
3925 4120
3926 4121 if not projectParms.isValid():
3927 4122 return None
3928 4123
3929 4124 projectObjView = self.getSelectedProjectObj()
3930 4125 projectObjView.update(name=projectParms.name, description=projectParms.description)
3931 4126
3932 4127 return projectObjView
3933 4128
3934 4129 def createReadUnitView(self, projectObjView):
3935 4130
3936 4131 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk, set = self.getParmsFromProjectWindow()
3937 4132
3938 4133 projectParms = self.__getParmsFromProjectWindow()
3939 4134
3940 4135 if not projectParms.isValid():
3941 4136 return None
3942 4137
3943 4138 if projectParms.datatype in ("Voltage", "Spectra", "Fits"):
3944 4139 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
3945 4140 path=projectParms.dpath,
3946 4141 startDate=projectParms.startDate,
3947 4142 endDate=projectParms.endDate,
3948 4143 startTime=projectParms.startTime,
3949 4144 endTime=projectParms.endTime,
3950 4145 online=projectParms.online,
3951 4146 walk=projectParms.walk
3952 4147 )
3953 4148
3954 4149 if projectParms.set:
3955 4150 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
3956 4151
3957 4152 if projectParms.delay:
3958 4153 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
3959 4154
3960 4155 if projectParms.datatype == "USRP":
3961 4156 readUnitConfObj = projectObjView.addReadUnit(datatype=projectParms.datatype,
3962 4157 path=projectParms.dpath,
3963 4158 startDate=projectParms.startDate,
3964 4159 endDate=projectParms.endDate,
3965 4160 startTime=projectParms.startTime,
3966 4161 endTime=projectParms.endTime,
3967 4162 online=projectParms.online,
3968 4163 ippKm=projectParms.ippKm
3969 4164 )
3970 4165
3971 4166 if projectParms.delay:
3972 4167 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
3973 4168
3974 4169 return readUnitConfObj
3975 4170
3976 4171 def updateReadUnitView(self, projectObjView, idReadUnit):
3977 4172
3978 4173 # project_name, description, datatype, data_path, startDate, endDate, startTime, endTime, online, delay, walk , set = self.getParmsFromProjectWindow()
3979 4174
3980 4175 readUnitConfObj = projectObjView.getProcUnitObj(idReadUnit)
3981 4176
3982 4177 projectParms = self.__getParmsFromProjectWindow()
3983 4178
3984 4179 if not projectParms.isValid():
3985 4180 return None
3986 4181
3987 4182 if projectParms.datatype in ["Voltage", "Spectra", "Fits"]:
3988 4183 readUnitConfObj.update(datatype=projectParms.datatype,
3989 4184 path=projectParms.dpath,
3990 4185 startDate=projectParms.startDate,
3991 4186 endDate=projectParms.endDate,
3992 4187 startTime=projectParms.startTime,
3993 4188 endTime=projectParms.endTime,
3994 4189 online=projectParms.online,
3995 4190 walk=projectParms.walk
3996 4191 )
3997 4192 if projectParms.set:
3998 4193 readUnitConfObj.addParameter(name="set", value=projectParms.set, format="int")
3999 4194
4000 4195 if projectParms.delay:
4001 4196 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4002 4197
4003 4198 if projectParms.datatype == "USRP":
4004 4199 readUnitConfObj.update(datatype=projectParms.datatype,
4005 4200 path=projectParms.dpath,
4006 4201 startDate=projectParms.startDate,
4007 4202 endDate=projectParms.endDate,
4008 4203 startTime=projectParms.startTime,
4009 4204 endTime=projectParms.endTime,
4010 4205 online=projectParms.online,
4011 4206 ippKm=projectParms.ippKm
4012 4207 )
4013 4208
4014 4209 if projectParms.delay:
4015 4210 readUnitConfObj.addParameter(name="delay", value=projectParms.delay, format="int")
4016 4211
4017 4212 return readUnitConfObj
4018 4213
4019 4214 def createProcUnitView(self, projectObjView, datatype, inputId):
4020 4215
4021 4216 procUnitConfObj = projectObjView.addProcUnit(datatype=datatype, inputId=inputId)
4022 4217
4023 4218 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4024 4219
4025 4220 return procUnitConfObj
4026 4221
4027 4222 def updateProcUnitView(self, id):
4028 4223
4029 4224 procUnitConfObj = projectObjView.getProcUnitObj(id)
4030 4225 procUnitConfObj.removeOperations()
4031 4226
4032 4227 return procUnitConfObj
4033 4228
4034 4229 def addPUWindow(self):
4035 4230
4036 4231 self.configUPWindowObj = UnitProcessWindow(self)
4037 4232 fatherObj = self.getSelectedItemObj()
4038 4233 try:
4039 4234 fatherObj.getElementName()
4040 4235 except:
4041 4236 self.console.append("First left click on Project or Processing Unit")
4042 4237 return 0
4043 4238
4044 4239 if fatherObj.getElementName() == 'Project':
4045 4240 readUnitConfObj = fatherObj.getReadUnitObj()
4046 4241 self.configUPWindowObj.dataTypeProject = str(readUnitConfObj.datatype)
4047 4242
4048 4243 self.configUPWindowObj.getfromWindowList.append(fatherObj)
4049 4244 self.configUPWindowObj.loadTotalList()
4050 4245 self.configUPWindowObj.show()
4051 4246 self.configUPWindowObj.closed.connect(self.createPUWindow)
4052 4247
4053 4248 def createPUWindow(self):
4054 4249
4055 4250 if not self.configUPWindowObj.create:
4056 4251 return
4057 4252
4058 4253 fatherObj = self.configUPWindowObj.getFromWindow
4059 4254 datatype = self.configUPWindowObj.typeofUP
4060 4255
4061 4256 if fatherObj.getElementName() == 'Project':
4062 4257 inputId = fatherObj.getReadUnitId()
4063 4258 projectObjView = fatherObj
4064 4259 else:
4065 4260 inputId = fatherObj.getId()
4066 4261 projectObjView = self.getSelectedProjectObj()
4067 4262
4068 4263 puObj = self.createProcUnitView(projectObjView, datatype, inputId)
4069 4264
4070 self.addPU2ProjectExplorer(id=puObj.getId(), name=datatype)
4265 self.addPU2ProjectExplorer(puObj)
4071 4266
4072 4267 self.showtabPUCreated(datatype)
4073 4268
4074 4269 self.clearPUWindow(datatype)
4075 4270
4076 4271 self.showPUinitView()
4077 4272
4078 4273 def addFTPConf2Operation(self, puObj, opObj):
4079 4274
4080 if self.temporalFTP.create:
4081 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
4082 else:
4275 if not self.temporalFTP.create:
4083 4276 self.temporalFTP.setwithoutconfiguration()
4084 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.temporalFTP.recover()
4085
4086 # opObj.addParameter(name='server', value=server, format='str')
4087 # opObj.addParameter(name='folder', value=remotefolder, format='str')
4088 # opObj.addParameter(name='username', value=username, format='str')
4089 # opObj.addParameter(name='password', value=password, format='str')
4090
4091 if ftp_wei:
4092 opObj.addParameter(name='ftp_wei', value=int(ftp_wei), format='int')
4093 if exp_code:
4094 opObj.addParameter(name='exp_code', value=int(exp_code), format='int')
4095 if sub_exp_code:
4096 opObj.addParameter(name='sub_exp_code', value=int(sub_exp_code), format='int')
4097 if plot_pos:
4098 opObj.addParameter(name='plot_pos', value=int(plot_pos), format='int')
4099
4100 if puObj.datatype == "Spectra":
4101 value = self.specGgraphftpratio.text()
4102 if puObj.datatype == "SpectraHeis":
4103 value = self.specHeisGgraphftpratio.text()
4104
4105 if not value == "":
4106 try:
4107 value = int(value)
4108 opObj.addParameter(name='wr_period', value=value, format='int')
4109 except:
4110 pass
4277
4278 # opObj.addParameter(name='server', value=self.temporalFTP.server, format='str')
4279 # opObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str')
4280 # opObj.addParameter(name='username', value=self.temporalFTP.username, format='str')
4281 # opObj.addParameter(name='password', value=self.temporalFTP.password, format='str')
4282
4283 if self.temporalFTP.ftp_wei:
4284 opObj.addParameter(name='ftp_wei', value=int(self.temporalFTP.ftp_wei), format='int')
4285 if self.temporalFTP.exp_code:
4286 opObj.addParameter(name='exp_code', value=int(self.temporalFTP.exp_code), format='int')
4287 if self.temporalFTP.sub_exp_code:
4288 opObj.addParameter(name='sub_exp_code', value=int(self.temporalFTP.sub_exp_code), format='int')
4289 if self.temporalFTP.plot_pos:
4290 opObj.addParameter(name='plot_pos', value=int(self.temporalFTP.plot_pos), format='int')
4111 4291
4292 def __checkFTPProcUnit(self, projectObj, localfolder):
4112 4293
4113 def addFTPProcUnitView(self, server, username, password, remotefolder,
4114 ftp_wei, exp_code, sub_exp_code, plot_pos,
4115 localfolder='./', extension='.png', period='60', protocol='ftp'):
4294 puId = None
4295 puObj = None
4296
4297 for thisPuId, thisPuObj in projectObj.procUnitItems():
4298
4299 if not thisPuObj.name == "SendToServer":
4300 continue
4301
4302 opObj = thisPuObj.getOperationObj(name='run')
4303
4304 parmObj = opObj.getParameterObj('localfolder')
4305
4306 #localfolder parameter should always be set, if it is not set then ProcUnit should be removed
4307 if not parmObj:
4308 projectObj.removeProcUnit(thisPuId)
4309 continue
4310
4311 thisLocalfolder = parmObj.getValue()
4312
4313 if localfolder != thisLocalfolder:
4314 continue
4315
4316 puId = thisPuId
4317 puObj = thisPuObj
4318 break
4116 4319
4117 projectObj = self.getSelectedProjectObj()
4118 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
4320 return puObj
4321
4322 def __addFTPProcUnitFrom(self, operationObj):
4323
4324 if operationObj.name != "SendByFTP":
4325 return
4326
4327 projectObj = self.getSelectedProjectObj()
4328
4329 self.removeAllFTPProcUnitView(projectObj)
4330
4331 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
4332
4333 server = operationObj.getParameterValue("server")
4334 username = operationObj.getParameterValue("username")
4335 password = operationObj.getParameterValue("pasword")
4336 localfolder = operationObj.getParameterValue("localfolder")
4337 remotefolder = operationObj.getParameterValue("remotefolder")
4338 ext = operationObj.getParameterValue("ext")
4339 period = operationObj.getParameterValue("period")
4119 4340
4120 if not procUnitConfObj:
4121 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
4122 else:
4123 procUnitConfObj.removeOperations()
4124
4125 4341 procUnitConfObj.addParameter(name='server', value=server, format='str')
4126 4342 procUnitConfObj.addParameter(name='username', value=username, format='str')
4127 4343 procUnitConfObj.addParameter(name='password', value=password, format='str')
4128 procUnitConfObj.addParameter(name='localfolder', value=localfolder, format='str')
4344 procUnitConfObj.addParameter(name='localfolder', value=localfolder, format='list')
4129 4345 procUnitConfObj.addParameter(name='remotefolder', value=remotefolder, format='str')
4130 procUnitConfObj.addParameter(name='ext', value=extension, format='str')
4346 procUnitConfObj.addParameter(name='ext', value=ext, format='str')
4131 4347 procUnitConfObj.addParameter(name='period', value=period, format='int')
4132 procUnitConfObj.addParameter(name='protocol', value=protocol, format='str')
4133
4134 procUnitConfObj.addParameter(name='ftp_wei', value=ftp_wei, format='str')
4135 procUnitConfObj.addParameter(name='exp_code', value=exp_code, format='str')
4136 procUnitConfObj.addParameter(name='sub_exp_code', value=sub_exp_code, format='str')
4137 procUnitConfObj.addParameter(name='plot_pos', value=plot_pos, format='str')
4138 4348
4139 4349 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4140 4350
4141 self.__ftpProcUnitAdded = True
4142 self.__ftpProcUnitId = procUnitConfObj.getId()
4143
4144 def removeFTPProcUnitView(self):
4351 return procUnitConfObj
4352
4353 def addFTPProcUnitView(self):
4145 4354
4146 projectObj = self.getSelectedProjectObj()
4147 procUnitConfObj = projectObj.getProcUnitObjByName(name="SendToServer")
4148
4149 self.__ftpProcUnitAdded = False
4150 self.__ftpProcUnitId = None
4355 if not self.temporalFTP.create:
4356 self.temporalFTP.setwithoutconfiguration()
4151 4357
4152 if not procUnitConfObj:
4358 projectObj = self.getSelectedProjectObj()
4359
4360 self.removeAllFTPProcUnitView(projectObj)
4361
4362 if not self.__puLocalFolder2FTP:
4153 4363 return
4154 4364
4155 projectObj.removeProcUnit(procUnitConfObj.getId())
4365 folderList = ""
4156 4366
4157 if procUnitConfObj.getId() not in self.__puObjDict.keys():
4158 return
4367 for localfolder in self.__puLocalFolder2FTP.values():
4368 folderList += str(localfolder) + ","
4369
4370 procUnitConfObj = projectObj.addProcUnit(name="SendToServer")
4371
4372 procUnitConfObj.addParameter(name='server', value=self.temporalFTP.server, format='str')
4373 procUnitConfObj.addParameter(name='username', value=self.temporalFTP.username, format='str')
4374 procUnitConfObj.addParameter(name='password', value=self.temporalFTP.password, format='str')
4375 procUnitConfObj.addParameter(name='localfolder', value=folderList, format='list')
4376 procUnitConfObj.addParameter(name='remotefolder', value=self.temporalFTP.remotefolder, format='str')
4377 procUnitConfObj.addParameter(name='ext', value=self.temporalFTP.extension, format='str')
4378 procUnitConfObj.addParameter(name='period', value=self.temporalFTP.period, format='int')
4379 procUnitConfObj.addParameter(name='protocol', value=self.temporalFTP.protocol, format='str')
4380
4381 procUnitConfObj.addParameter(name='ftp_wei', value=self.temporalFTP.ftp_wei, format='str')
4382 procUnitConfObj.addParameter(name='exp_code', value=self.temporalFTP.exp_code, format='str')
4383 procUnitConfObj.addParameter(name='sub_exp_code', value=self.temporalFTP.sub_exp_code, format='str')
4384 procUnitConfObj.addParameter(name='plot_pos', value=self.temporalFTP.plot_pos, format='str')
4385
4386 self.__puObjDict[procUnitConfObj.getId()] = procUnitConfObj
4387
4388 def removeAllFTPProcUnitView(self, projectObj):
4159 4389
4160 self.__puObjDict.pop(procUnitConfObj.getId())
4390 for thisPuId, thisPuObj in projectObj.procUnitItems():
4391
4392 if not thisPuObj.name == "SendToServer":
4393 continue
4394
4395 projectObj.removeProcUnit(thisPuId)
4396
4397 if thisPuId not in self.__puObjDict.keys():
4398 continue
4399
4400 self.__puObjDict.pop(thisPuId)
4161 4401
4162 4402 def showPUinitView(self):
4403
4163 4404 self.propertiesModel = TreeModel()
4164 4405 self.propertiesModel.initPUVoltageView()
4165 4406 self.treeProjectProperties.setModel(self.propertiesModel)
4166 4407 self.treeProjectProperties.expandAll()
4167 4408 self.treeProjectProperties.allColumnsShowFocus()
4168 4409 self.treeProjectProperties.resizeColumnToContents(1)
4169 4410
4170 def saveFTPvalues(self, opObj):
4411 def saveFTPvalues(self, puObj):
4412
4413 opObj = puObj.getOperationObj(name="run")
4171 4414
4172 4415 parmObj = opObj.getParameterObj(parameterName="server")
4173 4416 if parmObj == None:
4174 4417 server = 'jro-app.igp.gob.pe'
4175 4418 else:
4176 server = opObj.getParameterValue(parameterName='server')
4419 server = parmObj.getValue()
4177 4420
4178 parmObj = opObj.getParameterObj(parameterName="folder")
4421 parmObj = opObj.getParameterObj(parameterName="remotefolder")
4179 4422 if parmObj == None:
4180 folder = '/home/wmaster/graficos'
4423 remotefolder = '/home/wmaster/graficos'
4181 4424 else:
4182 folder = opObj.getParameterValue(parameterName='folder')
4425 remotefolder = parmObj.getValue()
4183 4426
4184 4427 parmObj = opObj.getParameterObj(parameterName="username")
4185 4428 if parmObj == None:
4186 4429 username = 'wmaster'
4187 4430 else:
4188 username = opObj.getParameterValue(parameterName='username')
4431 username = parmObj.getValue()
4189 4432
4190 4433 parmObj = opObj.getParameterObj(parameterName="password")
4191 4434 if parmObj == None:
4192 4435 password = 'mst2010vhf'
4193 4436 else:
4194 password = opObj.getParameterValue(parameterName='password')
4437 password = parmObj.getValue()
4195 4438
4196 4439 parmObj = opObj.getParameterObj(parameterName="ftp_wei")
4197 4440 if parmObj == None:
4198 4441 ftp_wei = '0'
4199 4442 else:
4200 ftp_wei = opObj.getParameterValue(parameterName='ftp_wei')
4443 ftp_wei = parmObj.getValue()
4201 4444
4202 4445 parmObj = opObj.getParameterObj(parameterName="exp_code")
4203 4446 if parmObj == None:
4204 4447 exp_code = '0'
4205 4448 else:
4206 exp_code = opObj.getParameterValue(parameterName='exp_code')
4449 exp_code = parmObj.getValue()
4207 4450
4208 4451 parmObj = opObj.getParameterObj(parameterName="sub_exp_code")
4209 4452 if parmObj == None:
4210 4453 sub_exp_code = '0'
4211 4454 else:
4212 sub_exp_code = opObj.getParameterValue(parameterName='sub_exp_code')
4455 sub_exp_code = parmObj.getValue()
4213 4456
4214 4457 parmObj = opObj.getParameterObj(parameterName="plot_pos")
4215 4458 if parmObj == None:
4216 4459 plot_pos = '0'
4217 4460 else:
4218 plot_pos = opObj.getParameterValue(parameterName='plot_pos')
4461 plot_pos = parmObj.getValue()
4219 4462
4220 4463 parmObj = opObj.getParameterObj(parameterName="localfolder")
4221 4464 if parmObj == None:
4222 4465 localfolder = None
4223 4466 else:
4224 localfolder = opObj.getParameterValue(parameterName='localfolder')
4467 localfolder = parmObj.getValue()
4225 4468
4226 4469 parmObj = opObj.getParameterObj(parameterName="extension")
4227 4470 if parmObj == None:
4228 extension = None
4471 extension = '.png'
4229 4472 else:
4230 extension = opObj.getParameterValue(parameterName='extension')
4473 extension = parmObj.getValue()
4231 4474
4232 self.temporalFTP.save(server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos,
4475 self.temporalFTP.save(server=server,
4476 remotefolder=remotefolder,
4477 username=username,
4478 password=password,
4479 ftp_wei=ftp_wei,
4480 exp_code=exp_code,
4481 sub_exp_code=sub_exp_code,
4482 plot_pos=plot_pos,
4233 4483 localfolder=localfolder,
4234 4484 extension=extension)
4235 4485
4236 4486 def addProject2ProjectExplorer(self, id, name):
4237 4487
4238 4488 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4239 self.parentItem = self.projectExplorerModel.invisibleRootItem()
4240 self.parentItem.appendRow(itemTree)
4241 self.parentItem = itemTree
4242 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
4489
4490 parentItem = self.projectExplorerModel.invisibleRootItem()
4491 parentItem.appendRow(itemTree)
4492
4493 self.projectExplorerTree.setCurrentIndex(itemTree.index())
4243 4494
4244 4495 self.selectedItemTree = itemTree
4245 4496
4246 4497 self.__itemTreeDict[id] = itemTree
4247 4498
4248 def addPU2ProjectExplorer(self, id, name):
4249 # id1= round(int(id)/10.)*10
4250 # id= int(id)
4251 # id=id-id1
4499 def addPU2ProjectExplorer(self, puObj):
4500
4501 id, name = puObj.id, puObj.datatype
4502
4252 4503 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4253 4504
4254 self.parentItem = self.selectedItemTree
4255 self.parentItem.appendRow(itemTree)
4505 parentItem = self.selectedItemTree
4506 parentItem.appendRow(itemTree)
4256 4507 self.projectExplorerTree.expandAll()
4257 self.parentItem = itemTree
4258 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
4508
4509 self.projectExplorerTree.setCurrentIndex(itemTree.index())
4259 4510
4260 4511 self.selectedItemTree = itemTree
4261 4512
4262 4513 self.__itemTreeDict[id] = itemTree
4263 4514
4264 def addPU2PELoadXML(self, id, name, inputId):
4515 def addPU2PELoadXML(self, puObj):
4516
4517 id, name, inputId = puObj.id, puObj.datatype, puObj.inputId
4265 4518
4266 4519 itemTree = QtGui.QStandardItem(QtCore.QString(str(name)))
4267 4520
4268 4521 if self.__itemTreeDict.has_key(inputId):
4269 self.parentItem = self.__itemTreeDict[inputId]
4522 parentItem = self.__itemTreeDict[inputId]
4270 4523 else:
4271 4524 #If parent is a Reader object
4272 self.parentItem = self.__itemTreeDict[inputId[:-1]]
4525 parentItem = self.__itemTreeDict[id[:-1]]
4273 4526
4274 self.parentItem.appendRow(itemTree)
4527 parentItem.appendRow(itemTree)
4275 4528 self.projectExplorerTree.expandAll()
4276 self.parentItem = itemTree
4277 self.projectExplorerTree.setCurrentIndex(self.parentItem.index())
4278
4279 self.selectedItemTree = itemTree
4280
4529 parentItem = itemTree
4530 self.projectExplorerTree.setCurrentIndex(parentItem.index())
4531
4281 4532 self.__itemTreeDict[id] = itemTree
4282 # print "stop"
4533 self.selectedItemTree = itemTree
4283 4534
4284 4535 def getSelectedProjectObj(self):
4285 4536 """
4286 4537 Return the current project object selected. If a processing unit is
4287 4538 actually selected this function returns associated project.
4288 4539
4289 4540 None if any project or processing unit is selected
4290 4541 """
4291 4542 for key in self.__itemTreeDict.keys():
4292 4543 if self.__itemTreeDict[key] != self.selectedItemTree:
4293 4544 continue
4294 4545
4295 4546 if self.__projectObjDict.has_key(key):
4296 4547 projectObj = self.__projectObjDict[key]
4297 4548 return projectObj
4298 4549
4299 4550 puObj = self.__puObjDict[key]
4300 4551
4301 4552 if puObj.parentId == None:
4302 4553 projectId = puObj.getId()[0]
4303 4554 else:
4304 4555 projectId = puObj.parentId
4305 4556
4306 4557 projectObj = self.__projectObjDict[projectId]
4307 4558 return projectObj
4308 4559
4309 4560 return None
4310 4561
4311 4562 def getSelectedItemObj(self):
4312 4563 """
4313 4564 Return the current project or processing unit object selected
4314 4565
4315 4566 None if any project or processing unit is selected
4316 4567 """
4317 4568 for key in self.__itemTreeDict.keys():
4318 4569 if self.__itemTreeDict[key] != self.selectedItemTree:
4319 4570 continue
4320 4571
4321 4572 if self.__projectObjDict.has_key(key) == True:
4322 4573 fatherObj = self.__projectObjDict[key]
4323 4574 else:
4324 4575 fatherObj = self.__puObjDict[key]
4325 4576
4326 4577 return fatherObj
4327 4578
4328 4579 return None
4329 4580
4330 4581 def _WarningWindow(self, text, information):
4331 4582
4332 4583 msgBox = QtGui.QMessageBox()
4333 4584 msgBox.setText(text)
4334 4585 msgBox.setInformativeText(information)
4335 4586 msgBox.setStandardButtons(QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
4336 4587 msgBox.setDefaultButton(QtGui.QMessageBox.Ok)
4337 4588 ret = msgBox.exec_()
4338 4589
4339 4590 answer = False
4340 4591
4341 4592 if ret == QtGui.QMessageBox.Ok:
4342 4593 answer = True
4343 4594
4344 4595 return answer
4345 4596
4346 4597 def __getNewProjectId(self):
4347 4598
4348 4599 loadProject = False
4349 4600
4350 4601 for thisId in range(1,10):
4351 4602 newId = str(thisId)
4352 4603 if newId in self.__projectObjDict.keys():
4353 4604 continue
4354 4605
4355 4606 loadProject = True
4356 4607 projectId = newId
4357 4608 break
4358 4609
4359 4610 if not loadProject:
4360 4611 self.console.clear()
4361 4612 self.console.append("The maximum number of projects has been loaded, a new project can not be loaded")
4362 4613 return None
4363 4614
4364 4615 return projectId
4365 4616
4366 4617 def openProject(self):
4367 4618
4368 4619 self.actionStart.setEnabled(False)
4369 4620 self.actionStarToolbar.setEnabled(False)
4370 4621
4371 4622 self.create = False
4372 4623 self.frame_2.setEnabled(True)
4373 4624
4374 4625 # print self.dir
4375 4626 filename = str(QtGui.QFileDialog.getOpenFileName(self, "Open text file", self.pathWorkSpace, self.tr("Text Files (*.xml)")))
4376 4627
4377 4628 projectObjLoad = Project()
4378 4629
4379 4630 try:
4380 4631 projectObjLoad.readXml(filename)
4381 4632 except:
4382 4633 self.console.clear()
4383 4634 self.console.append("The selected xml file could not be loaded ...")
4384 4635 return 0
4385 4636
4386 4637 self.refreshProjectWindow2(projectObjLoad)
4387 4638 self.refreshProjectProperties(projectObjLoad)
4388 4639
4389 4640 projectId = projectObjLoad.id
4390 4641
4391 4642 if projectId in self.__projectObjDict.keys():
4392 4643
4393 4644 # answer = self._WarningWindow("You already have a project loaded with the same Id",
4394 4645 # "Do you want to load the file anyway?")
4395 4646 # if not answer:
4396 4647 # return
4397 4648
4398 4649 projectId = self.__getNewProjectId()
4399 4650
4400 4651 if not projectId:
4401 4652 return
4402 4653
4403 4654 projectObjLoad.updateId(projectId)
4404 4655
4405 4656 self.__projectObjDict[projectId] = projectObjLoad
4406 4657
4407 4658 self.addProject2ProjectExplorer(id=projectId, name=projectObjLoad.name)
4408 4659
4409 4660 self.tabWidgetProject.setEnabled(True)
4410 4661 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4411 4662 # Disable tabProject after finish the creation
4412 4663 self.tabProject.setEnabled(True)
4413 4664 puObjorderList = OrderedDict(sorted(projectObjLoad.procUnitConfObjDict.items(), key=lambda x: x[0]))
4414 4665
4415 4666 for puId, puObj in puObjorderList.items():
4416 4667
4417 4668 self.__puObjDict[puId] = puObj
4418 4669
4419 4670 if puObj.name == "SendToServer":
4420 self.__ftpProcUnitAdded = True
4421 self.__ftpProcUnitId = puObj.getId()
4422
4423 opObj = puObj.getOperationObj(name="run")
4424 self.saveFTPvalues(opObj)
4671 self.saveFTPvalues(puObj)
4425 4672
4426 4673 if puObj.inputId == '0':
4427 4674 continue
4428 4675
4429 self.addPU2PELoadXML(id=puId , name=puObj.datatype , inputId=puObj.inputId)
4430
4431 if puObj.datatype in ("Voltage", "Spectra", "SpectraHeis"):
4432 self.refreshPUWindow(puObj)
4433 self.refreshPUProperties(puObj)
4434 self.showtabPUCreated(datatype=puObj.datatype)
4435
4676 self.addPU2PELoadXML(puObj)
4677
4678 self.refreshPUWindow(puObj)
4679 self.refreshPUProperties(puObj)
4680 self.showtabPUCreated(datatype=puObj.datatype)
4681
4682 ############## COMPATIBLE FROM OLD VERSIONS ################
4683 operationObj = puObj.getOperationObj("SendByFTP")
4684
4685 if operationObj:
4686 send2ServerObj = self.__addFTPProcUnitFrom(operationObj)
4687 self.saveFTPvalues(send2ServerObj)
4688 ############################################################
4436 4689
4437 4690 self.console.clear()
4438 4691 self.console.append("The selected xml file has been loaded successfully")
4439 4692
4440 4693 self.actionStart.setEnabled(True)
4441 4694 self.actionStarToolbar.setEnabled(True)
4442 4695
4443 4696 def on_comm_updating_timer(self):
4444 4697 # Verifica si algun proceso ha sido inicializado y sigue ejecutandose
4445 4698
4446 4699 if not self.__initialized:
4447 4700 return
4448 4701
4449 4702 if not self.controllerObj.isAlive():
4450 4703 self.stopProject()
4451 4704
4452 4705 def playProject(self, ext=".xml", save=1):
4453 4706
4454 4707 # self.console.clear()
4455 4708 projectObj = self.getSelectedProjectObj()
4456 4709
4457 4710 if not projectObj:
4458 4711 print "Please select a project before pressing PLAY button"
4459 4712 return
4460 4713
4461 4714 if save:
4462 4715 filename = self.saveProject()
4463 4716 if filename == None:
4464 4717 self.console.append("Process did not initialize.")
4465 4718 return
4466 4719 else:
4467 4720 filename = TEMPORAL_FILE
4468 4721 projectObj.writeXml( os.path.join(self.pathWorkSpace,filename) )
4469 4722
4470 4723 self.actionStart.setEnabled(False)
4471 4724 self.actionPause.setEnabled(True)
4472 4725 self.actionStop.setEnabled(True)
4473 4726
4474 4727 self.actionStarToolbar.setEnabled(False)
4475 4728 self.actionPauseToolbar.setEnabled(True)
4476 4729 self.actionStopToolbar.setEnabled(True)
4477 4730
4478 4731 self.console.append("Please Wait...")
4479 4732
4480 4733 self.controllerObj = ControllerThread(filename)
4481 4734 self.controllerObj.start()
4482 4735 sleep(0.5)
4483 4736 self.__initialized = True
4484 4737
4485 4738 def stopProject(self):
4486 4739
4487 4740 self.__initialized = False
4488 4741
4489 4742 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.STOP, True))
4490 4743 self.controllerObj.stop()
4491 4744
4492 4745 self.actionStart.setEnabled(True)
4493 4746 self.actionPause.setEnabled(False)
4494 4747 self.actionStop.setEnabled(False)
4495 4748
4496 4749 self.actionStarToolbar.setEnabled(True)
4497 4750 self.actionPauseToolbar.setEnabled(False)
4498 4751 self.actionStopToolbar.setEnabled(False)
4499 4752
4500 4753 self.restorePauseIcon()
4501 4754
4502 4755 def pauseProject(self):
4503 4756
4504 4757 # self.commCtrlPThread.cmd_q.put(ProcessCommand(ProcessCommand.PAUSE, data=True))
4505 4758 self.controllerObj.pause()
4506 4759
4507 4760 self.actionStart.setEnabled(False)
4508 4761 self.actionPause.setEnabled(True)
4509 4762 self.actionStop.setEnabled(True)
4510 4763
4511 4764 self.actionStarToolbar.setEnabled(False)
4512 4765 self.actionPauseToolbar.setEnabled(True)
4513 4766 self.actionStopToolbar.setEnabled(True)
4514 4767
4515 4768 def saveProject(self, filename=None):
4516 4769
4517 4770 self.actionStart.setEnabled(False)
4518 4771 self.actionStarToolbar.setEnabled(False)
4519 4772
4520 4773 projectObj = self.getSelectedProjectObj()
4521 4774 self.refreshGraphicsId()
4522 4775
4523 4776 sts = True
4524 4777 selectedItemObj = self.getSelectedItemObj()
4525 4778
4526 4779 #A Processing Unit has been selected
4527 4780 if projectObj == selectedItemObj:
4528 4781 if not self.on_proOk_clicked():
4529 4782 return None
4530 4783
4531 4784 #A Processing Unit has been selected
4532 4785 if projectObj != selectedItemObj:
4533 4786 puObj = selectedItemObj
4534 4787
4535 4788 if puObj.name == 'VoltageProc':
4536 4789 sts = self.on_volOpOk_clicked()
4537 4790 if puObj.name == 'SpectraProc':
4538 4791 sts = self.on_specOpOk_clicked()
4539 4792 if puObj.name == 'SpectraHeisProc':
4540 4793 sts = self.on_specHeisOpOk_clicked()
4541 4794
4542 4795 if not sts:
4543 4796 return None
4797
4798 self.addFTPProcUnitView()
4544 4799
4545 4800 if not filename:
4546 4801 filename = os.path.join( str(self.pathWorkSpace), "%s%s" %(str(projectObj.name), '.xml') )
4547 4802
4548 4803 projectObj.writeXml(filename)
4549 4804 self.console.append("Now, you can press Start button")
4550 4805
4551 4806 self.actionStart.setEnabled(True)
4552 4807 self.actionStarToolbar.setEnabled(True)
4553 4808
4554 4809 return filename
4555 4810
4556 4811 def removeItemTreeFromProject(self):
4557 4812 """
4558 4813 Metodo para eliminar el proyecto en el dictionario de proyectos y en el dictionario de vista de arbol
4559 4814 """
4560 4815 for key in self.__itemTreeDict.keys():
4561 4816
4562 4817 #Check again because an item can delete multiple items (childs)
4563 4818 if key not in self.__itemTreeDict.keys():
4564 4819 continue
4565 4820
4566 4821 if self.__itemTreeDict[key] != self.selectedItemTree:
4567 4822 continue
4568 4823
4569 4824 if self.__projectObjDict.has_key(key) == True:
4570 4825
4571 4826 del self.__projectObjDict[key]
4572 4827 del self.__itemTreeDict[key]
4573 4828
4574 4829 else:
4575 4830 puObj = self.__puObjDict[key]
4576 4831 idProjectParent = puObj.parentId
4577 4832 projectObj = self.__projectObjDict[idProjectParent]
4578 4833
4579 4834 del self.__puObjDict[key]
4580 4835 del self.__itemTreeDict[key]
4581 4836 del projectObj.procUnitConfObjDict[key]
4582 4837
4583 4838 for key in projectObj.procUnitConfObjDict.keys():
4584 4839 if projectObj.procUnitConfObjDict[key].inputId != puObj.getId():
4585 4840 continue
4586 4841 del self.__puObjDict[projectObj.procUnitConfObjDict[key].getId()]
4587 4842 del self.__itemTreeDict[projectObj.procUnitConfObjDict[key].getId()]
4588 4843 del projectObj.procUnitConfObjDict[key]
4589 4844 # print projectObj.procUnitConfObjDict
4590 # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict
4591
4592 def removefromtree(self, row):
4593 self.parentItem.removeRow(row)
4594
4845 # print self.__itemTreeDict,self.__projectObjDict,self.__puObjDict
4595 4846
4596 4847 def setInputsProject_View(self):
4597 4848
4598 4849 self.tabWidgetProject.setEnabled(True)
4599 4850 self.tabWidgetProject.setCurrentWidget(self.tabProject)
4600 4851 self.tabProject.setEnabled(True)
4601 4852 self.frame_2.setEnabled(False)
4602 4853 self.proName.clear()
4603 4854 self.proName.setFocus()
4604 4855 self.proName.setSelection(0, 0)
4605 4856 self.proName.setCursorPosition(0)
4606 4857 self.proDataType.setText('.r')
4607 4858 self.proDataPath.clear()
4608 4859 self.proComDataType.clear()
4609 4860 self.proComDataType.addItem("Voltage")
4610 4861 self.proComDataType.addItem("Spectra")
4611 4862 self.proComDataType.addItem("Fits")
4612 4863 self.proComDataType.addItem("USRP")
4613 4864
4614 4865 self.proComStartDate.clear()
4615 4866 self.proComEndDate.clear()
4616 4867
4617 4868 startTime = "00:00:00"
4618 4869 endTime = "23:59:59"
4619 4870 starlist = startTime.split(":")
4620 4871 endlist = endTime.split(":")
4621 4872 self.proDelay.setText("60")
4622 4873 self.proSet.setText("")
4623 4874
4624 4875 self.labelSet.show()
4625 4876 self.proSet.show()
4626 4877
4627 4878 self.labelIPPKm.hide()
4628 4879 self.proIPPKm.hide()
4629 4880
4630 4881 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
4631 4882 self.proStartTime.setTime(self.time)
4632 4883 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
4633 4884 self.proEndTime.setTime(self.time)
4634 4885 self.proDescription.clear()
4635 4886 self.proOk.setEnabled(False)
4636 4887 # self.console.append("Please, Write a name Project")
4637 4888 # self.console.append("Introduce Project Parameters")DC
4638 4889 # self.console.append("Select data type Voltage( .rawdata) or Spectra(.pdata)")
4639 4890
4640 4891 def clearPUWindow(self, datatype):
4641 4892
4642 4893 projectObjView = self.getSelectedProjectObj()
4643 4894
4644 4895 if not projectObjView:
4645 4896 return
4646 4897
4647 4898 puObj = self.getSelectedItemObj()
4648 4899 inputId = puObj.getInputId()
4649 4900 inputPUObj = projectObjView.getProcUnitObj(inputId)
4650 4901
4651 4902 if datatype == 'Voltage':
4652 4903 self.volOpComChannels.setEnabled(False)
4653 4904 self.volOpComHeights.setEnabled(False)
4654 4905 self.volOpFilter.setEnabled(False)
4655 4906 self.volOpComProfile.setEnabled(False)
4656 4907 self.volOpComCode.setEnabled(False)
4657 4908 self.volOpCohInt.setEnabled(False)
4658 4909 self.volOpChannel.setEnabled(False)
4659 4910 self.volOpHeights.setEnabled(False)
4660 4911 self.volOpProfile.setEnabled(False)
4661 4912 self.volOpRadarfrequency.setEnabled(False)
4662 4913 self.volOpCebChannels.setCheckState(0)
4663 4914 self.volOpCebRadarfrequency.setCheckState(0)
4664 4915 self.volOpCebHeights.setCheckState(0)
4665 4916 self.volOpCebFilter.setCheckState(0)
4666 4917 self.volOpCebProfile.setCheckState(0)
4667 4918 self.volOpCebDecodification.setCheckState(0)
4668 4919 self.volOpCebCohInt.setCheckState(0)
4669 4920
4670 4921 self.volOpChannel.clear()
4671 4922 self.volOpHeights.clear()
4672 4923 self.volOpProfile.clear()
4673 4924 self.volOpFilter.clear()
4674 4925 self.volOpCohInt.clear()
4675 4926 self.volOpRadarfrequency.clear()
4676 4927
4677 4928 if datatype == 'Spectra':
4678 4929
4679 4930 if inputPUObj.datatype == 'Spectra':
4680 4931 self.specOpnFFTpoints.setEnabled(False)
4681 4932 self.specOpProfiles.setEnabled(False)
4682 4933 self.specOpippFactor.setEnabled(False)
4683 4934 else:
4684 4935 self.specOpnFFTpoints.setEnabled(True)
4685 4936 self.specOpProfiles.setEnabled(True)
4686 4937 self.specOpippFactor.setEnabled(True)
4687 4938
4688 4939 self.specOpCebCrossSpectra.setCheckState(0)
4689 4940 self.specOpCebChannel.setCheckState(0)
4690 4941 self.specOpCebHeights.setCheckState(0)
4691 4942 self.specOpCebIncoherent.setCheckState(0)
4692 4943 self.specOpCebRemoveDC.setCheckState(0)
4693 4944 self.specOpCebRemoveInt.setCheckState(0)
4694 4945 self.specOpCebgetNoise.setCheckState(0)
4695 4946 self.specOpCebRadarfrequency.setCheckState(0)
4696 4947
4697 4948 self.specOpRadarfrequency.setEnabled(False)
4698 4949 self.specOppairsList.setEnabled(False)
4699 4950 self.specOpChannel.setEnabled(False)
4700 4951 self.specOpHeights.setEnabled(False)
4701 4952 self.specOpIncoherent.setEnabled(False)
4702 4953 self.specOpgetNoise.setEnabled(False)
4703 4954
4704 4955 self.specOpRadarfrequency.clear()
4705 4956 self.specOpnFFTpoints.clear()
4706 4957 self.specOpProfiles.clear()
4707 4958 self.specOpippFactor.clear
4708 4959 self.specOppairsList.clear()
4709 4960 self.specOpChannel.clear()
4710 4961 self.specOpHeights.clear()
4711 4962 self.specOpIncoherent.clear()
4712 4963 self.specOpgetNoise.clear()
4713 4964
4714 4965 self.specGraphCebSpectraplot.setCheckState(0)
4715 4966 self.specGraphCebCrossSpectraplot.setCheckState(0)
4716 4967 self.specGraphCebRTIplot.setCheckState(0)
4717 4968 self.specGraphCebRTInoise.setCheckState(0)
4718 4969 self.specGraphCebCoherencmap.setCheckState(0)
4719 4970 self.specGraphPowerprofile.setCheckState(0)
4720 4971
4721 4972 self.specGraphSaveSpectra.setCheckState(0)
4722 4973 self.specGraphSaveCross.setCheckState(0)
4723 4974 self.specGraphSaveRTIplot.setCheckState(0)
4724 4975 self.specGraphSaveRTInoise.setCheckState(0)
4725 4976 self.specGraphSaveCoherencemap.setCheckState(0)
4726 4977 self.specGraphSavePowerprofile.setCheckState(0)
4727 4978
4728 4979 self.specGraphftpRTIplot.setCheckState(0)
4729 4980 self.specGraphftpRTInoise.setCheckState(0)
4730 4981 self.specGraphftpCoherencemap.setCheckState(0)
4731 4982
4732 4983 self.specGraphPath.clear()
4733 4984 self.specGraphPrefix.clear()
4734 4985
4735 4986 self.specGgraphftpratio.clear()
4736 4987
4737 4988 self.specGgraphChannelList.clear()
4738 4989 self.specGgraphFreq.clear()
4739 4990 self.specGgraphHeight.clear()
4740 4991 self.specGgraphDbsrange.clear()
4741 4992 self.specGgraphmagnitud.clear()
4742 4993 self.specGgraphTminTmax.clear()
4743 4994 self.specGgraphTimeRange.clear()
4744 4995
4745 4996 if datatype == 'SpectraHeis':
4746 4997 self.specHeisOpCebIncoherent.setCheckState(0)
4747 4998 self.specHeisOpIncoherent.setEnabled(False)
4748 4999 self.specHeisOpIncoherent.clear()
4749 5000
4750 5001 self.specHeisGraphCebSpectraplot.setCheckState(0)
4751 5002 self.specHeisGraphCebRTIplot.setCheckState(0)
4752 5003
4753 5004 self.specHeisGraphSaveSpectra.setCheckState(0)
4754 5005 self.specHeisGraphSaveRTIplot.setCheckState(0)
4755 5006
4756 5007 self.specHeisGraphftpSpectra.setCheckState(0)
4757 5008 self.specHeisGraphftpRTIplot.setCheckState(0)
4758 5009
4759 5010 self.specHeisGraphPath.clear()
4760 5011 self.specHeisGraphPrefix.clear()
4761 5012 self.specHeisGgraphChannelList.clear()
4762 5013 self.specHeisGgraphXminXmax.clear()
4763 5014 self.specHeisGgraphYminYmax.clear()
4764 5015 self.specHeisGgraphTminTmax.clear()
4765 5016 self.specHeisGgraphTimeRange.clear()
4766 self.specHeisGgraphftpratio.clear()
4767
4768
4769
4770
5017 self.specHeisGgraphftpratio.clear()
4771 5018
4772 5019 def showtabPUCreated(self, datatype):
5020
4773 5021 if datatype == "Voltage":
4774 5022 self.tabVoltage.setEnabled(True)
4775 5023 self.tabProject.setEnabled(False)
4776 5024 self.tabSpectra.setEnabled(False)
4777 5025 self.tabCorrelation.setEnabled(False)
4778 5026 self.tabSpectraHeis.setEnabled(False)
4779 5027 self.tabWidgetProject.setCurrentWidget(self.tabVoltage)
4780 5028
4781 5029 if datatype == "Spectra":
4782 5030 self.tabVoltage.setEnabled(False)
4783 5031 self.tabProject.setEnabled(False)
4784 5032 self.tabSpectra.setEnabled(True)
4785 5033 self.tabCorrelation.setEnabled(False)
4786 5034 self.tabSpectraHeis.setEnabled(False)
4787 5035 self.tabWidgetProject.setCurrentWidget(self.tabSpectra)
5036
4788 5037 if datatype == "SpectraHeis":
4789 5038 self.tabVoltage.setEnabled(False)
4790 5039 self.tabProject.setEnabled(False)
4791 5040 self.tabSpectra.setEnabled(False)
4792 5041 self.tabCorrelation.setEnabled(False)
4793 5042 self.tabSpectraHeis.setEnabled(True)
4794 5043 self.tabWidgetProject.setCurrentWidget(self.tabSpectraHeis)
4795 5044
4796 5045 def checkInputsProject(self):
4797 5046 """
4798 5047 Check Inputs Project:
4799 5048 - project_name
4800 5049 - datatype
4801 5050 - ext
4802 5051 - data_path
4803 5052 - readmode
4804 5053 - delay
4805 5054 - set
4806 5055 - walk
4807 5056 """
4808 5057 parms_ok = True
4809 5058 project_name = str(self.proName.text())
4810 5059 if project_name == '' or project_name == None:
4811 5060 outputstr = "Enter the Project Name"
4812 5061 self.console.append(outputstr)
4813 5062 parms_ok = False
4814 5063 project_name = None
4815 5064
4816 5065 datatype = str(self.proComDataType.currentText())
4817 5066 if not(datatype in ['Voltage', 'Spectra', 'Fits', 'USRP']):
4818 5067 outputstr = 'datatype = %s, this must be either Voltage, Spectra, SpectraHeis or USRP' % datatype
4819 5068 self.console.append(outputstr)
4820 5069 parms_ok = False
4821 5070 datatype = None
4822 5071
4823 5072 ext = str(self.proDataType.text())
4824 5073 if not(ext in ['.r', '.pdata', '.fits', '.hdf5']):
4825 5074 outputstr = "extension files must be .r , .pdata, .fits or .hdf5"
4826 5075 self.console.append(outputstr)
4827 5076 parms_ok = False
4828 5077 ext = None
4829 5078
4830 5079 data_path = str(self.proDataPath.text())
4831 5080
4832 5081 if data_path == '':
4833 5082 outputstr = 'Datapath is empty'
4834 5083 self.console.append(outputstr)
4835 5084 parms_ok = False
4836 5085 data_path = None
4837 5086
4838 5087 if data_path != None:
4839 5088 if not os.path.isdir(data_path):
4840 5089 outputstr = 'Datapath:%s does not exists' % data_path
4841 5090 self.console.append(outputstr)
4842 5091 parms_ok = False
4843 5092 data_path = None
4844 5093
4845 5094 read_mode = str(self.proComReadMode.currentText())
4846 5095 if not(read_mode in ['Online', 'Offline']):
4847 5096 outputstr = 'Read Mode: %s, this must be either Online or Offline' % read_mode
4848 5097 self.console.append(outputstr)
4849 5098 parms_ok = False
4850 5099 read_mode = None
4851 5100
4852 5101 try:
4853 5102 delay = int(str(self.proDelay.text()))
4854 5103 except:
4855 5104 outputstr = 'Delay: %s, this must be a integer number' % str(self.proDelay.text())
4856 5105 self.console.append(outputstr)
4857 5106 # parms_ok = False
4858 5107 delay = None
4859 5108
4860 5109 try:
4861 5110 set = int(str(self.proSet.text()))
4862 5111 except:
4863 5112 # outputstr = 'Set: %s, this must be a integer number' % str(self.proName.text())
4864 5113 # self.console.append(outputstr)
4865 5114 # parms_ok = False
4866 5115 set = None
4867 5116
4868 5117 walk_str = str(self.proComWalk.currentText())
4869 5118 if walk_str == 'On Files':
4870 5119 walk = 0
4871 5120 elif walk_str == 'On Folder':
4872 5121 walk = 1
4873 5122 else:
4874 5123 outputstr = 'Walk: %s, this must be either On Files or On Folders' % walk_str
4875 5124 self.console.append(outputstr)
4876 5125 parms_ok = False
4877 5126 walk = None
4878 5127
4879 5128 return parms_ok, project_name, datatype, ext, data_path, read_mode, delay, walk, set
4880 5129
4881 5130 def checkInputsPUSave(self, datatype):
4882 5131 """
4883 5132 Check Inputs Spectra Save:
4884 5133 - path
4885 5134 - blocks Per File
4886 5135 - sufix
4887 5136 - dataformat
4888 5137 """
4889 5138 parms_ok = True
4890 5139
4891 5140 if datatype == "Voltage":
4892 5141 output_path = str(self.volOutputPath.text())
4893 5142 blocksperfile = str(self.volOutputblocksperfile.text())
4894 5143 profilesperblock = str(self.volOutputprofilesperblock.text())
4895 5144
4896 5145 if datatype == "Spectra":
4897 5146 output_path = str(self.specOutputPath.text())
4898 5147 blocksperfile = str(self.specOutputblocksperfile.text())
4899 5148 profilesperblock = str(self.specOutputprofileperblock.text())
4900 5149
4901 5150 if datatype == "SpectraHeis":
4902 5151 output_path = str(self.specHeisOutputPath.text())
4903 5152 blocksperfile = str(self.specHeisOutputblocksperfile.text())
4904 5153 metada = str(self.specHeisOutputMetada.text())
4905 5154
4906 5155 if output_path == '':
4907 5156 outputstr = 'Outputpath is empty'
4908 5157 self.console.append(outputstr)
4909 5158 parms_ok = False
4910 5159 data_path = None
4911 5160
4912 5161 if output_path != None:
4913 5162 if not os.path.exists(output_path):
4914 5163 outputstr = 'OutputPath:%s does not exists' % output_path
4915 5164 self.console.append(outputstr)
4916 5165 parms_ok = False
4917 5166 output_path = None
4918 5167
4919 5168
4920 5169 try:
4921 5170 profilesperblock = int(profilesperblock)
4922 5171 except:
4923 5172 if datatype == "Voltage":
4924 5173 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.volOutputprofilesperblock.text())
4925 5174 self.console.append(outputstr)
4926 5175 parms_ok = False
4927 5176 profilesperblock = None
4928 5177
4929 5178 elif datatype == "Spectra":
4930 5179 outputstr = 'Profilesperblock: %s, this must be a integer number' % str(self.specOutputprofileperblock.text())
4931 5180 self.console.append(outputstr)
4932 5181 parms_ok = False
4933 5182 profilesperblock = None
4934 5183
4935 5184 try:
4936 5185 blocksperfile = int(blocksperfile)
4937 5186 except:
4938 5187 if datatype == "Voltage":
4939 5188 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.volOutputblocksperfile.text())
4940 5189 elif datatype == "Spectra":
4941 5190 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specOutputblocksperfile.text())
4942 5191 elif datatype == "SpectraHeis":
4943 5192 outputstr = 'Blocksperfile: %s, this must be a integer number' % str(self.specHeisOutputblocksperfile.text())
4944 5193
4945 5194 self.console.append(outputstr)
4946 5195 parms_ok = False
4947 5196 blocksperfile = None
4948 5197
4949 5198 if datatype == "SpectraHeis":
4950 5199 if metada == '':
4951 5200 outputstr = 'Choose metada file'
4952 5201 self.console.append(outputstr)
4953 5202 parms_ok = False
4954 5203 if metada != None:
4955 5204 if not os.path.isfile(metada):
4956 5205 outputstr = 'Metadata:%s does not exists' % metada
4957 5206 self.console.append(outputstr)
4958 5207 parms_ok = False
4959 5208 output_path = None
4960 5209
4961 5210 if datatype == "Voltage":
4962 5211 return parms_ok, output_path, blocksperfile, profilesperblock
4963 5212
4964 5213
4965 5214 if datatype == "Spectra":
4966 5215 return parms_ok, output_path, blocksperfile, profilesperblock
4967 5216
4968 5217
4969 5218 if datatype == "SpectraHeis":
4970 5219 return parms_ok, output_path, blocksperfile, metada
4971 5220
4972 5221 def findDatafiles(self, data_path, ext, walk, expLabel=''):
4973 5222
4974 5223 dateList = []
4975 5224 fileList = []
4976 5225
4977 5226 if ext == ".r":
4978 5227 from schainpy.model.io.jroIO_base import JRODataReader
4979 5228
4980 5229 readerObj = JRODataReader()
4981 5230 dateList = readerObj.findDatafiles(path=data_path,
4982 5231 expLabel=expLabel,
4983 5232 ext=ext,
4984 5233 walk=walk)
4985 5234
4986 5235 if ext == ".pdata":
4987 5236 from schainpy.model.io.jroIO_base import JRODataReader
4988 5237
4989 5238 readerObj = JRODataReader()
4990 5239 dateList = readerObj.findDatafiles(path=data_path,
4991 5240 expLabel=expLabel,
4992 5241 ext=ext,
4993 5242 walk=walk)
4994 5243
4995 5244 if ext == ".fits":
4996 5245 from schainpy.model.io.jroIO_base import JRODataReader
4997 5246
4998 5247 readerObj = JRODataReader()
4999 5248 dateList = readerObj.findDatafiles(path=data_path,
5000 5249 expLabel=expLabel,
5001 5250 ext=ext,
5002 5251 walk=walk)
5003 5252
5004 5253 if ext == ".hdf5":
5005 5254 from schainpy.model.io.jroIO_usrp import USRPReader
5006 5255
5007 5256 readerObj = USRPReader()
5008 5257 dateList = readerObj.findDatafiles(path=data_path)
5009 5258
5010 5259 return dateList
5011 5260
5012 5261 def loadDays(self, data_path, ext, walk, expLabel=''):
5013 5262 """
5014 5263 Method to loads day
5015 5264 """
5016 5265 self.proOk.setEnabled(False)
5017 5266 self.dateList = []
5018 5267
5019 5268 dateList = self.findDatafiles(data_path, ext=ext, walk=walk, expLabel=expLabel)
5020 5269
5021 5270 if not dateList:
5022 5271 # self.console.clear()
5023 5272 outputstr = "The path: %s is empty with file extension *%s" % (data_path, ext)
5024 5273 self.console.append(outputstr)
5025 5274 return
5026 5275
5027 5276 self.proComStartDate.clear()
5028 5277 self.proComEndDate.clear()
5029 5278
5030 5279 dateStrList = []
5031 5280 for thisDate in dateList:
5032 5281 dateStr = thisDate.strftime("%Y/%m/%d")
5033 5282
5034 5283 self.proComStartDate.addItem(dateStr)
5035 5284 self.proComEndDate.addItem(dateStr)
5036 5285 dateStrList.append(dateStr)
5037 5286
5038 5287 self.proComStartDate.setCurrentIndex(0)
5039 5288 self.proComEndDate.setCurrentIndex(self.proComEndDate.count() - 1)
5040 5289
5041 5290 self.dateList = dateStrList
5042 5291 self.proOk.setEnabled(True)
5043 5292
5044 5293 return self.dateList
5045 5294
5046 5295 def setWorkSpaceGUI(self, pathWorkSpace=None):
5047 5296
5048 5297 if pathWorkSpace == None:
5049 5298 home = os.path.expanduser("~")
5050 5299 pathWorkSpace = os.path.join(home,'schain_workspace')
5051 5300
5052 5301 self.pathWorkSpace = pathWorkSpace
5053 5302
5054 5303 """
5055 5304 Comandos Usados en Console
5056 5305 """
5057 5306 def __del__(self):
5058 5307 sys.stdout = sys.__stdout__
5059 5308 sys.stderr = sys.__stderr__
5060 5309
5061 5310 def normalOutputWritten(self, text):
5062 5311 color_black = QtGui.QColor(0,0,0)
5063 5312 self.console.setTextColor(color_black)
5064 5313 self.console.append(text)
5065 5314
5066 5315 def errorOutputWritten(self, text):
5067 5316 color_red = QtGui.QColor(255,0,0)
5068 5317 color_black = QtGui.QColor(0,0,0)
5069 5318
5070 5319 self.console.setTextColor(color_red)
5071 5320 self.console.append(text)
5072 5321 self.console.setTextColor(color_black)
5073 5322
5074 5323 def setParameter(self):
5075 5324
5076 5325 self.setWindowTitle("ROJ-Signal Chain")
5077 5326 self.setWindowIcon(QtGui.QIcon( os.path.join(FIGURES_PATH,"adn.jpg") ))
5078 5327
5079 5328 self.tabWidgetProject.setEnabled(False)
5080 5329 self.tabVoltage.setEnabled(False)
5081 5330 self.tabSpectra.setEnabled(False)
5082 5331 self.tabCorrelation.setEnabled(False)
5083 5332 self.frame_2.setEnabled(False)
5084 5333
5085 5334 self.actionCreate.setShortcut('Ctrl+N')
5086 5335 self.actionOpen.setShortcut('Ctrl+O')
5087 5336 self.actionSave.setShortcut('Ctrl+S')
5088 5337 self.actionClose.setShortcut('Ctrl+X')
5089 5338
5090 5339 self.actionStart.setShortcut('Ctrl+1')
5091 5340 self.actionPause.setShortcut('Ctrl+2')
5092 5341 self.actionStop.setShortcut('Ctrl+3')
5093 5342
5094 5343 self.actionFTP.setShortcut('Ctrl+F')
5095 5344
5096 5345 self.actionStart.setEnabled(False)
5097 5346 self.actionPause.setEnabled(False)
5098 5347 self.actionStop.setEnabled(False)
5099 5348
5100 5349 self.actionStarToolbar.setEnabled(False)
5101 5350 self.actionPauseToolbar.setEnabled(False)
5102 5351 self.actionStopToolbar.setEnabled(False)
5103 5352
5104 5353 self.proName.clear()
5105 5354 self.proDataPath.setText('')
5106 5355 self.console.setReadOnly(True)
5107 5356 self.console.append("Welcome to Signal Chain\nOpen a project or Create a new one")
5108 5357 self.proStartTime.setDisplayFormat("hh:mm:ss")
5109 5358 self.proDataType.setEnabled(False)
5110 5359 self.time = QtCore.QTime()
5111 5360 self.hour = 0
5112 5361 self.min = 0
5113 5362 self.sec = 0
5114 5363 self.proEndTime.setDisplayFormat("hh:mm:ss")
5115 5364 startTime = "00:00:00"
5116 5365 endTime = "23:59:59"
5117 5366 starlist = startTime.split(":")
5118 5367 endlist = endTime.split(":")
5119 5368 self.time.setHMS(int(starlist[0]), int(starlist[1]), int(starlist[2]))
5120 5369 self.proStartTime.setTime(self.time)
5121 5370 self.time.setHMS(int(endlist[0]), int(endlist[1]), int(endlist[2]))
5122 5371 self.proEndTime.setTime(self.time)
5123 5372 self.proOk.setEnabled(False)
5124 5373 # set model Project Explorer
5125 5374 self.projectExplorerModel = QtGui.QStandardItemModel()
5126 5375 self.projectExplorerModel.setHorizontalHeaderLabels(("Project Explorer",))
5127 5376 layout = QtGui.QVBoxLayout()
5128 5377 layout.addWidget(self.projectExplorerTree)
5129 5378 self.projectExplorerTree.setModel(self.projectExplorerModel)
5130 5379 self.projectExplorerTree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
5131 5380 self.projectExplorerTree.customContextMenuRequested.connect(self.on_right_click)
5132 5381 self.projectExplorerTree.clicked.connect(self.on_click)
5133 5382 self.projectExplorerTree.expandAll()
5134 5383 # set model Project Properties
5135 5384
5136 5385 self.propertiesModel = TreeModel()
5137 5386 self.propertiesModel.initProjectView()
5138 5387 self.treeProjectProperties.setModel(self.propertiesModel)
5139 5388 self.treeProjectProperties.expandAll()
5140 5389 self.treeProjectProperties.allColumnsShowFocus()
5141 5390 self.treeProjectProperties.resizeColumnToContents(1)
5142 5391
5143 5392 # set Project
5144 5393 self.proDelay.setEnabled(False)
5145 5394 self.proSet.setEnabled(False)
5146 5395 self.proDataType.setReadOnly(True)
5147 5396
5148 5397 # set Operation Voltage
5149 5398 self.volOpComChannels.setEnabled(False)
5150 5399 self.volOpComHeights.setEnabled(False)
5151 5400 self.volOpFilter.setEnabled(False)
5152 5401 self.volOpComProfile.setEnabled(False)
5153 5402 self.volOpComCode.setEnabled(False)
5154 5403 self.volOpFlip.setEnabled(False)
5155 5404 self.volOpCohInt.setEnabled(False)
5156 5405 self.volOpRadarfrequency.setEnabled(False)
5157 5406
5158 5407 self.volOpChannel.setEnabled(False)
5159 5408 self.volOpHeights.setEnabled(False)
5160 5409 self.volOpProfile.setEnabled(False)
5161 5410 self.volOpComMode.setEnabled(False)
5162 5411
5163 5412 self.volGraphPath.setEnabled(False)
5164 5413 self.volGraphPrefix.setEnabled(False)
5165 5414 self.volGraphToolPath.setEnabled(False)
5166 5415
5167 5416 # set Graph Voltage
5168 5417 self.volGraphChannelList.setEnabled(False)
5169 5418 self.volGraphfreqrange.setEnabled(False)
5170 5419 self.volGraphHeightrange.setEnabled(False)
5171 5420
5172 5421 # set Operation Spectra
5173 5422 self.specOpnFFTpoints.setEnabled(False)
5174 5423 self.specOpProfiles.setEnabled(False)
5175 5424 self.specOpippFactor.setEnabled(False)
5176 5425 self.specOppairsList.setEnabled(False)
5177 5426 self.specOpComChannel.setEnabled(False)
5178 5427 self.specOpComHeights.setEnabled(False)
5179 5428 self.specOpIncoherent.setEnabled(False)
5180 5429 self.specOpgetNoise.setEnabled(False)
5181 5430 self.specOpRadarfrequency.setEnabled(False)
5182 5431
5183 5432
5184 5433 self.specOpChannel.setEnabled(False)
5185 5434 self.specOpHeights.setEnabled(False)
5186 5435 # set Graph Spectra
5187 5436 self.specGgraphChannelList.setEnabled(False)
5188 5437 self.specGgraphFreq.setEnabled(False)
5189 5438 self.specGgraphHeight.setEnabled(False)
5190 5439 self.specGgraphDbsrange.setEnabled(False)
5191 5440 self.specGgraphmagnitud.setEnabled(False)
5192 5441 self.specGgraphTminTmax.setEnabled(False)
5193 5442 self.specGgraphTimeRange.setEnabled(False)
5194 5443 self.specGraphPath.setEnabled(False)
5195 5444 self.specGraphToolPath.setEnabled(False)
5196 5445 self.specGraphPrefix.setEnabled(False)
5197 5446
5198 5447 self.specGgraphftpratio.setEnabled(False)
5199 5448 # set Operation SpectraHeis
5200 5449 self.specHeisOpIncoherent.setEnabled(False)
5201 5450 self.specHeisOpCobIncInt.setEnabled(False)
5202 5451 # set Graph SpectraHeis
5203 5452 self.specHeisGgraphChannelList.setEnabled(False)
5204 5453 self.specHeisGgraphXminXmax.setEnabled(False)
5205 5454 self.specHeisGgraphYminYmax.setEnabled(False)
5206 5455 self.specHeisGgraphTminTmax.setEnabled(False)
5207 5456 self.specHeisGgraphTimeRange.setEnabled(False)
5208 5457 self.specHeisGgraphftpratio.setEnabled(False)
5209 5458 self.specHeisGraphPath.setEnabled(False)
5210 5459 self.specHeisGraphPrefix.setEnabled(False)
5211 5460 self.specHeisGraphToolPath.setEnabled(False)
5212 5461
5213 5462
5214 5463 # tool tip gui
5215 5464 QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
5216 5465 self.projectExplorerTree.setToolTip('Right clik to add Project or Unit Process')
5217 5466 # tool tip gui project
5218 5467 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>')
5219 5468 self.proComWalk.setCurrentIndex(0)
5220 5469 # tool tip gui volOp
5221 5470 self.volOpChannel.setToolTip('Example: 1,2,3,4,5')
5222 5471 self.volOpHeights.setToolTip('Example: 90,180')
5223 5472 self.volOpFilter.setToolTip('Example: 2')
5224 5473 self.volOpProfile.setToolTip('Example:0,127')
5225 5474 self.volOpCohInt.setToolTip('Example: 128')
5226 5475 self.volOpFlip.setToolTip('ChannelList where flip will be applied. Example: 0,2,3')
5227 5476 self.volOpOk.setToolTip('If you have finished, please Ok ')
5228 5477 # tool tip gui volGraph
5229 5478 self.volGraphfreqrange.setToolTip('Height range. Example: 50,100')
5230 5479 self.volGraphHeightrange.setToolTip('Amplitude. Example: 0,10000')
5231 5480 # tool tip gui specOp
5232 5481 self.specOpnFFTpoints.setToolTip('Example: 128')
5233 5482 self.specOpProfiles.setToolTip('Example: 128')
5234 5483 self.specOpippFactor.setToolTip('Example:1.0')
5235 5484 self.specOpIncoherent.setToolTip('Example: 10')
5236 5485 self.specOpgetNoise.setToolTip('Example:20,180,30,120 (minHei,maxHei,minVel,maxVel)')
5237 5486
5238 5487 self.specOpChannel.setToolTip('Example: 0,1,2,3')
5239 5488 self.specOpHeights.setToolTip('Example: 90,180')
5240 5489 self.specOppairsList.setToolTip('Example: (0,1),(2,3)')
5241 5490 # tool tip gui specGraph
5242 5491
5243 5492 self.specGgraphChannelList.setToolTip('Example: 0,3,4')
5244 5493 self.specGgraphFreq.setToolTip('Example: -20,20')
5245 5494 self.specGgraphHeight.setToolTip('Example: 100,400')
5246 5495 self.specGgraphDbsrange.setToolTip('Example: 30,170')
5247 5496
5248 5497 self.specGraphPrefix.setToolTip('Example: EXPERIMENT_NAME')
5249 5498
5250 5499 sys.stdout = ShowMeConsole(textWritten=self.normalOutputWritten)
5251 5500 sys.stderr = ShowMeConsole(textWritten=self.errorOutputWritten)
5252 5501
5253 5502
5254 5503 class UnitProcessWindow(QMainWindow, Ui_UnitProcess):
5255 5504 """
5256 5505 Class documentation goes here.
5257 5506 """
5258 5507 closed = pyqtSignal()
5259 5508 create = False
5260 5509
5261 5510 def __init__(self, parent=None):
5262 5511 """
5263 5512 Constructor
5264 5513 """
5265 5514 QMainWindow.__init__(self, parent)
5266 5515 self.setupUi(self)
5267 5516 self.getFromWindow = None
5268 5517 self.getfromWindowList = []
5269 5518 self.dataTypeProject = None
5270 5519
5271 5520 self.listUP = None
5272 5521
5273 5522 @pyqtSignature("")
5274 5523 def on_unitPokbut_clicked(self):
5275 5524 """
5276 5525 Slot documentation goes here.
5277 5526 """
5278 5527 self.create = True
5279 5528 self.getFromWindow = self.getfromWindowList[int(self.comboInputBox.currentIndex())]
5280 5529 # self.nameofUP= str(self.nameUptxt.text())
5281 5530 self.typeofUP = str(self.comboTypeBox.currentText())
5282 5531 self.close()
5283 5532
5284 5533
5285 5534 @pyqtSignature("")
5286 5535 def on_unitPcancelbut_clicked(self):
5287 5536 """
5288 5537 Slot documentation goes here.
5289 5538 """
5290 5539 self.create = False
5291 5540 self.close()
5292 5541
5293 5542 def loadTotalList(self):
5294 5543 self.comboInputBox.clear()
5295 5544 for i in self.getfromWindowList:
5296 5545
5297 5546 name = i.getElementName()
5298 5547 if name == 'Project':
5299 5548 id = i.id
5300 5549 name = i.name
5301 5550 if self.dataTypeProject == 'Voltage':
5302 5551 self.comboTypeBox.clear()
5303 5552 self.comboTypeBox.addItem("Voltage")
5304 5553
5305 5554 if self.dataTypeProject == 'Spectra':
5306 5555 self.comboTypeBox.clear()
5307 5556 self.comboTypeBox.addItem("Spectra")
5308 5557 self.comboTypeBox.addItem("Correlation")
5309 5558 if self.dataTypeProject == 'Fits':
5310 5559 self.comboTypeBox.clear()
5311 5560 self.comboTypeBox.addItem("SpectraHeis")
5312 5561
5313 5562
5314 5563 if name == 'ProcUnit':
5315 5564 id = int(i.id) - 1
5316 5565 name = i.datatype
5317 5566 if name == 'Voltage':
5318 5567 self.comboTypeBox.clear()
5319 5568 self.comboTypeBox.addItem("Spectra")
5320 5569 self.comboTypeBox.addItem("SpectraHeis")
5321 5570 self.comboTypeBox.addItem("Correlation")
5322 5571 if name == 'Spectra':
5323 5572 self.comboTypeBox.clear()
5324 5573 self.comboTypeBox.addItem("Spectra")
5325 5574 self.comboTypeBox.addItem("SpectraHeis")
5326 5575 self.comboTypeBox.addItem("Correlation")
5327 5576 if name == 'SpectraHeis':
5328 5577 self.comboTypeBox.clear()
5329 5578 self.comboTypeBox.addItem("SpectraHeis")
5330 5579
5331 5580 self.comboInputBox.addItem(str(name))
5332 5581 # self.comboInputBox.addItem(str(name)+str(id))
5333 5582
5334 5583 def closeEvent(self, event):
5335 5584 self.closed.emit()
5336 5585 event.accept()
5337 5586
5338 5587 class Ftp(QMainWindow, Ui_Ftp):
5339 5588 """
5340 5589 Class documentation goes here.
5341 5590 """
5342 5591 create = False
5343 5592 closed = pyqtSignal()
5344 5593 server = None
5345 folder = None
5594 remotefolder = None
5346 5595 username = None
5347 5596 password = None
5348 5597 ftp_wei = None
5349 5598 exp_code = None
5350 5599 sub_exp_code = None
5351 5600 plot_pos = None
5352 5601
5353 5602 def __init__(self, parent=None):
5354 5603 """
5355 5604 Constructor
5356 5605 """
5357 5606 QMainWindow.__init__(self, parent)
5358 5607 self.setupUi(self)
5359 5608 self.setParameter()
5360 5609
5361 5610 def setParameter(self):
5362 5611 self.setWindowTitle("ROJ-Signal Chain")
5363 5612 self.serverFTP.setToolTip('Example: jro-app.igp.gob.pe')
5364 5613 self.folderFTP.setToolTip('Example: /home/wmaster/graficos')
5365 5614 self.usernameFTP.setToolTip('Example: myusername')
5366 5615 self.passwordFTP.setToolTip('Example: mypass ')
5367 5616 self.weightFTP.setToolTip('Example: 0')
5368 5617 self.expcodeFTP.setToolTip('Example: 0')
5369 5618 self.subexpFTP.setToolTip('Example: 0')
5370 5619 self.plotposFTP.setToolTip('Example: 0')
5371 5620
5372 def setParmsfromTemporal(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos):
5621 def setParmsfromTemporal(self, server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos):
5373 5622 self.serverFTP.setText(str(server))
5374 self.folderFTP.setText(str(folder))
5623 self.folderFTP.setText(str(remotefolder))
5375 5624 self.usernameFTP.setText(str(username))
5376 5625 self.passwordFTP.setText(str(password))
5377 5626 self.weightFTP.setText(str(ftp_wei))
5378 5627 self.expcodeFTP.setText(str(exp_code))
5379 5628 self.subexpFTP.setText(str(sub_exp_code))
5380 5629 self.plotposFTP.setText(str(plot_pos))
5381 5630
5382 5631 def getParmsFromFtpWindow(self):
5383 5632 """
5384 5633 Return Inputs Project:
5385 5634 - server
5386 - folder
5635 - remotefolder
5387 5636 - username
5388 5637 - password
5389 5638 - ftp_wei
5390 5639 - exp_code
5391 5640 - sub_exp_code
5392 5641 - plot_pos
5393 5642 """
5394 5643 name_server_ftp = str(self.serverFTP.text())
5395 try:
5396 name = str(self.serverFTP.text())
5397 except:
5644 if not name_server_ftp:
5398 5645 self.console.clear()
5399 5646 self.console.append("Please Write a FTP Server")
5400 5647 return 0
5401 5648
5402 5649 folder_server_ftp = str(self.folderFTP.text())
5403 try:
5404 folder = str(self.folderFTP.text())
5405 except:
5650 if not folder_server_ftp:
5406 5651 self.console.clear()
5407 5652 self.console.append("Please Write a Folder")
5408 5653 return 0
5409 5654
5410 5655 username_ftp = str(self.usernameFTP.text())
5411 try:
5412 username = str(self.usernameFTP.text())
5413 except:
5656 if not username_ftp:
5414 5657 self.console.clear()
5415 5658 self.console.append("Please Write a User Name")
5416 5659 return 0
5417 5660
5418 5661 password_ftp = str(self.passwordFTP.text())
5419 try:
5420 password = str(self.passwordFTP.text())
5421 except:
5662 if not password_ftp:
5422 5663 self.console.clear()
5423 5664 self.console.append("Please Write a passwordFTP")
5424 5665 return 0
5425 5666
5426 5667 ftp_wei = self.weightFTP.text()
5427 5668 if not ftp_wei == "":
5428 5669 try:
5429 5670 ftp_wei = int(self.weightFTP.text())
5430 5671 except:
5431 5672 self.console.clear()
5432 5673 self.console.append("Please Write a ftp_wei number")
5433 5674 return 0
5434 5675
5435 5676 exp_code = self.expcodeFTP.text()
5436 5677 if not exp_code == "":
5437 5678 try:
5438 5679 exp_code = int(self.expcodeFTP.text())
5439 5680 except:
5440 5681 self.console.clear()
5441 5682 self.console.append("Please Write a exp_code number")
5442 5683 return 0
5443 5684
5444 5685
5445 5686 sub_exp_code = self.subexpFTP.text()
5446 5687 if not sub_exp_code == "":
5447 5688 try:
5448 5689 sub_exp_code = int(self.subexpFTP.text())
5449 5690 except:
5450 5691 self.console.clear()
5451 5692 self.console.append("Please Write a sub_exp_code number")
5452 5693 return 0
5453 5694
5454 5695 plot_pos = self.plotposFTP.text()
5455 5696 if not plot_pos == "":
5456 5697 try:
5457 5698 plot_pos = int(self.plotposFTP.text())
5458 5699 except:
5459 5700 self.console.clear()
5460 5701 self.console.append("Please Write a plot_pos number")
5461 5702 return 0
5462 5703
5463 5704 return name_server_ftp, folder_server_ftp, username_ftp, password_ftp, ftp_wei, exp_code, sub_exp_code, plot_pos
5464 5705
5465 5706 @pyqtSignature("")
5466 5707 def on_ftpOkButton_clicked(self):
5467 server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow()
5708 server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos = self.getParmsFromFtpWindow()
5468 5709 self.create = True
5469 5710 self.close()
5470 5711
5471 5712 @pyqtSignature("")
5472 5713 def on_ftpCancelButton_clicked(self):
5473 5714 self.create = False
5474 5715 self.close()
5475 5716
5476 5717 def closeEvent(self, event):
5477 5718 self.closed.emit()
5478 5719 event.accept()
5479 5720
5480 5721 class ftpBuffer():
5722
5481 5723 server = None
5482 folder = None
5724 remotefolder = None
5483 5725 username = None
5484 5726 password = None
5485 5727 ftp_wei = None
5486 5728 exp_code = None
5487 5729 sub_exp_code = None
5488 5730 plot_pos = None
5489 5731 create = False
5490 5732 withoutconfig = False
5491 5733 createforView = False
5492 5734 localfolder = None
5493 5735 extension = None
5494 5736 period = None
5495 5737 protocol = None
5496 5738
5497 5739 def __init__(self):
5498 5740
5499 5741 self.create = False
5500 5742 self.server = None
5501 self.folder = None
5743 self.remotefolder = None
5502 5744 self.username = None
5503 5745 self.password = None
5504 5746 self.ftp_wei = None
5505 5747 self.exp_code = None
5506 5748 self.sub_exp_code = None
5507 5749 self.plot_pos = None
5508 5750 # self.create = False
5509 5751 self.localfolder = None
5510 5752 self.extension = None
5511 5753 self.period = None
5512 5754 self.protocol = None
5513 5755
5514 5756 def setwithoutconfiguration(self):
5515 5757
5516 5758 self.create = False
5517 5759 self.server = "jro-app.igp.gob.pe"
5518 self.folder = "/home/wmaster/graficos"
5760 self.remotefolder = "/home/wmaster/graficos"
5519 5761 self.username = "wmaster"
5520 5762 self.password = "mst2010vhf"
5521 self.ftp_wei = "0"
5522 self.exp_code = "0"
5523 self.sub_exp_code = "0"
5524 self.plot_pos = "0"
5525 5763 self.withoutconfig = True
5526 5764 self.localfolder = './'
5527 5765 self.extension = '.png'
5528 5766 self.period = '60'
5529 5767 self.protocol = 'ftp'
5530 5768 self.createforView = True
5531 5769
5532 def save(self, server, folder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos, localfolder='./', extension='.png', period='60', protocol='ftp'):
5770 if not self.ftp_wei:
5771 self.ftp_wei = "0"
5772
5773 if not self.exp_code:
5774 self.exp_code = "0"
5775
5776 if not self.sub_exp_code:
5777 self.sub_exp_code = "0"
5778
5779 if not self.plot_pos:
5780 self.plot_pos = "0"
5781
5782 def save(self, server, remotefolder, username, password, ftp_wei, exp_code, sub_exp_code, plot_pos, localfolder='./', extension='.png', period='60', protocol='ftp'):
5533 5783
5534 5784 self.server = server
5535 self.folder = folder
5785 self.remotefolder = remotefolder
5536 5786 self.username = username
5537 5787 self.password = password
5538 5788 self.ftp_wei = ftp_wei
5539 5789 self.exp_code = exp_code
5540 5790 self.sub_exp_code = sub_exp_code
5541 5791 self.plot_pos = plot_pos
5542 5792 self.create = True
5543 5793 self.withoutconfig = False
5544 5794 self.createforView = True
5545 5795 self.localfolder = localfolder
5546
5796 self.extension = extension
5797 self.period = period
5798 self.protocol = protocol
5547 5799
5548 5800 def recover(self):
5549 5801
5550 return self.server, self.folder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos
5802 return self.server, self.remotefolder, self.username, self.password, self.ftp_wei, self.exp_code, self.sub_exp_code, self.plot_pos, self.extension, self.period, self.protocol
5551 5803
5552 5804 class ShowMeConsole(QtCore.QObject):
5553 5805 textWritten = QtCore.pyqtSignal(str)
5554 5806 def write (self, text):
5555 5807 self.textWritten.emit(str(text))
5556 5808
5557 5809 class PlotManager():
5558 5810 def __init__(self, queue):
5559 5811 self.queue = queue
5560 5812 self.objPlotDict = {}
5561 5813
5562 5814 def processIncoming(self):
5563 5815 while self.queue.qsize():
5564 5816 try:
5565 5817 dataFromQueue = self.queue.get(True)
5566 5818 if dataFromQueue == None:
5567 5819 continue
5568 5820
5569 5821 dataPlot = dataFromQueue['data']
5570 5822 kwargs = dataFromQueue['kwargs']
5571 5823 id = kwargs['id']
5572 5824 if 'channelList' in kwargs.keys():
5573 5825 channelList = kwargs['channelList']
5574 5826 else:
5575 5827 channelList = None
5576 5828 plotname = kwargs.pop('type')
5577 5829
5578 5830 if not(id in self.objPlotDict.keys()):
5579 5831 className = eval(plotname)
5580 5832 self.objPlotDict[id] = className(id, channelList, dataPlot)
5581 5833 self.objPlotDict[id].show()
5582 5834
5583 5835 self.objPlotDict[id].run(dataPlot , **kwargs)
5584 5836
5585 5837 except Queue.Empty:
5586 5838 pass
5587 5839
5588 5840
@@ -1,93 +1,94
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Form implementation generated from reading ui file '/home/roj-idl71/SignalChain/initwindowv2.ui'
4 4 #
5 5 # Created: Wed Mar 6 15:32:39 2013
6 6 # by: PyQt4 UI code generator 4.8.6
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
12 12 try:
13 13 _fromUtf8 = QtCore.QString.fromUtf8
14 14 except AttributeError:
15 15 _fromUtf8 = lambda s: s
16 16
17 17 import os
18 18 from schainpy.gui.figures import tools
19 19
20 INITIAL_MSG = "Signal Chain GUI - v2.1"
20 21 FIGURES_PATH = tools.get_path()
21 22
22 23 class Ui_InitWindow(object):
23 24 def setupUi(self, Dialog):
24 25 Dialog.setObjectName(_fromUtf8("Dialog"))
25 26 Dialog.resize(652, 496)
26 27 Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))
27 28 self.gridLayout = QtGui.QGridLayout(Dialog)
28 29 self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
29 30 self.verticalLayout_3 = QtGui.QVBoxLayout()
30 31 self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
31 32 self.verticalLayout_4 = QtGui.QVBoxLayout()
32 33 self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))
33 34 self.label_3 = QtGui.QLabel(Dialog)
34 35 font = QtGui.QFont()
35 36 font.setFamily(_fromUtf8("Cambria"))
36 37 font.setPointSize(22)
37 38 font.setBold(False)
38 39 font.setWeight(50)
39 40 self.label_3.setFont(font)
40 self.label_3.setText(QtGui.QApplication.translate("Dialog", "Signal Chain GUI - Ver. 2.0", None, QtGui.QApplication.UnicodeUTF8))
41 self.label_3.setText(QtGui.QApplication.translate("Dialog", INITIAL_MSG, None, QtGui.QApplication.UnicodeUTF8))
41 42 self.label_3.setObjectName(_fromUtf8("label_3"))
42 43 self.verticalLayout_4.addWidget(self.label_3)
43 44 self.line_2 = QtGui.QFrame(Dialog)
44 45 self.line_2.setFrameShape(QtGui.QFrame.HLine)
45 46 self.line_2.setFrameShadow(QtGui.QFrame.Sunken)
46 47 self.line_2.setObjectName(_fromUtf8("line_2"))
47 48 self.verticalLayout_4.addWidget(self.line_2)
48 49 self.label_4 = QtGui.QLabel(Dialog)
49 50 self.label_4.setText(_fromUtf8(""))
50 51 self.label_4.setPixmap(QtGui.QPixmap(_fromUtf8( os.path.join(FIGURES_PATH,"w.jpg") )))
51 52 self.label_4.setScaledContents(True)
52 53 self.label_4.setObjectName(_fromUtf8("label_4"))
53 54 self.verticalLayout_4.addWidget(self.label_4)
54 55 self.verticalLayout_3.addLayout(self.verticalLayout_4)
55 56 self.horizontalLayout_3 = QtGui.QHBoxLayout()
56 57 self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3"))
57 58 self.horizontalLayout_4 = QtGui.QHBoxLayout()
58 59 self.horizontalLayout_4.setObjectName(_fromUtf8("horizontalLayout_4"))
59 60 spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
60 61 self.horizontalLayout_4.addItem(spacerItem)
61 62 self.ExitBtn = QtGui.QPushButton(Dialog)
62 63 self.ExitBtn.setText(QtGui.QApplication.translate("Dialog", "Exit", None, QtGui.QApplication.UnicodeUTF8))
63 64 self.ExitBtn.setObjectName(_fromUtf8("ExitBtn"))
64 65 self.horizontalLayout_4.addWidget(self.ExitBtn)
65 66 self.ContinueBtn = QtGui.QPushButton(Dialog)
66 67 self.ContinueBtn.setText(QtGui.QApplication.translate("Dialog", "Continue", None, QtGui.QApplication.UnicodeUTF8))
67 68 self.ContinueBtn.setObjectName(_fromUtf8("ContinueBtn"))
68 69 self.horizontalLayout_4.addWidget(self.ContinueBtn)
69 70 spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
70 71 self.horizontalLayout_4.addItem(spacerItem1)
71 72 self.horizontalLayout_3.addLayout(self.horizontalLayout_4)
72 73 self.verticalLayout_3.addLayout(self.horizontalLayout_3)
73 74 self.gridLayout.addLayout(self.verticalLayout_3, 0, 0, 1, 1)
74 75
75 76 self.retranslateUi(Dialog)
76 77 QtCore.QMetaObject.connectSlotsByName(Dialog)
77 78
78 79 def retranslateUi(self, Dialog):
79 80 pass
80 81
81 82
82 83 if __name__ == "__main__":
83 84 import sys
84 85 app = QtGui.QApplication(sys.argv)
85 86 Dialog = QtGui.QDialog()
86 87 ui = Ui_InitWindow()
87 88 ui.setupUi(Dialog)
88 89 Dialog.show()
89 90 sys.exit(app.exec_())
90 91
91 92
92 93
93 94
@@ -1,451 +1,451
1 1 from PyQt4 import QtCore, QtGui
2 2
3 3 try:
4 4 _fromUtf8 = QtCore.QString.fromUtf8
5 5 except AttributeError:
6 6 def _fromUtf8(s):
7 7 return s
8 8
9 9 try:
10 10 _encoding = QtGui.QApplication.UnicodeUTF8
11 11 def _translate(context, text, disambig):
12 12 return QtGui.QApplication.translate(context, text, disambig, _encoding)
13 13 except AttributeError:
14 14 def _translate(context, text, disambig):
15 15 return QtGui.QApplication.translate(context, text, disambig)
16 16
17 17 class Ui_SpectraTab(object):
18 18
19 19 def setupUi(self):
20 20
21 21 self.tabSpectra = QtGui.QWidget()
22 22 self.tabSpectra.setObjectName(_fromUtf8("tabSpectra"))
23 23 self.gridLayout_7 = QtGui.QGridLayout(self.tabSpectra)
24 24 self.gridLayout_7.setObjectName(_fromUtf8("gridLayout_7"))
25 25 self.frame_5 = QtGui.QFrame(self.tabSpectra)
26 26 self.frame_5.setFrameShape(QtGui.QFrame.StyledPanel)
27 27 self.frame_5.setFrameShadow(QtGui.QFrame.Raised)
28 28 self.frame_5.setObjectName(_fromUtf8("frame_5"))
29 29 self.gridLayout_18 = QtGui.QGridLayout(self.frame_5)
30 30 self.gridLayout_18.setObjectName(_fromUtf8("gridLayout_18"))
31 31 self.specOpOk = QtGui.QPushButton(self.frame_5)
32 32 self.specOpOk.setObjectName(_fromUtf8("specOpOk"))
33 33 self.gridLayout_18.addWidget(self.specOpOk, 0, 0, 1, 1)
34 34 self.specGraphClear = QtGui.QPushButton(self.frame_5)
35 35 self.specGraphClear.setObjectName(_fromUtf8("specGraphClear"))
36 36 self.gridLayout_18.addWidget(self.specGraphClear, 0, 1, 1, 1)
37 37 self.gridLayout_7.addWidget(self.frame_5, 1, 1, 1, 1)
38 38 self.tabWidgetSpectra = QtGui.QTabWidget(self.tabSpectra)
39 39 self.tabWidgetSpectra.setObjectName(_fromUtf8("tabWidgetSpectra"))
40 40 self.tabopSpectra = QtGui.QWidget()
41 41 self.tabopSpectra.setObjectName(_fromUtf8("tabopSpectra"))
42 42 self.gridLayout_5 = QtGui.QGridLayout(self.tabopSpectra)
43 43 self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5"))
44 44 self.specOpCebCrossSpectra = QtGui.QCheckBox(self.tabopSpectra)
45 45 self.specOpCebCrossSpectra.setObjectName(_fromUtf8("specOpCebCrossSpectra"))
46 46 self.gridLayout_5.addWidget(self.specOpCebCrossSpectra, 4, 0, 1, 2)
47 47 self.specOpComChannel = QtGui.QComboBox(self.tabopSpectra)
48 48 self.specOpComChannel.setObjectName(_fromUtf8("specOpComChannel"))
49 49 self.specOpComChannel.addItem(_fromUtf8(""))
50 50 self.specOpComChannel.addItem(_fromUtf8(""))
51 51 self.gridLayout_5.addWidget(self.specOpComChannel, 8, 0, 1, 2)
52 52 self.specOpChannel = QtGui.QLineEdit(self.tabopSpectra)
53 53 self.specOpChannel.setObjectName(_fromUtf8("specOpChannel"))
54 54 self.gridLayout_5.addWidget(self.specOpChannel, 8, 3, 1, 2)
55 55 self.specOpComHeights = QtGui.QComboBox(self.tabopSpectra)
56 56 self.specOpComHeights.setObjectName(_fromUtf8("specOpComHeights"))
57 57 self.specOpComHeights.addItem(_fromUtf8(""))
58 58 self.specOpComHeights.addItem(_fromUtf8(""))
59 59 self.gridLayout_5.addWidget(self.specOpComHeights, 11, 0, 1, 2)
60 60 self.specOpHeights = QtGui.QLineEdit(self.tabopSpectra)
61 61 self.specOpHeights.setObjectName(_fromUtf8("specOpHeights"))
62 62 self.gridLayout_5.addWidget(self.specOpHeights, 11, 3, 1, 2)
63 63 self.specOpIncoherent = QtGui.QLineEdit(self.tabopSpectra)
64 64 self.specOpIncoherent.setObjectName(_fromUtf8("specOpIncoherent"))
65 65 self.gridLayout_5.addWidget(self.specOpIncoherent, 13, 3, 1, 2)
66 66 self.specOpCebRemoveDC = QtGui.QCheckBox(self.tabopSpectra)
67 67 self.specOpCebRemoveDC.setObjectName(_fromUtf8("specOpCebRemoveDC"))
68 68 self.gridLayout_5.addWidget(self.specOpCebRemoveDC, 14, 0, 1, 2)
69 69 self.specOpCebHeights = QtGui.QCheckBox(self.tabopSpectra)
70 70 self.specOpCebHeights.setObjectName(_fromUtf8("specOpCebHeights"))
71 71 self.gridLayout_5.addWidget(self.specOpCebHeights, 9, 0, 1, 1)
72 72 self.specOpCebChannel = QtGui.QCheckBox(self.tabopSpectra)
73 73 self.specOpCebChannel.setObjectName(_fromUtf8("specOpCebChannel"))
74 74 self.gridLayout_5.addWidget(self.specOpCebChannel, 7, 0, 1, 1)
75 75 self.specOppairsList = QtGui.QLineEdit(self.tabopSpectra)
76 76 self.specOppairsList.setObjectName(_fromUtf8("specOppairsList"))
77 77 self.gridLayout_5.addWidget(self.specOppairsList, 6, 3, 1, 2)
78 78 self.specOpnFFTpoints = QtGui.QLineEdit(self.tabopSpectra)
79 79 self.specOpnFFTpoints.setObjectName(_fromUtf8("specOpnFFTpoints"))
80 80 self.gridLayout_5.addWidget(self.specOpnFFTpoints, 2, 3, 1, 2)
81 81 self.label_31 = QtGui.QLabel(self.tabopSpectra)
82 82 self.label_31.setObjectName(_fromUtf8("label_31"))
83 83 self.gridLayout_5.addWidget(self.label_31, 6, 0, 1, 2)
84 84 self.label_26 = QtGui.QLabel(self.tabopSpectra)
85 85 self.label_26.setObjectName(_fromUtf8("label_26"))
86 86 self.gridLayout_5.addWidget(self.label_26, 2, 0, 1, 2)
87 87 self.specOpCebIncoherent = QtGui.QCheckBox(self.tabopSpectra)
88 88 self.specOpCebIncoherent.setObjectName(_fromUtf8("specOpCebIncoherent"))
89 89 self.gridLayout_5.addWidget(self.specOpCebIncoherent, 12, 0, 1, 1)
90 90 self.specOpCobIncInt = QtGui.QComboBox(self.tabopSpectra)
91 91 self.specOpCobIncInt.setObjectName(_fromUtf8("specOpCobIncInt"))
92 92 self.specOpCobIncInt.addItem(_fromUtf8(""))
93 93 self.specOpCobIncInt.addItem(_fromUtf8(""))
94 94 self.gridLayout_5.addWidget(self.specOpCobIncInt, 13, 0, 1, 2)
95 95 spacerItem9 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
96 96 self.gridLayout_5.addItem(spacerItem9, 12, 3, 1, 1)
97 97 self.specOpCebRadarfrequency = QtGui.QCheckBox(self.tabopSpectra)
98 98 self.specOpCebRadarfrequency.setObjectName(_fromUtf8("specOpCebRadarfrequency"))
99 99 self.gridLayout_5.addWidget(self.specOpCebRadarfrequency, 0, 0, 1, 2)
100 100 spacerItem10 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
101 101 self.gridLayout_5.addItem(spacerItem10, 9, 3, 1, 1)
102 102 spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
103 103 self.gridLayout_5.addItem(spacerItem11, 7, 3, 1, 1)
104 104 self.specOpRadarfrequency = QtGui.QLineEdit(self.tabopSpectra)
105 105 self.specOpRadarfrequency.setObjectName(_fromUtf8("specOpRadarfrequency"))
106 106 self.gridLayout_5.addWidget(self.specOpRadarfrequency, 0, 3, 1, 2)
107 107 spacerItem12 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
108 108 self.gridLayout_5.addItem(spacerItem12, 4, 3, 1, 1)
109 109 self.label_21 = QtGui.QLabel(self.tabopSpectra)
110 110 self.label_21.setObjectName(_fromUtf8("label_21"))
111 111 self.gridLayout_5.addWidget(self.label_21, 1, 0, 1, 1)
112 112 self.specOpProfiles = QtGui.QLineEdit(self.tabopSpectra)
113 113 self.specOpProfiles.setObjectName(_fromUtf8("specOpProfiles"))
114 114 self.gridLayout_5.addWidget(self.specOpProfiles, 1, 3, 1, 2)
115 115 self.specOpCebRemoveInt = QtGui.QCheckBox(self.tabopSpectra)
116 116 self.specOpCebRemoveInt.setObjectName(_fromUtf8("specOpCebRemoveInt"))
117 117 self.gridLayout_5.addWidget(self.specOpCebRemoveInt, 15, 0, 1, 1)
118 118 spacerItem13 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
119 119 self.gridLayout_5.addItem(spacerItem13, 15, 3, 1, 1)
120 120 self.label_70 = QtGui.QLabel(self.tabopSpectra)
121 121 self.label_70.setObjectName(_fromUtf8("label_70"))
122 122 self.gridLayout_5.addWidget(self.label_70, 3, 0, 1, 1)
123 123 self.specOpCebgetNoise = QtGui.QCheckBox(self.tabopSpectra)
124 124 self.specOpCebgetNoise.setObjectName(_fromUtf8("specOpCebgetNoise"))
125 125 self.gridLayout_5.addWidget(self.specOpCebgetNoise, 16, 0, 1, 1)
126 126 self.specOpippFactor = QtGui.QLineEdit(self.tabopSpectra)
127 127 self.specOpippFactor.setObjectName(_fromUtf8("specOpippFactor"))
128 128 self.gridLayout_5.addWidget(self.specOpippFactor, 3, 3, 1, 2)
129 129 self.specOpComRemoveDC = QtGui.QComboBox(self.tabopSpectra)
130 130 self.specOpComRemoveDC.setObjectName(_fromUtf8("specOpComRemoveDC"))
131 131 self.specOpComRemoveDC.addItem(_fromUtf8(""))
132 132 self.specOpComRemoveDC.addItem(_fromUtf8(""))
133 133 self.gridLayout_5.addWidget(self.specOpComRemoveDC, 14, 3, 1, 2)
134 134 self.specOpgetNoise = QtGui.QLineEdit(self.tabopSpectra)
135 135 self.specOpgetNoise.setObjectName(_fromUtf8("specOpgetNoise"))
136 136 self.gridLayout_5.addWidget(self.specOpgetNoise, 16, 3, 1, 2)
137 137 self.tabWidgetSpectra.addTab(self.tabopSpectra, _fromUtf8(""))
138 138
139 139
140 140 self.tabgraphSpectra = QtGui.QWidget()
141 141 self.tabgraphSpectra.setObjectName(_fromUtf8("tabgraphSpectra"))
142 142 self.gridLayout_9 = QtGui.QGridLayout(self.tabgraphSpectra)
143 143 self.gridLayout_9.setObjectName(_fromUtf8("gridLayout_9"))
144 144
145 145 spacerItem14 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
146 146 self.gridLayout_9.addItem(spacerItem14, 14, 2, 1, 1)
147 147
148 148 self.label_24 = QtGui.QLabel(self.tabgraphSpectra)
149 149 self.label_24.setObjectName(_fromUtf8("label_24"))
150 150 self.gridLayout_9.addWidget(self.label_24, 0, 0, 1, 1)
151 151
152 152 self.specGraphPath = QtGui.QLineEdit(self.tabgraphSpectra)
153 153 self.specGraphPath.setObjectName(_fromUtf8("specGraphPath"))
154 154 self.gridLayout_9.addWidget(self.specGraphPath, 0, 1, 1, 6)
155 155
156 156 self.specGraphToolPath = QtGui.QToolButton(self.tabgraphSpectra)
157 157 self.specGraphToolPath.setObjectName(_fromUtf8("specGraphToolPath"))
158 158 self.gridLayout_9.addWidget(self.specGraphToolPath, 0, 7, 1, 1)
159 159
160 160 self.label_25 = QtGui.QLabel(self.tabgraphSpectra)
161 161 self.label_25.setObjectName(_fromUtf8("label_25"))
162 162 self.gridLayout_9.addWidget(self.label_25, 2, 0, 1, 1)
163 163 self.specGraphPrefix = QtGui.QLineEdit(self.tabgraphSpectra)
164 164 self.specGraphPrefix.setObjectName(_fromUtf8("specGraphPrefix"))
165 165 self.gridLayout_9.addWidget(self.specGraphPrefix, 2, 1, 1, 7)
166 166
167 167
168 168 self.label_40 = QtGui.QLabel(self.tabgraphSpectra)
169 169 self.label_40.setObjectName(_fromUtf8("label_40"))
170 170 self.gridLayout_9.addWidget(self.label_40, 6, 0, 1, 1)
171 171 self.label_41 = QtGui.QLabel(self.tabgraphSpectra)
172 172 self.label_41.setObjectName(_fromUtf8("label_41"))
173 173 self.gridLayout_9.addWidget(self.label_41, 8, 0, 1, 1)
174 174 self.label_42 = QtGui.QLabel(self.tabgraphSpectra)
175 175 self.label_42.setObjectName(_fromUtf8("label_42"))
176 176 self.gridLayout_9.addWidget(self.label_42, 9, 0, 1, 1)
177 177 self.label_44 = QtGui.QLabel(self.tabgraphSpectra)
178 178 self.label_44.setObjectName(_fromUtf8("label_44"))
179 179 self.gridLayout_9.addWidget(self.label_44, 10, 0, 1, 1)
180 180 self.label_46 = QtGui.QLabel(self.tabgraphSpectra)
181 181 self.label_46.setObjectName(_fromUtf8("label_46"))
182 182 self.gridLayout_9.addWidget(self.label_46, 11, 0, 1, 1)
183 183 self.label_45 = QtGui.QLabel(self.tabgraphSpectra)
184 184 self.label_45.setObjectName(_fromUtf8("label_45"))
185 185 self.gridLayout_9.addWidget(self.label_45, 13, 0, 1, 1)
186 186
187 187 self.label_43 = QtGui.QLabel(self.tabgraphSpectra)
188 188 self.label_43.setObjectName(_fromUtf8("label_43"))
189 189 self.gridLayout_9.addWidget(self.label_43, 3, 3, 2, 1)
190 190 self.specGraphCebSpectraplot = QtGui.QCheckBox(self.tabgraphSpectra)
191 191 self.specGraphCebSpectraplot.setText(_fromUtf8(""))
192 192 self.specGraphCebSpectraplot.setObjectName(_fromUtf8("specGraphCebSpectraplot"))
193 193 self.gridLayout_9.addWidget(self.specGraphCebSpectraplot, 6, 3, 1, 1)
194 194 self.specGraphCebCrossSpectraplot = QtGui.QCheckBox(self.tabgraphSpectra)
195 195 self.specGraphCebCrossSpectraplot.setText(_fromUtf8(""))
196 196 self.specGraphCebCrossSpectraplot.setObjectName(_fromUtf8("specGraphCebCrossSpectraplot"))
197 197 self.gridLayout_9.addWidget(self.specGraphCebCrossSpectraplot, 8, 3, 1, 1)
198 198 self.specGraphCebRTIplot = QtGui.QCheckBox(self.tabgraphSpectra)
199 199 self.specGraphCebRTIplot.setText(_fromUtf8(""))
200 200 self.specGraphCebRTIplot.setObjectName(_fromUtf8("specGraphCebRTIplot"))
201 201 self.gridLayout_9.addWidget(self.specGraphCebRTIplot, 9, 3, 1, 1)
202 202 self.specGraphCebCoherencmap = QtGui.QCheckBox(self.tabgraphSpectra)
203 203 self.specGraphCebCoherencmap.setText(_fromUtf8(""))
204 204 self.specGraphCebCoherencmap.setObjectName(_fromUtf8("specGraphCebCoherencmap"))
205 205 self.gridLayout_9.addWidget(self.specGraphCebCoherencmap, 10, 3, 1, 1)
206 206 self.specGraphPowerprofile = QtGui.QCheckBox(self.tabgraphSpectra)
207 207 self.specGraphPowerprofile.setText(_fromUtf8(""))
208 208 self.specGraphPowerprofile.setObjectName(_fromUtf8("specGraphPowerprofile"))
209 209 self.gridLayout_9.addWidget(self.specGraphPowerprofile, 11, 3, 1, 1)
210 210 self.specGraphCebRTInoise = QtGui.QCheckBox(self.tabgraphSpectra)
211 211 self.specGraphCebRTInoise.setText(_fromUtf8(""))
212 212 self.specGraphCebRTInoise.setObjectName(_fromUtf8("specGraphCebRTInoise"))
213 213 self.gridLayout_9.addWidget(self.specGraphCebRTInoise, 13, 3, 1, 1)
214 214
215 215 # spacerItem18 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
216 216 # self.gridLayout_9.addItem(spacerItem18, 4, 3, 1, 1)
217 217
218 218 self.label_47 = QtGui.QLabel(self.tabgraphSpectra)
219 219 self.label_47.setObjectName(_fromUtf8("label_47"))
220 220 self.gridLayout_9.addWidget(self.label_47, 3, 5, 2, 1)
221 221 self.specGraphSaveSpectra = QtGui.QCheckBox(self.tabgraphSpectra)
222 222 self.specGraphSaveSpectra.setText(_fromUtf8(""))
223 223 self.specGraphSaveSpectra.setObjectName(_fromUtf8("specGraphSaveSpectra"))
224 224 self.gridLayout_9.addWidget(self.specGraphSaveSpectra, 6, 5, 1, 1)
225 225 self.specGraphSaveCross = QtGui.QCheckBox(self.tabgraphSpectra)
226 226 self.specGraphSaveCross.setText(_fromUtf8(""))
227 227 self.specGraphSaveCross.setObjectName(_fromUtf8("specGraphSaveCross"))
228 228 self.gridLayout_9.addWidget(self.specGraphSaveCross, 8, 5, 1, 1)
229 229 self.specGraphSaveRTIplot = QtGui.QCheckBox(self.tabgraphSpectra)
230 230 self.specGraphSaveRTIplot.setText(_fromUtf8(""))
231 231 self.specGraphSaveRTIplot.setObjectName(_fromUtf8("specGraphSaveRTIplot"))
232 232 self.gridLayout_9.addWidget(self.specGraphSaveRTIplot, 9, 5, 1, 1)
233 233 self.specGraphSaveCoherencemap = QtGui.QCheckBox(self.tabgraphSpectra)
234 234 self.specGraphSaveCoherencemap.setText(_fromUtf8(""))
235 235 self.specGraphSaveCoherencemap.setObjectName(_fromUtf8("specGraphSaveCoherencemap"))
236 236 self.gridLayout_9.addWidget(self.specGraphSaveCoherencemap, 10, 5, 1, 1)
237 237 self.specGraphSavePowerprofile = QtGui.QCheckBox(self.tabgraphSpectra)
238 238 self.specGraphSavePowerprofile.setText(_fromUtf8(""))
239 239 self.specGraphSavePowerprofile.setObjectName(_fromUtf8("specGraphSavePowerprofile"))
240 240 self.gridLayout_9.addWidget(self.specGraphSavePowerprofile, 11, 5, 1, 1)
241 241 self.specGraphSaveRTInoise = QtGui.QCheckBox(self.tabgraphSpectra)
242 242 self.specGraphSaveRTInoise.setText(_fromUtf8(""))
243 243 self.specGraphSaveRTInoise.setObjectName(_fromUtf8("specGraphSaveRTInoise"))
244 244 self.gridLayout_9.addWidget(self.specGraphSaveRTInoise, 13, 5, 1, 1)
245 245
246 246 self.label_19 = QtGui.QLabel(self.tabgraphSpectra)
247 247 self.label_19.setObjectName(_fromUtf8("label_19"))
248 248 self.gridLayout_9.addWidget(self.label_19, 3, 7, 2, 1)
249 249 self.specGraphftpSpectra = QtGui.QCheckBox(self.tabgraphSpectra)
250 250 self.specGraphftpSpectra.setText(_fromUtf8(""))
251 251 self.specGraphftpSpectra.setObjectName(_fromUtf8("specGraphftpSpectra"))
252 252 self.gridLayout_9.addWidget(self.specGraphftpSpectra, 6, 7, 1, 1)
253 253 self.specGraphftpCross = QtGui.QCheckBox(self.tabgraphSpectra)
254 254 self.specGraphftpCross.setText(_fromUtf8(""))
255 255 self.specGraphftpCross.setObjectName(_fromUtf8("specGraphftpCross"))
256 256 self.gridLayout_9.addWidget(self.specGraphftpCross, 8, 7, 1, 1)
257 257 self.specGraphftpRTIplot = QtGui.QCheckBox(self.tabgraphSpectra)
258 258 self.specGraphftpRTIplot.setText(_fromUtf8(""))
259 259 self.specGraphftpRTIplot.setObjectName(_fromUtf8("specGraphftpRTIplot"))
260 260 self.gridLayout_9.addWidget(self.specGraphftpRTIplot, 9, 7, 1, 1)
261 261 self.specGraphftpCoherencemap = QtGui.QCheckBox(self.tabgraphSpectra)
262 262 self.specGraphftpCoherencemap.setText(_fromUtf8(""))
263 263 self.specGraphftpCoherencemap.setObjectName(_fromUtf8("specGraphftpCoherencemap"))
264 264 self.gridLayout_9.addWidget(self.specGraphftpCoherencemap, 10, 7, 1, 1)
265 265 self.specGraphftpPowerprofile = QtGui.QCheckBox(self.tabgraphSpectra)
266 266 self.specGraphftpPowerprofile.setText(_fromUtf8(""))
267 267 self.specGraphftpPowerprofile.setObjectName(_fromUtf8("specGraphftpPowerprofile"))
268 268 self.gridLayout_9.addWidget(self.specGraphftpPowerprofile, 11, 7, 1, 1)
269 269 self.specGraphftpRTInoise = QtGui.QCheckBox(self.tabgraphSpectra)
270 270 self.specGraphftpRTInoise.setText(_fromUtf8(""))
271 271 self.specGraphftpRTInoise.setObjectName(_fromUtf8("specGraphftpRTInoise"))
272 272 self.gridLayout_9.addWidget(self.specGraphftpRTInoise, 13, 7, 1, 1)
273 273
274 274 spacerItem19 = QtGui.QSpacerItem(39, 15, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
275 275 self.gridLayout_9.addItem(spacerItem19, 27, 4, 1, 1)
276 276
277 277 self.label_22 = QtGui.QLabel(self.tabgraphSpectra)
278 278 self.label_22.setObjectName(_fromUtf8("label_22"))
279 279 self.gridLayout_9.addWidget(self.label_22, 16, 0, 1, 1)
280 280 self.specGgraphFreq = QtGui.QLineEdit(self.tabgraphSpectra)
281 281 self.specGgraphFreq.setObjectName(_fromUtf8("specGgraphFreq"))
282 282 self.gridLayout_9.addWidget(self.specGgraphFreq, 16, 2, 1, 2)
283 283
284 284 self.label_16 = QtGui.QLabel(self.tabgraphSpectra)
285 285 self.label_16.setObjectName(_fromUtf8("label_16"))
286 286 self.gridLayout_9.addWidget(self.label_16, 17, 0, 1, 1)
287 287 self.specGgraphHeight = QtGui.QLineEdit(self.tabgraphSpectra)
288 288 self.specGgraphHeight.setObjectName(_fromUtf8("specGgraphHeight"))
289 289 self.gridLayout_9.addWidget(self.specGgraphHeight, 17, 2, 1, 2)
290 290
291 291 self.label_17 = QtGui.QLabel(self.tabgraphSpectra)
292 292 self.label_17.setObjectName(_fromUtf8("label_17"))
293 293 self.gridLayout_9.addWidget(self.label_17, 18, 0, 1, 1)
294 294 self.specGgraphDbsrange = QtGui.QLineEdit(self.tabgraphSpectra)
295 295 self.specGgraphDbsrange.setObjectName(_fromUtf8("specGgraphDbsrange"))
296 296 self.gridLayout_9.addWidget(self.specGgraphDbsrange, 18, 2, 1, 2)
297 297
298 298 self.specGraphTminTmaxLabel = QtGui.QLabel(self.tabgraphSpectra)
299 299 self.specGraphTminTmaxLabel.setObjectName(_fromUtf8("specGraphTminTmaxLabel"))
300 300 self.gridLayout_9.addWidget(self.specGraphTminTmaxLabel, 19, 0, 1, 2)
301 301 self.specGgraphTminTmax = QtGui.QLineEdit(self.tabgraphSpectra)
302 302 self.specGgraphTminTmax.setObjectName(_fromUtf8("specGgraphTminTmax"))
303 303 self.gridLayout_9.addWidget(self.specGgraphTminTmax, 19, 2, 1, 2)
304 304
305 305 self.specGraphMagLabel = QtGui.QLabel(self.tabgraphSpectra)
306 306 self.specGraphMagLabel.setObjectName(_fromUtf8("specGraphMagLabel"))
307 307 self.gridLayout_9.addWidget(self.specGraphMagLabel, 16, 4, 1, 2)
308 308 self.specGgraphmagnitud = QtGui.QLineEdit(self.tabgraphSpectra)
309 309 self.specGgraphmagnitud.setObjectName(_fromUtf8("specGgraphmagnitud"))
310 310 self.gridLayout_9.addWidget(self.specGgraphmagnitud, 16, 6, 1, 2)
311 311
312 312 self.specGraphPhaseLabel = QtGui.QLabel(self.tabgraphSpectra)
313 313 self.specGraphPhaseLabel.setObjectName(_fromUtf8("specGraphPhaseLabel"))
314 314 self.gridLayout_9.addWidget(self.specGraphPhaseLabel, 17, 4, 1, 2)
315 315 self.specGgraphPhase = QtGui.QLineEdit(self.tabgraphSpectra)
316 316 self.specGgraphPhase.setObjectName(_fromUtf8("specGgraphPhase"))
317 317 self.gridLayout_9.addWidget(self.specGgraphPhase, 17, 6, 1, 2)
318 318
319 319 self.label_6 = QtGui.QLabel(self.tabgraphSpectra)
320 320 self.label_6.setObjectName(_fromUtf8("label_6"))
321 321 self.gridLayout_9.addWidget(self.label_6, 18, 4, 1, 1)
322 322 self.specGgraphChannelList = QtGui.QLineEdit(self.tabgraphSpectra)
323 323 self.specGgraphChannelList.setObjectName(_fromUtf8("specGgraphChannelList"))
324 324 self.gridLayout_9.addWidget(self.specGgraphChannelList, 18, 6, 1, 2)
325 325
326 326 self.label_29 = QtGui.QLabel(self.tabgraphSpectra)
327 327 self.label_29.setObjectName(_fromUtf8("label_29"))
328 328 self.gridLayout_9.addWidget(self.label_29, 19, 4, 1, 2)
329 329 self.specGgraphftpratio = QtGui.QLineEdit(self.tabgraphSpectra)
330 330 self.specGgraphftpratio.setObjectName(_fromUtf8("specGgraphftpratio"))
331 331 self.gridLayout_9.addWidget(self.specGgraphftpratio, 19, 6, 1, 2)
332 332
333 333 self.label_48 = QtGui.QLabel(self.tabgraphSpectra)
334 334 self.label_48.setObjectName(_fromUtf8("label_48"))
335 335 self.gridLayout_9.addWidget(self.label_48, 20, 4, 1, 2)
336 336 self.specGgraphTimeRange = QtGui.QLineEdit(self.tabgraphSpectra)
337 337 self.specGgraphTimeRange.setObjectName(_fromUtf8("specGgraphTimeRange"))
338 338 self.gridLayout_9.addWidget(self.specGgraphTimeRange, 20, 6, 1, 2)
339 339
340 340 spacerItem15 = QtGui.QSpacerItem(28, 15, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
341 341 self.gridLayout_9.addItem(spacerItem15, 27, 6, 1, 2)
342 342 spacerItem16 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
343 343 self.gridLayout_9.addItem(spacerItem16, 3, 5, 1, 1)
344 344 spacerItem17 = QtGui.QSpacerItem(49, 15, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
345 345 self.gridLayout_9.addItem(spacerItem17, 27, 0, 1, 1)
346 346
347 347
348 348
349 349 self.tabWidgetSpectra.addTab(self.tabgraphSpectra, _fromUtf8(""))
350 350 self.taboutputSpectra = QtGui.QWidget()
351 351 self.taboutputSpectra.setObjectName(_fromUtf8("taboutputSpectra"))
352 352 self.gridLayout_11 = QtGui.QGridLayout(self.taboutputSpectra)
353 353 self.gridLayout_11.setObjectName(_fromUtf8("gridLayout_11"))
354 354 self.label_39 = QtGui.QLabel(self.taboutputSpectra)
355 355 self.label_39.setObjectName(_fromUtf8("label_39"))
356 356 self.gridLayout_11.addWidget(self.label_39, 0, 0, 1, 1)
357 357 self.specOutputComData = QtGui.QComboBox(self.taboutputSpectra)
358 358 self.specOutputComData.setObjectName(_fromUtf8("specOutputComData"))
359 359 self.specOutputComData.addItem(_fromUtf8(""))
360 360 self.gridLayout_11.addWidget(self.specOutputComData, 0, 2, 1, 2)
361 361 self.label_34 = QtGui.QLabel(self.taboutputSpectra)
362 362 self.label_34.setObjectName(_fromUtf8("label_34"))
363 363 self.gridLayout_11.addWidget(self.label_34, 1, 0, 1, 1)
364 364 self.specOutputPath = QtGui.QLineEdit(self.taboutputSpectra)
365 365 self.specOutputPath.setObjectName(_fromUtf8("specOutputPath"))
366 366 self.gridLayout_11.addWidget(self.specOutputPath, 1, 2, 1, 1)
367 367 spacerItem20 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
368 368 self.gridLayout_11.addItem(spacerItem20, 4, 2, 1, 1)
369 369 self.specOutputToolPath = QtGui.QToolButton(self.taboutputSpectra)
370 370 self.specOutputToolPath.setObjectName(_fromUtf8("specOutputToolPath"))
371 371 self.gridLayout_11.addWidget(self.specOutputToolPath, 1, 3, 1, 1)
372 372 self.specOutputblocksperfile = QtGui.QLineEdit(self.taboutputSpectra)
373 373 self.specOutputblocksperfile.setObjectName(_fromUtf8("specOutputblocksperfile"))
374 374 self.gridLayout_11.addWidget(self.specOutputblocksperfile, 2, 2, 1, 1)
375 375 self.label_9 = QtGui.QLabel(self.taboutputSpectra)
376 376 self.label_9.setObjectName(_fromUtf8("label_9"))
377 377 self.gridLayout_11.addWidget(self.label_9, 2, 0, 1, 2)
378 378 self.label_38 = QtGui.QLabel(self.taboutputSpectra)
379 379 self.label_38.setObjectName(_fromUtf8("label_38"))
380 380 self.gridLayout_11.addWidget(self.label_38, 3, 0, 1, 1)
381 381 self.specOutputprofileperblock = QtGui.QLineEdit(self.taboutputSpectra)
382 382 self.specOutputprofileperblock.setObjectName(_fromUtf8("specOutputprofileperblock"))
383 383 self.gridLayout_11.addWidget(self.specOutputprofileperblock, 3, 2, 1, 1)
384 384 self.tabWidgetSpectra.addTab(self.taboutputSpectra, _fromUtf8(""))
385 385 self.gridLayout_7.addWidget(self.tabWidgetSpectra, 0, 1, 1, 1)
386 386
387 387 self.tabWidgetProject.addTab(self.tabSpectra, _fromUtf8(""))
388 388
389 389 self.tabWidgetSpectra.setCurrentIndex(0)
390 390
391 391 def retranslateUi(self):
392 392
393 393 self.specOpOk.setText(_translate("MainWindow", "Ok", None))
394 394 self.specGraphClear.setText(_translate("MainWindow", "Clear", None))
395 395 self.specOpCebCrossSpectra.setText(_translate("MainWindow", "Select Cross Spectra", None))
396 396 self.specOpComChannel.setItemText(0, _translate("MainWindow", "Value", None))
397 397 self.specOpComChannel.setItemText(1, _translate("MainWindow", "Index", None))
398 398 self.specOpComHeights.setItemText(0, _translate("MainWindow", "Value", None))
399 399 self.specOpComHeights.setItemText(1, _translate("MainWindow", "Index", None))
400 400 self.specOpCebRemoveDC.setText(_translate("MainWindow", "Remove DC", None))
401 401 self.specOpCebHeights.setText(_translate("MainWindow", "Select Heights", None))
402 402 self.specOpCebChannel.setText(_translate("MainWindow", "Select Channel", None))
403 403 self.label_31.setText(_translate("MainWindow", "x-y pairs", None))
404 404 self.label_26.setText(_translate("MainWindow", "nFFTPoints", None))
405 405 self.specOpCebIncoherent.setText(_translate("MainWindow", "Incoherent Integration", None))
406 406 self.specOpCobIncInt.setItemText(0, _translate("MainWindow", "Time Interval", None))
407 407 self.specOpCobIncInt.setItemText(1, _translate("MainWindow", "Profiles", None))
408 self.specOpCebRadarfrequency.setText(_translate("MainWindow", "Radar wavelength", None))
408 self.specOpCebRadarfrequency.setText(_translate("MainWindow", "Radar frequency (MHz)", None))
409 409 self.label_21.setText(_translate("MainWindow", "Profiles", None))
410 410 self.specOpCebRemoveInt.setText(_translate("MainWindow", "Remove Interference", None))
411 411 self.label_70.setText(_translate("MainWindow", "IppFactor", None))
412 412 self.specOpCebgetNoise.setText(_translate("MainWindow", "Get Noise", None))
413 413 self.specOpComRemoveDC.setItemText(0, _translate("MainWindow", "Mode 1", None))
414 414 self.specOpComRemoveDC.setItemText(1, _translate("MainWindow", "Mode 2", None))
415 415 self.tabWidgetSpectra.setTabText(self.tabWidgetSpectra.indexOf(self.tabopSpectra), _translate("MainWindow", "Operation", None))
416 416
417 417 self.label_44.setText(_translate("MainWindow", "Coherence Map", None))
418 418 self.specGraphTminTmaxLabel.setText(_translate("MainWindow", "Time range:", None))
419 419 self.label_25.setText(_translate("MainWindow", "Prefix", None))
420 420 self.label_42.setText(_translate("MainWindow", "RTI Plot", None))
421 421 self.label_16.setText(_translate("MainWindow", "Height range", None))
422 422 self.label_17.setText(_translate("MainWindow", "dB range", None))
423 423 self.specGraphMagLabel.setText(_translate("MainWindow", "Coh. Magnitud ", None))
424 424 self.label_24.setText(_translate("MainWindow", "Path", None))
425 425 self.label_46.setText(_translate("MainWindow", "Power Profile", None))
426 426 self.label_22.setText(_translate("MainWindow", "Freq/Vel range:", None))
427 427 self.label_41.setText(_translate("MainWindow", "Cross Spectra Plot", None))
428 428 self.specGraphToolPath.setText(_translate("MainWindow", "...", None))
429 429 self.label_6.setText(_translate("MainWindow", "Channel List:", None))
430 430 self.label_40.setText(_translate("MainWindow", "Spectra Plot", None))
431 431 self.label_43.setText(_translate("MainWindow", "Show", None))
432 432 self.label_29.setText(_translate("MainWindow", "Writing Period:", None))
433 433 self.label_47.setText(_translate("MainWindow", "Save", None))
434 434 self.label_19.setText(_translate("MainWindow", "Ftp", None))
435 435 self.label_45.setText(_translate("MainWindow", "Noise", None))
436 436 self.label_48.setText(_translate("MainWindow", "Time Range:", None))
437 437 self.specGraphPhaseLabel.setText(_translate("MainWindow", "Coh. Phase:", None))
438 438 self.label_48.hide()
439 439 self.specGgraphTimeRange.hide()
440 440 self.tabWidgetSpectra.setTabText(self.tabWidgetSpectra.indexOf(self.tabgraphSpectra), _translate("MainWindow", "Graphics", None))
441 441
442 442 self.label_39.setText(_translate("MainWindow", "Type:", None))
443 443 self.specOutputComData.setItemText(0, _translate("MainWindow", ".pdata", None))
444 444 self.label_34.setText(_translate("MainWindow", "Path:", None))
445 445 self.specOutputToolPath.setText(_translate("MainWindow", "...", None))
446 446 self.label_9.setText(_translate("MainWindow", "Blocks per File: ", None))
447 447 self.label_38.setText(_translate("MainWindow", "Profile per Block: ", None))
448 448 self.tabWidgetSpectra.setTabText(self.tabWidgetSpectra.indexOf(self.taboutputSpectra), _translate("MainWindow", "Output", None))
449 449
450 450 self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabSpectra), _translate("MainWindow", "Spectra", None))
451 451 No newline at end of file
@@ -1,324 +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 70 self.volOpComProfile.addItem(_fromUtf8(""))
71 71 self.gridLayout.addWidget(self.volOpComProfile, 7, 0, 1, 3)
72 72 self.volOpCebDecodification = QtGui.QCheckBox(self.tabopVoltage)
73 73 self.volOpCebDecodification.setObjectName(_fromUtf8("volOpCebDecodification"))
74 74 self.gridLayout.addWidget(self.volOpCebDecodification, 8, 0, 1, 3)
75 75 self.volOpProfile = QtGui.QLineEdit(self.tabopVoltage)
76 76 self.volOpProfile.setObjectName(_fromUtf8("volOpProfile"))
77 77 self.gridLayout.addWidget(self.volOpProfile, 7, 4, 1, 1)
78 78 self.volOpFilter = QtGui.QLineEdit(self.tabopVoltage)
79 79 self.volOpFilter.setObjectName(_fromUtf8("volOpFilter"))
80 80 self.gridLayout.addWidget(self.volOpFilter, 5, 4, 1, 1)
81 81 spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
82 82 self.gridLayout.addItem(spacerItem, 6, 4, 1, 1)
83 83 spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
84 84 self.gridLayout.addItem(spacerItem1, 8, 4, 1, 1)
85 85 spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
86 86 self.gridLayout.addItem(spacerItem2, 3, 4, 1, 1)
87 87 self.volOpChannel = QtGui.QLineEdit(self.tabopVoltage)
88 88 self.volOpChannel.setObjectName(_fromUtf8("volOpChannel"))
89 89 self.gridLayout.addWidget(self.volOpChannel, 2, 4, 1, 1)
90 90 self.volOpCebChannels = QtGui.QCheckBox(self.tabopVoltage)
91 91 self.volOpCebChannels.setObjectName(_fromUtf8("volOpCebChannels"))
92 92 self.gridLayout.addWidget(self.volOpCebChannels, 1, 0, 1, 3)
93 93 self.volOpCebHeights = QtGui.QCheckBox(self.tabopVoltage)
94 94 self.volOpCebHeights.setObjectName(_fromUtf8("volOpCebHeights"))
95 95 self.gridLayout.addWidget(self.volOpCebHeights, 3, 0, 1, 3)
96 96 self.volOpCebFilter = QtGui.QCheckBox(self.tabopVoltage)
97 97 self.volOpCebFilter.setObjectName(_fromUtf8("volOpCebFilter"))
98 98 self.gridLayout.addWidget(self.volOpCebFilter, 5, 0, 1, 3)
99 99 self.volOpRadarfrequency = QtGui.QLineEdit(self.tabopVoltage)
100 100 self.volOpRadarfrequency.setObjectName(_fromUtf8("volOpRadarfrequency"))
101 101 self.gridLayout.addWidget(self.volOpRadarfrequency, 0, 4, 1, 1)
102 102 self.volOpCebRadarfrequency = QtGui.QCheckBox(self.tabopVoltage)
103 103 self.volOpCebRadarfrequency.setObjectName(_fromUtf8("volOpCebRadarfrequency"))
104 104 self.gridLayout.addWidget(self.volOpCebRadarfrequency, 0, 0, 1, 3)
105 105 spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
106 106 self.gridLayout.addItem(spacerItem3, 1, 4, 1, 1)
107 107 self.volOpCebFlip = QtGui.QCheckBox(self.tabopVoltage)
108 108 self.volOpCebFlip.setObjectName(_fromUtf8("volOpCebFlip"))
109 109 self.gridLayout.addWidget(self.volOpCebFlip, 11, 0, 1, 3)
110 110 self.volOpFlip = QtGui.QLineEdit(self.tabopVoltage)
111 111 self.volOpFlip.setObjectName(_fromUtf8("volOpFlip"))
112 112 self.gridLayout.addWidget(self.volOpFlip, 11, 4, 1, 1)
113 113
114 114 self.volOpCebCohInt = QtGui.QCheckBox(self.tabopVoltage)
115 115 self.volOpCebCohInt.setObjectName(_fromUtf8("volOpCebCohInt"))
116 116 self.gridLayout.addWidget(self.volOpCebCohInt, 12, 0, 1, 3)
117 117 self.volOpCohInt = QtGui.QLineEdit(self.tabopVoltage)
118 118 self.volOpCohInt.setObjectName(_fromUtf8("volOpCohInt"))
119 119 self.gridLayout.addWidget(self.volOpCohInt, 12, 4, 1, 1)
120 120
121 121 self.volLabCodeMode = QtGui.QLabel(self.tabopVoltage)
122 122 self.volLabCodeMode.setObjectName(_fromUtf8("volLabCodeMode"))
123 123 self.gridLayout.addWidget(self.volLabCodeMode, 8, 2, 1, 1)
124 124 self.volLabCodeType = QtGui.QLabel(self.tabopVoltage)
125 125 self.volLabCodeType.setObjectName(_fromUtf8("volLabCodeType"))
126 126 self.gridLayout.addWidget(self.volLabCodeType, 9, 2, 1, 1)
127 127 self.volLabCode = QtGui.QLabel(self.tabopVoltage)
128 128 self.volLabCode.setObjectName(_fromUtf8("volLabCode"))
129 129 self.gridLayout.addWidget(self.volLabCode, 10, 2, 1, 1)
130 130 self.volOpComMode = QtGui.QComboBox(self.tabopVoltage)
131 131 self.volOpComMode.setObjectName(_fromUtf8("volOpComMode"))
132 132 self.volOpComMode.addItem(_fromUtf8(""))
133 133 self.volOpComMode.addItem(_fromUtf8(""))
134 134 self.gridLayout.addWidget(self.volOpComMode, 8, 4, 1, 1)
135 135 self.volOpComCode = QtGui.QComboBox(self.tabopVoltage)
136 136 self.volOpComCode.setObjectName(_fromUtf8("volOpComCode"))
137 137 self.volOpComCode.addItem(_fromUtf8(""))
138 138 self.volOpComCode.addItem(_fromUtf8(""))
139 139 self.volOpComCode.addItem(_fromUtf8(""))
140 140 self.volOpComCode.addItem(_fromUtf8(""))
141 141 self.volOpComCode.addItem(_fromUtf8(""))
142 142 self.volOpComCode.addItem(_fromUtf8(""))
143 143 self.volOpComCode.addItem(_fromUtf8(""))
144 144 self.volOpComCode.addItem(_fromUtf8(""))
145 145 self.volOpComCode.addItem(_fromUtf8(""))
146 146 self.volOpComCode.addItem(_fromUtf8(""))
147 147 self.volOpComCode.addItem(_fromUtf8(""))
148 148 self.volOpComCode.addItem(_fromUtf8(""))
149 149 self.volOpComCode.addItem(_fromUtf8(""))
150 150 self.volOpComCode.addItem(_fromUtf8(""))
151 151 self.gridLayout.addWidget(self.volOpComCode, 9, 4, 1, 1)
152 152 self.tabWidgetVoltage.addTab(self.tabopVoltage, _fromUtf8(""))
153 153 self.volOpCode = QtGui.QLineEdit(self.tabopVoltage)
154 154 self.volOpCode.setObjectName(_fromUtf8("volOpCode"))
155 155 self.gridLayout.addWidget(self.volOpCode, 10, 4, 1, 1)
156 156
157 157 self.tabgraphVoltage = QtGui.QWidget()
158 158 self.tabgraphVoltage.setObjectName(_fromUtf8("tabgraphVoltage"))
159 159 self.gridLayout_6 = QtGui.QGridLayout(self.tabgraphVoltage)
160 160 self.gridLayout_6.setObjectName(_fromUtf8("gridLayout_6"))
161 161 spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
162 162 self.gridLayout_6.addItem(spacerItem4, 12, 3, 1, 1)
163 163 self.volGraphfreqrange = QtGui.QLineEdit(self.tabgraphVoltage)
164 164 self.volGraphfreqrange.setObjectName(_fromUtf8("volGraphfreqrange"))
165 165 self.gridLayout_6.addWidget(self.volGraphfreqrange, 9, 1, 1, 6)
166 166 self.volGraphPrefix = QtGui.QLineEdit(self.tabgraphVoltage)
167 167 self.volGraphPrefix.setObjectName(_fromUtf8("volGraphPrefix"))
168 168 self.gridLayout_6.addWidget(self.volGraphPrefix, 2, 1, 1, 6)
169 169 self.volGraphToolPath = QtGui.QToolButton(self.tabgraphVoltage)
170 170 self.volGraphToolPath.setObjectName(_fromUtf8("volGraphToolPath"))
171 171 self.gridLayout_6.addWidget(self.volGraphToolPath, 1, 5, 1, 2)
172 172 self.volGraphPath = QtGui.QLineEdit(self.tabgraphVoltage)
173 173 self.volGraphPath.setObjectName(_fromUtf8("volGraphPath"))
174 174 self.gridLayout_6.addWidget(self.volGraphPath, 1, 1, 1, 4)
175 175 self.label_14 = QtGui.QLabel(self.tabgraphVoltage)
176 176 self.label_14.setObjectName(_fromUtf8("label_14"))
177 177 self.gridLayout_6.addWidget(self.label_14, 6, 0, 1, 1)
178 178 spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
179 179 self.gridLayout_6.addItem(spacerItem5, 3, 3, 1, 1)
180 180 self.label_8 = QtGui.QLabel(self.tabgraphVoltage)
181 181 self.label_8.setObjectName(_fromUtf8("label_8"))
182 182 self.gridLayout_6.addWidget(self.label_8, 8, 0, 1, 1)
183 183 self.label_49 = QtGui.QLabel(self.tabgraphVoltage)
184 184 self.label_49.setObjectName(_fromUtf8("label_49"))
185 185 self.gridLayout_6.addWidget(self.label_49, 4, 3, 1, 1)
186 186 self.label_51 = QtGui.QLabel(self.tabgraphVoltage)
187 187 self.label_51.setObjectName(_fromUtf8("label_51"))
188 188 self.gridLayout_6.addWidget(self.label_51, 9, 0, 1, 1)
189 189 self.volGraphCebshow = QtGui.QCheckBox(self.tabgraphVoltage)
190 190 self.volGraphCebshow.setText(_fromUtf8(""))
191 191 self.volGraphCebshow.setObjectName(_fromUtf8("volGraphCebshow"))
192 192 self.gridLayout_6.addWidget(self.volGraphCebshow, 6, 3, 1, 1)
193 193 self.label_12 = QtGui.QLabel(self.tabgraphVoltage)
194 194 self.label_12.setObjectName(_fromUtf8("label_12"))
195 195 self.gridLayout_6.addWidget(self.label_12, 1, 0, 1, 1)
196 196 self.label_13 = QtGui.QLabel(self.tabgraphVoltage)
197 197 self.label_13.setObjectName(_fromUtf8("label_13"))
198 198 self.gridLayout_6.addWidget(self.label_13, 2, 0, 1, 1)
199 199 self.label_52 = QtGui.QLabel(self.tabgraphVoltage)
200 200 self.label_52.setObjectName(_fromUtf8("label_52"))
201 201 self.gridLayout_6.addWidget(self.label_52, 11, 0, 1, 1)
202 202 spacerItem6 = QtGui.QSpacerItem(40, 12, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
203 203 self.gridLayout_6.addItem(spacerItem6, 14, 5, 1, 2)
204 204 spacerItem7 = QtGui.QSpacerItem(18, 12, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
205 205 self.gridLayout_6.addItem(spacerItem7, 14, 3, 1, 1)
206 206 self.volGraphChannelList = QtGui.QLineEdit(self.tabgraphVoltage)
207 207 self.volGraphChannelList.setObjectName(_fromUtf8("volGraphChannelList"))
208 208 self.gridLayout_6.addWidget(self.volGraphChannelList, 8, 1, 1, 6)
209 209 self.volGraphHeightrange = QtGui.QLineEdit(self.tabgraphVoltage)
210 210 self.volGraphHeightrange.setObjectName(_fromUtf8("volGraphHeightrange"))
211 211 self.gridLayout_6.addWidget(self.volGraphHeightrange, 11, 1, 1, 6)
212 212 self.label_50 = QtGui.QLabel(self.tabgraphVoltage)
213 213 self.label_50.setObjectName(_fromUtf8("label_50"))
214 214 self.gridLayout_6.addWidget(self.label_50, 4, 4, 1, 1)
215 215 self.volGraphCebSave = QtGui.QCheckBox(self.tabgraphVoltage)
216 216 self.volGraphCebSave.setText(_fromUtf8(""))
217 217 self.volGraphCebSave.setObjectName(_fromUtf8("volGraphCebSave"))
218 218 self.gridLayout_6.addWidget(self.volGraphCebSave, 6, 4, 1, 1)
219 219 self.tabWidgetVoltage.addTab(self.tabgraphVoltage, _fromUtf8(""))
220 220
221 221 self.taboutputVoltage = QtGui.QWidget()
222 222 self.taboutputVoltage.setObjectName(_fromUtf8("taboutputVoltage"))
223 223 self.gridLayout_12 = QtGui.QGridLayout(self.taboutputVoltage)
224 224 self.gridLayout_12.setObjectName(_fromUtf8("gridLayout_12"))
225 225 self.label_36 = QtGui.QLabel(self.taboutputVoltage)
226 226 self.label_36.setObjectName(_fromUtf8("label_36"))
227 227 self.gridLayout_12.addWidget(self.label_36, 0, 0, 1, 1)
228 228 self.label_37 = QtGui.QLabel(self.taboutputVoltage)
229 229 self.label_37.setObjectName(_fromUtf8("label_37"))
230 230 self.gridLayout_12.addWidget(self.label_37, 1, 0, 1, 1)
231 231 self.volOutputPath = QtGui.QLineEdit(self.taboutputVoltage)
232 232 self.volOutputPath.setObjectName(_fromUtf8("volOutputPath"))
233 233 self.gridLayout_12.addWidget(self.volOutputPath, 1, 2, 1, 1)
234 234 self.volOutputToolPath = QtGui.QToolButton(self.taboutputVoltage)
235 235 self.volOutputToolPath.setObjectName(_fromUtf8("volOutputToolPath"))
236 236 self.gridLayout_12.addWidget(self.volOutputToolPath, 1, 3, 1, 1)
237 237 self.volOutputComData = QtGui.QComboBox(self.taboutputVoltage)
238 238 self.volOutputComData.setObjectName(_fromUtf8("volOutputComData"))
239 239 self.volOutputComData.addItem(_fromUtf8(""))
240 240 self.gridLayout_12.addWidget(self.volOutputComData, 0, 2, 1, 2)
241 241 spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
242 242 self.gridLayout_12.addItem(spacerItem8, 5, 2, 1, 1)
243 243 self.volOutputblocksperfile = QtGui.QLineEdit(self.taboutputVoltage)
244 244 self.volOutputblocksperfile.setObjectName(_fromUtf8("volOutputblocksperfile"))
245 245 self.gridLayout_12.addWidget(self.volOutputblocksperfile, 3, 2, 1, 1)
246 246 self.label_7 = QtGui.QLabel(self.taboutputVoltage)
247 247 self.label_7.setObjectName(_fromUtf8("label_7"))
248 248 self.gridLayout_12.addWidget(self.label_7, 3, 0, 1, 1)
249 249 self.label_35 = QtGui.QLabel(self.taboutputVoltage)
250 250 self.label_35.setObjectName(_fromUtf8("label_35"))
251 251 self.gridLayout_12.addWidget(self.label_35, 4, 0, 1, 1)
252 252 self.volOutputprofilesperblock = QtGui.QLineEdit(self.taboutputVoltage)
253 253 self.volOutputprofilesperblock.setObjectName(_fromUtf8("volOutputprofilesperblock"))
254 254 self.gridLayout_12.addWidget(self.volOutputprofilesperblock, 4, 2, 1, 1)
255 255 self.tabWidgetVoltage.addTab(self.taboutputVoltage, _fromUtf8(""))
256 256 self.gridLayout_3.addWidget(self.tabWidgetVoltage, 0, 1, 1, 1)
257 257
258 258 self.tabWidgetProject.addTab(self.tabVoltage, _fromUtf8(""))
259 259
260 260 self.tabWidgetVoltage.setCurrentIndex(0)
261 261
262 262 def retranslateUi(self):
263 263
264 264 self.volOpOk.setText(_translate("MainWindow", "Ok", None))
265 265 self.volGraphClear.setText(_translate("MainWindow", "Clear", None))
266 266 self.volOpComHeights.setItemText(0, _translate("MainWindow", "Value", None))
267 267 self.volOpComHeights.setItemText(1, _translate("MainWindow", "Index", None))
268 268 self.volOpComChannels.setItemText(0, _translate("MainWindow", "Value", None))
269 269 self.volOpComChannels.setItemText(1, _translate("MainWindow", "Index", None))
270 270 self.volOpCebProfile.setText(_translate("MainWindow", "Profile Selector", None))
271 271 self.volOpComProfile.setItemText(0, _translate("MainWindow", "Profile List", None))
272 272 self.volOpComProfile.setItemText(1, _translate("MainWindow", "Profile Range", None))
273 273 self.volOpComProfile.setItemText(2, _translate("MainWindow", "List of Profile Ranges", None))
274 274 self.volOpCebDecodification.setText(_translate("MainWindow", "Decoder", None))
275 275 self.volOpCebCohInt.setText(_translate("MainWindow", "Coherent Integration", None))
276 276 self.volOpCebFlip.setText(_translate("MainWindow", "Flip", None))
277 277 self.volLabCodeType.setText(_translate("MainWindow", "Code type:", None))
278 278 self.volOpCebChannels.setText(_translate("MainWindow", "Select Channels", None))
279 279 self.volOpCebHeights.setText(_translate("MainWindow", "Select Heights", None))
280 280 self.volOpCebFilter.setText(_translate("MainWindow", "Filter", None))
281 self.volOpCebRadarfrequency.setText(_translate("MainWindow", "Radar wavelength", None))
281 self.volOpCebRadarfrequency.setText(_translate("MainWindow", "Radar frequency (MHz)", None))
282 282 self.volLabCodeMode.setText(_translate("MainWindow", "Mode:", None))
283 283 self.volLabCode.setText(_translate("MainWindow", "Code:", None))
284 284 self.volOpComCode.setItemText(0, _translate("MainWindow", "Read from header", None))
285 285 self.volOpComCode.setItemText(1, _translate("MainWindow", "Barker 3", None))
286 286 self.volOpComCode.setItemText(2, _translate("MainWindow", "Barker 4", None))
287 287 self.volOpComCode.setItemText(3, _translate("MainWindow", "Barker 5", None))
288 288 self.volOpComCode.setItemText(4, _translate("MainWindow", "Barker 7", None))
289 289 self.volOpComCode.setItemText(5, _translate("MainWindow", "Barker 11", None))
290 290 self.volOpComCode.setItemText(6, _translate("MainWindow", "Barker 13", None))
291 291 self.volOpComCode.setItemText(7, _translate("MainWindow", "Barker 3 + Comp.", None))
292 292 self.volOpComCode.setItemText(8, _translate("MainWindow", "Barker 4 + Comp.", None))
293 293 self.volOpComCode.setItemText(9, _translate("MainWindow", "Barker 5 + Comp.", None))
294 294 self.volOpComCode.setItemText(10, _translate("MainWindow", "Barker 7 + Comp.", None))
295 295 self.volOpComCode.setItemText(11, _translate("MainWindow", "Barker 11+ Comp.", None))
296 296 self.volOpComCode.setItemText(12, _translate("MainWindow", "Barker 13+ Comp.", None))
297 297 self.volOpComCode.setItemText(13, _translate("MainWindow", "User defined", None))
298 298 self.volOpComMode.setItemText(0, _translate("MainWindow", "Time", None))
299 299 self.volOpComMode.setItemText(1, _translate("MainWindow", "Frequency", None))
300 300 self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.tabopVoltage), _translate("MainWindow", "Operation", None))
301 301
302 302 self.volGraphToolPath.setText(_translate("MainWindow", "...", None))
303 303 self.label_14.setText(_translate("MainWindow", "Scope", None))
304 304 self.label_8.setText(_translate("MainWindow", "Channel List", None))
305 305 self.label_49.setText(_translate("MainWindow", "Show", None))
306 306 self.label_51.setText(_translate("MainWindow", "Height range", None))
307 307 self.label_12.setText(_translate("MainWindow", "Path :", None))
308 308 self.label_13.setText(_translate("MainWindow", "Figure name:", None))
309 309 self.label_52.setText(_translate("MainWindow", "Amplitude", None))
310 310 self.label_50.setText(_translate("MainWindow", "Save", None))
311 311 self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.tabgraphVoltage), _translate("MainWindow", "Graphics", None))
312 312
313 313 self.label_36.setText(_translate("MainWindow", "Type:", None))
314 314 self.label_37.setText(_translate("MainWindow", "Path:", None))
315 315 self.volOutputToolPath.setText(_translate("MainWindow", "...", None))
316 316 self.volOutputComData.setItemText(0, _translate("MainWindow", ".rawdata", None))
317 317 self.label_7.setText(_translate("MainWindow", "Blocks per File : ", None))
318 318 self.label_35.setText(_translate("MainWindow", "Profiles per Block: ", None))
319 319 self.tabWidgetVoltage.setTabText(self.tabWidgetVoltage.indexOf(self.taboutputVoltage), _translate("MainWindow", "Output", None))
320 320
321 321 self.tabWidgetProject.setTabText(self.tabWidgetProject.indexOf(self.tabVoltage), _translate("MainWindow", "Voltage", None))
322 322
323 323
324 324 No newline at end of file
@@ -1,581 +1,583
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 nProfiles = self.__sample_rate #Number of profiles by second
57 57
58 58 self.dataOut.radarControllerHeaderObj = RadarControllerHeader(ippKm=self.__ippKm,
59 59 txA=0,
60 60 txB=0,
61 61 nWindows=1,
62 62 nHeights=self.__nSamples,
63 63 firstHeight=self.__firstHeigth,
64 64 deltaHeight=self.__deltaHeigth,
65 65 codeType=self.__codeType,
66 66 nCode=self.__nCode, nBaud=self.__nBaud,
67 67 code = self.__code)
68 68
69 69 self.dataOut.systemHeaderObj = SystemHeader(nSamples=self.__nSamples,
70 70 nProfiles=nProfiles,
71 71 nChannels=len(self.__channelList),
72 72 adcResolution=14)
73 73
74 74 self.dataOut.type = "Voltage"
75 75
76 76 self.dataOut.data = None
77 77
78 78 self.dataOut.dtype = numpy.dtype([('real','<i8'),('imag','<i8')])
79 79
80 80 # self.dataOut.nChannels = 0
81 81
82 82 # self.dataOut.nHeights = 0
83 83
84 84 self.dataOut.nProfiles = nProfiles
85 85
86 86 self.dataOut.heightList = self.__firstHeigth + numpy.arange(self.__nSamples, dtype = numpy.float)*self.__deltaHeigth
87 87
88 88 self.dataOut.channelList = self.__channelList
89 89
90 90 self.dataOut.blocksize = self.dataOut.getNChannels() * self.dataOut.getNHeights()
91 91
92 92 # self.dataOut.channelIndexList = None
93 93
94 94 self.dataOut.flagNoData = True
95 95
96 96 #Set to TRUE if the data is discontinuous
97 97 self.dataOut.flagDiscontinuousBlock = False
98 98
99 99 self.dataOut.utctime = None
100 100
101 101 self.dataOut.timeZone = self.__timezone/60 #timezone like jroheader, difference in minutes between UTC and localtime
102 102
103 103 self.dataOut.dstFlag = 0
104 104
105 105 self.dataOut.errorCount = 0
106 106
107 107 self.dataOut.nCohInt = 1
108 108
109 109 self.dataOut.flagDecodeData = False #asumo que la data esta decodificada
110 110
111 111 self.dataOut.flagDeflipData = False #asumo que la data esta sin flip
112 112
113 113 self.dataOut.flagShiftFFT = False
114 114
115 115 self.dataOut.ippSeconds = 1.0*self.__nSamples/self.__sample_rate
116 116
117 117 #Time interval between profiles
118 118 #self.dataOut.timeInterval = self.dataOut.ippSeconds * self.dataOut.nCohInt
119 119
120 120 self.dataOut.frequency = self.__frequency
121 121
122 122 self.dataOut.realtime = self.__online
123 123
124 124 def findDatafiles(self, path, startDate=None, endDate=None):
125 125
126 126 try:
127 127 digitalReadObj = digital_rf_hdf5.read_hdf5(path, load_all_metadata=True)
128 128 except:
129 129 digitalReadObj = digital_rf_hdf5.read_hdf5(path)
130 130
131 131 channelNameList = digitalReadObj.get_channels()
132 132
133 133 if not channelNameList:
134 134 return []
135 135
136 136 metadata_dict = digitalReadObj.get_rf_file_metadata(channelNameList[0])
137 137
138 138 sample_rate = metadata_dict['sample_rate'][0]
139 139
140 140 this_metadata_file = digitalReadObj.get_metadata(channelNameList[0])
141 141
142 142 try:
143 143 timezone = this_metadata_file['timezone'].value
144 144 except:
145 145 timezone = 0
146 146
147 147 startUTCSecond, endUTCSecond = digitalReadObj.get_bounds(channelNameList[0])/sample_rate - timezone
148 148
149 149 startDatetime = datetime.datetime.utcfromtimestamp(startUTCSecond)
150 150 endDatatime = datetime.datetime.utcfromtimestamp(endUTCSecond)
151 151
152 152 if not startDate:
153 153 startDate = startDatetime.date()
154 154
155 155 if not endDate:
156 156 endDate = endDatatime.date()
157 157
158 158 dateList = []
159 159
160 160 thisDatetime = startDatetime
161 161
162 162 while(thisDatetime<=endDatatime):
163 163
164 164 thisDate = thisDatetime.date()
165 165
166 166 if thisDate < startDate:
167 167 continue
168 168
169 169 if thisDate > endDate:
170 170 break
171 171
172 172 dateList.append(thisDate)
173 173 thisDatetime += datetime.timedelta(1)
174 174
175 175 return dateList
176 176
177 177 def setup(self, path = None,
178 178 startDate = None,
179 179 endDate = None,
180 180 startTime = datetime.time(0,0,0),
181 181 endTime = datetime.time(23,59,59),
182 182 channelList = None,
183 183 nSamples = None,
184 184 ippKm = 60,
185 185 online = False,
186 186 delay = 60,
187 187 buffer_size = None,
188 188 nbuffer = 1024,
189 189 **kwargs):
190 190 '''
191 191 In this method we should set all initial parameters.
192 192
193 193 Inputs:
194 194 path
195 195 startDate
196 196 endDate
197 197 startTime
198 198 endTime
199 199 set
200 200 expLabel
201 201 ext
202 202 online
203 203 delay
204 204 '''
205 205
206 206 if not buffer_size:
207 207 buffer_size = nbuffer
208 208
209 209 try:
210 210 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path, load_all_metadata=True)
211 211 except:
212 212 self.digitalReadObj = digital_rf_hdf5.read_hdf5(path)
213 213
214 214 channelNameList = self.digitalReadObj.get_channels()
215 215
216 216 if not channelNameList:
217 217 raise IOError, "[Reading] The path doesn,t have any files .. "
218 218
219 219 if not channelList:
220 220 channelList = range(len(channelNameList))
221 221
222 222 ########## Reading metadata ######################
223 223
224 224 metadata_dict = self.digitalReadObj.get_rf_file_metadata(channelNameList[channelList[0]])
225 225
226 226 self.__sample_rate = metadata_dict['sample_rate'][0]
227 227 self.__samples_per_file = metadata_dict['samples_per_file'][0]
228 228 self.__deltaHeigth = 1e6*0.15/self.__sample_rate
229 229
230 230 this_metadata_file = self.digitalReadObj.get_metadata(channelNameList[channelList[0]])
231 231
232 232 self.__frequency = this_metadata_file['center_frequencies'].value
233 233 try:
234 234 self.__timezone = this_metadata_file['timezone'].value
235 235 except:
236 236 self.__timezone = 0
237 237
238 238 self.__firstHeigth = 0
239 239
240 240 try:
241 241 codeType = this_metadata_file['codeType'].value
242 242 except:
243 243 codeType = 0
244 244
245 245 nCode = 0
246 246 nBaud = 0
247 247 code = None
248 248
249 249 if codeType:
250 250 nCode = this_metadata_file['nCode'].value
251 251 nBaud = this_metadata_file['nBaud'].value
252 252 code = this_metadata_file['code'].value
253 253
254 254 if not ippKm:
255 255 try:
256 256 #seconds to km
257 257 ippKm = 1e6*0.15*this_metadata_file['ipp'].value
258 258 except:
259 259 ippKm = None
260 260
261 261 ####################################################
262 262 startUTCSecond = None
263 263 endUTCSecond = None
264 264
265 265 if startDate:
266 266 startDatetime = datetime.datetime.combine(startDate, startTime)
267 267 startUTCSecond = (startDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
268 268
269 269 if endDate:
270 270 endDatetime = datetime.datetime.combine(endDate, endTime)
271 271 endUTCSecond = (endDatetime-datetime.datetime(1970,1,1)).total_seconds() + self.__timezone
272 272
273 273 start_index, end_index = self.digitalReadObj.get_bounds(channelNameList[channelList[0]])
274 274
275 275 if not startUTCSecond:
276 276 startUTCSecond = start_index/self.__sample_rate
277 277
278 278 if start_index > startUTCSecond*self.__sample_rate:
279 279 startUTCSecond = start_index/self.__sample_rate
280 280
281 281 if not endUTCSecond:
282 282 endUTCSecond = end_index/self.__sample_rate
283 283
284 284 if end_index < endUTCSecond*self.__sample_rate:
285 285 endUTCSecond = end_index/self.__sample_rate
286 286
287 287 if not nSamples:
288 288 if not ippKm:
289 289 raise ValueError, "[Reading] nSamples or ippKm should be defined"
290 290
291 291 nSamples = ippKm / (1e6*0.15/self.__sample_rate)
292 292
293 293 channelBoundList = []
294 294 channelNameListFiltered = []
295 295
296 296 for thisIndexChannel in channelList:
297 297 thisChannelName = channelNameList[thisIndexChannel]
298 298 start_index, end_index = self.digitalReadObj.get_bounds(thisChannelName)
299 299 channelBoundList.append((start_index, end_index))
300 300 channelNameListFiltered.append(thisChannelName)
301 301
302 302 self.profileIndex = 0
303 303
304 304 self.__delay = delay
305 305 self.__ippKm = ippKm
306 306 self.__codeType = codeType
307 307 self.__nCode = nCode
308 308 self.__nBaud = nBaud
309 309 self.__code = code
310 310
311 311 self.__datapath = path
312 312 self.__online = online
313 313 self.__channelList = channelList
314 314 self.__channelNameList = channelNameListFiltered
315 315 self.__channelBoundList = channelBoundList
316 316 self.__nSamples = nSamples
317 317 self.__samples_to_read = buffer_size*nSamples
318 318 self.__nChannels = len(self.__channelList)
319 319
320 320 self.__startUTCSecond = startUTCSecond
321 321 self.__endUTCSecond = endUTCSecond
322 322
323 323 self.__timeInterval = 1.0 * self.__samples_to_read/self.__sample_rate #Time interval
324 324
325 325 if online:
326 326 # self.__thisUnixSample = int(endUTCSecond*self.__sample_rate - 4*self.__samples_to_read)
327 327 startUTCSecond = numpy.floor(endUTCSecond)
328 328
329 329 self.__thisUnixSample = int(startUTCSecond*self.__sample_rate) - self.__samples_to_read
330 330
331 331 self.__data_buffer = numpy.zeros((self.__nChannels, self.__samples_to_read), dtype = numpy.complex)
332 332
333 333 self.__setFileHeader()
334 334 self.isConfig = True
335 335
336 336 print "[Reading] USRP Data was found from %s to %s " %(
337 337 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
338 338 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
339 339 )
340 340
341 print "[Reading] Starting process from ", datetime.datetime.utcfromtimestamp(startUTCSecond - self.__timezone), " to ", datetime.datetime.utcfromtimestamp(endUTCSecond - self.__timezone)
341 print "[Reading] Starting process from %s to %s" %(datetime.datetime.utcfromtimestamp(startUTCSecond - self.__timezone),
342 datetime.datetime.utcfromtimestamp(endUTCSecond - self.__timezone)
343 )
342 344
343 345 def __reload(self):
344 346
345 347 if not self.__online:
346 348 return
347 349
348 350 # print
349 351 # print "%s not in range [%s, %s]" %(
350 352 # datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
351 353 # datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
352 354 # datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
353 355 # )
354 356 print "[Reading] reloading metadata ..."
355 357
356 358 try:
357 359 self.digitalReadObj.reload(complete_update=True)
358 360 except:
359 361 self.digitalReadObj.reload()
360 362
361 363 start_index, end_index = self.digitalReadObj.get_bounds(self.__channelNameList[self.__channelList[0]])
362 364
363 365 if start_index > self.__startUTCSecond*self.__sample_rate:
364 366 self.__startUTCSecond = 1.0*start_index/self.__sample_rate
365 367
366 368 if end_index > self.__endUTCSecond*self.__sample_rate:
367 369 self.__endUTCSecond = 1.0*end_index/self.__sample_rate
368 370 print
369 371 print "[Reading] New timerange found [%s, %s] " %(
370 372 datetime.datetime.utcfromtimestamp(self.__startUTCSecond - self.__timezone),
371 373 datetime.datetime.utcfromtimestamp(self.__endUTCSecond - self.__timezone)
372 374 )
373 375
374 376 return True
375 377
376 378 return False
377 379
378 380 def __readNextBlock(self, seconds=30, volt_scale = 218776):
379 381 '''
380 382 '''
381 383
382 384 #Set the next data
383 385 self.__flagDiscontinuousBlock = False
384 386 self.__thisUnixSample += self.__samples_to_read
385 387
386 388 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
387 389 print "[Reading] There are no more data into selected timerange"
388 390
389 391 self.__reload()
390 392
391 393 if self.__thisUnixSample + 2*self.__samples_to_read > self.__endUTCSecond*self.__sample_rate:
392 394 self.__thisUnixSample -= self.__samples_to_read
393 395 return False
394 396
395 397 indexChannel = 0
396 398
397 399 dataOk = False
398 400
399 401 for thisChannelName in self.__channelNameList:
400 402
401 403 try:
402 404 result = self.digitalReadObj.read_vector_c81d(self.__thisUnixSample,
403 405 self.__samples_to_read,
404 406 thisChannelName)
405 407
406 408 except IOError, e:
407 409 #read next profile
408 410 self.__flagDiscontinuousBlock = True
409 411 print e
410 412 break
411 413
412 414 if result.shape[0] != self.__samples_to_read:
413 415 self.__flagDiscontinuousBlock = True
414 416 print "[Reading] %s: Too few samples were found, just %d samples" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
415 417 result.shape[0])
416 418 break
417 419
418 420 self.__data_buffer[indexChannel,:] = result*volt_scale
419 421
420 422 indexChannel += 1
421 423
422 424 dataOk = True
423 425
424 426 self.__utctime = self.__thisUnixSample/self.__sample_rate
425 427
426 428 if not dataOk:
427 429 return False
428 430
429 431 print "[Reading] %s: %d samples <> %f sec" %(datetime.datetime.utcfromtimestamp(self.thisSecond - self.__timezone),
430 432 self.__samples_to_read,
431 433 self.__timeInterval)
432 434
433 435 self.__bufferIndex = 0
434 436
435 437 return True
436 438
437 439 def __isBufferEmpty(self):
438 440
439 441 if self.__bufferIndex <= self.__samples_to_read - self.__nSamples:
440 442 return False
441 443
442 444 return True
443 445
444 446 def getData(self, seconds=30, nTries=5):
445 447
446 448 '''
447 449 This method gets the data from files and put the data into the dataOut object
448 450
449 451 In addition, increase el the buffer counter in one.
450 452
451 453 Return:
452 454 data : retorna un perfil de voltages (alturas * canales) copiados desde el
453 455 buffer. Si no hay mas archivos a leer retorna None.
454 456
455 457 Affected:
456 458 self.dataOut
457 459 self.profileIndex
458 460 self.flagDiscontinuousBlock
459 461 self.flagIsNewBlock
460 462 '''
461 463
462 464 err_counter = 0
463 465 self.dataOut.flagNoData = True
464 466
465 467 if self.__isBufferEmpty():
466 468
467 469 self.__flagDiscontinuousBlock = False
468 470
469 471 while True:
470 472 if self.__readNextBlock():
471 473 break
472 474
473 475 if self.__thisUnixSample > self.__endUTCSecond*self.__sample_rate:
474 476 return False
475 477
476 478 if self.__flagDiscontinuousBlock:
477 479 print '[Reading] discontinuous block found ... continue with the next block'
478 480 continue
479 481
480 482 if not self.__online:
481 483 return False
482 484
483 485 err_counter += 1
484 486 if err_counter > nTries:
485 487 return False
486 488
487 489 print '[Reading] waiting %d seconds to read a new block' %seconds
488 490 sleep(seconds)
489 491
490 492 self.dataOut.data = self.__data_buffer[:,self.__bufferIndex:self.__bufferIndex+self.__nSamples]
491 493 self.dataOut.utctime = (self.__thisUnixSample + self.__bufferIndex)/self.__sample_rate
492 494 self.dataOut.flagNoData = False
493 495 self.dataOut.flagDiscontinuousBlock = self.__flagDiscontinuousBlock
494 496
495 497 self.__bufferIndex += self.__nSamples
496 498 self.profileIndex += 1
497 499
498 500 return True
499 501
500 502 def printInfo(self):
501 503 '''
502 504 '''
503 505 if self.__printInfo == False:
504 506 return
505 507
506 508 # self.systemHeaderObj.printInfo()
507 509 # self.radarControllerHeaderObj.printInfo()
508 510
509 511 self.__printInfo = False
510 512
511 513 def printNumberOfBlock(self):
512 514 '''
513 515 '''
514 516
515 517 print self.profileIndex
516 518
517 519 def run(self, **kwargs):
518 520 '''
519 521 This method will be called many times so here you should put all your code
520 522 '''
521 523
522 524 if not self.isConfig:
523 525 self.setup(**kwargs)
524 526
525 527 self.getData(seconds=self.__delay)
526 528
527 529 return
528 530
529 531 class USRPWriter(Operation):
530 532 '''
531 533 classdocs
532 534 '''
533 535
534 536 def __init__(self):
535 537 '''
536 538 Constructor
537 539 '''
538 540 self.dataOut = None
539 541
540 542 def setup(self, dataIn, path, blocksPerFile, set=0, ext=None):
541 543 '''
542 544 In this method we should set all initial parameters.
543 545
544 546 Input:
545 547 dataIn : Input data will also be outputa data
546 548
547 549 '''
548 550 self.dataOut = dataIn
549 551
550 552
551 553
552 554
553 555
554 556 self.isConfig = True
555 557
556 558 return
557 559
558 560 def run(self, dataIn, **kwargs):
559 561 '''
560 562 This method will be called many times so here you should put all your code
561 563
562 564 Inputs:
563 565
564 566 dataIn : object with the data
565 567
566 568 '''
567 569
568 570 if not self.isConfig:
569 571 self.setup(dataIn, **kwargs)
570 572
571 573
572 574 if __name__ == '__main__':
573 575
574 576 readObj = USRPReader()
575 577
576 578 while True:
577 579 readObj.run(path='/Volumes/DATA/haystack/passive_radar/')
578 580 # readObj.printInfo()
579 581 readObj.printNumberOfBlock()
580 582
581 583 No newline at end of file
@@ -1,949 +1,965
1 1 '''
2 2 @author: Daniel Suarez
3 3 '''
4 4 import os
5 5 import glob
6 6 import ftplib
7 7
8 8 try:
9 9 import paramiko
10 10 import scp
11 11 except:
12 12 print "You should install paramiko if you will use SSH protocol to upload files to a server"
13 13
14 14 import multiprocessing
15 15
16 16 import time
17 17 import threading
18 18
19 19
20 20 try:
21 21 from gevent import sleep
22 22 except:
23 23 from time import sleep
24 24
25 25 from schainpy.model.proc.jroproc_base import ProcessingUnit, Operation
26 26
27 27 class Remote(threading.Thread):
28 28 """
29 29 Remote is a parent class used to define the behaviour of FTP and SSH class. These clases are
30 30 used to upload or download files remotely.
31 31
32 32 Non-standard Python modules used:
33 33 None
34 34
35 35 Written by:
36 36
37 37 "Miguel Urco":mailto:miguel.urco@jro.igp.gob.pe Jun. 03, 2015
38 38
39 39 """
40 40
41 41 server = None
42 42 username = None
43 43 password = None
44 44 remotefolder = None
45 45
46 46 period = 60
47 47 fileList = []
48 48 bussy = False
49 49
50 50 def __init__(self, server, username, password, remotefolder, period=60):
51 51
52 52 threading.Thread.__init__(self)
53 53 self._stop = threading.Event()
54 54
55 self.setDaemon(True)
56
55 57 self.status = 0
56 58
57 59 self.period = period
58 60 self.fileList = []
59 61 self.bussy = False
60 62
61 63 self.stopFlag = False
62 64
63 65 print "[Remote Server] Opening server: %s" %server
64 66 if self.open(server, username, password, remotefolder):
65 67 print "[Remote Server] %s server was opened successfully" %server
66 68
67 69 def stop(self):
68 70
69 71 self.stopFlag = True
70 72
71 73 def open(self):
72 74 """
73 75 Connect to server and create a connection class (FTP or SSH) to remote server.
74 76 """
75 77 raise NotImplementedError, "Implement this method in child class"
76 78
77 79 def close(self):
78 80 """
79 81 Close connection to server
80 82 """
81 83 raise NotImplementedError, "Implement this method in child class"
82 84
83 85 def mkdir(self, remotefolder):
84 86 """
85 87 Create a folder remotely
86 88 """
87 89 raise NotImplementedError, "Implement this method in child class"
88 90
89 91 def cd(self, remotefolder):
90 92 """
91 93 Change working directory in remote server
92 94 """
93 95 raise NotImplementedError, "Implement this method in child class"
94 96
95 97 def download(self, filename, localfolder=None):
96 98 """
97 99 Download a file from server to local host
98 100 """
99 101 raise NotImplementedError, "Implement this method in child class"
100 102
101 103 def sendFile(self, fullfilename):
102 104 """
103 105 sendFile method is used to upload a local file to the current directory in remote server
104 106
105 107 Inputs:
106 108 fullfilename - full path name of local file to store in remote directory
107 109
108 110 Returns:
109 111 0 in error case else 1
110 112 """
111 113 raise NotImplementedError, "Implement this method in child class"
112 114
113 115 def upload(self, fullfilename, remotefolder=None):
114 116 """
115 117 upload method is used to upload a local file to remote directory. This method changes
116 118 working directory before sending a file.
117 119
118 120 Inputs:
119 121 fullfilename - full path name of local file to store in remote directory
120 122
121 123 remotefolder - remote directory
122 124
123 125 Returns:
124 126 0 in error case else 1
125 127 """
126 128 print "[Remote Server] Uploading %s to %s:%s" %(fullfilename, self.server, self.remotefolder)
127 129
128 130 if not self.status:
129 131 return 0
130 132
131 133 if remotefolder == None:
132 134 remotefolder = self.remotefolder
133 135
134 136 if not self.cd(remotefolder):
135 137 return 0
136 138
137 139 if not self.sendFile(fullfilename):
138 140 print "[Remote Server] Error uploading file %s" %fullfilename
139 141 return 0
140 142
141 143 print "[Remote Server] upload finished successfully"
142 144
143 145 return 1
144 146
145 147 def delete(self, filename):
146 148 """
147 149 Remove a file from remote server
148 150 """
149 151 pass
150 152
151 153 def updateFileList(self, fileList):
152 154 """
153 155 Remove a file from remote server
154 156 """
155 157
156 158 if fileList == self.fileList:
157 return 1
159 return 0
158 160
159 161 init = time.time()
160 162
161 163 while(self.bussy):
162 164 sleep(0.1)
163 165 if time.time() - init > 2*self.period:
164 166 return 0
165 167
166 168 self.fileList = fileList
167 169
168 170 return 1
169 171
170 172 def run(self):
171 173
172 174 if not self.status:
173 175 print "Finishing FTP service"
174 176 return
175 177
176 178 if not self.cd(self.remotefolder):
177 179 raise ValueError, "Could not access to the new remote directory: %s" %self.remotefolder
178 180
179 181 sts = True
180 182
181 183 while True:
182 184
183 185 sleep(self.period)
184 186
185 187 self.bussy = True
186 188
187 189 for thisFile in self.fileList:
188 190 sts = self.upload(thisFile, self.remotefolder)
189 191 if not sts: break
190 192
191 if not sts: break
192
193 193 self.bussy = False
194 194
195 if not sts: break
196
195 197 if self.stopFlag:
196 198 break
197 199
198 200 print "[Remote Server] Thread stopped successfully"
199 201
200 202 class FTPClient(Remote):
201 203
202 204 __ftpClientObj = None
203 205
204 206 def __init__(self, server, username, password, remotefolder, period=60):
205 207 """
206 208 """
207 209 Remote.__init__(self, server, username, password, remotefolder, period)
208 210
209 211 def open(self, server, username, password, remotefolder):
210 212
211 213 """
212 214 This method is used to set FTP parameters and establish a connection to remote server
213 215
214 216 Inputs:
215 217 server - remote server IP Address
216 218
217 219 username - remote server Username
218 220
219 221 password - remote server password
220 222
221 223 remotefolder - remote server current working directory
222 224
223 225 Return: void
224 226
225 227 Affects:
226 228 self.status - in case of error or fail connection this parameter is set to 0 else 1
227 229
228 230 """
229 231
230 232 if server == None:
231 233 raise ValueError, "FTP server should be defined"
232 234
233 235 if username == None:
234 236 raise ValueError, "FTP username should be defined"
235 237
236 238 if password == None:
237 239 raise ValueError, "FTP password should be defined"
238 240
239 241 if remotefolder == None:
240 242 raise ValueError, "FTP remote folder should be defined"
241 243
242 244 try:
243 245 ftpClientObj = ftplib.FTP(server)
244 246 except ftplib.all_errors:
245 247 print "FTP server connection fail: %s" %server
246 248 self.status = 0
247 249 return 0
248 250
249 251 try:
250 252 ftpClientObj.login(username, password)
251 253 except ftplib.all_errors:
252 254 print "FTP username or password are incorrect"
253 255 self.status = 0
254 256 return 0
255 257
256 258 if remotefolder == None:
257 259 remotefolder = ftpClientObj.pwd()
258 260 else:
259 261 try:
260 262 ftpClientObj.cwd(remotefolder)
261 263 except ftplib.all_errors:
262 264 print "FTP remote folder is invalid: %s" %remotefolder
263 265 remotefolder = ftpClientObj.pwd()
264 266
265 267 self.server = server
266 268 self.username = username
267 269 self.password = password
268 270 self.remotefolder = remotefolder
269 271 self.__ftpClientObj = ftpClientObj
270 272 self.status = 1
271 273
272 274 return 1
273 275
274 276 def close(self):
275 277 """
276 278 Close connection to remote server
277 279 """
278 280 if not self.status:
279 281 return 0
280 282
281 283 self.__ftpClientObj.close()
282 284
283 285 def mkdir(self, remotefolder):
284 286 """
285 287 mkdir is used to make a new directory in remote server
286 288
287 289 Input:
288 290 remotefolder - directory name
289 291
290 292 Return:
291 293 0 in error case else 1
292 294 """
293 295 if not self.status:
294 296 return 0
295 297
296 298 try:
297 299 self.__ftpClientObj.mkd(dirname)
298 300 except ftplib.all_errors:
299 301 print "Error creating remote folder: %s" %remotefolder
300 302 return 0
301 303
302 304 return 1
303 305
304 306 def cd(self, remotefolder):
305 307 """
306 308 cd is used to change remote working directory on server
307 309
308 310 Input:
309 311 remotefolder - current working directory
310 312
311 313 Affects:
312 314 self.remotefolder
313 315
314 316 Return:
315 317 0 in case of error else 1
316 318 """
317 319 if not self.status:
318 320 return 0
319 321
320 322 if remotefolder == self.remotefolder:
321 323 return 1
322 324
323 325 try:
324 326 self.__ftpClientObj.cwd(remotefolder)
325 327 except ftplib.all_errors:
326 328 print 'Error changing to %s' %remotefolder
327 329 print 'Trying to create remote folder'
328 330
329 331 if not self.mkdir(remotefolder):
330 332 print 'Remote folder could not be created'
331 333 return 0
332 334
333 335 try:
334 336 self.__ftpClientObj.cwd(remotefolder)
335 337 except ftplib.all_errors:
336 338 return 0
337 339
338 340 self.remotefolder = remotefolder
339 341
340 342 return 1
341 343
342 344 def sendFile(self, fullfilename):
343 345
344 346 if not self.status:
345 347 return 0
346 348
347 349 file = open(fullfilename, 'rb')
348 350
349 filename = os.path.split(fullfilename)[-1]
351 filename = os.path.basename(fullfilename)
350 352
351 353 command = "STOR %s" %filename
352 354
353 355 try:
354 356 self.__ftpClientObj.storbinary(command, file)
355 357 except ftplib.all_errors:
356 358 return 0
357 359
358 360 try:
359 361 self.__ftpClientObj.sendcmd('SITE CHMOD 755 ' + filename)
360 362 except ftplib.all_errors, e:
361 363 print e
362 364
363 365 file.close()
364 366
365 367 return 1
366 368
367 369 class SSHClient(Remote):
368 370
369 371 __sshClientObj = None
370 372 __scpClientObj = None
371 373
372 374 def __init__(self, server, username, password, remotefolder, period=60):
373 375 """
374 376 """
375 377 Remote.__init__(self, server, username, password, remotefolder, period)
376 378
377 379 def open(self, server, username, password, remotefolder, port=22):
378 380
379 381 """
380 382 This method is used to set SSH parameters and establish a connection to a remote server
381 383
382 384 Inputs:
383 385 server - remote server IP Address
384 386
385 387 username - remote server Username
386 388
387 389 password - remote server password
388 390
389 391 remotefolder - remote server current working directory
390 392
391 393 Return: void
392 394
393 395 Affects:
394 396 self.status - in case of error or fail connection this parameter is set to 0 else 1
395 397
396 398 """
397 399
398 400 if server == None:
399 401 raise ValueError, "SSH server should be defined"
400 402
401 403 if username == None:
402 404 raise ValueError, "SSH username should be defined"
403 405
404 406 if password == None:
405 407 raise ValueError, "SSH password should be defined"
406 408
407 409 if remotefolder == None:
408 410 raise ValueError, "SSH remote folder should be defined"
409 411
410 412 try:
411 413 sshClientObj = paramiko.SSHClient()
412 414 except:
413 415 print "SSH server connection fail: %s" %server
414 416 self.status = 0
415 417 return 0
416 418
417 419 sshClientObj.load_system_host_keys()
418 420 sshClientObj.set_missing_host_key_policy(paramiko.WarningPolicy())
419 421
420 422 try:
421 423 sshClientObj.connect(server, username=username, password=password, port=port)
422 424 except :
423 425 print "SSH username or password are incorrect: %s"
424 426 self.status = 0
425 427 return 0
426 428
427 429 scpClientObj = scp.SCPClient(sshClientObj.get_transport(), socket_timeout=30)
428 430
429 431 if remotefolder == None:
430 432 remotefolder = self.pwd()
431 433
432 434 self.server = server
433 435 self.username = username
434 436 self.password = password
435 437 self.__sshClientObj = sshClientObj
436 438 self.__scpClientObj = scpClientObj
437 439 self.status = 1
438 440
439 441 if not self.cd(remotefolder):
440 442 raise ValueError, "Could not access to remote folder: %s" %remotefolder
441 443 return 0
442 444
443 445 self.remotefolder = remotefolder
444 446
445 447 return 1
446 448
447 449 def close(self):
448 450 """
449 451 Close connection to remote server
450 452 """
451 453 if not self.status:
452 454 return 0
453 455
454 456 self.__sshObj.close()
455 457
456 458 def __execute(self, command):
457 459 """
458 460 __execute a command on remote server
459 461
460 462 Input:
461 463 command - Exmaple 'ls -l'
462 464
463 465 Return:
464 466 0 in error case else 1
465 467 """
466 468 if not self.status:
467 469 return 0
468 470
469 471 stdin, stdout, stderr = self.__sshClientObj.exec_command(command)
470 472
471 473 result = stderr.readlines()
472 474 if len(result) > 1:
473 475 return 0
474 476
475 477 result = stdout.readlines()
476 478 if len(result) > 1:
477 479 return result[0][:-1]
478 480
479 481 return 1
480 482
481 483 def mkdir(self, remotefolder):
482 484 """
483 485 mkdir is used to make a new directory in remote server
484 486
485 487 Input:
486 488 remotefolder - directory name
487 489
488 490 Return:
489 491 0 in error case else 1
490 492 """
491 493
492 494 command = 'mkdir %s' %remotefolder
493 495
494 496 return self.__execute(command)
495 497
496 498 def pwd(self):
497 499
498 500 command = 'pwd'
499 501
500 502 return self.__execute(command)
501 503
502 504 def cd(self, remotefolder):
503 505 """
504 506 cd is used to change remote working directory on server
505 507
506 508 Input:
507 509 remotefolder - current working directory
508 510
509 511 Affects:
510 512 self.remotefolder
511 513
512 514 Return:
513 515 0 in case of error else 1
514 516 """
515 517 if not self.status:
516 518 return 0
517 519
518 520 if remotefolder == self.remotefolder:
519 521 return 1
520 522
521 523 chk_command = "cd %s; pwd" %remotefolder
522 524 mkdir_command = "mkdir %s" %remotefolder
523 525
524 526 if not self.__execute(chk_command):
525 527 if not self.__execute(mkdir_command):
526 528 self.remotefolder = None
527 529 return 0
528 530
529 531 self.remotefolder = remotefolder
530 532
531 533 return 1
532 534
533 535 def sendFile(self, fullfilename):
534 536
535 537 if not self.status:
536 538 return 0
537 539
538 540 try:
539 541 self.__scpClientObj.put(fullfilename, remote_path=self.remotefolder)
540 542 except:
541 543 return 0
542 544
543 545 remotefile = os.path.join(self.remotefolder, os.path.split(fullfilename)[-1])
544 546 command = 'chmod 775 %s' %remotefile
545 547
546 548 return self.__execute(command)
547 549
548 550 class SendToServer(ProcessingUnit):
549 551
550 552 def __init__(self):
551 553
552 554 ProcessingUnit.__init__(self)
553 555
554 556 self.isConfig = False
555 557 self.clientObj = None
556 558
557 559 def setup(self, server, username, password, remotefolder, localfolder, ext='.png', period=60, protocol='ftp', **kwargs):
558 560
559 561 self.clientObj = None
560 562 self.localfolder = localfolder
561 563 self.ext = ext
562 564 self.period = period
563 565
564 566 if str.lower(protocol) == 'ftp':
565 567 self.clientObj = FTPClient(server, username, password, remotefolder, period)
566 568
567 569 if str.lower(protocol) == 'ssh':
568 570 self.clientObj = SSHClient(server, username, password, remotefolder, period)
569 571
570 572 if not self.clientObj:
571 573 raise ValueError, "%s has been chosen as remote access protocol but it is not valid" %protocol
572 574
573 575 self.clientObj.start()
574 576
575 577 def findFiles(self):
576 578
577 filenameList = glob.glob1(self.localfolder, '*%s' %self.ext)
579 if not type(self.localfolder) == list:
580 folderList = [self.localfolder]
581 else:
582 folderList = self.localfolder
578 583
579 if len(filenameList) < 1:
580 return []
581
582 fullfilenameList = [os.path.join(self.localfolder, thisFile) for thisFile in filenameList]
584 fullfilenameList = []
585
586 for thisFolder in folderList:
583 587
588 filenameList = glob.glob1(thisFolder, '*%s' %self.ext)
589
590 if len(filenameList) < 1:
591 continue
592
593 for thisFile in filenameList:
594 fullfilename = os.path.join(thisFolder, thisFile)
595 fullfilenameList.append(fullfilename)
596
584 597 return fullfilenameList
585 598
586 599 def run(self, **kwargs):
587 600
588 601 if not self.isConfig:
589 602 self.init = time.time()
590 603 self.setup(**kwargs)
591 604 self.isConfig = True
592 605
593 606 if time.time() - self.init >= self.period:
594 607 fullfilenameList = self.findFiles()
595 self.clientObj.updateFileList(fullfilenameList)
608
609 if self.clientObj.updateFileList(fullfilenameList):
610 print "[Remote Server]: Sending the next files ", str(fullfilenameList)
611
596 612 self.init = time.time()
597 613
598 614 def close(self):
599 615 print "[Remote Server] Stopping thread"
600 616 self.clientObj.stop()
601 617
602 618
603 619 class FTP(object):
604 620 """
605 621 Ftp is a public class used to define custom File Transfer Protocol from "ftplib" python module
606 622
607 623 Non-standard Python modules used: None
608 624
609 625 Written by "Daniel Suarez":mailto:daniel.suarez@jro.igp.gob.pe Oct. 26, 2010
610 626 """
611 627
612 628 def __init__(self,server = None, username=None, password=None, remotefolder=None):
613 629 """
614 630 This method is used to setting parameters for FTP and establishing connection to remote server
615 631
616 632 Inputs:
617 633 server - remote server IP Address
618 634
619 635 username - remote server Username
620 636
621 637 password - remote server password
622 638
623 639 remotefolder - remote server current working directory
624 640
625 641 Return: void
626 642
627 643 Affects:
628 644 self.status - in Error Case or Connection Failed this parameter is set to 1 else 0
629 645
630 646 self.folderList - sub-folder list of remote folder
631 647
632 648 self.fileList - file list of remote folder
633 649
634 650
635 651 """
636 652
637 653 if ((server == None) and (username==None) and (password==None) and (remotefolder==None)):
638 654 server, username, password, remotefolder = self.parmsByDefault()
639 655
640 656 self.server = server
641 657 self.username = username
642 658 self.password = password
643 659 self.remotefolder = remotefolder
644 660 self.file = None
645 661 self.ftp = None
646 662 self.status = 0
647 663
648 664 try:
649 665 self.ftp = ftplib.FTP(self.server)
650 666 self.ftp.login(self.username,self.password)
651 667 self.ftp.cwd(self.remotefolder)
652 668 # print 'Connect to FTP Server: Successfully'
653 669
654 670 except ftplib.all_errors:
655 671 print 'Error FTP Service'
656 672 self.status = 1
657 673 return
658 674
659 675
660 676
661 677 self.dirList = []
662 678
663 679 try:
664 680 self.dirList = self.ftp.nlst()
665 681
666 682 except ftplib.error_perm, resp:
667 683 if str(resp) == "550 No files found":
668 684 print "no files in this directory"
669 685 self.status = 1
670 686 return
671 687
672 688 except ftplib.all_errors:
673 689 print 'Error Displaying Dir-Files'
674 690 self.status = 1
675 691 return
676 692
677 693 self.fileList = []
678 694 self.folderList = []
679 695 #only for test
680 696 for f in self.dirList:
681 697 name, ext = os.path.splitext(f)
682 698 if ext != '':
683 699 self.fileList.append(f)
684 700 # print 'filename: %s - size: %d'%(f,self.ftp.size(f))
685 701
686 702 def parmsByDefault(self):
687 703 server = 'jro-app.igp.gob.pe'
688 704 username = 'wmaster'
689 705 password = 'mst2010vhf'
690 706 remotefolder = '/home/wmaster/graficos'
691 707
692 708 return server, username, password, remotefolder
693 709
694 710
695 711 def mkd(self,dirname):
696 712 """
697 713 mkd is used to make directory in remote server
698 714
699 715 Input:
700 716 dirname - directory name
701 717
702 718 Return:
703 719 1 in error case else 0
704 720 """
705 721 try:
706 722 self.ftp.mkd(dirname)
707 723 except:
708 724 print 'Error creating remote folder:%s'%dirname
709 725 return 1
710 726
711 727 return 0
712 728
713 729
714 730 def delete(self,filename):
715 731 """
716 732 delete is used to delete file in current working directory of remote server
717 733
718 734 Input:
719 735 filename - filename to delete in remote folder
720 736
721 737 Return:
722 738 1 in error case else 0
723 739 """
724 740
725 741 try:
726 742 self.ftp.delete(filename)
727 743 except:
728 744 print 'Error deleting remote file:%s'%filename
729 745 return 1
730 746
731 747 return 0
732 748
733 749 def download(self,filename,localfolder):
734 750 """
735 751 download is used to downloading file from remote folder into local folder
736 752
737 753 Inputs:
738 754 filename - filename to donwload
739 755
740 756 localfolder - directory local to store filename
741 757
742 758 Returns:
743 759 self.status - 1 in error case else 0
744 760 """
745 761
746 762 self.status = 0
747 763
748 764
749 765 if not(filename in self.fileList):
750 766 print 'filename:%s not exists'%filename
751 767 self.status = 1
752 768 return self.status
753 769
754 770 newfilename = os.path.join(localfolder,filename)
755 771
756 772 self.file = open(newfilename, 'wb')
757 773
758 774 try:
759 775 print 'Download: ' + filename
760 776 self.ftp.retrbinary('RETR ' + filename, self.__handleDownload)
761 777 print 'Download Complete'
762 778 except ftplib.all_errors:
763 779 print 'Error Downloading ' + filename
764 780 self.status = 1
765 781 return self.status
766 782
767 783 self.file.close()
768 784
769 785 return self.status
770 786
771 787
772 788 def __handleDownload(self,block):
773 789 """
774 790 __handleDownload is used to handle writing file
775 791 """
776 792 self.file.write(block)
777 793
778 794
779 795 def upload(self,filename,remotefolder=None):
780 796 """
781 797 upload is used to uploading local file to remote directory
782 798
783 799 Inputs:
784 800 filename - full path name of local file to store in remote directory
785 801
786 802 remotefolder - remote directory
787 803
788 804 Returns:
789 805 self.status - 1 in error case else 0
790 806 """
791 807
792 808 if remotefolder == None:
793 809 remotefolder = self.remotefolder
794 810
795 811 self.status = 0
796 812
797 813 try:
798 814 self.ftp.cwd(remotefolder)
799 815
800 816 self.file = open(filename, 'rb')
801 817
802 818 (head, tail) = os.path.split(filename)
803 819
804 820 command = "STOR " + tail
805 821
806 822 print 'Uploading: ' + tail
807 823 self.ftp.storbinary(command, self.file)
808 824 print 'Upload Completed'
809 825
810 826 except ftplib.all_errors:
811 827 print 'Error Uploading ' + tail
812 828 self.status = 1
813 829 return self.status
814 830
815 831 self.file.close()
816 832
817 833 #back to initial directory in __init__()
818 834 self.ftp.cwd(self.remotefolder)
819 835
820 836 return self.status
821 837
822 838
823 839 def dir(self,remotefolder):
824 840 """
825 841 dir is used to change working directory of remote server and get folder and file list
826 842
827 843 Input:
828 844 remotefolder - current working directory
829 845
830 846 Affects:
831 847 self.fileList - file list of working directory
832 848
833 849 Return:
834 850 infoList - list with filenames and size of file in bytes
835 851
836 852 self.folderList - folder list
837 853 """
838 854
839 855 self.remotefolder = remotefolder
840 856 print 'Change to ' + self.remotefolder
841 857 try:
842 858 self.ftp.cwd(remotefolder)
843 859 except ftplib.all_errors:
844 860 print 'Error Change to ' + self.remotefolder
845 861 infoList = None
846 862 self.folderList = None
847 863 return infoList,self.folderList
848 864
849 865 self.dirList = []
850 866
851 867 try:
852 868 self.dirList = self.ftp.nlst()
853 869
854 870 except ftplib.error_perm, resp:
855 871 if str(resp) == "550 No files found":
856 872 print "no files in this directory"
857 873 infoList = None
858 874 self.folderList = None
859 875 return infoList,self.folderList
860 876 except ftplib.all_errors:
861 877 print 'Error Displaying Dir-Files'
862 878 infoList = None
863 879 self.folderList = None
864 880 return infoList,self.folderList
865 881
866 882 infoList = []
867 883 self.fileList = []
868 884 self.folderList = []
869 885 for f in self.dirList:
870 886 name,ext = os.path.splitext(f)
871 887 if ext != '':
872 888 self.fileList.append(f)
873 889 value = (f,self.ftp.size(f))
874 890 infoList.append(value)
875 891
876 892 if ext == '':
877 893 self.folderList.append(f)
878 894
879 895 return infoList,self.folderList
880 896
881 897
882 898 def close(self):
883 899 """
884 900 close is used to close and end FTP connection
885 901
886 902 Inputs: None
887 903
888 904 Return: void
889 905
890 906 """
891 907 self.ftp.close()
892 908
893 909 class SendByFTP(Operation):
894 910
895 911 def __init__(self):
896 912
897 913 self.status = 1
898 914 self.counter = 0
899 915
900 916 def error_print(self, ValueError):
901 917
902 918 print ValueError, 'Error FTP'
903 919 print "don't worry the program is running..."
904 920
905 921 def worker_ftp(self, server, username, password, remotefolder, filenameList):
906 922
907 923 self.ftpClientObj = FTP(server, username, password, remotefolder)
908 924 for filename in filenameList:
909 925 self.ftpClientObj.upload(filename)
910 926 self.ftpClientObj.close()
911 927
912 928 def ftp_thread(self, server, username, password, remotefolder):
913 929 if not(self.status):
914 930 return
915 931
916 932 p = multiprocessing.Process(target=self.worker_ftp, args=(server, username, password, remotefolder, self.filenameList,))
917 933 p.start()
918 934
919 935 p.join(3)
920 936
921 937 if p.is_alive():
922 938 p.terminate()
923 939 p.join()
924 940 print 'killing ftp process...'
925 941 self.status = 0
926 942 return
927 943
928 944 self.status = 1
929 945 return
930 946
931 947 def filterByExt(self, ext, localfolder):
932 948 fnameList = glob.glob1(localfolder,ext)
933 949 self.filenameList = [os.path.join(localfolder,x) for x in fnameList]
934 950
935 951 if len(self.filenameList) == 0:
936 952 self.status = 0
937 953
938 954 def run(self, dataOut, ext, localfolder, remotefolder, server, username, password, period=1):
939 955
940 956 self.counter += 1
941 957 if self.counter >= period:
942 958 self.filterByExt(ext, localfolder)
943 959
944 960 self.ftp_thread(server, username, password, remotefolder)
945 961
946 962 self.counter = 0
947 963
948 964 self.status = 1
949 965
General Comments 0
You need to be logged in to leave comments. Login now