from pylens import powerlaw x0 = numpy.logspace(-4.,1.,51) #x0 = numpy.linspace(0.1,15.,151) x,y = ndinterp.create_axes_array([x0,x0]) N = 3.7 Q = 0.73 k = 2.*N-1./3+4./(405.*N)+46/(25515.*N**2) amp = k**(2*N)/(2*N*gamma(2*N)) print amp,x.size amp = 1. import time t = time.time() yi,xi = sersic.sersicdeflections(-y.ravel(),x.ravel(),amp,1.,N,Q) yi *= -1 print time.time()-t t = time.time() yy,xx = powerlaw.powerlawdeflections(x.ravel(),y.ravel(),2.4,1.1,1e-5,0.73) print time.time()-t xr = x.ravel() yr = y.ravel() t = time.time() gam = 1.1/2. s2 = 1e-5*1e-5 q0 = (1.-gam)*2.4**(2*gam)/(0.73**gam) defs = [powerlaw.fastelldefl(xr[i],yr[i],q0,gam,0.73,s2) for i in range(x.size)] print time.time()-t t = time.time() phi = sersic.sersicpotential(-y.ravel(),x.ravel(),amp,1.,N,Q)
x0 = numpy.logspace(-4.,1.,51) n0 = numpy.linspace(0.5,6.,12) q0 = numpy.linspace(0.1,1.,19) x,y,n,q = ndinterp.create_axes_array([x0,x0,n0,q0]) yout = x*0. xout = y*0. for i in range(x.shape[2]): for j in range(x.shape[3]): X = x[:,:,i,j] Y = y[:,:,i,j] N = n[0,0,i,j] Q = q[0,0,i,j] k = 2.*N-1./3+4./(405.*N)+46/(25515.*N**2) amp = k**(2*N)/(2*N*gamma(2*N)) yi,xi = sersic.sersicdeflections(-Y.ravel(),X.ravel(),amp,1.,N,Q) yout[:,:,i,j] = -1*yi.reshape(Y.shape) xout[:,:,i,j] = xi.reshape(X.shape) axes = {} axes[0] = interpolate.splrep(x0,numpy.arange(x0.size)) axes[1] = interpolate.splrep(x0,numpy.arange(x0.size)) axes[2] = interpolate.splrep(n0,numpy.arange(n0.size)) axes[3] = interpolate.splrep(q0,numpy.arange(q0.size)) xmodel = ndinterp.ndInterp(axes,xout) ymodel = ndinterp.ndInterp(axes,yout) f = open('serModelsHDR.dat','wb') cPickle.dump([xmodel,ymodel],f,2) f.close()
x0 = numpy.logspace(-4., 1., 51) n0 = numpy.linspace(0.5, 6., 12) q0 = numpy.linspace(0.1, 1., 19) x, y, n, q = ndinterp.create_axes_array([x0, x0, n0, q0]) yout = x * 0. xout = y * 0. for i in range(x.shape[2]): for j in range(x.shape[3]): X = x[:, :, i, j] Y = y[:, :, i, j] N = n[0, 0, i, j] Q = q[0, 0, i, j] k = 2. * N - 1. / 3 + 4. / (405. * N) + 46 / (25515. * N**2) amp = k**(2 * N) / (2 * N * gamma(2 * N)) yi, xi = sersic.sersicdeflections(-Y.ravel(), X.ravel(), amp, 1., N, Q) yout[:, :, i, j] = -1 * yi.reshape(Y.shape) xout[:, :, i, j] = xi.reshape(X.shape) axes = {} axes[0] = interpolate.splrep(x0, numpy.arange(x0.size)) axes[1] = interpolate.splrep(x0, numpy.arange(x0.size)) axes[2] = interpolate.splrep(n0, numpy.arange(n0.size)) axes[3] = interpolate.splrep(q0, numpy.arange(q0.size)) xmodel = ndinterp.ndInterp(axes, xout) ymodel = ndinterp.ndInterp(axes, yout) f = open('serModelsHDR.dat', 'wb') cPickle.dump([xmodel, ymodel], f, 2) f.close()