In [2]:
import absorberspec, ebossspec, sdssspec, datapath, fitsio, starburstspec
import cookb_signalsmooth as cbs
from scipy.stats import nanmean, nanmedian
import cosmology as cosmo
# Read in
masterwave, allflux, allivar = ebossspec.rest_allspec_readin()
objs_ori = ebossspec.elg_readin()
nobj = objs_ori.size
median_sn = zeros(objs_ori.size)
galaxytype = objs_ori['CLASS']
zgood = objs_ori['zGOOD']
z = objs_ori['Z']
# Select wavelength range
index_wave_all = searchsorted(masterwave, [1900., 7200.])
tmpflux = allflux[index_wave_all[0]:index_wave_all[1],:]
tmpivar = allivar[index_wave_all[0]:index_wave_all[1],:]
tmpwave = masterwave[index_wave_all[0]:index_wave_all[1]]
tmploglam = log10(tmpwave)
# Calculate median S/N
for i in arange(nobj):
iuse = (where(tmpivar[:,i]>0))[0]
median_sn[i] = median(tmpflux[iuse,i]*sqrt(tmpivar[iuse,i]))
# Median Composite of All sources with zgood==1
tmpmedian = zeros(tmpwave.size)
for i in arange((tmpflux.shape)[0]):
iuse = (where(np.logical_and(np.logical_and(tmpivar[i,:]>0, zgood==1), median_sn>0)))[0]
tmpmedian[i] = median(tmpflux[i,iuse])
In [6]:
inuv = (where(logical_and(logical_and(logical_and(zgood,
z>0.6), z<1.2), galaxytype=='GALAXY')))[0]
usemedian = zeros(tmpwave.size)
for i in arange((tmpflux.shape)[0]):
iuse = (where(np.logical_and(tmpivar[i,inuv]>0, median_sn[inuv]>0)))[0]
usemedian[i] = median(tmpflux[i,inuv[iuse]])
In [16]:
fig = figure(figsize=(20,7))
ax = fig.add_subplot(111)
ax.plot(tmpwave, usemedian)
ax.set_xlim(2200, 4700)
ax.set_ylim(0.,1)
ax.plot([2796.53, 2796.53], [0,1])
Out[16]:
In [188]:
# Calculate oii_ew and oii_luminosity, only for INUV objects
# 1Mpc = 3.08568025x10^24 cm
Mpc_cm = 3.08568025E24
oiilum = zeros(nobj)
oii_ew = zeros(nobj)
index_oii = searchsorted(tmpwave, 3728.)
dnoiiwave = 10
dwave = median(tmpwave[index_oii-dnoiiwave:index_oii+dnoiiwave]-tmpwave[index_oii-dnoiiwave-1:index_oii+dnoiiwave-1])
print dwave, tmpwave[index_oii-dnoiiwave], tmpwave[index_oii+dnoiiwave]
oiisum = sum(tmpflux[index_oii-dnoiiwave:index_oii+dnoiiwave, inuv]*
(tmpivar[index_oii-dnoiiwave:index_oii+dnoiiwave, inuv]>0), axis=0)*dwave # Need to subtract the negligible continuum
oiilum[inuv] = oiisum*power(cosmo.luminosity_distance(z[inuv]), 2)*4.*pi*power(Mpc_cm,2)*1E-17
oii_left = sum(tmpflux[index_oii-25:index_oii-15, inuv]*(tmpivar[index_oii-25:index_oii-15, inuv]>0), axis=0)
oii_right = sum(tmpflux[index_oii+15:index_oii+25, inuv]*(tmpivar[index_oii+15:index_oii+25, inuv]>0), axis=0)
oii_ew[inuv] = oiisum/(oii_left+oii_right)*2. #This is just wrong!
# Calculate MgII continum for normalization
index_mgii = (where(logical_or(logical_and(tmpwave>2770., tmpwave<2788.), logical_and(tmpwave>2812., tmpwave<2830.))))[0]
mgii_cont = median(tmpflux[index_mgii,:], axis=0)
tmpflux_mgii = tmpflux/mgii_cont.reshape(1, nobj)
index_2600 = (where(logical_or(logical_and(tmpwave>2554., tmpwave<2572.), logical_and(tmpwave>2630., tmpwave<2648.))))[0]
feii2600_cont = median(tmpflux[index_2600,:], axis=0)
tmpflux_2600 = tmpflux/feii2600_cont.reshape(1, nobj)
index_2400 = (where(logical_or(logical_and(tmpwave>2302., tmpwave<2320.), logical_and(tmpwave>2400., tmpwave<2420.))))[0]
feii2400_cont = median(tmpflux[index_2400,:], axis=0)
tmpflux_2400 = tmpflux/feii2400_cont.reshape(1, nobj)
In [131]:
fig = figure(figsize=(9,7))
ax = fig.add_subplot(111)
n, bins, patches = ax.hist(oii_ew[inuv],
bins=arange(0, 35, 1), edgecolor='black')
this_ylim = [0, 1500]
ax.set_ylim(this_ylim)
#ax.set_xscale('log')
#ax.set_xlim(3680, 3780)
ax.set_title(r'[OII] EW Distribution', fontsize=15)
ax.set_xlabel(r'$W_{\rm O\,II}^{\lambda3727}$ [$\AA$]', fontsize=20)
ax.set_ylabel(r'$\Delta$ N ($\Delta W_{\rm O\,II}^{\lambda3727}$ = 1 $\AA$)', fontsize=20)
# Luminosity
fig = figure(figsize=(9,7))
ax = fig.add_subplot(111)
n, bins, patches = ax.hist(log10(oiilum[inuv]),
bins=arange(40., 43.5, 0.1), edgecolor='black')
this_ylim = [0, 1100]
ax.set_ylim(this_ylim)
#ax.set_xscale('log')
#ax.set_xlim(3680, 3780)
ax.set_title(r'[OII] Lum Distribution', fontsize=15)
ax.set_xlabel(r'$W_{\rm O\,II}^{\lambda3727}$ [$\AA$]', fontsize=20)
ax.set_ylabel(r'$\Delta$ N ($\Delta W_{\rm O\,II}^{\lambda3727}$ = 1 $\AA$)', fontsize=20)
Out[131]:
In [227]:
#oiiew_logbins = np.arange(log10(4.), log10(100.), log10(1.5))
#oiiew_logbins[0] = log10(2.)
#oiiew_logbins[-1] = 4.
#oiilum_logbins = np.arange(41., 42.5, log10(1.5))
#oiilum_logbins[0] = 40.5
#oiilum_logbins[-1] = 43.
#oiiew_logbins = array([log10(1.), log10(2.8), log10(5.2), log10(10.2), log10(200.)])
#oiilum_logbins = array([40., 41.2, 41.6, 42.08, 44.])
oiiew_logbins = array([log10(1.), log10(2.), log10(4.), log10(8.), log10(16.), log10(200.)])
oiilum_logbins = array([40., 40.8, 41.4, 41.8, 42.4, 44.])
median_oii_ew = zeros(oiiew_logbins.size-1)
for i in np.arange(oiiew_logbins.size-1):
oiitmp = oii_ew[(oii_ew>power(10., oiiew_logbins[i])) & (oii_ew<power(10., oiiew_logbins[i+1]))]
median_oii_ew[i] = median(oiitmp)
print oiitmp.shape, median(oiitmp)
median_oii_lum = zeros(oiilum_logbins.size-1)
for i in np.arange(oiilum_logbins.size-1):
oiitmp = oiilum[(oiilum>power(10., oiilum_logbins[i])) & (oiilum<power(10., oiilum_logbins[i+1]))]
median_oii_lum[i] = median(oiitmp)
print oiitmp.shape, median(oiitmp)
In [118]:
In [228]:
mgii_oiiew_median = zeros((tmpwave.size, oiiew_logbins.size-1))
mgii_oiilum_median = zeros((tmpwave.size, oiilum_logbins.size-1))
feii2600_oiiew_median = zeros((tmpwave.size, oiiew_logbins.size-1))
feii2600_oiilum_median = zeros((tmpwave.size, oiilum_logbins.size-1))
feii2400_oiiew_median = zeros((tmpwave.size, oiiew_logbins.size-1))
feii2400_oiilum_median = zeros((tmpwave.size, oiilum_logbins.size-1))
In [229]:
# Note tmpflux includes all objects but for those inapproriate oiiew=0, oiilum=0
for i in arange(oiiew_logbins.size-1):
iuse = (where(logical_and(oii_ew>power(10., oiiew_logbins[i]), oii_ew<power(10., oiiew_logbins[i+1]))))[0]
mgii_oiiew_median[:,i] = median(tmpflux_mgii[:,iuse], axis=1)
feii2600_oiiew_median[:,i] = median(tmpflux_2600[:,iuse], axis=1)
feii2400_oiiew_median[:,i] = median(tmpflux_2400[:,iuse], axis=1)
for i in arange(oiilum_logbins.size-1):
iuse = (where(logical_and(oiilum>power(10., oiilum_logbins[i]), oiilum<power(10., oiilum_logbins[i+1]))))[0]
mgii_oiilum_median[:,i] = median(tmpflux_mgii[:,iuse], axis=1)
feii2600_oiilum_median[:,i] = median(tmpflux_2600[:,iuse], axis=1)
feii2400_oiilum_median[:,i] = median(tmpflux_2400[:,iuse], axis=1)
In [260]:
tmpvel = zeros(tmpwave.size)
tmpvel[1:] = (tmpwave[1:]-2803.53)/tmpwave[1:]*3E5
tmpvel[0] = tmpvel[1]
fig = figure(figsize=(20,8))
#this_ylim = [0.35, 1.45]
this_ylim = [0.1, 2.0]
#this_ylim = [0.2, 12.5]
ax = fig.add_subplot(111)
dwave = median(tmpwave[1:]-tmpwave[:-1])
colors = ['red', 'brown', 'green','blue', 'black']
#colors = ['black', 'violet', 'blue', 'green', 'yellow', 'brown', 'magenta', 'red']
#for i in arange(oiiew_logbins.size-1):
# ax.plot(tmpwave+dwave/2., oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
for i in arange(oiiew_logbins.size-2)+1:
#ax.plot(tmpwave+dwave/2., mgii_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
ax.plot(tmpvel+69./2., mgii_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
ax.set_ylim(this_ylim)
#ax.set_xlim(3680, 3780)
ax.set_xlim(-2000., 1000.)
#ax.set_title('Composite Spectrum of Emission Line Galaxies (ELGs) from eBOSS', fontsize=15)
ax.set_xlabel(r'$\lambda$ [$\AA$]', fontsize=20)
ax.set_ylabel(r'Normalized $f(\lambda)$', fontsize=20)
vel2796 = -(2803.53-2796.35)/2800.*3E5
ax.plot([0,0], this_ylim, '--k')
ax.plot([vel2796, vel2796], this_ylim, '--k')
Out[260]:
In [250]:
tmpvel = zeros(tmpwave.size)
tmpvel[1:] = (tmpwave[1:]-2600.17)/tmpwave[1:]*3E5
tmpvel[0] = tmpvel[1]
fig = figure(figsize=(20,8))
#this_ylim = [0.35, 1.45]
this_ylim = [0.2, 1.5]
ax = fig.add_subplot(111)
dwave = median(tmpwave[1:]-tmpwave[:-1])
colors = ['red', 'brown', 'green','blue']
#colors = ['black', 'violet', 'blue', 'green', 'yellow', 'brown', 'magenta', 'red']
#for i in arange(oiiew_logbins.size-1):
# ax.plot(tmpwave+dwave/2., oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
#for i in arange(oiilum_logbins.size-1):
# ax.plot(tmpwave+dwave/2., feii2600_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
i = 0
#ax.plot(tmpwave+dwave/2., feii2600_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
#ax.plot(tmpwave+dwave/2., feii2600_oiiew_median[:,i], color=colors[i], linewidth=3)
ax.plot(tmpvel+69./2., feii2600_oiiew_median[:,i], color=colors[i], linewidth=3, drawstyle='steps')
i = 3
#ax.plot(tmpwave+dwave/2., feii2600_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
#ax.plot(tmpwave+dwave/2., feii2600_oiiew_median[:,i], color=colors[i], linewidth=3)
ax.plot(tmpvel+69./2., feii2600_oiiew_median[:,i], color=colors[i], linewidth=3, drawstyle='steps')
ax.set_ylim(this_ylim)
#ax.set_xlim(2550, 2650)
ax.set_xlim(-4000, 4000)
#ax.set_title('Composite Spectrum of Emission Line Galaxies (ELGs) from eBOSS', fontsize=15)
ax.set_xlabel(r'$\lambda$ [$\AA$]', fontsize=20)
ax.set_ylabel(r'Normalized $f(\lambda)$', fontsize=20)
ax.plot([0,0], this_ylim, '--k')
Out[250]:
In [251]:
fig = figure(figsize=(20,8))
#this_ylim = [0.35, 1.45]
this_ylim = [0.2, 1.5]
ax = fig.add_subplot(111)
dwave = median(tmpwave[1:]-tmpwave[:-1])
colors = ['red', 'brown', 'green','blue']
#colors = ['black', 'violet', 'blue', 'green', 'yellow', 'brown', 'magenta', 'red']
#for i in arange(oiiew_logbins.size-1):
# ax.plot(tmpwave+dwave/2., oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
#for i in arange(oiilum_logbins.size-1):
# ax.plot(tmpwave+dwave/2., feii2600_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
i = 0
ax.plot(tmpwave+dwave/2., feii2400_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
i = 3
ax.plot(tmpwave+dwave/2., feii2400_oiiew_median[:,i], color=colors[i], drawstyle='steps', linewidth=3)
ax.set_ylim(this_ylim)
#ax.set_xlim(2300, 2420)
ax.set_xlim(2335, 2390)
#ax.set_title('Composite Spectrum of Emission Line Galaxies (ELGs) from eBOSS', fontsize=15)
ax.set_xlabel(r'$\lambda$ [$\AA$]', fontsize=20)
ax.set_ylabel(r'Normalized $f(\lambda)$', fontsize=20)
Out[251]:
In [216]:
(2803.53-2796.35)/2800.*3E5
Out[216]:
In [214]:
iwave = (where(logical_and(tmpwave>2780., tmpwave<2810.)))[0]
dwave = median(tmpwave[iwave[1]:iwave[-1]]-tmpwave[iwave[0]:iwave[-2]])
In [215]:
69.*(2803.53-2796.35)/dwave
Out[215]:
In [222]:
feii2600_oiiew_median.shape
Out[222]:
In [261]:
inuv.shape
Out[261]:
In [ ]: