Exemplo n.º 1
0
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]
Exemplo n.º 2
0
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]
Exemplo n.º 3
0
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]