##// END OF EJS Templates
jroplotter.py updated
Miguel Valdez -
r703:b448cc54ea50
parent child
Show More
@@ -1,32 +1,38
1 1 Prerequisites:
2 2
3 Core:
3 4 -numpy 1.8.0
4 5 -scipy
5 6 -math
6 7 -matplotlib
7 8 -h5py
8 9 -ftplib
9 -paramiko and scp (optional for using SendTFilesToServer)
10 -stuffr (optional for using jroIO_hf)
11 -PyQt4 (for using GUI)
10 -paramiko (optional for SendTFilesToServer)
11 -stuffr (optional for jroIO_hf)
12 12 -pyfits (Fits data)
13
14 GUI:
15 -PyQt4
16 -wxPython
17 -msgpack-numpy
18 -cPickle
13 19
14 20 Signal Chain Installation:
15 21
16 22 1. Install numpy, matplotlib, TKAgg
17 23 2. Install digital_rf_hdf5 module (developed by Haystack Observatory)
18 24 if you want to use USRP data
19 25 3. untar schainpy-x.x.x.tar.gz
20 26 4. cd schainpy-x.x.x
21 27 5. execute:
22 28 [hostname]$ sudo pyhon setup.py install
23 29 6. testing gui:
24 30 [hostname]$ schainGUI (enter)
25 31
26 32 If you want to use serialization and zerorpc you will need to install the next packages:
27 33
28 34 1. zerorpc
29 35 [hostname]$ sudo port install zerorpc
30 36
31 37 2. cPickle, msgpack and msgpack_numpy
32 38 [hostname]$ sudo port install cPickle msgpack mspack_numpy No newline at end of file
@@ -1,10 +1,7
1 1 from jroplot_voltage import *
2 2 from jroplot_spectra import *
3 3 from jroplot_heispectra import *
4 4 from jroplot_correlation import *
5 5 from jroplot_parameters import *
6 try:
7 from jroplotter import *
8 except ImportError, e:
9 print e
6 from jroplotter import *
10 7 No newline at end of file
@@ -1,109 +1,111
1 1 '''
2 2 Created on Jul 9, 2014
3 3
4 4 @author: roj-idl71
5 5 '''
6 6 import os
7 7 import datetime
8 8 import numpy
9 9
10 10 from time import sleep
11 11 from Queue import Queue
12 12 from threading import Thread
13 13
14 14 from schainpy.model.proc.jroproc_base import Operation
15 15 from schainpy.model.serializer.data import obj2Dict, dict2Obj
16 16 from jroplot_correlation import *
17 17 from jroplot_heispectra import *
18 18 from jroplot_parameters import *
19 19 from jroplot_spectra import *
20 20 from jroplot_voltage import *
21 21
22 22
23 23 class Plotter(Operation):
24 24
25 25 isConfig = None
26 26 name = None
27 27 __queue = None
28 28
29 29 def __init__(self, plotter_name, plotter_queue=None):
30 30
31 31 Operation.__init__(self)
32 32
33 33 self.isConfig = False
34 34 self.name = plotter_name
35 35 self.__queue = plotter_queue
36 36
37 37 def getSubplots(self):
38 38
39 39 nrow = self.nplots
40 40 ncol = 1
41 41 return nrow, ncol
42 42
43 43 def setup(self, **kwargs):
44 44
45 45 print "Initializing ..."
46 46
47 47
48 48 def run(self, dataOut, id=None, **kwargs):
49 49
50 50 """
51 51
52 52 Input:
53 53 dataOut :
54 54 id :
55 55 """
56 56
57 57 packDict = {}
58 58
59 59 packDict['id'] = id
60 60 packDict['name'] = self.name
61 61 packDict['kwargs'] = kwargs
62 62
63 63 packDict['data'] = obj2Dict(dataOut)
64 64
65 65 self.__queue.put(packDict)
66 66
67 67 class PlotterManager(Thread):
68 68
69 69 __stop = False
70 70
71 71 def __init__(self, plotter_queue):
72 72
73 73 Thread.__init__(self)
74 74
75 self.setDaemon(True)
76
75 77 self.__queue = plotter_queue
76 78
77 79 self.plotInstanceDict = {}
78 80 self.__stop = False
79 81
80 82 def run(self):
81 83
82 84 while True:
83 85
84 86 if self.__stop:
85 87 break
86 88
87 89 if self.__queue.empty():
88 sleep(0.5)
90 sleep(0.1)
89 91 continue
90 92
91 93 serial_data = self.__queue.get(True)
92 94
93 95 plot_id = serial_data['id']
94 96 plot_name = serial_data['name']
95 97 kwargs = serial_data['kwargs']
96 98 dataDict = serial_data['data']
97 99
98 100 dataPlot = dict2Obj(dataDict)
99 101
100 102 if plot_id not in self.plotInstanceDict.keys():
101 103 className = eval(plot_name)
102 104 self.plotInstanceDict[plot_id] = className()
103 105
104 106 plotter = self.plotInstanceDict[plot_id]
105 107 plotter.run(dataPlot, plot_id, **kwargs)
106 108
107 109 def stop(self):
108 110
109 111 self.__stop = True No newline at end of file
@@ -1,128 +1,115
1 1 '''
2 2 Created on Jul 15, 2014
3 3
4 4 @author: Miguel Urco
5 5 '''
6 6 from serializer import DynamicSerializer
7
8 PICKLE_SERIALIZER = DynamicSerializer('cPickle')
9 MSGPACK_SERIALIZER = DynamicSerializer('msgpack')
7
8 DEFAULT_SERIALIZER = None #'cPickle', 'msgpack', "yaml"
10 9
11 10 from schainpy.model.data.jrodata import *
12 11
13 12 CLASSNAME_KEY = 'classname__'
14 13
15 14 def isNotClassVar(myObj):
16 15
17 16 return not hasattr(myObj,'__dict__')
18 17
19 18 def isDictFormat(thisValue):
20 19
21 20 if type(thisValue) != type({}):
22 21 return False
23 22
24 23 if CLASSNAME_KEY not in thisValue.keys():
25 24 return False
26 25
27 26 return True
28 27
29 28 def obj2Dict(myObj, keyList=[]):
30 29
31 30 if not keyList:
32 31 keyList = myObj.__dict__.keys()
33 32
34 33 myDict = {}
35 34
36 35 myDict[CLASSNAME_KEY] = myObj.__class__.__name__
37 36
38 37 for thisKey, thisValue in myObj.__dict__.items():
39 38
40 39 if thisKey not in keyList:
41 40 continue
42 41
43 42 if isNotClassVar(thisValue):
44 43 myDict[thisKey] = thisValue
45 44 continue
46 45
47 46 ## If this value is another class instance
48 47 myNewDict = obj2Dict(thisValue)
49 48 myDict[thisKey] = myNewDict
50 49
51 50 return myDict
52 51
53 52 def dict2Obj(myDict):
54 53 '''
55 54 '''
56 55
57 56 if CLASSNAME_KEY not in myDict.keys():
58 57 return None
59 58
60 59 className = eval(myDict[CLASSNAME_KEY])
61 60
62 61 myObj = className()
63 62
64 63 for thisKey, thisValue in myDict.items():
65 64
66 65 if thisKey == CLASSNAME_KEY:
67 66 continue
68 67
69 68 if not isDictFormat(thisValue):
70 69 setattr(myObj, thisKey, thisValue)
71 70 continue
72 71
73 72 myNewObj = dict2Obj(thisValue)
74 73 setattr(myObj, thisKey, myNewObj)
75 74
76 75 return myObj
77 76
78 def dict2Serial(myDict, serializer='msgpack'):
79
80 if serializer == 'cPickle':
81 SERIALIZER = PICKLE_SERIALIZER
82 else:
83 SERIALIZER = MSGPACK_SERIALIZER
84
77 def dict2Serial(myDict, serializer=DEFAULT_SERIALIZER):
78
79 SERIALIZER = DynamicSerializer(serializer)
80
85 81 mySerial = SERIALIZER.dumps(myDict)
86
82
87 83 return mySerial
88
89 def serial2Dict(mySerial, serializer='msgpack'):
90
91 if serializer == 'cPickle':
92 SERIALIZER = PICKLE_SERIALIZER
93 else:
94 SERIALIZER = MSGPACK_SERIALIZER
95
84
85 def serial2Dict(mySerial, serializer=DEFAULT_SERIALIZER):
86
87 SERIALIZER = DynamicSerializer(serializer)
88
96 89 myDict = SERIALIZER.loads(mySerial)
97
90
98 91 return myDict
99
100 def obj2Serial(myObj, serializer='msgpack', **kwargs):
101
102 if serializer == 'cPickle':
103 SERIALIZER = PICKLE_SERIALIZER
104 else:
105 SERIALIZER = MSGPACK_SERIALIZER
106
92
93 def obj2Serial(myObj, serializer=DEFAULT_SERIALIZER, **kwargs):
94
95 SERIALIZER = DynamicSerializer(serializer)
96
107 97 myDict = obj2Dict(myObj, **kwargs)
108 98 mySerial = dict2Serial(myDict, serializer)
109
99
110 100 return mySerial
111
112 def serial2Obj(mySerial, metadataDict = {}, serializer='msgpack'):
113
114 if serializer == 'cPickle':
115 SERIALIZER = PICKLE_SERIALIZER
116 else:
117 SERIALIZER = MSGPACK_SERIALIZER
118
101
102 def serial2Obj(mySerial, metadataDict = {}, serializer=DEFAULT_SERIALIZER):
103
104 SERIALIZER = DynamicSerializer(serializer)
105
119 106 myDataDict = serial2Dict(mySerial, serializer)
120
107
121 108 if not metadataDict:
122 109 myObj = dict2Obj(myDataDict)
123 110 return myObj
124
111
125 112 metadataDict.update(myDataDict)
126 113 myObj = dict2Obj(metadataDict)
127
114
128 115 return myObj
@@ -1,93 +1,108
1 1 '''
2 2 Created on Jul 17, 2014
3 3
4 4 @author: roj-idl71
5 5 '''
6 6
7 import cPickle
8 import msgpack_numpy
9 import jsonpickle
10 import yaml
7 DEFAULT_SERIALIZER = None
11 8
12 # import JROMsgpack
13 # import JROJsonpickle
9 try:
10 import cPickle
11 DEFAULT_SERIALIZER = 'cPickle'
12 except:
13 pass
14
15 try:
16 import msgpack_numpy
17 DEFAULT_SERIALIZER = 'msgpack'
18 except:
19 pass
20
21 # import jsonpickle
22 # import yaml
14 23
15 24 class Serializer(object):
16 25
17 26 def __init__(self):
18 27
19 28 self.serializer = None
20 29
21 30 def dumps(self, obj, **kwargs):
22 31
23 32 return self.serializer.dumps(obj, **kwargs)
24 33
25 34 def loads(self, obj, **kwargs):
26 35 return self.serializer.loads(obj, **kwargs)
27 36
28 37 class cPickleSerializer(Serializer):
29 38
30 39 def __init__(self):
31 40 self.serializer = cPickle
32 41
33 42 def dumps(self, obj, **kwargs):
34 43 return self.serializer.dumps(obj, 2)
35 44
36 45 def loads(self, obj, **kwargs):
37 46 return self.serializer.loads(obj)
38 47
39 48 class msgpackSerializer(Serializer):
40 49
41 50 def __init__(self):
42 51
43 52 self.serializer = msgpack_numpy
44 53
45 54 def dumps(self, obj, **kwargs):
46 55 return self.serializer.packb(obj)
47 56
48 57 def loads(self, obj, **kwargs):
49 58 return self.serializer.unpackb(obj)
50 59
51 class jsonpickleSerializer(Serializer):
52
53 def __init__(self):
54
55 self.serializer = jsonpickle
56
57 def dumps(self, obj, **kwargs):
58 return self.serializer.encode(obj, **kwargs)
59
60 def loads(self, obj, **kwargs):
61 return self.serializer.decode(obj, **kwargs)
62
63 class yamlSerializer(Serializer):
64
65 def __init__(self):
66
67 self.serializer = yaml
68
69 def dumps(self, obj, **kwargs):
70 return self.serializer.dump(obj, **kwargs)
71
72 def loads(self, obj, **kwargs):
73 return self.serializer.load(obj, **kwargs)
60 # class jsonpickleSerializer(Serializer):
61 #
62 # def __init__(self):
63 #
64 # self.serializer = jsonpickle
65 #
66 # def dumps(self, obj, **kwargs):
67 # return self.serializer.encode(obj, **kwargs)
68 #
69 # def loads(self, obj, **kwargs):
70 # return self.serializer.decode(obj, **kwargs)
71 #
72 # class yamlSerializer(Serializer):
73 #
74 # def __init__(self):
75 #
76 # self.serializer = yaml
77 #
78 # def dumps(self, obj, **kwargs):
79 # return self.serializer.dump(obj, **kwargs)
80 #
81 # def loads(self, obj, **kwargs):
82 # return self.serializer.load(obj, **kwargs)
74 83
75 84 class DynamicSerializer(Serializer):
76 85
77 def __init__(self, mode = 'cPickle'):
86 def __init__(self, module = None):
78 87
88 if not DEFAULT_SERIALIZER:
89 raise ImportError, "Install a python serializer like cPickle or msgpack"
90
91 if not mode:
92 mode == DEFAULT_SERIALIZER
93
79 94 if mode == 'cPickle':
80 95 self.serializer = cPickleSerializer()
81
82 if mode == 'jsonpickle':
83 self.serializer = jsonpickleSerializer()
84
85 if mode == 'yaml':
86 self.serializer = yamlSerializer()
96 #
97 # if mode == 'jsonpickle':
98 # self.serializer = jsonpickleSerializer()
99 #
100 # if mode == 'yaml':
101 # self.serializer = yamlSerializer()
87 102
88 103 if mode == 'msgpack':
89 104 self.serializer = msgpackSerializer()
90 105
91 106
92 107 if __name__ == '__main__':
93 108 pass No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now