@@ -39,7 +39,7 class ConfBase(): | |||||
39 | def getId(self): |
|
39 | def getId(self): | |
40 |
|
40 | |||
41 | return self.id |
|
41 | return self.id | |
42 |
|
42 | |||
43 | def getNewId(self): |
|
43 | def getNewId(self): | |
44 |
|
44 | |||
45 | return int(self.id) * 10 + len(self.operations) + 1 |
|
45 | return int(self.id) * 10 + len(self.operations) + 1 | |
@@ -61,7 +61,7 class ConfBase(): | |||||
61 | for key, value in self.parameters.items(): |
|
61 | for key, value in self.parameters.items(): | |
62 | if value not in (None, '', ' '): |
|
62 | if value not in (None, '', ' '): | |
63 | params[key] = value |
|
63 | params[key] = value | |
64 |
|
64 | |||
65 | return params |
|
65 | return params | |
66 |
|
66 | |||
67 | def update(self, **kwargs): |
|
67 | def update(self, **kwargs): | |
@@ -72,8 +72,9 class ConfBase(): | |||||
72 | def addParameter(self, name, value, format=None): |
|
72 | def addParameter(self, name, value, format=None): | |
73 | ''' |
|
73 | ''' | |
74 | ''' |
|
74 | ''' | |
75 |
|
75 | if os.path.isdir(value): | ||
76 | if isinstance(value, str) and re.search(r'(\d+/\d+/\d+)', value): |
|
76 | self.parameters[name] = value | |
|
77 | elif isinstance(value, str) and re.search(r'(\d+/\d+/\d+)', value): | |||
77 | self.parameters[name] = datetime.date(*[int(x) for x in value.split('/')]) |
|
78 | self.parameters[name] = datetime.date(*[int(x) for x in value.split('/')]) | |
78 | elif isinstance(value, str) and re.search(r'(\d+:\d+:\d+)', value): |
|
79 | elif isinstance(value, str) and re.search(r'(\d+:\d+:\d+)', value): | |
79 | self.parameters[name] = datetime.time(*[int(x) for x in value.split(':')]) |
|
80 | self.parameters[name] = datetime.time(*[int(x) for x in value.split(':')]) | |
@@ -99,21 +100,21 class ConfBase(): | |||||
99 | params[key] = str(value) |
|
100 | params[key] = str(value) | |
100 |
|
101 | |||
101 | return params |
|
102 | return params | |
102 |
|
103 | |||
103 | def makeXml(self, element): |
|
104 | def makeXml(self, element): | |
104 |
|
105 | |||
105 | xml = SubElement(element, self.ELEMENTNAME) |
|
106 | xml = SubElement(element, self.ELEMENTNAME) | |
106 | for label in self.xml_labels: |
|
107 | for label in self.xml_labels: | |
107 | xml.set(label, str(getattr(self, label))) |
|
108 | xml.set(label, str(getattr(self, label))) | |
108 |
|
109 | |||
109 | for key, value in self.getParameters().items(): |
|
110 | for key, value in self.getParameters().items(): | |
110 | xml_param = SubElement(xml, 'Parameter') |
|
111 | xml_param = SubElement(xml, 'Parameter') | |
111 | xml_param.set('name', key) |
|
112 | xml_param.set('name', key) | |
112 | xml_param.set('value', value) |
|
113 | xml_param.set('value', value) | |
113 |
|
114 | |||
114 | for conf in self.operations: |
|
115 | for conf in self.operations: | |
115 | conf.makeXml(xml) |
|
116 | conf.makeXml(xml) | |
116 |
|
117 | |||
117 | def __str__(self): |
|
118 | def __str__(self): | |
118 |
|
119 | |||
119 | if self.ELEMENTNAME == 'Operation': |
|
120 | if self.ELEMENTNAME == 'Operation': | |
@@ -126,7 +127,7 class ConfBase(): | |||||
126 | s += ' {}: {}\n'.format(key, value) |
|
127 | s += ' {}: {}\n'.format(key, value) | |
127 | else: |
|
128 | else: | |
128 | s += ' {}: {}\n'.format(key, value) |
|
129 | s += ' {}: {}\n'.format(key, value) | |
129 |
|
130 | |||
130 | for conf in self.operations: |
|
131 | for conf in self.operations: | |
131 | s += str(conf) |
|
132 | s += str(conf) | |
132 |
|
133 | |||
@@ -179,7 +180,7 class ProcUnitConf(ConfBase): | |||||
179 | def setup(self, project_id, id, name, datatype, inputId, err_queue): |
|
180 | def setup(self, project_id, id, name, datatype, inputId, err_queue): | |
180 | ''' |
|
181 | ''' | |
181 | ''' |
|
182 | ''' | |
182 |
|
183 | |||
183 | if datatype == None and name == None: |
|
184 | if datatype == None and name == None: | |
184 | raise ValueError('datatype or name should be defined') |
|
185 | raise ValueError('datatype or name should be defined') | |
185 |
|
186 | |||
@@ -205,7 +206,7 class ProcUnitConf(ConfBase): | |||||
205 |
|
206 | |||
206 | i = [1 if x.id==id else 0 for x in self.operations] |
|
207 | i = [1 if x.id==id else 0 for x in self.operations] | |
207 | self.operations.pop(i.index(1)) |
|
208 | self.operations.pop(i.index(1)) | |
208 |
|
209 | |||
209 | def getOperation(self, id): |
|
210 | def getOperation(self, id): | |
210 |
|
211 | |||
211 | for conf in self.operations: |
|
212 | for conf in self.operations: | |
@@ -233,7 +234,7 class ProcUnitConf(ConfBase): | |||||
233 | self.err_queue = err_queue |
|
234 | self.err_queue = err_queue | |
234 | self.operations = [] |
|
235 | self.operations = [] | |
235 | self.parameters = {} |
|
236 | self.parameters = {} | |
236 |
|
237 | |||
237 | for elm in element: |
|
238 | for elm in element: | |
238 | if elm.tag == 'Parameter': |
|
239 | if elm.tag == 'Parameter': | |
239 | self.addParameter(elm.get('name'), elm.get('value')) |
|
240 | self.addParameter(elm.get('name'), elm.get('value')) | |
@@ -254,21 +255,21 class ProcUnitConf(ConfBase): | |||||
254 | log.success('creating process...', self.name) |
|
255 | log.success('creating process...', self.name) | |
255 |
|
256 | |||
256 | for conf in self.operations: |
|
257 | for conf in self.operations: | |
257 |
|
258 | |||
258 | opObj = conf.createObject() |
|
259 | opObj = conf.createObject() | |
259 |
|
260 | |||
260 | log.success('adding operation: {}, type:{}'.format( |
|
261 | log.success('adding operation: {}, type:{}'.format( | |
261 | conf.name, |
|
262 | conf.name, | |
262 | conf.type), self.name) |
|
263 | conf.type), self.name) | |
263 |
|
264 | |||
264 | procUnitObj.addOperation(conf, opObj) |
|
265 | procUnitObj.addOperation(conf, opObj) | |
265 |
|
266 | |||
266 | self.object = procUnitObj |
|
267 | self.object = procUnitObj | |
267 |
|
268 | |||
268 | def run(self): |
|
269 | def run(self): | |
269 | ''' |
|
270 | ''' | |
270 | ''' |
|
271 | ''' | |
271 |
|
272 | |||
272 | return self.object.call(**self.getKwargs()) |
|
273 | return self.object.call(**self.getKwargs()) | |
273 |
|
274 | |||
274 |
|
275 | |||
@@ -284,10 +285,10 class ReadUnitConf(ProcUnitConf): | |||||
284 | self.inputId = None |
|
285 | self.inputId = None | |
285 | self.operations = [] |
|
286 | self.operations = [] | |
286 | self.parameters = {} |
|
287 | self.parameters = {} | |
287 |
|
288 | |||
288 | def setup(self, project_id, id, name, datatype, err_queue, path='', startDate='', endDate='', |
|
289 | def setup(self, project_id, id, name, datatype, err_queue, path='', startDate='', endDate='', | |
289 | startTime='', endTime='', server=None, **kwargs): |
|
290 | startTime='', endTime='', server=None, **kwargs): | |
290 |
|
291 | |||
291 | if datatype == None and name == None: |
|
292 | if datatype == None and name == None: | |
292 | raise ValueError('datatype or name should be defined') |
|
293 | raise ValueError('datatype or name should be defined') | |
293 | if name == None: |
|
294 | if name == None: | |
@@ -307,8 +308,8 class ReadUnitConf(ProcUnitConf): | |||||
307 | self.project_id = project_id |
|
308 | self.project_id = project_id | |
308 | self.name = name |
|
309 | self.name = name | |
309 | self.datatype = datatype |
|
310 | self.datatype = datatype | |
310 |
self.err_queue = err_queue |
|
311 | self.err_queue = err_queue | |
311 |
|
312 | |||
312 | self.addParameter(name='path', value=path) |
|
313 | self.addParameter(name='path', value=path) | |
313 | self.addParameter(name='startDate', value=startDate) |
|
314 | self.addParameter(name='startDate', value=startDate) | |
314 | self.addParameter(name='endDate', value=endDate) |
|
315 | self.addParameter(name='endDate', value=endDate) | |
@@ -377,7 +378,7 class Project(Process): | |||||
377 | def setup(self, id=1, name='', description='', email=None, alarm=[]): |
|
378 | def setup(self, id=1, name='', description='', email=None, alarm=[]): | |
378 |
|
379 | |||
379 | self.id = str(id) |
|
380 | self.id = str(id) | |
380 |
self.description = description |
|
381 | self.description = description | |
381 | self.email = email |
|
382 | self.email = email | |
382 | self.alarm = alarm |
|
383 | self.alarm = alarm | |
383 | if name: |
|
384 | if name: | |
@@ -411,7 +412,7 class Project(Process): | |||||
411 | conf = ReadUnitConf() |
|
412 | conf = ReadUnitConf() | |
412 | conf.setup(self.id, idReadUnit, name, datatype, self.err_queue, **kwargs) |
|
413 | conf.setup(self.id, idReadUnit, name, datatype, self.err_queue, **kwargs) | |
413 | self.configurations[conf.id] = conf |
|
414 | self.configurations[conf.id] = conf | |
414 |
|
415 | |||
415 | return conf |
|
416 | return conf | |
416 |
|
417 | |||
417 | def addProcUnit(self, id=None, inputId='0', datatype=None, name=None): |
|
418 | def addProcUnit(self, id=None, inputId='0', datatype=None, name=None): | |
@@ -423,7 +424,7 class Project(Process): | |||||
423 | idProcUnit = self.getNewId() |
|
424 | idProcUnit = self.getNewId() | |
424 | else: |
|
425 | else: | |
425 | idProcUnit = id |
|
426 | idProcUnit = id | |
426 |
|
427 | |||
427 | conf = ProcUnitConf() |
|
428 | conf = ProcUnitConf() | |
428 | conf.setup(self.id, idProcUnit, name, datatype, inputId, self.err_queue) |
|
429 | conf.setup(self.id, idProcUnit, name, datatype, inputId, self.err_queue) | |
429 | self.configurations[conf.id] = conf |
|
430 | self.configurations[conf.id] = conf | |
@@ -458,7 +459,7 class Project(Process): | |||||
458 | def updateUnit(self, id, **kwargs): |
|
459 | def updateUnit(self, id, **kwargs): | |
459 |
|
460 | |||
460 | conf = self.configurations[id].update(**kwargs) |
|
461 | conf = self.configurations[id].update(**kwargs) | |
461 |
|
462 | |||
462 | def makeXml(self): |
|
463 | def makeXml(self): | |
463 |
|
464 | |||
464 | xml = Element('Project') |
|
465 | xml = Element('Project') | |
@@ -529,7 +530,7 class Project(Process): | |||||
529 | self.configurations[conf.id] = conf |
|
530 | self.configurations[conf.id] = conf | |
530 |
|
531 | |||
531 | self.filename = abs_file |
|
532 | self.filename = abs_file | |
532 |
|
533 | |||
533 | return 1 |
|
534 | return 1 | |
534 |
|
535 | |||
535 | def __str__(self): |
|
536 | def __str__(self): | |
@@ -559,14 +560,14 class Project(Process): | |||||
559 |
|
560 | |||
560 | t = Thread(target=self._monitor, args=(self.err_queue, self.ctx)) |
|
561 | t = Thread(target=self._monitor, args=(self.err_queue, self.ctx)) | |
561 | t.start() |
|
562 | t.start() | |
562 |
|
563 | |||
563 | def _monitor(self, queue, ctx): |
|
564 | def _monitor(self, queue, ctx): | |
564 |
|
565 | |||
565 | import socket |
|
566 | import socket | |
566 |
|
567 | |||
567 | procs = 0 |
|
568 | procs = 0 | |
568 | err_msg = '' |
|
569 | err_msg = '' | |
569 |
|
570 | |||
570 | while True: |
|
571 | while True: | |
571 | msg = queue.get() |
|
572 | msg = queue.get() | |
572 | if '#_start_#' in msg: |
|
573 | if '#_start_#' in msg: | |
@@ -575,11 +576,11 class Project(Process): | |||||
575 | procs -=1 |
|
576 | procs -=1 | |
576 | else: |
|
577 | else: | |
577 | err_msg = msg |
|
578 | err_msg = msg | |
578 |
|
579 | |||
579 |
if procs == 0 or 'Traceback' in err_msg: |
|
580 | if procs == 0 or 'Traceback' in err_msg: | |
580 | break |
|
581 | break | |
581 | time.sleep(0.1) |
|
582 | time.sleep(0.1) | |
582 |
|
583 | |||
583 | if '|' in err_msg: |
|
584 | if '|' in err_msg: | |
584 | name, err = err_msg.split('|') |
|
585 | name, err = err_msg.split('|') | |
585 | if 'SchainWarning' in err: |
|
586 | if 'SchainWarning' in err: | |
@@ -588,11 +589,11 class Project(Process): | |||||
588 | log.error(err.split('SchainError:')[-1].split('\n')[0].strip(), name) |
|
589 | log.error(err.split('SchainError:')[-1].split('\n')[0].strip(), name) | |
589 | else: |
|
590 | else: | |
590 | log.error(err, name) |
|
591 | log.error(err, name) | |
591 |
else: |
|
592 | else: | |
592 | name, err = self.name, err_msg |
|
593 | name, err = self.name, err_msg | |
593 |
|
594 | |||
594 | time.sleep(1) |
|
595 | time.sleep(1) | |
595 |
|
596 | |||
596 | ctx.term() |
|
597 | ctx.term() | |
597 |
|
598 | |||
598 | message = ''.join(err) |
|
599 | message = ''.join(err) | |
@@ -617,7 +618,7 class Project(Process): | |||||
617 | subtitle += '[End time = %s]\n' % readUnitConfObj.parameters['endTime'] |
|
618 | subtitle += '[End time = %s]\n' % readUnitConfObj.parameters['endTime'] | |
618 |
|
619 | |||
619 | a = Alarm( |
|
620 | a = Alarm( | |
620 |
modes=self.alarm, |
|
621 | modes=self.alarm, | |
621 | email=self.email, |
|
622 | email=self.email, | |
622 | message=message, |
|
623 | message=message, | |
623 | subject=subject, |
|
624 | subject=subject, | |
@@ -635,10 +636,10 class Project(Process): | |||||
635 |
|
636 | |||
636 | err = False |
|
637 | err = False | |
637 | n = len(self.configurations) |
|
638 | n = len(self.configurations) | |
638 |
|
639 | |||
639 | while not err: |
|
640 | while not err: | |
640 | for conf in self.getUnits(): |
|
641 | for conf in self.getUnits(): | |
641 |
ok = conf.run() |
|
642 | ok = conf.run() | |
642 | if ok == 'Error': |
|
643 | if ok == 'Error': | |
643 | n -= 1 |
|
644 | n -= 1 | |
644 | continue |
|
645 | continue | |
@@ -646,12 +647,12 class Project(Process): | |||||
646 | break |
|
647 | break | |
647 | if n == 0: |
|
648 | if n == 0: | |
648 | err = True |
|
649 | err = True | |
649 |
|
650 | |||
650 | def run(self): |
|
651 | def run(self): | |
651 |
|
652 | |||
652 | log.success('\nStarting Project {} [id={}]'.format(self.name, self.id), tag='') |
|
653 | log.success('\nStarting Project {} [id={}]'.format(self.name, self.id), tag='') | |
653 | self.started = True |
|
654 | self.started = True | |
654 |
self.start_time = time.time() |
|
655 | self.start_time = time.time() | |
655 | self.createObjects() |
|
656 | self.createObjects() | |
656 | self.runProcs() |
|
657 | self.runProcs() | |
657 | log.success('{} Done (Time: {:4.2f}s)'.format( |
|
658 | log.success('{} Done (Time: {:4.2f}s)'.format( |
@@ -38,24 +38,33 mode_proc = 0 | |||||
38 | #path = "/DATA_RM/DRONE01ABRIL1429" |
|
38 | #path = "/DATA_RM/DRONE01ABRIL1429" | |
39 | #path_ped = "/DATA_RM/TEST_PEDESTAL/P20220322-171722" |
|
39 | #path_ped = "/DATA_RM/TEST_PEDESTAL/P20220322-171722" | |
40 | #path = "/DATA_RM/DRONE01ABRIL1701" |
|
40 | #path = "/DATA_RM/DRONE01ABRIL1701" | |
41 | path = "/DATA_RM/DATA/Torre_con_bola_1649092242/rawdata" |
|
41 | ##path = "/DATA_RM/DATA/Torre_con_bola_1649092242/rawdata" | |
42 | path="/DATA_RM/DRONE01ABRIL1727" |
|
42 | ##path="/DATA_RM/DRONE01ABRIL1727" | |
|
43 | path ="/DATA_RM/DATA/TEST@2022-04-11T17:29:56/rawdata" | |||
|
44 | #path="/DATA_RM/TEST172956_0411" | |||
|
45 | ||||
|
46 | ||||
|
47 | #path = "/DATA_RM/DATA/TEST@2022-04-11T17:29:56/rawdata" | |||
|
48 | ||||
43 | #path_ped = "/DATA_RM/DRONE01ABRIL1450" |
|
49 | #path_ped = "/DATA_RM/DRONE01ABRIL1450" | |
44 | path_ped="/DATA_RM/TEST_PEDESTAL/P20220401-172744" |
|
50 | #path_ped="/DATA_RM/TEST_PEDESTAL/P20220401-172744" | |
|
51 | ||||
|
52 | path_ped="/DATA_RM/TEST_PEDESTAL/P20220411-173017" | |||
|
53 | ||||
45 | #path_ped = "/DATA_RM/DATA/Torre_con_bola_1649092242/position/2022-04-04T17-00-00" |
|
54 | #path_ped = "/DATA_RM/DATA/Torre_con_bola_1649092242/position/2022-04-04T17-00-00" | |
46 | #------------------------------------------------------------------------------- |
|
55 | #------------------------------------------------------------------------------- | |
47 |
figpath_pp = "/home/soporte/Pictures/T |
|
56 | figpath_pp = "/home/soporte/Pictures/TEST" | |
48 | #figpath_pp = "/home/soporte/Pictures/MARTES_22_PP_1M_1us" |
|
57 | #figpath_pp = "/home/soporte/Pictures/MARTES_22_PP_1M_1us" | |
49 | figpath_spec = "/home/soporte/Pictures/MARTES_22_1M_1us" |
|
58 | figpath_spec = "/home/soporte/Pictures/MARTES_22_1M_1us" | |
50 |
figpath_pp_ppi = "/home/soporte/Pictures/ |
|
59 | figpath_pp_ppi = "/home/soporte/Pictures/PPILUNES11042022" | |
51 |
|
60 | |||
52 |
|
61 | |||
53 | figpath_pp_rhi = "/DATA_RM/LUNES04ABRIL_1200_RHI" |
|
62 | figpath_pp_rhi = "/DATA_RM/LUNES04ABRIL_1200_RHI" | |
54 | #--------------------------OPCIONES--------------------------------------------- |
|
63 | #--------------------------OPCIONES--------------------------------------------- | |
55 |
plot_ppi = |
|
64 | plot_ppi = 1 | |
56 | plot = 0 |
|
65 | plot = 0#0 | |
57 | plot_rhi = 1 |
|
66 | plot_rhi = 0#1 | |
58 | integration = 1 |
|
67 | integration = 1#1 | |
59 | save = 0 |
|
68 | save = 0 | |
60 | plot_spec = 0 |
|
69 | plot_spec = 0 | |
61 | #---------------------------SAVE HDF5 PROCESADO/-------------------------------- |
|
70 | #---------------------------SAVE HDF5 PROCESADO/-------------------------------- | |
@@ -110,10 +119,10 time.sleep(4) | |||||
110 | ################# RANGO DE PLOTEO###################################### |
|
119 | ################# RANGO DE PLOTEO###################################### | |
111 | dBmin = '20' |
|
120 | dBmin = '20' | |
112 | dBmax = '60' |
|
121 | dBmax = '60' | |
113 |
xmin = '1 |
|
122 | xmin = '17.4' #17.1,17.5 | |
114 |
xmax = '1 |
|
123 | xmax = '17.7' #17.2,17.8 | |
115 | ymin = '0' #### PONER A 0 |
|
124 | ymin = '0' #### PONER A 0 | |
116 |
ymax = '1. |
|
125 | ymax = '1.5' #### PONER A 8 | |
117 | ########################FECHA########################################## |
|
126 | ########################FECHA########################################## | |
118 | str1 = datetime.date.today() |
|
127 | str1 = datetime.date.today() | |
119 | today = str1.strftime("%Y/%m/%d") |
|
128 | today = str1.strftime("%Y/%m/%d") | |
@@ -128,9 +137,9 controllerObj.setup(id = '191', name='Test_USRP', description=desc) | |||||
128 | #------------------------ UNIDAD DE LECTURA------------------------------------- |
|
137 | #------------------------ UNIDAD DE LECTURA------------------------------------- | |
129 | readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader', |
|
138 | readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader', | |
130 | path=path, |
|
139 | path=path, | |
131 |
startDate="2022/04/ |
|
140 | startDate="2022/04/11",#today, | |
132 |
endDate="2022/04/ |
|
141 | endDate="2022/04/11",#today, | |
133 |
startTime=' |
|
142 | startTime='17:36:00',#'17:39:25', | |
134 | endTime='23:59:59',#23:59:59', |
|
143 | endTime='23:59:59',#23:59:59', | |
135 | delay=0, |
|
144 | delay=0, | |
136 | #set=0, |
|
145 | #set=0, | |
@@ -153,7 +162,7 opObj10.addParameter(name='ymax', value='1200', format='int') | |||||
153 | opObj10.addParameter(name='save_period', value=10, format='int') |
|
162 | opObj10.addParameter(name='save_period', value=10, format='int') | |
154 | ''' |
|
163 | ''' | |
155 | opObj11 = procUnitConfObjA.addOperation(name='setH0') |
|
164 | opObj11 = procUnitConfObjA.addOperation(name='setH0') | |
156 |
opObj11.addParameter(name='h0', value='-1. |
|
165 | opObj11.addParameter(name='h0', value='-1.0', format='float') | |
157 |
|
166 | |||
158 | opObj11 = procUnitConfObjA.addOperation(name='selectHeights') |
|
167 | opObj11 = procUnitConfObjA.addOperation(name='selectHeights') | |
159 | opObj11.addParameter(name='minIndex', value='1', format='int') |
|
168 | opObj11.addParameter(name='minIndex', value='1', format='int') |
General Comments 0
You need to be logged in to leave comments.
Login now