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)
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)
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)
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
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
def cart2polar2D(y, x): r = N.sqrt(y**2 + x**2) theta = N.arctan2(y, x) return r, theta