Example #1
0
	def app2abs(self,m_app,color,z,photo_band,color_band):
		'''
		takes apparent magnitude of a galaxy in some photometric band (SDSS g or r or i)
		and converts it to an absolute magnitude via distance modulus and k correction
		M_abs = m_app - Dist_Mod - K_corr
		takes:
			m_app		: float, apparent magnitude of galaxy
			color		: float, color of galaxy between two SDSS bands
			z		: float, total redshift of galaxy
			photo_band	: str, SDSS band for magnitude. Ex: 'g' or 'r' or 'i'
			color_band	: str, color between two SDSS bands. Ex: 'g - r' or 'g - i' or 'r - i', etc..
		'''
		dm = self.distance_mod(z)
		K_corr = calc_kcor(photo_band,z,color_band,color)
		return m_app - dm - K_corr
Example #2
0
def plot_mz(x,
            y,
            xlim=[
                0.1,
            ],
            ylim=[0, 1],
            nxbins=151,
            nybins=151,
            xlabel='x',
            ylabel='y',
            Om0=0.3,
            OmL=0.7,
            h=0.7,
            savefig=None):
    """
    plot a binned histogram showing distribution of galaxies in the apparent magnitude-redshift plane
    along with the expected m-z relation expected for a "standard candle" (object of fixed luminosity)
    + the same with correction for evolution (e-korrection) and spectrum redshift (k-correction)
    """
    fig, ax = plt.subplots(figsize=(2.5, 2.5))
    plt.ylabel(ylabel)
    plt.xlabel(xlabel)
    plt.xlim(xlim[0], xlim[1])
    plt.ylim(ylim[0], ylim[1])

    plot_2d_dist(x,
                 y,
                 xlim,
                 ylim,
                 nxbins,
                 nybins,
                 xlabel=xlabel,
                 ylabel=ylabel,
                 fig_setup=ax)

    # plot curve showing m-z relation for the constant luminosity ignoring K correction
    # set cosmology to the best values from 9-year WMAP data

    zd = np.linspace(x.min(), x.max(), 100)
    dlum = d_l(zd, Om0, OmL) * d_H / h

    # and k-correction using polynomial approximations of Chilingarian et al. 2010
    # see http://kcor.sai.msu.ru/getthecode/
    # this k-correction is not designed for z>0.6, so limit the z for correction calculation
    grzd = np.ones_like(zd)
    grzd = 0.8 * grzd
    kcorr = calc_kcor('r', zd, 'g - r', grzd)

    mcandle = -23. + 5. * np.log10(dlum * 1.e6 / 10.)
    mcandlevol = -23. + 5. * np.log10(dlum * 1.e6 / 10.) - 1.3 * zd
    mcandlevolkcorr = -23. + 5. * np.log10(
        dlum * 1.e6 / 10.) - 1.3 * zd + kcorr
    plt.plot(zd,
             mcandle,
             '--',
             c='r',
             lw=2.,
             label=r'$\mathrm{st.\ candle}\ M_r=-23$')
    plt.plot(zd,
             mcandlevol,
             '--',
             c='darkorange',
             lw=1.5,
             label=r'$\mathrm{+evo\ correction}$')
    plt.plot(zd,
             mcandlevolkcorr,
             '--',
             c='y',
             lw=1.,
             label=r'$\mathrm{+evo+k\ corrections}$')

    if savefig != None:
        plt.savefig(savefig, bbox_inches='tight')

    plt.legend(loc='lower right', fontsize=8, frameon=False)
    plt.show()
    return
