Exemplo n.º 1
0
def psf__wPSF(parm, t):
    """
    parm: s0, c, d, A, B
    example  (72, 125, 246, 1, 1)
    """
    s0, c, d, A, B = parm
    com = (t - c) / d
    sq = 1 + N.power(com, 2) + A * N.power(com, 3) + B * N.power(com, 4)
    return s0 * N.sqrt(sq)
Exemplo n.º 2
0
def psf__wPSF_fromSigma(t, parm):
    """
    t: now this is sigma that you got
    parm: s0, c, d, A, B (use parm form psf__wPSF fit)
    """
    s0, c, d, A, B = parm
    com = (t - c) / d
    sq = 1 + N.power(com, 2) + A * N.power(com, 3) + B * N.power(com, 4)
    return s0 * N.sqrt(1 + sq)
Exemplo n.º 3
0
def psf__wPSF_fromSigma(t, parm):
    """
    t: now this is sigma that you got
    parm: s0, c, d, A, B (use parm form psf__wPSF fit)
    """
    s0, c, d, A, B = parm
    com = (t - c) / d
    sq = 1 + N.power(com, 2) + A * N.power(com, 3) + B * N.power(com, 4)
    return s0 * N.sqrt( 1 + sq)
Exemplo n.º 4
0
def psf__wPSF(parm, t):
    """
    parm: s0, c, d, A, B
    example  (72, 125, 246, 1, 1)
    """
    s0, c, d, A, B = parm
    com = (t - c) / d
    sq = 1 + N.power(com, 2) + A * N.power(com, 3) + B * N.power(com, 4)
    return s0 * N.sqrt(sq)
Exemplo n.º 5
0
def radialaverage(data, center=None, useMaxShape=False):
    """
    data: ND array
    center: coordinate of center of radii
    useMinShape: the output uses the maximum shape available

    return 1D array
    """
    if center is None:
        center = N.array(data.shape) // 2
    if len(center) != data.ndim:
        raise ValueError(
            'dimension of center (%i) does not match the dimension of data (%i)'
            % (len(center), data.ndim))

    zyx = N.indices((data.shape))
    r = N.zeros(data.shape, N.float32)
    for i, t in enumerate(zyx):
        r += (t - center[i])**2
    r = N.sqrt(r)
    #y, x = N.indices((data.shape))
    #r = N.sqrt((x - center[0])**2 + (y - center[1])**2) # distance from the center
    r = r.astype(N.int)

    if data.dtype.type in (N.complex64, N.complex128):
        rbin = N.bincount(r.ravel(), data.real.ravel())
        ibin = N.bincount(r.ravel(), data.imag.ravel())
        tbin = N.empty(rbin.shape, data.dtype.type)
        tbin.real = rbin
        tbin.imag = ibin

    else:
        tbin = N.bincount(r.ravel(), data.ravel())
    nr = N.bincount(r.ravel())
    radialprofile = tbin / nr.astype(N.float32)

    if not useMaxShape:
        minShape = min(list(N.array(data.shape) - center) + list(center))
        radialprofile = radialprofile[:minShape]
    return radialprofile
Exemplo n.º 6
0
def radialaverage(data, center=None, useMaxShape=False):
    """
    data: ND array
    center: coordinate of center of radii
    useMinShape: the output uses the maximum shape available

    return 1D array
    """
    if center is None:
        center = N.array(data.shape) // 2
    if len(center) != data.ndim:
        raise ValueError('dimension of center (%i) does not match the dimension of data (%i)' % (len(center), data.ndim))

    zyx = N.indices((data.shape))
    r = N.zeros(data.shape, N.float32)
    for i, t in enumerate(zyx):
        r += (t - center[i])**2
    r = N.sqrt(r)
    #y, x = N.indices((data.shape))
    #r = N.sqrt((x - center[0])**2 + (y - center[1])**2) # distance from the center
    r = r.astype(N.int)

    if data.dtype.type in (N.complex64, N.complex128):
        rbin = N.bincount(r.ravel(), data.real.ravel())
        ibin = N.bincount(r.ravel(), data.imag.ravel())
        tbin = N.empty(rbin.shape, data.dtype.type)
        tbin.real = rbin
        tbin.imag = ibin
        
    else:
        tbin = N.bincount(r.ravel(), data.ravel())
    nr = N.bincount(r.ravel())
    radialprofile = tbin / nr.astype(N.float32)

    if not useMaxShape:
        minShape = min(list(N.array(data.shape) - center) + list(center))
        radialprofile = radialprofile[:minShape]
    return radialprofile 
Exemplo n.º 7
0
def cart2polar2D(y, x):
    r = N.sqrt(y**2 + x**2)
    theta = N.arctan2(y, x)
    return r, theta