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