def disk_function(I_0=0.0, h=0.0, PA=0.0, ell=0.0): disk = function_description('Exponential', name='disk') disk.I_0.setValue(I_0) disk.h.setValue(h) disk.PA.setValue(PA) disk.ell.setValue(ell) return disk
def disk_function(I_0, h, PA, ell): disk = function_description('Exponential', name='disk') disk.I_0.setValue(I_0, vmin=1e-33, vmax=10*I_0) disk.h.setValue(h, vmin=1e-33, vmax=10*h) disk.PA.setValue(PA, vmin=0, vmax=180) disk.ell.setValue(ell, vmin=0, vmax=1) return disk
def bulge_function(I_e=0.0, r_e=0.0, n=0.0, PA=0.0, ell=0.0): bulge = function_description('Sersic', name='bulge') bulge.I_e.setValue(I_e) bulge.r_e.setValue(r_e) bulge.n.setValue(n) bulge.PA.setValue(PA) bulge.ell.setValue(ell) return bulge
def bulge_function(I_e, r_e, n, PA, ell): bulge = function_description('Sersic', name='bulge') bulge.I_e.setValue(I_e, vmin=1e-33, vmax=10*I_e) bulge.r_e.setValue(r_e, vmin=1e-33, vmax=10*r_e) bulge.n.setValue(n, vmin=0.5, vmax=5.9) bulge.PA.setValue(PA, vmin=0, vmax=180) bulge.ell.setValue(ell, vmin=0, vmax=1) return bulge
def create_model(): model = SimpleModelDescription() model.x0.setValue(50, vmin=40, vmax=60) model.y0.setValue(50, vmin=40, vmax=60) bulge = function_description('Sersic', name='bulge') bulge.I_e.setValue(1.0, vmin=0.5, vmax=1.5) bulge.r_e.setValue(10, vmin=5, vmax=15) bulge.n.setValue(4, vmin=3, vmax=5) bulge.PA.setValue(45, vmin=30, vmax=60) bulge.ell.setValue(0.5, vmin=0, vmax=1) disk = function_description('Exponential', name='disk') disk.I_0.setValue(0.7, vmin=0.4, vmax=0.9) disk.h.setValue(15, vmin=10, vmax=20) disk.PA.setValue(60, vmin=45, vmax=90) disk.ell.setValue(0.2, vmin=0, vmax=0.5) model.addFunction(bulge) model.addFunction(disk) return model
def example_model_description(): fs = FunctionSetDescription('example') fs.x0.setValue(36.0, [25, 45]) fs.y0.setValue(32.0, [25, 45]) sersic = function_description('Sersic') sersic.PA.setValue(93.0217, [0, 180]) sersic.ell.setValue(0.37666, [0, 1]) sersic.n.setValue(4, fixed=True) sersic.I_e.setValue(1, [0, 10]) sersic.r_e.setValue(25, [0, 100]) exponential = function_description('Exponential') exponential.PA.setValue(93.0217, [0, 180]) exponential.ell.setValue(0.37666, [0, 1]) exponential.I_0.setValue(1, [0, 10]) exponential.h.setValue(25, [0, 100]) fs.addFunction(sersic) fs.addFunction(exponential) return ModelDescription([fs])
flux = [] for cube in cubes: f = pyfits.open(cube) shape = f[0].data.shape _mask = f[0].data <= 0 _flux = np.ma.array(f[0].data, mask=_mask) y0, x0 = np.where(_flux == _flux.max()) r = distance(shape, x0, y0) _flux[r > fitradius] = np.ma.masked y0 = shape[0] / 2 _flux /= _flux.max() flux.append(_flux) f.close() psf_func = function_description(func, name='psf') psf_func.PA.setValue(60, vmin=-190, vmax=190) psf_func.ell.setValue(0.2, vmin=-1.0, vmax=1.0) psf_func.I_0.setValue(1.0, vmin=1e-20, vmax=10.0) if func == 'Gaussian': psf_func.sigma.setValue(1.0, vmin=0.1, vmax=20.0) else: psf_func.fwhm.setValue(2.5, vmin=0.1, vmax=20.0) if func == 'Moffat': if beta4: psf_func.beta.setValue(4, fixed=True) else: psf_func.beta.setValue(1.9, vmin=1e-20, vmax=20.0) model = SimpleModelDescription() model.x0.setValue(flux[0].shape[1] / 2) model.x0.setLimitsRel(5, 5)
label = {0.5: r'$n=0.5$', 1: r'$n=1\ (\mathrm{exponencial})$', 4: r'$n=4\ (\mathrm{de\ Vaucouleurs})$', 10: r'$n=10$', } line = {0.5: 'k:', 1: 'b-', 4: 'r-', 10: 'k-.', } bins = np.arange(100) bins_c = bins[1:] - 0.5 sersic = function_description('Sersic') model = SimpleModelDescription() model.addFunction(sersic) model.x0.setValue(x0 + 1) model.y0.setValue(x0 + 1) model.Sersic.I_e.setValue(1.0) model.Sersic.r_e.setValue(r_e) model.Sersic.PA.setValue(0.0) model.Sersic.ell.setValue(0.0) model.Sersic.n.setValue(4) plot_setup() width_pt = 448.07378 width_in = width_pt / 72.0 * 0.95 fig = plt.figure(figsize=(width_in, width_in * 0.5))
bins_c = bins[:-1] + 0.5 y0 = psfradius x0 = psfradius pa = 90.0 ba = 1.0 flux_r = radialProfile(psfflux[i_plot], bins, x0, y0, pa, ba) bg_r = radialProfile(psfbg[i_plot], bins, x0, y0, pa, ba) flux_bg_r = radialProfile(psfflux[i_plot] - psfbg[i_plot], bins, x0, y0, pa, ba) plt.clf() plt.plot(bins_c, flux_r) plt.plot(bins_c, flux_bg_r) plt.plot(bins_c, bg_r) plt.show() psf_func = function_description(func, 'psf') psf_func.PA.setValue(0.0, vmin=-190, vmax=190) psf_func.ell.setValue(0.2, vmin=-1.0, vmax=1.0) psf_func.I_0.setValue(1.0, vmin=1e-20, vmax=10.0) if func == 'Gaussian': psf_func.sigma.setValue(1.0, vmin=1e-20, vmax=20.0) else: psf_func.fwhm.setValue(3.0, vmin=1e-20, vmax=20.0) if func == 'Moffat': if beta4: psf_func.beta.setValue(4.0, fixed=True) else: psf_func.beta.setValue(2.0, vmin=1.0, vmax=20.0) model = SimpleModelDescription() model.x0.setValue(psfradius)