Example #3
0
def plot_Mz(x,
            y,
            xlim=[0, 1],
            ylim=[0, 1],
            nxbins=151,
            nybins=151,
            xlabel='x',
            ylabel='y',
            Om0=0.3,
            OmL=0.7,
            h=0.7,
            savefig=None):
    fig, ax = plt.subplots(figsize=(3., 3.))
    plt.ylabel(ylabel)
    plt.xlabel(xlabel)
    plt.xlim(xlim[0], xlim[1])
    plt.ylim(ylim[0], ylim[1])
    #
    plot_2d_dist(x,
                 y,
                 xlim,
                 ylim,
                 nxbins,
                 nybins,
                 xlabel=xlabel,
                 ylabel=ylabel,
                 fig_setup=ax)

    zd = np.linspace(x.min(), x.max(), 100)
    dld = d_l(zd, Om0, OmL) * d_H / h
    # this k-correction is not design for z>0.5, so limit the z for correction calculation
    grzd = np.ones_like(zd)
    grzd = 0.8 * grzd
    kcorr = calc_kcor('r', zd, 'g - r', grzd)

    # main galaxy magnitude limit
    Mlim = 17.77 - 5. * np.log10(dld * 1.e5)

    mcandle = -23. * np.ones_like(zd)
    mcandlevol = -23. - 1.3 * zd
    mcandlevolkcorr = -23. - 1.3 * zd + kcorr

    plt.plot(zd,
             Mlim,
             '--',
             c='m',
             lw=2.,
             label=r'$\mathrm{SDSS\ spec.\ sample}\ m_{\rm lim}=17.77$')
    plt.plot(zd,
             mcandle,
             '--',
             c='r',
             lw=2.,
             label=r'$\mathrm{st.\ candle}\ M_r=-23$')
    plt.plot(zd,
             mcandlevol,
             '--',
             c='darkorange',
             lw=1.5,
             label=r'$\mathrm{+evo\ correction}$')
    plt.plot(zd,
             mcandlevolkcorr,
             '--',
             c='y',
             lw=1.,
             label=r'$\mathrm{+evo+k\ corrections}$')

    if savefig != None:
        plt.savefig(savefig, bbox_inches='tight')
    plt.legend(loc='upper right', fontsize=8, frameon=False)
    plt.show()
    return
Example #4
0
header = data.readline()
headers = header.split(csv_delimiter)

ids = {}
for field in required_fields:
    if required_fields[field] in headers:
        ids[field] = headers.index(required_fields[field])

if len(ids) != len(required_fields):
   print "can't find all required fields in the catalogue."
   sys.exit()

print "   z(TAO)          d(TAO)           d(z)            d(DM)      diff %"
for i in range(0,n):
    line = data.readline()
    values = line.split(csv_delimiter)
    z      = float(values[ids['z']])
    d      = float(values[ids['d']])
    b_abs  = float(values[ids['b_abs']])
    b_app  = float(values[ids['b_app']])
    r_app  = float(values[ids['r_app']])

    d_z    = z2d(z, 1)  # [Mpc/h]
    color  = b_app - r_app
    k_corr = calc_kcor('B', z, 'B - Rc', color)
    dm     = b_app - b_abs - k_corr # distance modulus
    d_lum  = math.pow(10, 0.2*dm + 1)/1e6  # luminosity distance [Mpc]
    d_m    = h*d_lum/(1+z)  # co-moving distance [Mpc/h]
    diff   = 100*d_m/d - 100; # %
    print "%e\t%e\t%e\t%e\t%.2f" % (z, d, d_z, d_m, diff)
Example #5
0
#z       = data[:, 35]
data = np.loadtxt("output.csv", delimiter=",", skiprows=1)
fiber_u = data[:, 2]
fiber_g = data[:, 3]
fiber_r = data[:, 4]
fiber_i = data[:, 5]
fiber_z = data[:, 6]
petro_u = data[:, 12]
petro_g = data[:, 13]
petro_r = data[:, 14]
petro_i = data[:, 15]
petro_z = data[:, 16]
z = data[:, -4]
del mags

