@@ -6,33 +6,29 Signal Chain (SCh) is a radar data processing library developed using [Python](w | |||
|
6 | 6 | |
|
7 | 7 | ## Installation |
|
8 | 8 | |
|
9 | Install system dependencies, clone the latest version from [here](http://jro-dev.igp.gob.pe/rhodecode/schain/) and install it as a normal python package. | |
|
9 | Install system dependencies, clone the latest version from [here](http://jro-dev.igp.gob.pe/rhodecode/schain/) and install it as a normal python package, we strongly recommend to use Anaconda or a virtual environment for the installation. | |
|
10 | 10 | |
|
11 | ### Linux based system | |
|
11 | ### Dependencies | |
|
12 | - GCC (gcc or gfortran) | |
|
13 | - Python.h (python-dev or python-devel) | |
|
14 | - Python-TK (python-tk) | |
|
15 | - HDF5 libraries (libhdf5-dev) | |
|
16 | ||
|
17 | ### Linux based system (e.g. ubuntu) | |
|
12 | 18 | ``` |
|
13 | $ sudo apt-get install python-pip python-dev gfortran libpng-dev freetype* libblas-dev liblapack-dev libatlas-base-dev python-qt4 python-tk libssl-dev libhdf5-dev | |
|
14 | 19 | $ git clone http://jro-dev.igp.gob.pe/rhodecode/schain/ |
|
15 | 20 | $ cd schain |
|
21 | $ git checkout `schain-branch` (optional) | |
|
16 | 22 | $ sudo pip install ./ |
|
17 | ||
|
18 | 23 | ``` |
|
19 | 24 | |
|
20 | 25 | ### MAC Os |
|
21 | 26 | ``` |
|
22 | 27 | $ brew install python |
|
23 | $ brew install cartr/qt4/pyqt | |
|
24 | 28 | $ git clone http://jro-dev.igp.gob.pe/rhodecode/schain/ |
|
25 | 29 | $ cd schain |
|
26 | $ pip install ./ | |
|
27 | ``` | |
|
28 | ||
|
29 | **It is recommended to install schain in a virtual environment** | |
|
30 | ``` | |
|
31 | $ virtualenv /path/to/virtual | |
|
32 | $ source /path/to/virtual/bin/activate | |
|
33 | (virtual) $ cd schain | |
|
34 | (virtual) $ pip install ./ | |
|
35 | (virtual) $ bash link_PyQt4.sh | |
|
30 | $ git checkout `schain-branch` (optional) | |
|
31 | $ sudo pip install ./ | |
|
36 | 32 | ``` |
|
37 | 33 | |
|
38 | 34 | ### Docker |
@@ -49,63 +45,72 $ docker run -it --rm --volume /path/to/host/data:/data schain xml /data/test.xm | |||
|
49 | 45 | $ docker run -it --rm --volume /path/to/host/data:/data --entrypoint /urs/local/bin/python schain /data/test.py |
|
50 | 46 | ``` |
|
51 | 47 | |
|
48 | ## CLI (command line interface) | |
|
49 | ||
|
50 | Signal Chain provides the following commands: | |
|
51 | ||
|
52 | - schainGUI: Open the GUI | |
|
53 | - schain: Signal chain command line | |
|
54 | ||
|
55 | ||
|
52 | 56 | ## First Script |
|
53 | 57 | |
|
54 |
|
|
|
58 | Here you can find an script to read Spectra data (.pdata), remove dc and plot spectra & RTI | |
|
55 | 59 | |
|
56 |
|
|
|
60 | First import SCh and creating a project | |
|
57 | 61 | |
|
58 | 62 | ```python |
|
59 | 63 | #!/usr/bin/python |
|
60 | 64 | |
|
61 | 65 | from schainpy.controller import Project |
|
62 | 66 | |
|
63 |
|
|
|
64 | controller.setup(id = '100', | |
|
67 | prj = Project() | |
|
68 | prj.setup( | |
|
69 | id = '100', | |
|
65 | 70 |
|
|
66 |
|
|
|
67 | ||
|
68 | ||
|
71 | description='Basic experiment' | |
|
72 | ) | |
|
69 | 73 | ``` |
|
70 | 74 | |
|
71 |
Add |
|
|
75 | Add read unit and operations | |
|
72 | 76 | |
|
73 | 77 | ```python |
|
74 |
read_unit = |
|
|
78 | read_unit = prj.addReadUnit( | |
|
79 | datatype='Spectra', | |
|
75 | 80 |
|
|
76 | 81 |
|
|
77 | 82 |
|
|
78 | 83 |
|
|
79 | 84 | endTime='23:59:59', |
|
80 | 85 | online=0, |
|
81 | walk=0) | |
|
86 | walk=0 | |
|
87 | ) | |
|
82 | 88 | |
|
83 |
proc_unit = |
|
|
84 | inputId=read_unit.getId()) | |
|
89 | proc_unit = prj.addProcUnit(datatype='Spectra', inputId=read_unit.getId()) | |
|
85 | 90 | |
|
86 | 91 | op = proc_unit.addOperation(name='selectChannels') |
|
87 |
op.addParameter(name='channelList', value='0,1' |
|
|
92 | op.addParameter(name='channelList', value='0,1') | |
|
88 | 93 | |
|
89 | 94 | op = proc_unit.addOperation(name='selectHeights') |
|
90 |
op.addParameter(name='minHei', value='80' |
|
|
91 |
op.addParameter(name='maxHei', value='200' |
|
|
95 | op.addParameter(name='minHei', value='80') | |
|
96 | op.addParameter(name='maxHei', value='200') | |
|
92 | 97 | |
|
93 | 98 | op = proc_unit.addOperation(name='removeDC') |
|
94 | 99 | |
|
95 | 100 | ``` |
|
96 | 101 | |
|
97 |
Plot |
|
|
102 | Plot data & start project | |
|
98 | 103 | |
|
99 | 104 | ```python |
|
100 |
op = proc_unit.addOperation(name='SpectraPlot' |
|
|
101 |
op.addParameter(name='id', value='1' |
|
|
102 |
op.addParameter(name='wintitle', value='Spectra' |
|
|
105 | op = proc_unit.addOperation(name='SpectraPlot') | |
|
106 | op.addParameter(name='id', value='1') | |
|
107 | op.addParameter(name='wintitle', value='Spectra') | |
|
103 | 108 | |
|
104 |
op = procUnitConfObj1.addOperation(name='RTIPlot' |
|
|
105 |
op.addParameter(name='id', value='2' |
|
|
106 |
op.addParameter(name='wintitle', value='RTI' |
|
|
109 | op = procUnitConfObj1.addOperation(name='RTIPlot') | |
|
110 | op.addParameter(name='id', value='2') | |
|
111 | op.addParameter(name='wintitle', value='RTI') | |
|
107 | 112 | |
|
108 |
|
|
|
113 | prj.start() | |
|
109 | 114 | |
|
110 | 115 | ``` |
|
111 | 116 | |
@@ -115,13 +120,13 Full script | |||
|
115 | 120 | ```python |
|
116 | 121 | #!/usr/bin/python |
|
117 | 122 | |
|
118 |
from schainpy. |
|
|
123 | from schainpy.prj import Project | |
|
119 | 124 | |
|
120 |
|
|
|
121 |
|
|
|
125 | prj = Project() | |
|
126 | prj.setup(id = '100', | |
|
122 | 127 | name='test', |
|
123 | 128 | description='Basic experiment') |
|
124 |
read_unit = |
|
|
129 | read_unit = prj.addReadUnit(datatype='Spectra', | |
|
125 | 130 | path='/path/to/pdata/', |
|
126 | 131 | startDate='2014/01/31', |
|
127 | 132 | endDate='2014/03/31', |
@@ -130,26 +135,24 read_unit = controller.addReadUnit(datatype='Spectra', | |||
|
130 | 135 | online=0, |
|
131 | 136 | walk=0) |
|
132 | 137 | |
|
133 |
proc_unit = |
|
|
138 | proc_unit = prj.addProcUnit(datatype='Spectra', | |
|
134 | 139 | inputId=read_unit.getId()) |
|
135 | 140 | |
|
136 | 141 | op = proc_unit.addOperation(name='selectChannels') |
|
137 |
op.addParameter(name='channelList', value='0,1' |
|
|
142 | op.addParameter(name='channelList', value='0,1') | |
|
138 | 143 | |
|
139 | 144 | op = proc_unit.addOperation(name='selectHeights') |
|
140 |
op.addParameter(name='minHei', value='80' |
|
|
141 |
op.addParameter(name='maxHei', value='200' |
|
|
145 | op.addParameter(name='minHei', value='80') | |
|
146 | op.addParameter(name='maxHei', value='200') | |
|
142 | 147 | |
|
143 | 148 | op = proc_unit.addOperation(name='removeDC') |
|
144 | 149 | |
|
145 |
op = proc_unit.addOperation(name='SpectraPlot' |
|
|
146 | op.addParameter(name='id', value='6', format='int') | |
|
150 | op = proc_unit.addOperation(name='SpectraPlot') | |
|
147 | 151 | op.addParameter(name='wintitle', value='Spectra', format='str') |
|
148 | 152 | |
|
149 |
op = procUnitConfObj1.addOperation(name='RTIPlot' |
|
|
150 | op.addParameter(name='id', value='2', format='int') | |
|
153 | op = procUnitConfObj1.addOperation(name='RTIPlot') | |
|
151 | 154 | op.addParameter(name='wintitle', value='RTI', format='str') |
|
152 | 155 | |
|
153 |
|
|
|
156 | prj.start() | |
|
154 | 157 | |
|
155 | 158 | ``` No newline at end of file |
@@ -692,9 +692,9 class Plot(Operation): | |||
|
692 | 692 | |
|
693 | 693 | def close(self): |
|
694 | 694 | |
|
695 | if not self.data.flagNoData: | |
|
695 | if self.data and not self.data.flagNoData: | |
|
696 | 696 | self.save_counter = self.save_period |
|
697 | 697 | self.__plot() |
|
698 | if not self.data.flagNoData and self.pause: | |
|
698 | if self.data and not self.data.flagNoData and self.pause: | |
|
699 | 699 | figpause(10) |
|
700 | 700 |
@@ -74,7 +74,7 class ProcessingUnit(object): | |||
|
74 | 74 | elif 'SchainError' in err: |
|
75 | 75 | log.error(err.split('SchainError:')[-1].split('\n')[0].strip(), self.name) |
|
76 | 76 | else: |
|
77 | log.error(err, self.name) | |
|
77 | log.error(err.split('\n')[-2], self.name) | |
|
78 | 78 | self.dataOut.error = True |
|
79 | 79 | |
|
80 | 80 | for op, optype, opkwargs in self.operations: |
General Comments 0
You need to be logged in to leave comments.
Login now