From d4dec4c4d8aedbdabaadd8b7d634cb395cd1811b 2018-07-09 06:07:47 From: Juan C. Espinoza Date: 2018-07-09 06:07:47 Subject: [PATCH] Remove C extension --- diff --git a/schainpy/model/data/jrodata.py b/schainpy/model/data/jrodata.py index c0e5d49..6a59848 100644 --- a/schainpy/model/data/jrodata.py +++ b/schainpy/model/data/jrodata.py @@ -9,7 +9,6 @@ import numpy import datetime from .jroheaderIO import SystemHeader, RadarControllerHeader -# from schainpy import cSchain def getNumpyDtype(dataTypeCode): @@ -63,46 +62,24 @@ def hildebrand_sekhon(data, navg): navg : numbers of averages Return: - -1 : any error - anoise : noise's level + mean : noise's level """ - sortdata = numpy.sort(data, axis=None) - lenOfData = len(sortdata) - nums_min = lenOfData*0.2 - - if nums_min <= 5: - nums_min = 5 - - sump = 0. - - sumq = 0. - - j = 0 - - cont = 1 - - while((cont==1)and(j nums_min: - rtest = float(j)/(j-1) + 1.0/navg - if ((sumq*j) > (rtest*sump**2)): - j = j - 1 - sump = sump - sortdata[j] - sumq = sumq - sortdata[j]**2 - cont = 0 - - j += 1 - - lnoise = sump /j - - return lnoise + sorted_spectrum = numpy.sort(data, axis=None) + nnoise = len(sorted_spectrum) # default to all points in the spectrum as noise + for npts in range(1, len(sorted_spectrum)+1): + partial = sorted_spectrum[:npts] + mean = partial.mean() + var = partial.var() + if var * navg < mean**2.: + nnoise = npts + else: + # partial spectrum no longer has characteristics of white noise + break - # return cSchain.hildebrand_sekhon(sortdata, navg) + noise_spectrum = sorted_spectrum[:nnoise] + mean = noise_spectrum.mean() + return mean class Beam: @@ -231,6 +208,12 @@ class JROData(GenericData): profileIndex = None + error = (0, '') + + def __str__(self): + + return '{} - {}'.format(self.type, self.getDatatime()) + def getNoise(self): raise NotImplementedError diff --git a/schainpy/model/proc/cfunctions.pyx b/schainpy/model/proc/cfunctions.pyx deleted file mode 100644 index a3b3c24..0000000 --- a/schainpy/model/proc/cfunctions.pyx +++ /dev/null @@ -1,10 +0,0 @@ -# import numpy -cimport numpy - -def decoder(numpy.ndarray[numpy.complex_t, ndim=2] fft_code, numpy.ndarray[numpy.complex_t, ndim=2] data): - - fft_data = numpy.fft.fft(data, axis=1) - conv = fft_data*fft_code - data = numpy.fft.ifft(conv, axis=1) - - return data \ No newline at end of file diff --git a/schainpy/model/proc/extensions.c b/schainpy/model/proc/extensions.c deleted file mode 100644 index 7ebee6b..0000000 --- a/schainpy/model/proc/extensions.c +++ /dev/null @@ -1,139 +0,0 @@ -#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION -#define NUM_CPY_THREADS 8 -#include -#include -#include -#include -#include - -// void printArr(int *array); -static PyObject *hildebrand_sekhon(PyObject *self, PyObject *args); -static PyObject *correlateByBlock(PyObject *self, PyObject *args); -#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ -#define PyMODINIT_FUNC void -#endif - -static PyMethodDef extensionsMethods[] = { - { "correlateByBlock", (PyCFunction)correlateByBlock, METH_VARARGS, "get correlation by block" }, - { "hildebrand_sekhon", (PyCFunction)hildebrand_sekhon, METH_VARARGS, "get noise with hildebrand_sekhon" }, - { NULL, NULL, 0, NULL } -}; - -PyMODINIT_FUNC initcSchain() { - Py_InitModule("cSchain", extensionsMethods); - import_array(); -} - -static PyObject *correlateByBlock(PyObject *self, PyObject *args) { - - // int *x = (int*) malloc(4000000 * 216 * sizeof(int));; - // int a = 5; - // x = &a; - // int b = 6; - // x = &b; - // printf("Antes de imprimir x \n"); - // printf("%d \n", x[0]); - - PyObject *data_obj1, *data_obj2; - PyArrayObject *data_array1, *data_array2, *correlateRow, *out, *dataRow, *codeRow; //, , - int mode; - - if (!PyArg_ParseTuple(args, "OOi", &data_obj1, &data_obj2, &mode)) return NULL; - - data_array1 = (PyArrayObject *) PyArray_FROM_OTF(data_obj1, NPY_COMPLEX128, NPY_ARRAY_IN_ARRAY); - data_array2 = (PyArrayObject *) PyArray_FROM_OTF(data_obj2, NPY_FLOAT64, NPY_ARRAY_IN_ARRAY); - - npy_intp dims[1]; - dims[0] = 200; - npy_intp dims_code[1]; - dims_code[0] = 16; - - double complex * dataRaw; - double * codeRaw; - dataRaw = (double complex*) PyArray_DATA(data_array1); - codeRaw = (double *) PyArray_DATA(data_array2); - double complex ** outC = malloc(40000*200*sizeof(double complex)); - int i; - - clock_t start = clock(); - for(i=0; i<40000; i++){ - // codeRow = PyArray_SimpleNewFromData(1, dims_code, NPY_FLOAT64, codeRaw + 16 * i); - // dataRow = PyArray_SimpleNewFromData(1, dims, NPY_COMPLEX128, dataRaw + 200 * i); - // Py_INCREF(codeRow); - // Py_INCREF(dataRow); - // PyArray_ENABLEFLAGS(codeRow, NPY_ARRAY_OWNDATA); - // PyArray_ENABLEFLAGS(dataRow, NPY_ARRAY_OWNDATA); - correlateRow = (PyArrayObject *) PyArray_Correlate2(PyArray_SimpleNewFromData(1, dims_code, NPY_FLOAT64, codeRaw + 16 * i), PyArray_SimpleNewFromData(1, dims, NPY_COMPLEX128, dataRaw + 200 * i), (npy_intp) 2); - //Py_INCREF(correlateRow); - // PyArray_ENABLEFLAGS(correlateRow, NPY_ARRAY_OWNDATA); - memcpy(outC + 200*i, (double complex*) PyArray_DATA(correlateRow), 200 * sizeof(double complex)); - - Py_DECREF(correlateRow); - // Py_DECREF(codeRow); - // Py_DECREF(dataRow); - } - clock_t end = clock(); - float seconds = (float)(end - start) / CLOCKS_PER_SEC; - printf("%f", seconds); - // - npy_intp dimsret[2]; - dimsret[0] = 40000; - dimsret[1] = 200; - out = PyArray_SimpleNewFromData(2, dimsret, NPY_COMPLEX128, outC); - PyArray_ENABLEFLAGS(out, NPY_ARRAY_OWNDATA); - //Py_INCREF(out); - Py_DECREF(data_array1); - Py_DECREF(data_array2); - // PyArray_DebugPrint(out); - // Py_DECREF(data_obj2); - // Py_DECREF(data_obj1); - // Py_DECREF(codeRow); - // Py_DECREF(dataRow); - // free(dataRaw); - // free(codeRaw); - - return PyArray_Return(out); -} - -static PyObject *hildebrand_sekhon(PyObject *self, PyObject *args) { - double navg; - PyObject *data_obj, *data_array; - - if (!PyArg_ParseTuple(args, "Od", &data_obj, &navg)) return NULL; - data_array = PyArray_FROM_OTF(data_obj, NPY_FLOAT64, NPY_ARRAY_IN_ARRAY); - if (data_array == NULL) { - Py_XDECREF(data_array); - Py_XDECREF(data_obj); - return NULL; - } - double *sortdata = (double*)PyArray_DATA(data_array); - int lenOfData = (int)PyArray_SIZE(data_array) ; - double nums_min = lenOfData*0.2; - if (nums_min <= 5) nums_min = 5; - double sump = 0; - double sumq = 0; - int j = 0; - int cont = 1; - double rtest = 0; - while ((cont == 1) && (j < lenOfData)) { - sump = sump + sortdata[j]; - sumq = sumq + pow(sortdata[j], 2); - if (j > nums_min) { - rtest = (double)j/(j-1) + 1/navg; - if ((sumq*j) > (rtest*pow(sump, 2))) { - j = j - 1; - sump = sump - sortdata[j]; - sumq = sumq - pow(sortdata[j],2); - cont = 0; - } - } - j = j + 1; - } - - double lnoise = sump / j; - - Py_DECREF(data_array); - - return Py_BuildValue("d", lnoise); -} - diff --git a/schainpy/model/proc/jroproc_voltage.py b/schainpy/model/proc/jroproc_voltage.py index dc3cfff..9b61a70 100644 --- a/schainpy/model/proc/jroproc_voltage.py +++ b/schainpy/model/proc/jroproc_voltage.py @@ -1,8 +1,6 @@ import sys import numpy from scipy import interpolate -#TODO -#from schainpy import cSchain from schainpy.model.proc.jroproc_base import ProcessingUnit, MPDecorator, Operation from schainpy.model.data.jrodata import Voltage from schainpy.utils import log diff --git a/setup.py b/setup.py index 3701f0b..812bfdf 100644 --- a/setup.py +++ b/setup.py @@ -45,9 +45,6 @@ setup(name = "schainpy", }, include_package_data = False, scripts = ['schainpy/gui/schainGUI'], - ext_modules = [ - Extension("cSchain", ["schainpy/model/proc/extensions.c"]) - ], entry_points = { 'console_scripts': [ 'schain = schainpy.cli.cli:main', @@ -59,9 +56,6 @@ setup(name = "schainpy", "scipy >= 0.14.0", "h5py >= 2.2.1", "matplotlib >= 2.0.0", - "pyfits >= 3.4", - "paramiko >= 2.1.2", - "paho-mqtt >= 1.2", "zmq", "fuzzywuzzy", "click",