|
|
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()
|
|
|
|