@@ -8,8 +8,8 | |||||
8 | * Added new type of operation `external` for non-locking operations |
|
8 | * Added new type of operation `external` for non-locking operations | |
9 | * New plotting architecture with buffering/throttle capabilities to speed up plots |
|
9 | * New plotting architecture with buffering/throttle capabilities to speed up plots | |
10 | * Clean controller to optimize scripts (format & optype are no longer required) |
|
10 | * Clean controller to optimize scripts (format & optype are no longer required) | |
11 | * Replace ParamReader and ParamWriter with new flexible HDFReader and HDFWriter |
|
11 | * Replace `ParamReader` and `ParamWriter` with new flexible `HDFReader` and `HDFWriter` | |
12 |
* New GUI with d |
|
12 | * New GUI with dynamic load of Units and operations (use Kivy framework) | |
13 | * Clean code |
|
13 | * Clean code | |
14 |
|
14 | |||
15 | ## 2.3 |
|
15 | ## 2.3 | |
@@ -42,32 +42,32 | |||||
42 | * Numpy version updated. |
|
42 | * Numpy version updated. | |
43 | * Migration to GIT. |
|
43 | * Migration to GIT. | |
44 |
|
44 | |||
45 |
## 2.2.5 |
|
45 | ## 2.2.5 | |
46 |
|
46 | |||
47 | * splitProfiles and combineProfiles modules were added to VoltageProc and Signal Chain GUI. |
|
47 | * splitProfiles and combineProfiles modules were added to VoltageProc and Signal Chain GUI. | |
48 | * nProfiles of USRP data (hdf5) is the number of profiles thera are in one second. |
|
48 | * nProfiles of USRP data (hdf5) is the number of profiles thera are in one second. | |
49 | * jroPlotter works directly with data objects instead of dictionaries |
|
49 | * jroPlotter works directly with data objects instead of dictionaries | |
50 | * script "schain" was added to Signal Chain installer |
|
50 | * script "schain" was added to Signal Chain installer | |
51 |
|
51 | |||
52 |
## 2.2.4.1 |
|
52 | ## 2.2.4.1 | |
53 |
|
53 | |||
54 |
* jroIO_usrp.py is update to read Sandra's data |
|
54 | * jroIO_usrp.py is update to read Sandra's data | |
55 | * decimation in Spectra and RTI plots is always enabled. |
|
55 | * decimation in Spectra and RTI plots is always enabled. | |
56 | * time* window option added to GUI |
|
56 | * time* window option added to GUI | |
57 |
|
57 | |||
58 |
## 2.2.4 |
|
58 | ## 2.2.4 | |
59 |
|
59 | |||
60 | * jroproc_spectra_lags.py added to schainpy |
|
60 | * jroproc_spectra_lags.py added to schainpy | |
61 | * Bug fixed in schainGUI: ProcUnit was created with the same id in some cases. |
|
61 | * Bug fixed in schainGUI: ProcUnit was created with the same id in some cases. | |
62 | * Bug fixed in jroHeaderIO: Header size validation. |
|
62 | * Bug fixed in jroHeaderIO: Header size validation. | |
63 |
|
63 | |||
64 |
## 2.2.3.1 |
|
64 | ## 2.2.3.1 | |
65 |
|
65 | |||
66 | * Filtering block by time has been added. |
|
66 | * Filtering block by time has been added. | |
67 | * Bug fixed plotting RTI, CoherenceMap and others using xmin and xmax parameters. The first day worked |
|
67 | * Bug fixed plotting RTI, CoherenceMap and others using xmin and xmax parameters. The first day worked | |
68 | properly but the next days did not. |
|
68 | properly but the next days did not. | |
69 |
|
69 | |||
70 |
## 2.2.3 |
|
70 | ## 2.2.3 | |
71 |
|
71 | |||
72 | * Bug fixed in GUI: Error getting(reading) Code value |
|
72 | * Bug fixed in GUI: Error getting(reading) Code value | |
73 | * Bug fixed in GUI: Flip option always needs channelList field |
|
73 | * Bug fixed in GUI: Flip option always needs channelList field | |
@@ -75,12 +75,12 properly but the next days did not. | |||||
75 | was modified for every branch (because this was a reference). It was modified in data.copy() |
|
75 | was modified for every branch (because this was a reference). It was modified in data.copy() | |
76 | * Bug fixed in jroproc_voltage.profileSelector(): rangeList replaces to profileRangeList. |
|
76 | * Bug fixed in jroproc_voltage.profileSelector(): rangeList replaces to profileRangeList. | |
77 |
|
77 | |||
78 |
## 2.2.2 |
|
78 | ## 2.2.2 | |
79 |
|
79 | |||
80 | * VoltageProc: ProfileSelector, Reshape, Decoder with nTxs!=1 and getblock=True was tested |
|
80 | * VoltageProc: ProfileSelector, Reshape, Decoder with nTxs!=1 and getblock=True was tested | |
81 | * Rawdata and testRawdata.py added to Signal Chain project |
|
81 | * Rawdata and testRawdata.py added to Signal Chain project | |
82 |
|
82 | |||
83 |
## 2.2.1 |
|
83 | ## 2.2.1 | |
84 |
|
84 | |||
85 | * Bugs fixed in GUI |
|
85 | * Bugs fixed in GUI | |
86 | * Views were improved in GUI |
|
86 | * Views were improved in GUI | |
@@ -88,56 +88,54 was modified for every branch (because this was a reference). It was modified in | |||||
88 | * Bug fixed getting noise using hyldebrant. (minimum number of points > 20%) |
|
88 | * Bug fixed getting noise using hyldebrant. (minimum number of points > 20%) | |
89 | * handleError added to jroplotter.py |
|
89 | * handleError added to jroplotter.py | |
90 |
|
90 | |||
91 |
## 2.2.0 |
|
91 | ## 2.2.0 | |
92 |
|
92 | |||
93 | * GUI: use of external plotter |
|
93 | * GUI: use of external plotter | |
94 | * Compatible with matplotlib 1.5.0 |
|
94 | * Compatible with matplotlib 1.5.0 | |
95 |
|
95 | |||
96 |
## 2.1.5 |
|
96 | ## 2.1.5 | |
97 |
|
97 | |||
98 | * serializer module added to Signal Chain |
|
98 | * serializer module added to Signal Chain | |
99 | * jroplotter.py added to Signal Chain |
|
99 | * jroplotter.py added to Signal Chain | |
100 |
|
100 | |||
101 |
## 2.1.4.2 |
|
101 | ## 2.1.4.2 | |
102 |
|
102 | |||
103 | * A new Plotter Class was added |
|
103 | * A new Plotter Class was added | |
104 | * Project.start() does not accept filename as a parameter anymore |
|
104 | * Project.start() does not accept filename as a parameter anymore | |
105 |
|
105 | |||
106 |
## 2.1.4.1 |
|
106 | ## 2.1.4.1 | |
107 |
|
107 | |||
108 | * Send notifications when an error different to ValueError is detected |
|
108 | * Send notifications when an error different to ValueError is detected | |
109 |
|
109 | |||
110 |
## 2.1.4 |
|
110 | ## 2.1.4 | |
111 |
|
111 | |||
112 | * Sending error notifications to signal chain administrator |
|
112 | * Sending error notifications to signal chain administrator | |
113 | * Login to email server added |
|
113 | * Login to email server added | |
114 |
|
114 | |||
115 |
## 2.1.3.3 |
|
115 | ## 2.1.3.3 | |
116 |
|
116 | |||
117 | * Colored Button Icons were added to GUI |
|
117 | * Colored Button Icons were added to GUI | |
118 |
|
118 | |||
119 |
## 2.1.3.2 |
|
119 | ## 2.1.3.2 | |
120 |
|
120 | |||
121 | * GUI: user interaction enhanced |
|
121 | * GUI: user interaction enhanced | |
122 | * controller_api.py: Safe access to ControllerThead |
|
122 | * controller_api.py: Safe access to ControllerThead | |
123 |
|
123 | |||
124 |
## 2.1.3.1 |
|
124 | ## 2.1.3.1 | |
125 |
|
125 | |||
126 | * GUI: every icon were resized |
|
126 | * GUI: every icon were resized | |
127 | * jroproc_voltage.py: Print a message when "Read from code" option is selected and the code is not defined inside data file |
|
127 | * jroproc_voltage.py: Print a message when "Read from code" option is selected and the code is not defined inside data file | |
128 |
|
128 | |||
129 |
## 2.1.3 |
|
129 | ## 2.1.3 | |
130 |
|
130 | |||
131 | * jroplot_heispectra.py: SpectraHeisScope was not showing the right channels |
|
131 | * jroplot_heispectra.py: SpectraHeisScope was not showing the right channels | |
132 | * jroproc_voltage.py: Bug fixed selecting profiles (self.nProfiles took a wrong value), |
|
132 | * jroproc_voltage.py: Bug fixed selecting profiles (self.nProfiles took a wrong value), Bug fixed selecting heights by block (selecting profiles instead heights) | |
133 | Bug fixed selecting heights by block (selecting profiles instead heights) |
|
|||
134 | * jroproc_voltage.py: New feature added: decoding data by block using FFT. |
|
133 | * jroproc_voltage.py: New feature added: decoding data by block using FFT. | |
135 | * jroIO_heispectra.py: Bug fixed in FitsReader. Using local Fits instance instead schainpy.mode.data.jrodata.Fits. |
|
134 | * jroIO_heispectra.py: Bug fixed in FitsReader. Using local Fits instance instead schainpy.mode.data.jrodata.Fits. | |
136 | * jroIO_heispectra.py: Channel index list does not exist. |
|
135 | * jroIO_heispectra.py: Channel index list does not exist. | |
137 |
|
136 | |||
138 |
## 2.1.2 |
|
137 | ## 2.1.2 | |
139 |
|
138 | |||
140 | * jroutils_ftp.py: Bug fixed, Any error sending file stopped the Server Thread |
|
139 | * jroutils_ftp.py: Bug fixed, Any error sending file stopped the Server Thread Server thread opens and closes remote server each time file list is sent | |
141 | Server thread opens and closes remote server each time file list is sent |
|
|||
142 | * jroplot_spectra.py: Noise path was not being created when noise data is saved. |
|
140 | * jroplot_spectra.py: Noise path was not being created when noise data is saved. | |
143 |
* jroIO_base.py: startTime can be greater than endTime. Example: SpreadF |
|
141 | * jroIO_base.py: startTime can be greater than endTime. Example: SpreadF |
@@ -13,7 +13,9 data. | |||||
13 |
|
13 | |||
14 | ## Installation |
|
14 | ## Installation | |
15 |
|
15 | |||
16 |
To get started the easiest way to install it is through |
|
16 | To get started the easiest way to install it is through | |
|
17 | [PyPI](https://pypi.org/project/schainpy/) with pip. We strongly recommend to | |||
|
18 | use an virtual environment like virtualenv or anaconda. | |||
17 |
|
19 | |||
18 | ```bash |
|
20 | ```bash | |
19 | pip install schainpy |
|
21 | pip install schainpy | |
@@ -25,7 +27,7 First, ensure that you have the above-listed dependencies installed, then clone | |||||
25 | the repository and install as normal python package: |
|
27 | the repository and install as normal python package: | |
26 |
|
28 | |||
27 | ```bash |
|
29 | ```bash | |
28 | git clone https://github.com/JRO-Peru/schain.git |
|
30 | git clone https://github.com/JRO-Peru/schainpy.git | |
29 | cd schain |
|
31 | cd schain | |
30 | git checkout `branch-name` (optional) |
|
32 | git checkout `branch-name` (optional) | |
31 | sudo pip install ./ |
|
33 | sudo pip install ./ |
@@ -5,4 +5,4 try: | |||||
5 | except: |
|
5 | except: | |
6 | pass |
|
6 | pass | |
7 |
|
7 | |||
8 |
__version__ = '3.0.0b |
|
8 | __version__ = '3.0.0b4' |
@@ -365,21 +365,24 class HDFWriter(Operation): | |||||
365 | self.path = path |
|
365 | self.path = path | |
366 | self.blocksPerFile = blocksPerFile |
|
366 | self.blocksPerFile = blocksPerFile | |
367 | self.metadataList = metadataList |
|
367 | self.metadataList = metadataList | |
368 | self.dataList = dataList |
|
368 | self.dataList = [s.strip() for s in dataList] | |
369 | self.setType = setType |
|
369 | self.setType = setType | |
370 | self.description = description |
|
370 | self.description = description | |
371 |
|
371 | |||
372 | for s in ['type', 'timeZone', 'useLocalTime']: |
|
372 | if self.metadataList is None: | |
373 | if s not in self.metadataList: |
|
373 | self.metadataList = self.dataOut.metadata_list | |
374 | self.metadataList.append(s) |
|
|||
375 |
|
374 | |||
376 | tableList = [] |
|
375 | tableList = [] | |
377 | dsList = [] |
|
376 | dsList = [] | |
378 |
|
377 | |||
379 | for i in range(len(self.dataList)): |
|
378 | for i in range(len(self.dataList)): | |
380 | dsDict = {} |
|
379 | dsDict = {} | |
381 |
|
|
380 | if hasattr(self.dataOut, self.dataList[i]): | |
382 | dsDict['variable'] = self.dataList[i] |
|
381 | dataAux = getattr(self.dataOut, self.dataList[i]) | |
|
382 | dsDict['variable'] = self.dataList[i] | |||
|
383 | else: | |||
|
384 | log.warning('Attribute {} not found in dataOut', self.name) | |||
|
385 | continue | |||
383 |
|
386 | |||
384 | if dataAux is None: |
|
387 | if dataAux is None: | |
385 | continue |
|
388 | continue | |
@@ -419,7 +422,7 class HDFWriter(Operation): | |||||
419 | self.lastTime = currentTime |
|
422 | self.lastTime = currentTime | |
420 | return False |
|
423 | return False | |
421 |
|
424 | |||
422 |
def run(self, dataOut, path, blocksPerFile=10, metadataList= |
|
425 | def run(self, dataOut, path, blocksPerFile=10, metadataList=None, | |
423 | dataList=[], setType=None, description={}): |
|
426 | dataList=[], setType=None, description={}): | |
424 |
|
427 | |||
425 | self.dataOut = dataOut |
|
428 | self.dataOut = dataOut | |
@@ -516,7 +519,10 class HDFWriter(Operation): | |||||
516 | elif isinstance(meta[name], dict): |
|
519 | elif isinstance(meta[name], dict): | |
517 | for key, value in meta[name].items(): |
|
520 | for key, value in meta[name].items(): | |
518 | return value[x] |
|
521 | return value[x] | |
519 | return 'channel{:02d}'.format(x) |
|
522 | if 'cspc' in name: | |
|
523 | return 'pair{:02d}'.format(x) | |||
|
524 | else: | |||
|
525 | return 'channel{:02d}'.format(x) | |||
520 |
|
526 | |||
521 | def writeMetadata(self, fp): |
|
527 | def writeMetadata(self, fp): | |
522 |
|
528 |
@@ -29,9 +29,9 setup( | |||||
29 | version = __version__, |
|
29 | version = __version__, | |
30 | description = DOCLINES[0], |
|
30 | description = DOCLINES[0], | |
31 | long_description = "\n".join(DOCLINES[2:]), |
|
31 | long_description = "\n".join(DOCLINES[2:]), | |
32 | url = "https://github.com/JRO-Peru/schain", |
|
32 | url = "https://github.com/JRO-Peru/schainpy", | |
33 | author = "Jicamarca Radio Observatory", |
|
33 | author = "Jicamarca Radio Observatory", | |
34 | author_email = "jro-developers@igp.gob.pe", |
|
34 | author_email = "jro-developers@jro.igp.gob.pe", | |
35 | license="BSD-3-Clause", |
|
35 | license="BSD-3-Clause", | |
36 | classifiers=[ |
|
36 | classifiers=[ | |
37 | "Development Status :: 4 - Beta", |
|
37 | "Development Status :: 4 - Beta", |
General Comments 0
You need to be logged in to leave comments.
Login now