Example #1
0
 def Fqz_imag(z):
     z_scr = select([z<z_min,z>z_max,z>=z_min] , [z_min,z_max,z])
     mask = select( [z<z_min-20*(z_max-z_min), z>z_max+20*(z_max-z_min), 
                     z<z_min, z>z_max, z>=z_min], 
                    [np.exp(-40), np.exp(-40), 
                     np.exp(-2*(z_min-z)/(z_max-z_min)), 
                     np.exp(-2*(z-z_max)/(z_max-z_min)), 1])
     return Fqz_imag_raw(z_scr) * mask
Example #2
0
def RBFmorph(NCB, knownC, knownD):
    # Determine displacement of Base nodes NCB by displacing nodes at coordinates
    # knownC by known landmark displacement
    #rbfx = Rbf(knownC[:,0],knownC[:,1],knownC[:,2],knownD[:,0],function='gaussian')
    #rbfy = Rbf(knownC[:,0],knownC[:,1],knownC[:,2],knownD[:,1],function='gaussian')
    #rbfz = Rbf(knownC[:,0],knownC[:,1],knownC[:,2],knownD[:,2],function='gaussian')
    #DSx = rbfx(NCB[:,0],NCB[:,1],NCB[:,2])
    #DSy = rbfy(NCB[:,0],NCB[:,1],NCB[:,2])
    #DSz = rbfz(NCB[:,0],NCB[:,1],NCB[:,2])
    #print np.c_[DSx,DSy,DSz]
    #print NCB
    #NCI = np.c_[DSx,DSy,DSz]+NCB
    nrB = np.array([knownC.shape])[0, 0]
    shapeN = np.array([NCB.shape])
    nrN = shapeN[0, 0]
    MATR = np.zeros((nrB, nrB))
    knownD = np.r_[knownD, np.zeros((4, 3))]
    Pb = np.c_[np.ones((nrB, 1)), knownC]
    for i in range(0, nrB):
        TEMP = np.array([
            np.sqrt(
                np.sum(
                    np.power((np.ones((nrB, 1)) * knownC[i, :] - knownC), 2),
                    1))
        ])
        ##### Thin plate spline:
        TEMP = TEMP * TEMP * np.log10(TEMP)
        ##### Gauss weight:
        #TEMP = np.exp(-TEMP*TEMP)
        ##### CPC2
        #TEMP = np.power((1-TEMP),4)*(4*TEMP+1)
        MATR[i, :] = TEMP.reshape((1, nrB))
        MATR[i, i] = 0
    MATR = np.c_[np.r_[MATR, Pb.T], np.r_[Pb, np.zeros((4, 4))]]
    #MATR = np.matrix(MATR)
    #MATR = np.linalg.pinv(MATR)
    #knownD = np.matrix(knownD)
    Coeff = np.array(np.linalg.solve(MATR, knownD))
    ResDisp = np.zeros((nrN, 3))
    for i in range(0, nrN):
        TEMP = np.sqrt(
            np.sum(np.power((np.ones((nrB, 1)) * NCB[i, :] - knownC), 2), 1))
        ##### Thin Plate Spline:
        TEMPlog10 = np.log10(TEMP)
        TEMPlog10 = sp.select([TEMPlog10 < -1000, TEMPlog10 >= 0],
                              [-1000, TEMPlog10])
        TEMP = TEMP * TEMP * TEMPlog10
        ##### Gauss weight:
        #TEMP = np.exp(-TEMP*TEMP)
        ##### CPC2
        #TEMP = np.power((1-TEMP),4)*(4*TEMP+1)

        ResDisp[i, :] = np.sum(
            Coeff * np.r_[TEMP.reshape((nrB, 1)) * np.ones((1, 3)),
                          np.array([[1, 1, 1]]),
                          np.transpose(np.ones((3, 1)) * NCB[i, :])], 0)
    NCI = NCB + ResDisp
    return NCI
Example #3
0
def truean(JD, P, T0=0, Ecc=0):
    """Calculate true anomaly for array of dates."""
    Phase = phase(JD, P, T0)  # phases
    M = 2 * scipy.pi * Phase  # mean anomaly
    if Ecc <= machep:
        return M
    eccanV = scipy.vectorize(eccan)
    E = eccanV(Ecc, M) % (2 * scipy.pi)  # eccentric anomaly
    cosE = scipy.cos(E)
    cosNu = (cosE - Ecc) / (1 - Ecc * cosE)
    Nu = scipy.arccos(cosNu)  # true anomaly
    Nu = scipy.select([E <= scipy.pi, scipy.ones(len(Nu))], \
                          [Nu, 2 * scipy.pi - Nu]) # E>pi cases
    return Nu
Example #4
0
def RBFmorph(NCB, knownC, knownD):
    # Determine displacement of Base nodes NCB by displacing nodes at coordinates
    # knownC by known landmark displacement
    ####rbfx = Rbf(knownC[:,0],knownC[:,1],knownC[:,2],knownD[:,0])
    ####rbfy = Rbf(knownC[:,0],knownC[:,1],knownC[:,2],knownD[:,1])
    ####rbfz = Rbf(knownC[:,0],knownC[:,1],knownC[:,2],knownD[:,2])
    ####DSx = rbfx(NCB[:,0],NCB[:,1],NCB[:,2])
    ####DSy = rbfy(NCB[:,0],NCB[:,1],NCB[:,2])
    ####DSz = rbfz(NCB[:,0],NCB[:,1],NCB[:,2])
    ####NCI = NCB + np.c_[DSx,DSy,DSz]
    nrB = np.array([knownC.shape])[0, 0]
    shapeN = np.array([NCB.shape])
    nrN = shapeN[0, 0]
    MATR = np.zeros((nrB, nrB))
    knownD = np.r_[knownD, np.zeros((4, 3))]
    Pb = np.c_[np.ones((nrB, 1)), knownC]

    for i in range(0, nrB):
        # Thin plate spline:
        TEMP = np.array([
            np.sqrt(
                np.sum(
                    np.power((np.ones((nrB, 1)) * knownC[i, :] - knownC), 2),
                    1))
        ])
        TEMP = TEMP * TEMP * np.log10(TEMP)
        MATR[i, :] = TEMP.reshape((1, nrB))
        MATR[i, i] = 0

    MATR = np.c_[np.r_[MATR, Pb.T], np.r_[Pb, np.zeros((4, 4))]]
    Coeff = np.array(np.linalg.solve(MATR, knownD))
    ResDisp = np.zeros((nrN, 3))

    for i in range(0, nrN):
        TEMP = np.sqrt(
            np.sum(np.power((np.ones((nrB, 1)) * NCB[i, :] - knownC), 2), 1))
        TEMPlog10 = np.log10(TEMP)
        TEMPlog10 = sp.select([TEMPlog10 < -1000, TEMPlog10 >= 0],
                              [-1000, TEMPlog10])
        TEMP = TEMP * TEMP * TEMPlog10
        ResDisp[i, :] = np.sum(
            Coeff * np.r_[TEMP.reshape((nrB, 1)) * np.ones((1, 3)),
                          np.array([[1, 1, 1]]),
                          np.transpose(np.ones((3, 1)) * NCB[i, :])], 0)

    NCI = NCB + ResDisp
    return NCI