From fd28d2e126a4b3cff1e0fe90a9d21c23df1d361c Mon Sep 17 00:00:00 2001 From: CunrenLiang <56097947+CunrenLiang@users.noreply.github.com> Date: Sun, 22 Nov 2020 20:44:52 -0800 Subject: [PATCH] Update runIonFilt.py delete functions not used --- components/isceobj/Alos2Proc/runIonFilt.py | 143 --------------------- 1 file changed, 143 deletions(-) diff --git a/components/isceobj/Alos2Proc/runIonFilt.py b/components/isceobj/Alos2Proc/runIonFilt.py index 1745d3e..3798229 100644 --- a/components/isceobj/Alos2Proc/runIonFilt.py +++ b/components/isceobj/Alos2Proc/runIonFilt.py @@ -755,146 +755,3 @@ def reformatMaskedAreas(maskedAreas, length, width): return maskedAreasReformated -######################################################################################################## -# The following functions are not used anywhere, and can be deleted. -######################################################################################################## - -def fit_surface(x, y, z, wgt, order): - # x: x coordinate, a column vector - # y: y coordinate, a column vector - # z: z coordinate, a column vector - # wgt: weight of the data points, a column vector - - - #number of data points - m = x.shape[0] - l = np.ones((m,1), dtype=np.float64) - -# #create polynomial -# if order == 1: -# #order of estimated coefficents: 1, x, y -# a1 = np.concatenate((l, x, y), axis=1) -# elif order == 2: -# #order of estimated coefficents: 1, x, y, x*y, x**2, y**2 -# a1 = np.concatenate((l, x, y, x*y, x**2, y**2), axis=1) -# elif order == 3: -# #order of estimated coefficents: 1, x, y, x*y, x**2, y**2, x**2*y, y**2*x, x**3, y**3 -# a1 = np.concatenate((l, x, y, x*y, x**2, y**2, x**2*y, y**2*x, x**3, y**3), axis=1) -# else: -# raise Exception('order not supported yet\n') - - if order < 1: - raise Exception('order must be larger than 1.\n') - - #create polynomial - a1 = l; - for i in range(1, order+1): - for j in range(i+1): - a1 = np.concatenate((a1, x**(i-j)*y**(j)), axis=1) - - #number of variable to be estimated - n = a1.shape[1] - - #do the least squares - a = a1 * np.matlib.repmat(np.sqrt(wgt), 1, n) - b = z * np.sqrt(wgt) - c = np.linalg.lstsq(a, b, rcond=-1)[0] - - #type: - return c - - -def cal_surface(x, y, c, order): - #x: x coordinate, a row vector - #y: y coordinate, a column vector - #c: coefficients of polynomial from fit_surface - #order: order of polynomial - - if order < 1: - raise Exception('order must be larger than 1.\n') - - #number of lines - length = y.shape[0] - #number of columns, if row vector, only one element in the shape tuple - #width = x.shape[1] - width = x.shape[0] - - x = np.matlib.repmat(x, length, 1) - y = np.matlib.repmat(y, 1, width) - z = c[0] * np.ones((length,width), dtype=np.float64) - - index = 0 - for i in range(1, order+1): - for j in range(i+1): - index += 1 - z += c[index] * x**(i-j)*y**(j) - - return z - - -def weight_fitting(ionos, weight, width, length, nrli, nali, nrlo, nalo, order): - ''' - ionos: input ionospheric phase - weight: weight - width: file width - length: file length - nrli: number of range looks of the input interferograms - nali: number of azimuth looks of the input interferograms - nrlo: number of range looks of the output ionosphere phase - nalo: number of azimuth looks of the ioutput ionosphere phase - order: the order of the polynomial for fitting ionosphere phase estimates - ''' - - from isceobj.Alos2Proc.Alos2ProcPublic import create_multi_index2 - - lengthi = int(length/nali) - widthi = int(width/nrli) - lengtho = int(length/nalo) - widtho = int(width/nrlo) - - #calculate output index - rgindex = create_multi_index2(widtho, nrli, nrlo) - azindex = create_multi_index2(lengtho, nali, nalo) - - #look for data to use - flag = (weight!=0)*(ionos!=0) - point_index = np.nonzero(flag) - m = point_index[0].shape[0] - - #calculate input index matrix - x0=np.matlib.repmat(np.arange(widthi), lengthi, 1) - y0=np.matlib.repmat(np.arange(lengthi).reshape(lengthi, 1), 1, widthi) - - x = x0[point_index].reshape(m, 1) - y = y0[point_index].reshape(m, 1) - z = ionos[point_index].reshape(m, 1) - w = weight[point_index].reshape(m, 1) - - #convert to higher precision type before use - x=np.asfarray(x,np.float64) - y=np.asfarray(y,np.float64) - z=np.asfarray(z,np.float64) - w=np.asfarray(w,np.float64) - coeff = fit_surface(x, y, z, w, order) - - #convert to higher precision type before use - rgindex=np.asfarray(rgindex,np.float64) - azindex=np.asfarray(azindex,np.float64) - phase_fit = cal_surface(rgindex, azindex.reshape(lengtho, 1), coeff, order) - - #format: widtho, lengtho, single band float32 - return phase_fit - - - - - - - - - - - - - -