README.md
157 lines
| 4.0 KiB
| text/x-minidsrc
|
MarkdownLexer
r887 | # Signal Chain | ||
## Introduction | |||
Signal Chain (SCh) is a radar data processing library developed using [Python](www.python.org) at JRO. SCh provides modules to read, write, process and plot data. | |||
## Installation | |||
|
r1289 | 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. | |
r887 | |||
|
r1289 | ### Dependencies | |
- GCC (gcc or gfortran) | |||
- Python.h (python-dev or python-devel) | |||
- Python-TK (python-tk) | |||
- HDF5 libraries (libhdf5-dev) | |||
### Linux based system (e.g. ubuntu) | |||
r887 | ``` | ||
|
r1000 | $ git clone http://jro-dev.igp.gob.pe/rhodecode/schain/ | |
$ cd schain | |||
|
r1289 | $ git checkout `schain-branch` (optional) | |
r887 | $ sudo pip install ./ | ||
``` | |||
|
r1029 | ### MAC Os | |
``` | |||
|
r1110 | $ brew install python | |
|
r1029 | $ git clone http://jro-dev.igp.gob.pe/rhodecode/schain/ | |
$ cd schain | |||
|
r1289 | $ git checkout `schain-branch` (optional) | |
$ sudo pip install ./ | |||
|
r1102 | ``` | |
|
r1118 | ### Docker | |
Download Dockerfile from the repository, and create a docker image | |||
``` | |||
$ docker build -t schain . | |||
``` | |||
You can run a container using an xml file or a schain script also you need to mount a volume for the data input and for the output files/plots | |||
``` | |||
$ docker run -it --rm --volume /path/to/host/data:/data schain xml /data/test.xml | |||
|
r1210 | $ docker run -it --rm --volume /path/to/host/data:/data --entrypoint /urs/local/bin/python schain /data/test.py | |
|
r1118 | ``` | |
|
r1289 | ## CLI (command line interface) | |
Signal Chain provides the following commands: | |||
- schainGUI: Open the GUI | |||
- schain: Signal chain command line | |||
r887 | ## First Script | ||
|
r1289 | Here you can find an script to read Spectra data (.pdata), remove dc and plot spectra & RTI | |
r887 | |||
|
r1289 | First import SCh and creating a project | |
r887 | |||
```python | |||
#!/usr/bin/python | |||
from schainpy.controller import Project | |||
|
r1289 | prj = Project() | |
prj.setup( | |||
id = '100', | |||
name='test', | |||
description='Basic experiment' | |||
) | |||
r887 | ``` | ||
|
r1289 | Add read unit and operations | |
r887 | |||
```python | |||
|
r1289 | read_unit = prj.addReadUnit( | |
datatype='Spectra', | |||
path='/path/to/pdata/', | |||
startDate='2014/01/31', | |||
endDate='2014/03/31', | |||
startTime='00:00:00', | |||
endTime='23:59:59', | |||
online=0, | |||
walk=0 | |||
) | |||
proc_unit = prj.addProcUnit(datatype='Spectra', inputId=read_unit.getId()) | |||
r887 | |||
op = proc_unit.addOperation(name='selectChannels') | |||
|
r1289 | op.addParameter(name='channelList', value='0,1') | |
r887 | |||
op = proc_unit.addOperation(name='selectHeights') | |||
|
r1289 | op.addParameter(name='minHei', value='80') | |
op.addParameter(name='maxHei', value='200') | |||
r887 | |||
op = proc_unit.addOperation(name='removeDC') | |||
``` | |||
|
r1289 | Plot data & start project | |
r887 | |||
```python | |||
|
r1289 | op = proc_unit.addOperation(name='SpectraPlot') | |
op.addParameter(name='id', value='1') | |||
op.addParameter(name='wintitle', value='Spectra') | |||
r887 | |||
|
r1289 | op = procUnitConfObj1.addOperation(name='RTIPlot') | |
op.addParameter(name='id', value='2') | |||
op.addParameter(name='wintitle', value='RTI') | |||
r887 | |||
|
r1289 | prj.start() | |
r887 | |||
``` | |||
Full script | |||
```python | |||
#!/usr/bin/python | |||
|
r1289 | from schainpy.prj import Project | |
r887 | |||
|
r1289 | prj = Project() | |
prj.setup(id = '100', | |||
r887 | name='test', | ||
description='Basic experiment') | |||
|
r1289 | read_unit = prj.addReadUnit(datatype='Spectra', | |
r887 | path='/path/to/pdata/', | ||
startDate='2014/01/31', | |||
endDate='2014/03/31', | |||
startTime='00:00:00', | |||
endTime='23:59:59', | |||
online=0, | |||
walk=0) | |||
|
r1289 | proc_unit = prj.addProcUnit(datatype='Spectra', | |
r887 | inputId=read_unit.getId()) | ||
op = proc_unit.addOperation(name='selectChannels') | |||
|
r1289 | op.addParameter(name='channelList', value='0,1') | |
r887 | |||
op = proc_unit.addOperation(name='selectHeights') | |||
|
r1289 | op.addParameter(name='minHei', value='80') | |
op.addParameter(name='maxHei', value='200') | |||
r887 | |||
op = proc_unit.addOperation(name='removeDC') | |||
|
r1289 | op = proc_unit.addOperation(name='SpectraPlot') | |
r887 | op.addParameter(name='wintitle', value='Spectra', format='str') | ||
|
r1289 | op = procUnitConfObj1.addOperation(name='RTIPlot') | |
r887 | op.addParameter(name='wintitle', value='RTI', format='str') | ||
|
r1289 | prj.start() | |
r887 | |||
|
r1000 | ``` |