def prepare_data(uko, vke, upar, uper, minimal, cline_s, minimaly): along = np.zeros((uko.shape[0], 400)) # take only 100 across points across = np.zeros((uko.shape[0], 400)) data1 = np.zeros((uko.shape[0], 400)) data2 = np.zeros((uko.shape[0], 400)) data3 = np.zeros((uko.shape[0], 400)) data4 = np.zeros((uko.shape[0], 400)) arc = coasti.arc_length(cline_s) for y in range(10, uko.shape[0] - 10): i = 0 for x in range(5, uko.shape[1] - 5): if minimal[y, x] >= -1 and minimal[ y, x] < 6 and i < 400 and uko.mask[y, x] == False: a = arc[minimaly[y, x]] along[y, i] = a[0] across[y, i] = minimal[y, x] data1[y, i] = upar[y, x] data2[y, i] = uper[y, x] data3[y, i] = uko[y, x] data4[y, i] = vke[y, x] i = i + 1 tmp = data1[10, :] index, value = min(enumerate(tmp), key=operator.itemgetter(1)) ref = across[10, index] acr = across.copy() for y in range(across.shape[0]): tmp = data1[y, :] index, value = min(enumerate(tmp), key=operator.itemgetter(1)) diff = across[y, index] - ref acr[y, :] = across[y, :] - diff data1[data1 == 0] = np.nan data2[data2 == 0] = np.nan data3[data3 == 0] = np.nan data4[data4 == 0] = np.nan #along[along == 0] = np.nan #across[across == 0] = np.nan return [across, acr, along, data1, data2, data3, data4]
def preparation(uko, upar, minimal, cline_s, minimaly, rho): arc = coasti.arc_length(cline_s) along = np.zeros((minimal.shape[0], 1000)) # take only 400 across points across = np.zeros((minimal.shape[0], 1000)) raw = Args() full = Args() raw_rho = np.zeros((minimal.shape[0], 1000)) raw_upar = np.zeros((minimal.shape[0], 1000)) full_rho = np.zeros((minimal.shape[0], 1000)) full_upar = np.zeros((minimal.shape[0], 1000)) for y in range(len(arc)): along[y, :] = arc[y] for x in range(1000): across[:, x] = -1 + x * 0.01 mini = np.around(minimal, 2) for y in range(len(arc)): for x in range(minimal.shape[1]): if uko.mask[y, x] == False and mini[y, x] < 10 and mini[ y, x] > -2 and mini[y, x] != 0: a = across[y, :] - mini[y, x] tmp = np.where(abs(a) < 0.005) tmp = tmp[0] if len(tmp) != 0: tmp = tmp[0] #print tmp tmp2 = np.int16(minimaly[y, x]) raw_upar[tmp2, tmp] = upar[y, x] raw_rho[tmp2, tmp] = rho[y, x] else: print("no hit") data_raw_upar = raw_upar.copy() data_raw_rho = raw_rho.copy() for y in range(len(arc)): c1 = np.zeros((raw_upar.shape[1])) c1[:] = raw_upar[y, :] c2 = np.zeros((raw_rho.shape[1])) c2[:] = raw_rho[y, :] np.reshape(c1, len(c1)) bad_indexes = (c1 == 0) c1[bad_indexes] = np.nan c2[bad_indexes] = np.nan good_indexes = np.logical_not(bad_indexes) good_data1 = c1[good_indexes].copy() good_data2 = c2[good_indexes].copy() if good_data1.size: interpolated1 = np.interp(bad_indexes.nonzero()[0], good_indexes.nonzero()[0], good_data1) c1[bad_indexes] = interpolated1 interpolated2 = np.interp(bad_indexes.nonzero()[0], good_indexes.nonzero()[0], good_data2) c2[bad_indexes] = interpolated2 full_upar[y, :] = c1.copy() full_rho[y, :] = c2.copy() tmp = np.nonzero(data_raw_upar[y, :]) tmp = tmp[0] if tmp.size: tmp1 = min(tmp) full_upar[y, 0:tmp1 - 1] = 0. tmp2 = max(tmp) full_upar[y, tmp2 + 1:full_upar.shape[1]] = 0. tmp = np.nonzero(data_raw_rho[y, :]) tmp = tmp[0] if tmp.size: tmp1 = min(tmp) full_rho[y, 0:tmp1 - 1] = np.nan tmp2 = max(tmp) full_rho[y, tmp2 + 1:full_rho.shape[1]] = np.nan tmp = data_raw_upar[10, :] index, value = min(enumerate(tmp), key=operator.itemgetter(1)) ref = across[10, index] acr = across.copy() for y in range(across.shape[0]): tmp = data_raw_upar[y, :] index, value = min(enumerate(tmp), key=operator.itemgetter(1)) diff = across[y, index] - ref acr[y, :] = across[y, :] - diff #acr=data_raw.rho - full.rho #acr=0 return [along, across, acr, raw_upar, full_upar, raw_rho, full_rho]
def prepare_data(inn,gulf,cline_s): arc = coasti.arc_length(cline_s) # New coordiantes along = np.zeros((gulf.minimal.shape[0],1000)) across = np.zeros((gulf.minimal.shape[0],1000)) # Variables that carry the new coordiantes raw = Args() full = Args() raw.upar = np.zeros((gulf.minimal.shape[0],1000)) raw.rho = np.zeros((gulf.minimal.shape[0],1000)) raw.po = np.zeros((gulf.minimal.shape[0],1000)) full.upar = np.zeros((gulf.minimal.shape[0],1000)) full.rho = np.zeros((gulf.minimal.shape[0],1000)) full.po = np.zeros((gulf.minimal.shape[0],1000)) for y in range(len(arc)): along[y,:] = arc[y] for x in range(1000): across[:,x] = -1+x*0.01 mini = np.around(gulf.minimal,2) #j=0 for y in range(len(arc)): for x in range(gulf.minimal.shape[1]): if inn.uko.mask[y,x] == False and mini[y,x] < 10 and mini[y,x] > -2 and mini[y,x] != 0: a = across[y,:]-mini[y,x] tmp = np.where(abs(a)<0.005) tmp = tmp[0] if len(tmp) != 0: tmp = tmp[0] #print tmp tmp2 = np.int16(gulf.minimaly[y,x]) if raw.upar[tmp2,tmp] == 0: raw.upar[tmp2,tmp] = gulf.upar[y,x] raw.rho[tmp2,tmp] = inn.rho[y,x] raw.po[tmp2,tmp] = inn.po[y,x] #else: #print("no hit") #print("doppelt", j) data_raw_upar = raw.upar.copy() data_raw_rho = raw.rho.copy() for y in range(len(arc)): c1 = np.zeros((raw.upar.shape[1])) c1[:] = raw.upar[y,:] c2 = np.zeros((raw.rho.shape[1])) c2[:] = raw.rho[y,:] c3 = np.zeros((raw.po.shape[1])) c3[:] = raw.po[y,:] np.reshape(c1, len(c1)) bad_indexes = (c1==0) c1[bad_indexes] = np.nan c2[bad_indexes] = np.nan c3[bad_indexes] = np.nan good_indexes = np.logical_not(bad_indexes) good_data1 = c1[good_indexes].copy() good_data2 = c2[good_indexes].copy() good_data3 = c3[good_indexes].copy() if good_data1.size: interpolated1 = np.interp(bad_indexes.nonzero()[0], good_indexes.nonzero()[0], good_data1) c1[bad_indexes] = interpolated1 interpolated2 = np.interp(bad_indexes.nonzero()[0], good_indexes.nonzero()[0], good_data2) c2[bad_indexes] = interpolated2 interpolated3 = np.interp(bad_indexes.nonzero()[0], good_indexes.nonzero()[0], good_data3) c3[bad_indexes] = interpolated3 full.upar[y,:] = c1.copy() full.rho[y,:] = c2.copy() full.po[y,:] = c3.copy() tmp = np.nonzero(data_raw_upar[y,:]) tmp = tmp[0] if tmp.size: tmp1 = min(tmp) full.upar[y,0:tmp1-1] = 0. tmp2 = max(tmp) full.upar[y,tmp2+1:full.upar.shape[1]] = 0. tmp = np.nonzero(data_raw_rho[y,:]) tmp = tmp[0] if tmp.size: tmp1 = min(tmp) full.rho[y,0:tmp1-1] = np.nan full.po[y,0:tmp1-1] = np.nan tmp2 = max(tmp) full.rho[y,tmp2+1:full.rho.shape[1]] = np.nan full.po[y,tmp2+1:full.po.shape[1]] = np.nan tmp = data_raw_upar[10,:] index, value = min(enumerate(tmp), key=operator.itemgetter(1)) ref = across[10,index] acr = across.copy() ind = 0 for y in range(across.shape[0]): tmp = data_raw_upar[y,:] index, value = min(enumerate(tmp), key=operator.itemgetter(1)) diff = across[y,index] - ref acr[y,:] = across[y,:] -diff ind = ind + index ind = ind /(across.shape[0]) raw.ind = np.int16(ind) return [along,across,acr,raw,full]