##// END OF EJS Templates
SChain v2.1.5: jroplotter.py and testPlotter.py were added to Signal Chain
Miguel Valdez -
r698:060cd0e7af33
parent child
Show More
@@ -34,4 +34,9 VERSIONS:
34 34
35 35 2.1.4.2:
36 36 -A new Plotter Class was added
37 -Project.start() does not accept filename as a parameter anymore
38
39 2.1.5:
40 -serializer module added to Signal Chain
41 -jroplotter.py added to Signal Chain
37 42
@@ -4,4 +4,4 Created on Feb 7, 2012
4 4 @author $Author$
5 5 @version $Id$
6 6 '''
7 __version__ = "2.1.4.2" No newline at end of file
7 __version__ = "2.1.5" No newline at end of file
@@ -7,19 +7,27 import os
7 7 import datetime
8 8 import numpy
9 9
10 from figure import Figure
10 from time import sleep
11 from Queue import Queue
12 from threading import Thread
11 13
12 class Plotter(Figure):
14 from schainpy.model.proc.jroproc_base import Operation
15 from schainpy.model.serializer.data import obj2Dict, dict2Obj
16 from schainpy.model.graphics import *
17
18 class Plotter(Operation):
13 19
14 20 isConfig = None
15 21 name = None
16 plotterQueue = None
22 __queue = None
17 23
18 24 def __init__(self, plotter_name, plotter_queue=None):
19 25
26 Operation.__init__(self)
27
20 28 self.isConfig = False
21 29 self.name = plotter_name
22 self.plotterQueue = plotter_queue
30 self.__queue = plotter_queue
23 31
24 32 def getSubplots(self):
25 33
@@ -29,40 +37,68 class Plotter(Figure):
29 37
30 38 def setup(self, **kwargs):
31 39
32 # self.nplots = nplots
33 #
34 # self.createFigure(id=id,
35 # wintitle=wintitle,
36 # show=show)
37 #
38 # nrow,ncol = self.getSubplots()
39 # colspan = 3
40 # rowspan = 1
41 #
42 # for i in range(nplots):
43 # self.addAxes(nrow, ncol, i, 0, colspan, rowspan)
44
45
46
47 40 print "Initializing ..."
48 41
49 42
50 def run(self, dataOut, **kwargs):
43 def run(self, dataOut, id=None, **kwargs):
51 44
52 45 """
53 46
54 47 Input:
55 48 dataOut :
56 49 id :
57 wintitle :
58 channelList :
59 show :
60 50 """
61 51
62 if not self.isConfig:
63 self.setup(**kwargs)
64 self.isConfig=True
52 packDict = {}
53
54 packDict['id'] = id
55 packDict['name'] = self.name
56 packDict['kwargs'] = kwargs
57
58 packDict['data'] = obj2Dict(dataOut)
59
60 self.__queue.put(packDict)
61
62 class PlotterManager(Thread):
63
64 __stop = False
65
66 def __init__(self, plotter_queue):
67
68 Thread.__init__(self)
69
70 self.__queue = plotter_queue
71
72 self.plotInstanceDict = {}
73 self.__stop = False
74
75 def run(self):
76
77 while True:
78
79 if self.__stop:
80 break
81
82 if self.__queue.empty():
83 sleep(0.5)
84 continue
85
86 serial_data = self.__queue.get(True)
87
88 plot_id = serial_data['id']
89 plot_name = serial_data['name']
90 kwargs = serial_data['kwargs']
91 dataDict = serial_data['data']
92
93 dataPlot = dict2Obj(dataDict)
94
95 if plot_id not in self.plotInstanceDict.keys():
96 className = eval(plot_name)
97 self.plotInstanceDict[plot_id] = className()
98
99 plotter = self.plotInstanceDict[plot_id]
100 plotter.run(dataPlot, plot_id, **kwargs)
65 101
66 print "Putting data on %s queue:" %self.name
67 print kwargs
102 def stop(self):
68 103
104 self.__stop = True No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now