kcor_fu = kcor.calc_kcor("u", z, "u - r", fiber_u - fiber_r)
kcor_fg = kcor.calc_kcor("g", z, "g - r", fiber_g - fiber_r)
kcor_fr = kcor.calc_kcor("r", z, "g - r", fiber_g - fiber_r)
kcor_fi = kcor.calc_kcor("i", z, "g - i", fiber_g - fiber_i)
kcor_fz = kcor.calc_kcor("z", z, "r - z", fiber_r - fiber_z)
kcor_pu = kcor.calc_kcor("u", z, "u - r", petro_u - petro_r)
kcor_pg = kcor.calc_kcor("g", z, "g - r", petro_g - petro_r)
kcor_pr = kcor.calc_kcor("r", z, "g - r", petro_g - petro_r)
kcor_pi = kcor.calc_kcor("i", z, "g - i", petro_g - petro_i)
kcor_pz = kcor.calc_kcor("z", z, "r - z", petro_r - petro_z)

fiber_u += kcor_fu
fiber_g += kcor_fg
fiber_r += kcor_fr
fiber_i += kcor_fi
fiber_z += kcor_fz
Example #6
0
#z       = data[:, 35]
data = np.loadtxt("output.csv", delimiter = ",", skiprows = 1)
fiber_u = data[:, 2]
fiber_g = data[:, 3]
fiber_r = data[:, 4]
fiber_i = data[:, 5]
fiber_z = data[:, 6]
petro_u = data[:, 12]
petro_g = data[:, 13]
petro_r = data[:, 14]
petro_i = data[:, 15]
petro_z = data[:, 16]
z       = data[:, - 4]
del mags

kcor_fu = kcor.calc_kcor("u", z, "u - r", fiber_u - fiber_r)
kcor_fg = kcor.calc_kcor("g", z, "g - r", fiber_g - fiber_r)
kcor_fr = kcor.calc_kcor("r", z, "g - r", fiber_g - fiber_r)
kcor_fi = kcor.calc_kcor("i", z, "g - i", fiber_g - fiber_i)
kcor_fz = kcor.calc_kcor("z", z, "r - z", fiber_r - fiber_z)
kcor_pu = kcor.calc_kcor("u", z, "u - r", petro_u - petro_r)
kcor_pg = kcor.calc_kcor("g", z, "g - r", petro_g - petro_r)
kcor_pr = kcor.calc_kcor("r", z, "g - r", petro_g - petro_r)
kcor_pi = kcor.calc_kcor("i", z, "g - i", petro_g - petro_i)
kcor_pz = kcor.calc_kcor("z", z, "r - z", petro_r - petro_z)

fiber_u += kcor_fu
fiber_g += kcor_fg
fiber_r += kcor_fr
fiber_i += kcor_fi
fiber_z += kcor_fz
def apply_kcor(s):
    return calc_kcor("B", s["Redshift_Cosmological"], "B - Rc", s["colour"])
Example #8
0
SDSS = CSV('data_all_2')
SDSS_data = SDSS.read_all()
# -1 because of column titles
print(SDSS.row_count_data)
calculated = np.zeros((SDSS.row_count_data, 3))  #add area
print('read data')

for index, row in enumerate(SDSS_data):

    if index % 1000 == 0:
        pass
    z, zErr_noqso, cModelMag_r, cModelMagErr_r, cModelMag_u, cModelMagErr_u, petroRad_r, petroRadErr_r, modelMag_r, modelMag_u, petroMag_r, petroMagErr_r, petroMagErr_u, petroMag_u, Pr90 = row

    dist = cosmo.luminosity_distance(z).value  # in Mpc

    k_corr = calc_kcor('r', z, 'u - r', (petroMag_u - petroMag_r))

    M = petroMag_r - (5 * np.log10(dist)) - 25 - k_corr
    M_Err = abs(petroMagErr_r)
    calculated[index, 0] = M_Err
    calculated[index, 1] = M  # absolute mag

    if index % 5000 == 0:
        print(index)

array = (SDSS_data[1:, 0] * 100).astype(int)
print(array)
y = np.bincount(array)
ii = np.nonzero(y)[0]
freq = (np.vstack((ii, y[ii])).T)  #.astype(float)