@@ -96,3 +96,7 ENV/ | |||||
96 |
|
96 | |||
97 | # mkdocs documentation |
|
97 | # mkdocs documentation | |
98 | /site |
|
98 | /site | |
|
99 | ||||
|
100 | # eclipse | |||
|
101 | .project | |||
|
102 | .pydevproject |
@@ -4,4 +4,4 Created on Feb 7, 2012 | |||||
4 | @author $Author$ |
|
4 | @author $Author$ | |
5 | @version $Id$ |
|
5 | @version $Id$ | |
6 | ''' |
|
6 | ''' | |
7 |
__version__ = "2. |
|
7 | __version__ = "2.3" No newline at end of file |
@@ -438,7 +438,8 class OperationConf(): | |||||
438 |
|
438 | |||
439 | def createObject(self, plotter_queue=None): |
|
439 | def createObject(self, plotter_queue=None): | |
440 |
|
440 | |||
441 | if self.type == 'self': |
|
441 | ||
|
442 | if self.type == 'self': | |||
442 | raise ValueError, "This operation type cannot be created" |
|
443 | raise ValueError, "This operation type cannot be created" | |
443 |
|
444 | |||
444 | if self.type == 'plotter': |
|
445 | if self.type == 'plotter': | |
@@ -449,10 +450,10 class OperationConf(): | |||||
449 | opObj = Plotter(self.name, plotter_queue) |
|
450 | opObj = Plotter(self.name, plotter_queue) | |
450 |
|
451 | |||
451 | if self.type == 'external' or self.type == 'other': |
|
452 | if self.type == 'external' or self.type == 'other': | |
452 |
|
|
453 | ||
453 | className = eval(self.name) |
|
454 | className = eval(self.name) | |
454 | kwargs = self.getKwargs() |
|
455 | kwargs = self.getKwargs() | |
455 |
|
|
456 | ||
456 | opObj = className(**kwargs) |
|
457 | opObj = className(**kwargs) | |
457 |
|
458 | |||
458 | return opObj |
|
459 | return opObj | |
@@ -671,14 +672,18 class ProcUnitConf(): | |||||
671 | kwargs = self.getKwargs() |
|
672 | kwargs = self.getKwargs() | |
672 | procUnitObj = className(**kwargs) |
|
673 | procUnitObj = className(**kwargs) | |
673 |
|
674 | |||
674 | for opConfObj in self.opConfObjList: |
|
675 | for opConfObj in self.opConfObjList: | |
675 |
|
676 | |||
676 |
if opConfObj.type |
|
677 | if opConfObj.type=='self' and self.name=='run': | |
|
678 | continue | |||
|
679 | elif opConfObj.type=='self': | |||
|
680 | procUnitObj.addOperationKwargs(opConfObj.id, **opConfObj.getKwargs()) | |||
677 | continue |
|
681 | continue | |
678 |
|
682 | |||
679 | opObj = opConfObj.createObject(plotter_queue) |
|
683 | opObj = opConfObj.createObject(plotter_queue) | |
680 |
|
684 | |||
681 | self.opObjDict[opConfObj.id] = opObj |
|
685 | self.opObjDict[opConfObj.id] = opObj | |
|
686 | ||||
682 | procUnitObj.addOperation(opObj, opConfObj.id) |
|
687 | procUnitObj.addOperation(opObj, opConfObj.id) | |
683 |
|
688 | |||
684 | self.procUnitObj = procUnitObj |
|
689 | self.procUnitObj = procUnitObj |
@@ -29,8 +29,9 class PlotData(Operation, Process): | |||||
29 |
|
29 | |||
30 | def __init__(self, **kwargs): |
|
30 | def __init__(self, **kwargs): | |
31 |
|
31 | |||
32 | Operation.__init__(self, **kwargs) |
|
32 | Operation.__init__(self, plot=True, **kwargs) | |
33 | Process.__init__(self) |
|
33 | Process.__init__(self) | |
|
34 | self.kwargs['code'] = self.CODE | |||
34 | self.mp = False |
|
35 | self.mp = False | |
35 | self.dataOut = None |
|
36 | self.dataOut = None | |
36 | self.isConfig = False |
|
37 | self.isConfig = False |
@@ -35,12 +35,20 class ProcessingUnit(object): | |||||
35 | self.dataOut = None |
|
35 | self.dataOut = None | |
36 |
|
36 | |||
37 | self.operations2RunDict = {} |
|
37 | self.operations2RunDict = {} | |
|
38 | self.operationKwargs = {} | |||
38 |
|
39 | |||
39 | self.isConfig = False |
|
40 | self.isConfig = False | |
40 |
|
41 | |||
41 | self.args = args |
|
42 | self.args = args | |
42 | self.kwargs = kwargs |
|
43 | self.kwargs = kwargs | |
43 |
|
44 | |||
|
45 | def addOperationKwargs(self, objId, **kwargs): | |||
|
46 | ''' | |||
|
47 | ''' | |||
|
48 | ||||
|
49 | self.operationKwargs[objId] = kwargs | |||
|
50 | ||||
|
51 | ||||
44 | def addOperation(self, opObj, objId): |
|
52 | def addOperation(self, opObj, objId): | |
45 |
|
53 | |||
46 | """ |
|
54 | """ | |
@@ -80,7 +88,7 class ProcessingUnit(object): | |||||
80 |
|
88 | |||
81 | raise NotImplementedError |
|
89 | raise NotImplementedError | |
82 |
|
90 | |||
83 |
def callMethod(self, name, |
|
91 | def callMethod(self, name, opId): | |
84 |
|
92 | |||
85 | """ |
|
93 | """ | |
86 | Ejecuta el metodo con el nombre "name" y con argumentos **kwargs de la propia clase. |
|
94 | Ejecuta el metodo con el nombre "name" y con argumentos **kwargs de la propia clase. | |
@@ -100,7 +108,7 class ProcessingUnit(object): | |||||
100 | return False |
|
108 | return False | |
101 | else: |
|
109 | else: | |
102 | #Si no es un metodo RUN la entrada es la misma dataOut (interna) |
|
110 | #Si no es un metodo RUN la entrada es la misma dataOut (interna) | |
103 | if self.dataOut.isEmpty(): |
|
111 | if self.dataOut is not None and self.dataOut.isEmpty(): | |
104 | return False |
|
112 | return False | |
105 |
|
113 | |||
106 | #Getting the pointer to method |
|
114 | #Getting the pointer to method | |
@@ -109,11 +117,17 class ProcessingUnit(object): | |||||
109 | #Executing the self method |
|
117 | #Executing the self method | |
110 |
|
118 | |||
111 | if hasattr(self, 'mp'): |
|
119 | if hasattr(self, 'mp'): | |
112 | if self.mp is False: |
|
120 | if name=='run': | |
113 |
self.mp |
|
121 | if self.mp is False: | |
114 |
self. |
|
122 | self.mp = True | |
|
123 | self.start() | |||
|
124 | else: | |||
|
125 | methodToCall(**self.operationKwargs[opId]) | |||
115 | else: |
|
126 | else: | |
116 | methodToCall(**kwargs) |
|
127 | if name=='run': | |
|
128 | methodToCall(**self.kwargs) | |||
|
129 | else: | |||
|
130 | methodToCall(**self.operationKwargs[opId]) | |||
117 |
|
131 | |||
118 | if self.dataOut is None: |
|
132 | if self.dataOut is None: | |
119 | return False |
|
133 | return False | |
@@ -146,10 +160,12 class ProcessingUnit(object): | |||||
146 |
|
160 | |||
147 | if hasattr(externalProcObj, 'mp'): |
|
161 | if hasattr(externalProcObj, 'mp'): | |
148 | if externalProcObj.mp is False: |
|
162 | if externalProcObj.mp is False: | |
|
163 | self.operationKwargs[objId] = externalProcObj.kwargs | |||
149 | externalProcObj.mp = True |
|
164 | externalProcObj.mp = True | |
150 | externalProcObj.start() |
|
165 | externalProcObj.start() | |
151 | else: |
|
166 | else: | |
152 | externalProcObj.run(self.dataOut, **externalProcObj.kwargs) |
|
167 | externalProcObj.run(self.dataOut, **externalProcObj.kwargs) | |
|
168 | self.operationKwargs[objId] = externalProcObj.kwargs | |||
153 |
|
169 | |||
154 | return True |
|
170 | return True | |
155 |
|
171 | |||
@@ -198,7 +214,7 class ProcessingUnit(object): | |||||
198 | if not opName: |
|
214 | if not opName: | |
199 | raise ValueError, "opName parameter should be defined" |
|
215 | raise ValueError, "opName parameter should be defined" | |
200 |
|
216 | |||
201 |
sts = self.callMethod(opName, |
|
217 | sts = self.callMethod(opName, opId) | |
202 |
|
218 | |||
203 | elif opType == 'other' or opType == 'external' or opType == 'plotter': |
|
219 | elif opType == 'other' or opType == 'external' or opType == 'plotter': | |
204 |
|
220 |
@@ -518,9 +518,6 class WindProfiler(Operation): | |||||
518 |
|
518 | |||
519 | n = None |
|
519 | n = None | |
520 |
|
520 | |||
521 | def __init__(self): |
|
|||
522 | Operation.__init__(self) |
|
|||
523 |
|
||||
524 | def __calculateCosDir(self, elev, azim): |
|
521 | def __calculateCosDir(self, elev, azim): | |
525 | zen = (90 - elev)*numpy.pi/180 |
|
522 | zen = (90 - elev)*numpy.pi/180 | |
526 | azim = azim*numpy.pi/180 |
|
523 | azim = azim*numpy.pi/180 | |
@@ -1204,8 +1201,6 class WindProfiler(Operation): | |||||
1204 |
|
1201 | |||
1205 | class EWDriftsEstimation(Operation): |
|
1202 | class EWDriftsEstimation(Operation): | |
1206 |
|
1203 | |||
1207 | def __init__(self): |
|
|||
1208 | Operation.__init__(self) |
|
|||
1209 |
|
1204 | |||
1210 | def __correctValues(self, heiRang, phi, velRadial, SNR): |
|
1205 | def __correctValues(self, heiRang, phi, velRadial, SNR): | |
1211 | listPhi = phi.tolist() |
|
1206 | listPhi = phi.tolist() |
@@ -262,15 +262,23 class ReceiverData(ProcessingUnit, Process): | |||||
262 | Process.__init__(self) |
|
262 | Process.__init__(self) | |
263 | self.mp = False |
|
263 | self.mp = False | |
264 | self.isConfig = False |
|
264 | self.isConfig = False | |
|
265 | self.isWebConfig = False | |||
265 | self.plottypes =[] |
|
266 | self.plottypes =[] | |
266 | self.connections = 0 |
|
267 | self.connections = 0 | |
267 | server = kwargs.get('server', 'zmq.pipe') |
|
268 | server = kwargs.get('server', 'zmq.pipe') | |
|
269 | plot_server = kwargs.get('plot_server', 'zmq.web') | |||
268 | if 'tcp://' in server: |
|
270 | if 'tcp://' in server: | |
269 | address = server |
|
271 | address = server | |
270 | else: |
|
272 | else: | |
271 | address = 'ipc:///tmp/%s' % server |
|
273 | address = 'ipc:///tmp/%s' % server | |
272 |
|
274 | |||
|
275 | if 'tcp://' in plot_server: | |||
|
276 | plot_address = plot_server | |||
|
277 | else: | |||
|
278 | plot_address = 'ipc:///tmp/%s' % plot_server | |||
|
279 | ||||
273 | self.address = address |
|
280 | self.address = address | |
|
281 | self.plot_address = plot_address | |||
274 | self.plottypes = [s.strip() for s in kwargs.get('plottypes', 'rti').split(',')] |
|
282 | self.plottypes = [s.strip() for s in kwargs.get('plottypes', 'rti').split(',')] | |
275 | self.realtime = kwargs.get('realtime', False) |
|
283 | self.realtime = kwargs.get('realtime', False) | |
276 | self.throttle_value = kwargs.get('throttle', 10) |
|
284 | self.throttle_value = kwargs.get('throttle', 10) | |
@@ -358,10 +366,9 class ReceiverData(ProcessingUnit, Process): | |||||
358 | self.receiver.bind(self.address) |
|
366 | self.receiver.bind(self.address) | |
359 | monitor = self.receiver.get_monitor_socket() |
|
367 | monitor = self.receiver.get_monitor_socket() | |
360 | self.sender = self.context.socket(zmq.PUB) |
|
368 | self.sender = self.context.socket(zmq.PUB) | |
361 | if self.realtime: |
|
369 | if self.realtime: | |
362 | self.sender_web = self.context.socket(zmq.PUB) |
|
370 | self.sender_web = self.context.socket(zmq.PUB) | |
363 | # self.sender_web.setsockopt(zmq.PUBLISH, 'realtime') |
|
371 | self.sender_web.bind(self.plot_address) | |
364 | self.sender_web.bind("ipc:///tmp/zmq.web") |
|
|||
365 | self.sender.bind("ipc:///tmp/zmq.plots") |
|
372 | self.sender.bind("ipc:///tmp/zmq.plots") | |
366 |
|
373 | |||
367 | t = Thread(target=self.event_monitor, args=(monitor,)) |
|
374 | t = Thread(target=self.event_monitor, args=(monitor,)) | |
@@ -391,3 +398,23 class ReceiverData(ProcessingUnit, Process): | |||||
391 | self.started = True |
|
398 | self.started = True | |
392 |
|
399 | |||
393 | return |
|
400 | return | |
|
401 | ||||
|
402 | def sendToWeb(self): | |||
|
403 | ||||
|
404 | if not self.isWebConfig: | |||
|
405 | context = zmq.Context() | |||
|
406 | sender_web_config = context.socket(zmq.PUB) | |||
|
407 | if 'tcp://' in self.plot_address: | |||
|
408 | print self.plot_address | |||
|
409 | dum, address, port = self.plot_address.split(':') | |||
|
410 | conf_address = '{}:{}:{}'.format(dum, address, int(port)+1) | |||
|
411 | else: | |||
|
412 | conf_address = self.plot_address + '.config' | |||
|
413 | sender_web_config.bind(conf_address) | |||
|
414 | ||||
|
415 | for kwargs in self.operationKwargs.values(): | |||
|
416 | if 'plot' in kwargs: | |||
|
417 | sender_web_config.send_string(json.dumps(kwargs)) | |||
|
418 | print kwargs | |||
|
419 | self.isWebConfig = True | |||
|
420 |
General Comments 0
You need to be logged in to leave comments.
Login now