diff --git a/.gitignore b/.gitignore index 9ba0a22..9362e51 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,11 @@ build/ *.pyc *.so -*.egg-info/ \ No newline at end of file +*.egg-info/ + +# eclipse +.project +.pydevproject + +# vscode +.vscode \ No newline at end of file diff --git a/README.md b/README.md index 85641e6..5704c9f 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,13 @@ Signal Chain (SCh) is a radar data processing library developed using [Python](w ## Installation -Install system dependencies, download the latest stable release from [svn](http://jro-dev.igp.gob.pe/svn/jro_soft/schain/Releases/) e.g. schainpy-2.2.5.tar.gz. and install it as a normal python package. +Install system dependencies, clone the latest version from [git](http://jro-dev.igp.gob.pe/rhodecode/schain/) and install it as a normal python package. ``` $ 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 -$ tar xvzf schainpy-2.2.5.tar.gz -$ cd schainpy-2.2.5 +$ sudo pip install numpy +$ git clone http://jro-dev.igp.gob.pe/rhodecode/schain/ +$ cd schain $ sudo pip install ./ ``` @@ -21,7 +22,7 @@ $ sudo pip install ./ $ sudo pip install virtualenv $ virtualenv /path/to/virtual --system-site-packages $ source /path/to/virtual/bin/activate -(virtual) $ cd schainpy-2.2.5 +(virtual) $ cd schain (virtual) $ pip install ./ ``` @@ -128,4 +129,4 @@ op.addParameter(name='wintitle', value='RTI', format='str') controller.start() -``` +``` \ No newline at end of file diff --git a/schainpy/scripts/optimun_offset.py b/schainpy/scripts/optimun_offset.py new file mode 100644 index 0000000..8ebcba0 --- /dev/null +++ b/schainpy/scripts/optimun_offset.py @@ -0,0 +1,113 @@ +import h5py +import numpy +import matplotlib.pyplot as plt +import glob +import os + +#---------------------- Functions --------------------- + +def findFiles(path): + + dirList = [] + fileList = [] + + for thisPath in os.listdir(path): + dirList.append(os.path.join(path,thisPath)) + dirList.sort() + + for thisDirectory in dirList: + files = glob.glob1(thisDirectory, "*.hdf5") + files.sort() + for thisFile in files: + fileList.append(os.path.join(thisDirectory,thisFile)) + + return fileList + +def readFiles(fileList): + + meteors_array = numpy.zeros((1,4)) + + for thisFile in fileList: + + #Leer + f1 = h5py.File(thisFile,'r') + grp1 = f1['Data'] + grp2 = grp1['data_output'] + meteors1 = grp2['table0'][:] + meteors_array = numpy.vstack((meteors_array,meteors1)) + #cerrar + f1.close() + + meteors_array = numpy.delete(meteors_array, 0, axis=0) + meteors_list = [meteors_array[:,0],meteors_array[:,1],meteors_array[:,2],meteors_array[:,3]] + return meteors_list + +def estimateMean(offset_list): + + mean_off = [] + axisY_off = [] + axisX_off = [] + + for thisOffset in offset_list: + mean_aux = numpy.mean(thisOffset, axis = 0) + mean_off.append(mean_aux) + axisX_off.append(numpy.array([0,numpy.size(thisOffset)])) + axisY_off.append(numpy.array([mean_aux,mean_aux])) + + return mean_off, axisY_off, axisX_off + +def plotPhases(offset0, axisY0, axisX0, title): + f, axarr = plt.subplots(4, sharey=True) + color = ['b','g','r','c'] +# plt.grid() + for i in range(len(offset0)): + thisMeteor = offset0[i] + thisY = axisY0[i] + thisX = axisX0[i] + thisColor = color[i] + + opt = thisColor + 'o' + axarr[i].plot(thisMeteor,opt) + axarr[i].plot(thisX, thisY, thisColor) + axarr[i].set_ylabel('Offset ' + str(i)) + + plt.ylim((-180,180)) + axarr[0].set_title(title + ' Offsets') + axarr[3].set_xlabel('Number of estimations') + + return + +def filterOffsets(offsets0, stdvLimit): + offsets1 = [] + + for thisOffset in offsets0: + pstd = numpy.std(thisOffset)*stdvLimit + pmean = numpy.mean(thisOffset) + outlier1 = thisOffset > pmean - pstd + outlier2 = thisOffset < pmean + pstd + not_outlier = numpy.logical_and(outlier1,outlier2) + thisOffset1 = thisOffset[not_outlier] + offsets1.append(thisOffset1) + + return offsets1 + +#---------------------- Setup --------------------------- + +path = '/home/jespinoza/Pictures/JASMET30/201608/phase' +stdvLimit = 0.5 + +#---------------------- Script --------------------------- + +fileList = findFiles(path) +offsets0 = readFiles(fileList) +mean0, axisY0, axisX0 = estimateMean(offsets0) +plotPhases(offsets0, axisY0, axisX0, 'Original') + +offsets1 = filterOffsets(offsets0, stdvLimit) +mean1, axisY1, axisX1 = estimateMean(offsets1) +plotPhases(offsets1, axisY1, axisX1, 'Filtered') + +print "Original Offsets: %.2f, %.2f, %.2f, %.2f" % (mean0[0],mean0[1],mean0[2],mean0[3]) +print "Filtered Offsets: %.2f, %.2f, %.2f, %.2f" % (mean1[0],mean1[1],mean1[2],mean1[3]) + +plt.show() diff --git a/setup.py b/setup.py index a0f14e8..d4eba9c 100644 --- a/setup.py +++ b/setup.py @@ -3,9 +3,9 @@ Created on Jul 16, 2014 @author: Miguel Urco ''' - -from schainpy import __version__ +import numpy from setuptools import setup, Extension +from schainpy import __version__ setup(name="schainpy", version=__version__, @@ -34,7 +34,7 @@ setup(name="schainpy", include_package_data=False, scripts =['schainpy/gui/schainGUI', 'schainpy/scripts/schain'], - ext_modules=[Extension("cSchain", ["schainpy/model/proc/extensions.c"])], + ext_modules=[Extension("cSchain", ["schainpy/model/proc/extensions.c"], include_dirs=[numpy.get_include()])], install_requires=[ "scipy >= 0.14.0", "h5py >= 2.2.1",