tmp_x = [i] outer_x.append(tmp_x) outer_y.append( iny[pl.array(tmp_x)] ) return outer_x, outer_y atoms = [ 'Ar','Cd','He','Hg','Na','Ne' ] #atoms = [ 'Hg' ] for a in atoms: dat = pl.loadtxt('spectrum_'+a+'.dat') x1 = pl.find( dat[:,1] > pl.median(dat[:,1])+5*mypy.nmad(dat[:,1]) ) l1 = dat[:,0][ pl.find( dat[:,1] > pl.median(dat[:,1])+50*mypy.nmad(dat[:,1]) ) ] f1 = dat[:,1][ pl.find( dat[:,1] > pl.median(dat[:,1])+50*mypy.nmad(dat[:,1]) ) ] xp,fp = sep_peaks( x1, dat[:,1] ) lp = [ dat[:,0][ij] for ij in xp ] peaks_l = [] peaks_f = [] for i in range(len(xp)): line_l = lp[i] line_f = fp[i] if len(line_l)<5: continue fit_l, fit_f = mypy.gaussfit( line_l, line_f )
bg_V, noise_V = (-0.0007834, 0.003343) bg_R, noise_R = (-0.0099281, 0.045694) bg_I, noise_I = (-0.0103544, 0.067142) pxscale = 0.2 dr_asec = 7. / 2 dr_px = int(dr_asec / pxscale) cutouts, bgs, noises = [], [], [] for i_im in range(len(imnames)): sp = sp_cutouts[i_im] subimdat = imdats[i_im][5400:5600, 5500:5700] bg = pylab.median(subimdat) noise = mypy.nmad(subimdat) bgs.append(bg) noises.append(noise) vmin = bg - 3 * noise vmax = bg + 20 * noise cutouts.append(sp.imshow(pylab.ones((2*dr_px+1, 2*dr_px+1)), interpolation='nearest', cmap=pylab.cm.gray_r, vmin=vmin, vmax=vmax, zorder=1)) ax = sp.axis() sp.axis([ax[0], ax[1], ax[3], ax[2]]) t = sp.text(0.03, 0.07, imnames[i_im], transform=sp.transAxes, \ color='k', fontweight='bold', zorder=2, \ path_effects=[PathEffects.withStroke(linewidth=2, foreground='w')])
lmassbars = (lmassbins[1:] + lmassbins[:-1]) / 2 zbins = pylab.arange(0.5, 1.4, 0.1) zbars = (zbins[1:] + zbins[:-1]) / 2 digi_lmass = pylab.digitize(lmass_afta_1d, lmassbins) digi_z = pylab.digitize(z_1d, zbins) dm_medians = [] dm_nmads = [] z_medians = [] z_nmads = [] for dmi in range(1, len(lmassbins)): inds = pylab.find(digi_lmass == dmi) dm_medians.append(pylab.median(lmass_b4_1d[inds] - lmass_afta_1d[inds])) dm_nmads.append(mypy.nmad(lmass_b4_1d[inds] - lmass_afta_1d[inds])) for zi in range(1, len(zbins)): inds = pylab.find(digi_z == zi) z_medians.append(pylab.median(lmass_b4_1d[inds] - lmass_afta_1d[inds])) z_nmads.append(mypy.nmad(lmass_b4_1d[inds] - lmass_afta_1d[inds])) sp1.errorbar(lmassbars, dm_medians, yerr=dm_nmads, ls='-', color='r', marker='o', ms=7, mew=2, elinewidth=2,
n_galaxies = [] overdens_median = [] sfr_median = [] sfr_nmad = [] for i_overdens in range(len(catalog.overdensbars)): inds_lmass_overdens = (catalog.UVJ_class > -1) & \ (catalog.digi_lmass == i_lmass+1) & \ (catalog.digi_overdens == i_overdens+1) n_galaxies.append(numpy.count_nonzero(inds_lmass_overdens)) sfr_median.append( numpy.median(catalog.SFR_UVIR[inds_lmass_overdens])) sfr_nmad.append(mypy.nmad(catalog.SFR_UVIR[inds_lmass_overdens])) overdens_median.append( numpy.median(catalog.overdens[inds_lmass_overdens])) n_galaxies = numpy.array(n_galaxies) overdens_median = numpy.array(overdens_median) sfr_median = numpy.array(sfr_median) sfr_nmad = numpy.array(sfr_nmad) n = len(sfr_median) elog_sfr = numpy.log10( (sfr_median + sfr_nmad / n_galaxies**0.5) / sfr_median) color_lmass = cmap(i_lmass / (len(catalog.lmassbars) - 1.)) ### plotting SFR vs. overdensity
n_field = [] mean_sfr_field = [] median_sfr_field = [] median_sfr_weighted_field = [] nmad_sfr_field = [] median_lmasses_field = [] for i_bin in range(1, len(lmassbins)): inds = (digi_lmass == i_bin) & (digi_overdens == 1) inds_weighted = (digi_lmass_weighted == i_bin) & (digi_overdens_weighted == 1) n_field.append(numpy.count_nonzero(inds)) median_lmasses_field.append(numpy.median(master_lmass[inds])) try: mean = numpy.average(master_sfr[inds], weights=master_weights[inds]) median = numpy.median(master_sfr[inds]) median_weighted = numpy.median(weighted_master_sfr[inds_weighted]) nmad = mypy.nmad(master_sfr[inds]) mean_sfr_field.append(mean) median_sfr_field.append(median) median_sfr_weighted_field.append(median_weighted) nmad_sfr_field.append(nmad) except: mean_sfr_field.append(10**-4) median_sfr_field.append(10**-4) median_sfr_weighted_field.append(10**-4) nmad_sfr_field.append(10**-4) n_field = numpy.array(n_field) mean_sfr_field = numpy.array(mean_sfr_field) median_sfr_field = numpy.array(median_sfr_field) median_sfr_weighted_field = numpy.array(median_sfr_weighted_field)
for i_overdens in range(1, len(galaxies_catalog.overdensbins)): inds_lmass_overdens_sf = numpy.where((uvj_class == 1) & \ (digi_lmass2 == i_lmass) & \ (galaxies_catalog.digi_overdens == i_overdens))[0] ngals_sf = len(inds_lmass_overdens_sf) n_galaxies_sf[-1].append(ngals_sf) z_galaxies_sf[-1].append( galaxies_catalog.zspec[inds_lmass_overdens_sf].tolist()) sfr_median_sf[-1].append( numpy.median( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf])) sfr_nmad_sf[-1].append( mypy.nmad( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf])) ssfr_median_sf[-1].append( numpy.median( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf] / 10**galaxies_catalog.lmass[inds_lmass_overdens_sf])) ssfr_nmad_sf[-1].append( mypy.nmad( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf] / 10**galaxies_catalog.lmass[inds_lmass_overdens_sf])) overdens_median_sf[-1].append( numpy.median( galaxies_catalog.overdens[inds_lmass_overdens_sf])) overdens_nmad_sf[-1].append( mypy.nmad( galaxies_catalog.overdens[inds_lmass_overdens_sf])) lmass_median_sf[-1].append(
fratios = psfdat_zoom / psfdat_zoom.max() ind = pylab.where(abs(fratios - 0.5) == abs(fratios - 0.5).min()) fwhm_px = 2 * rr[ind][0] ### search for existing catalog of empty sky positions try: sky_positions = mypy.readcat('./catalogs/sky-positions_%s.cat' % (os.path.basename(imname)[:-5])) xy_final = pylab.array(zip(sky_positions.x, sky_positions.y)) noise_estimate = mypy.nmad(sky_positions.flux_aper) except: print '\nidentifying empty sky positions...' ### finding empty sky positions, must be 3 hwhms away from nearest object N0 = 3 * 10**3 xy_rand = pylab.rand(N0, 2) xy_rand[:,0] *= (imdat.shape[1] - 3*dx) xy_rand[:,1] *= (imdat.shape[0] - 3*dx) xy_rand[:,0] += 1.5*dx xy_rand[:,1] += 1.5*dx apers = CircularAperture(xy_rand, r=3*fwhm_px/2.) phot_dat = aperture_photometry(imdat, apers) phot_wht = aperture_photometry(whtdat, apers)
schechter_covs[i] = numpy.array(schechter_covs[i]) print '\n\n' ### print scatter in Schechter parameters for i in range(5): print '%s' % voronoi_labels[i] ### single Schechter alpha p16 = numpy.percentile(schechter_fits[i][:, 0], 16) p50 = numpy.percentile(schechter_fits[i][:, 0], 50) p84 = numpy.percentile(schechter_fits[i][:, 0], 84) print 'alpha = %5.2f +/- %.2f (%.2f)' % ( p50, (p84 - p16) / 2., mypy.nmad(schechter_fits[i][:, 0])) ### single Schechter Mstar p16 = numpy.percentile(schechter_fits[i][:, 1], 16) p50 = numpy.percentile(schechter_fits[i][:, 1], 50) p84 = numpy.percentile(schechter_fits[i][:, 1], 84) print 'Mstar = %5.2f +/- %.2f (%.2f)' % ( p50, (p84 - p16) / 2., mypy.nmad(schechter_fits[i][:, 1])) print '' ### double Schechter Mstar p16 = numpy.percentile(dschechter_fits[i][:, 0], 16) p50 = numpy.percentile(dschechter_fits[i][:, 0], 50) p84 = numpy.percentile(dschechter_fits[i][:, 0], 84)
for i_overdens in range(1, len(galaxies_catalog.overdensbins)): inds_lmass_overdens_sf = numpy.where((galaxies_catalog.UVJ_class == 1) & \ (digi_lmass2 == i_lmass) & \ (galaxies_catalog.digi_overdens == i_overdens))[0] ngals_sf = len(inds_lmass_overdens_sf) n_galaxies_sf[-1].append(ngals_sf) z_galaxies_sf[-1].append( galaxies_catalog.zspec[inds_lmass_overdens_sf].tolist()) sfr_median_sf[-1].append( numpy.median( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf])) sfr_nmad_sf[-1].append( mypy.nmad( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf])) ssfr_median_sf[-1].append( numpy.median( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf] / 10**lmass_array[inds_lmass_overdens_sf])) ssfr_nmad_sf[-1].append( mypy.nmad( galaxies_catalog.SFR_UVIR[inds_lmass_overdens_sf] / 10**lmass_array[inds_lmass_overdens_sf])) overdens_median_sf[-1].append( numpy.median( galaxies_catalog.overdens[inds_lmass_overdens_sf])) overdens_nmad_sf[-1].append( mypy.nmad( galaxies_catalog.overdens[inds_lmass_overdens_sf])) lmass_median_sf[-1].append(
for i in range(len(fields)): f = fields[i] sp = sps[i] inds = pylab.find(f.cat.z_spec > 0) zspec = f.cat.z_spec[inds] zphot = f.zout.z_peak[inds] zspec_master += zspec.tolist() zphot_master += zphot.tolist() zspec_master = pylab.array(zspec_master) zphot_master = pylab.array(zphot_master) dz1pluszspec_master = (zphot_master - zspec_master) / (1 + zspec_master) nmad = mypy.nmad(dz1pluszspec_master) foutlier = len(pylab.find( abs(dz1pluszspec_master) >= 0.15)) * 1. / len(dz1pluszspec_master) ### major panel: all fields nbins = 120 clo, chi = 0, 1.05 ### colorbar limits cmap = pylab.cm.spectral hist2d, xedges, yedges = pylab.histogram2d(zspec_master, zphot_master, bins=(nbins, nbins), range=([axis1[0], axis1[1]], [axis1[2], axis1[3]])) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
c=0 fig = pl.figure() wvlnth_soln_dat = pf.getdata( 'NeCd.fits' )[3:-3] for a in atoms: c += 1 pl.subplot(3,2,c) restlam = pl.arange(4555,6820) restflux = pl.arange(4555,6820)*0.0 imdat = pf.getdata( gl.glob('*'+a+'*pass1.fits')[0] )[3:-3] outerim = [] for i in range(len(imdat)): wvlnth_flux = wvlnth_soln_dat[i] lines_x = pl.find( wvlnth_flux > pl.median(wvlnth_flux)+mypy.nmad(wvlnth_flux)*15 ) lines_x, lines_f = sep_peaks( lines_x, wvlnth_flux ) xpeaks = [] for j in range(len(lines_x)): xpeaks.append( find_xpeak( lines_x[j], lines_f[j] ) ) lam = get_wvlnth_soln( pl.arange(len(wvlnth_flux))+1, xpeaks ) fiber_flux = imdat[i] interpflux = pl.interp( restlam, lam, fiber_flux ) restflux += interpflux / len(imdat) outerim.append(interpflux) pf.writeto( 'arclamp_'+a+'_medi_spec_pass2.fits', pl.array(outerim) ) pl.savetxt( 'spectrum_'+a+'.dat', [ [restlam[i],restflux[i]] for i in range(len(restlam)) ] )