예제 #1
0
def get_COV(fileCov, binFile):
	boxZN = float(os.path.basename(fileCov).split('_')[1])
	print boxZN
	hf, boxLength, boxName, boxRedshift, logmp, boxLengthComoving, massCorrection = lib.get_basic_info(fileCov, boxZN, delta_wrt='mean')
	bins = n.log10( 10**n.loadtxt(binFile) * massCorrection )
	logmass = ( bins[1:]  + bins[:-1] )/2.
	mass = 10**logmass
	dX = ( 10**bins[1:]  - 10**bins[:-1] )
	dlnbin = (bins[1:]  - bins[:-1])*n.log(10)
	m2sigma = interp1d(hf.M, hf.sigma )
	sigma_i = m2sigma( mass )
	data_i=cPickle.load(open(fileCov,'r'))
	counts_i = n.sum(data_i, axis=0)
	ok = (counts_i>10)
	data = data_i.T[ok].T
	counts = n.sum(data, axis=0)
	sigma = sigma_i[ok]
	count_matrix = n.outer(counts, counts)/1000.
	cv = (n.cov(data.T, ddof=0)/count_matrix)**0.5
	ctotal = cv + count_matrix**(-0.5)
	xcv, ycv = n.meshgrid(sigma, sigma)
	s1_i = n.hstack((n.log10(xcv)))
	s2_i = n.hstack((n.log10(ycv)))
	val_i = n.hstack((n.log10(ctotal)))
	ok = (val_i != n.inf) & (n.isnan(val_i) == False )
	return s1_i[ok], s2_i[ok], val_i[ok]
예제 #2
0
def get_COV(fileCov, binFile):
    boxZN = float(os.path.basename(fileCov).split('_')[1])
    print boxZN
    hf, boxLength, boxName, boxRedshift, logmp, boxLengthComoving, massCorrection = lib.get_basic_info(
        fileCov, boxZN, delta_wrt='mean')
    bins = n.log10(10**n.loadtxt(binFile) * massCorrection)
    logmass = (bins[1:] + bins[:-1]) / 2.
    mass = 10**logmass
    dX = (10**bins[1:] - 10**bins[:-1])
    dlnbin = (bins[1:] - bins[:-1]) * n.log(10)
    m2sigma = interp1d(hf.M, hf.sigma)
    sigma_i = m2sigma(mass)
    data_i = cPickle.load(open(fileCov, 'r'))
    counts_i = n.sum(data_i, axis=0)
    ok = (counts_i > 10)
    data = data_i.T[ok].T
    counts = n.sum(data, axis=0)
    sigma = sigma_i[ok]
    count_matrix = n.outer(counts, counts) / 1000.
    cv = (n.cov(data.T, ddof=0) / count_matrix)**0.5
    ctotal = cv + count_matrix**(-0.5)
    xcv, ycv = n.meshgrid(sigma, sigma)
    s1_i = n.hstack((n.log10(xcv)))
    s2_i = n.hstack((n.log10(ycv)))
    val_i = n.hstack((n.log10(ctotal)))
    ok = (val_i != n.inf) & (n.isnan(val_i) == False)
    return s1_i[ok], s2_i[ok], val_i[ok]
예제 #3
0
def plot_CRCoef_mvir(fileC, fileS, binFile):
	boxZN = float(os.path.basename(fileC).split('_')[1])
	print boxZN
	hf, boxLength, boxName, boxRedshift, logmp, boxLengthComoving, massCorrection = lib.get_basic_info(fileC, boxZN, delta_wrt='mean')
	bins = n.log10( 10**n.loadtxt(binFile) * massCorrection )
	logmass = ( bins[1:]  + bins[:-1] )/2.
	mSel = (logmass > 9) & (logmass < 15)
	mass = 10**logmass
	dX = ( 10**bins[1:]  - 10**bins[:-1] )
	dlnbin = (bins[1:]  - bins[:-1])*n.log(10)

	m2sigma = interp1d(hf.M, hf.sigma )
	sigma = m2sigma( mass )
	
	data=cPickle.load(open(fileC,'r'))
	dataS=cPickle.load(open(fileS,'r'))
	
	counts = n.sum(data, axis=0)
	count_matrix = n.outer(counts, counts)/1000.
	cv = (n.cov(data.T, ddof=0)/count_matrix)**0.5
	cr = n.corrcoef(data.T)
	cvS = (n.cov(dataS.T, ddof=0)/count_matrix)**0.5
	crS = n.corrcoef(dataS.T)
	ctotal = cv + count_matrix**(-0.5)
	
	mass2X = interp1d(logmass, n.arange(len(logmass)))
	sigma2X = interp1d(sigma, n.arange(len(logmass)))

	fig = p.figure(0,(6,6))
	mat = p.matshow(cr)
	p.xticks(n.arange(0,len(logmass),5), logmass[n.arange(0,len(logmass),5)],rotation=45)
	p.yticks(n.arange(0,len(logmass),5), logmass[n.arange(0,len(logmass),5)])
	p.axvline(mass2X(logmp+2), lw=2, color='k')
	p.axhline(mass2X(logmp+2), lw=2, color='k')
	#p.axvline(mass2X(logmp+1), lw=2, color='k')
	#p.axhline(mass2X(logmp+1), lw=2, color='k')
	cb = p.colorbar(shrink=0.8)
	cb.set_label(r"R")
	p.xlabel(r'log$_{10}[M_{vir}/(h^{-1}M_\odot)]$')
	p.ylabel(r'log$_{10}[M_{vir}/(h^{-1}M_\odot)]$')
	p.grid()
	p.savefig(join(os.environ['MVIR_DIR'],plotDir,"mvir-cr-"+boxName+".png"))
	p.clf()
	
	fig = p.figure(0,(6,6))
	mat = p.matshow(cr)
	p.xticks(n.arange(0,len(sigma),5), n.round(sigma[n.arange(0,len(sigma),5)],3),rotation=45)
	p.yticks(n.arange(0,len(sigma),5), n.round(sigma[n.arange(0,len(sigma),5)],3))
	cb = p.colorbar(shrink=0.8)
	cb.set_label(r"R($\sigma_1, \sigma_2$)")
	p.xlabel(r'$\sigma$')
	p.ylabel(r'$\sigma$')
	p.grid()
	p.savefig(join(os.environ['MVIR_DIR'],plotDir,"sigma-cr-"+boxName+".png"))
	p.clf()
	id = int(mass2X(logmp+2.5))
	print id, len(logmass)
	return cr, cv, logmass, sigma, id, ctotal
예제 #4
0
def plot_CRCoef_mvir(fileC, fileS, binFile):
	boxZN = float(os.path.basename(fileC).split('_')[1])
	print boxZN
	hf, boxLength, boxName, boxRedshift, logmp, boxLengthComoving, massCorrection = lib.get_basic_info(fileC, boxZN, delta_wrt='mean')
	bins = n.log10( 10**n.loadtxt(binFile) * massCorrection )
	logmass = ( bins[1:]  + bins[:-1] )/2.
	mSel = (logmass > 9) & (logmass < 15)
	mass = 10**logmass
	dX = ( 10**bins[1:]  - 10**bins[:-1] )
	dlnbin = (bins[1:]  - bins[:-1])*n.log(10)

	m2sigma = interp1d(hf.M, hf.sigma )
	sigma = m2sigma( mass )
	
	data=cPickle.load(open(fileC,'r'))
	dataS=cPickle.load(open(fileS,'r'))
	
	counts = n.sum(data, axis=0)
	count_matrix = n.outer(counts, counts)/1000.
	cv = (n.cov(data.T, ddof=0)/count_matrix)**0.5
	cr = n.corrcoef(data.T)
	cvS = (n.cov(dataS.T, ddof=0)/count_matrix)**0.5
	crS = n.corrcoef(dataS.T)
	ctotal = cv + count_matrix**(-0.5)
	
	mass2X = interp1d(logmass, n.arange(len(logmass)))
	sigma2X = interp1d(sigma, n.arange(len(logmass)))

	fig = p.figure(0,(6,6))
	mat = p.matshow(cr)
	p.xticks(n.arange(0,len(logmass),5), logmass[n.arange(0,len(logmass),5)],rotation=45)
	p.yticks(n.arange(0,len(logmass),5), logmass[n.arange(0,len(logmass),5)])
	p.axvline(mass2X(logmp+2), lw=2, color='k')
	p.axhline(mass2X(logmp+2), lw=2, color='k')
	#p.axvline(mass2X(logmp+1), lw=2, color='k')
	#p.axhline(mass2X(logmp+1), lw=2, color='k')
	cb = p.colorbar(shrink=0.8)
	cb.set_label(r"R")
	p.xlabel(r'log$_{10}[M_{vir}/(h^{-1}M_\odot)]$')
	p.ylabel(r'log$_{10}[M_{vir}/(h^{-1}M_\odot)]$')
	p.grid()
	p.savefig(join(os.environ['MULTIDARK_LIGHTCONE_DIR'], 'mvir',"covariance","mvir-cr-"+boxName+".png"))
	p.clf()
	
	fig = p.figure(0,(6,6))
	mat = p.matshow(cr)
	p.xticks(n.arange(0,len(sigma),5), n.round(sigma[n.arange(0,len(sigma),5)],3),rotation=45)
	p.yticks(n.arange(0,len(sigma),5), n.round(sigma[n.arange(0,len(sigma),5)],3))
	cb = p.colorbar(shrink=0.8)
	cb.set_label(r"R($\sigma_1, \sigma_2$)")
	p.xlabel(r'$\sigma$')
	p.ylabel(r'$\sigma$')
	p.grid()
	p.savefig(join(os.environ['MULTIDARK_LIGHTCONE_DIR'], 'mvir',"covariance","sigma-cr-"+boxName+".png"))
	p.clf()
	id = int(mass2X(logmp+2.5))
	print id, len(logmass)
	return cr, cv, logmass, sigma, id, ctotal
예제 #5
0
def plot_COV(fileCov, binFile):
	boxZN = float(os.path.basename(fileCov).split('_')[1])
	print boxZN
	hf, boxLength, boxName, boxRedshift, logmp, boxLengthComoving, massCorrection = lib.get_basic_info(fileCov, boxZN, delta_wrt='mean')
	bins = n.log10( 10**n.loadtxt(binFile) * massCorrection )
	logmass = ( bins[1:]  + bins[:-1] )/2.
	mass = 10**logmass
	dX = ( 10**bins[1:]  - 10**bins[:-1] )
	dlnbin = (bins[1:]  - bins[:-1])*n.log(10)
	m2sigma = interp1d(hf.M, hf.sigma )
	sigma_i = m2sigma( mass )
	data_i=cPickle.load(open(fileCov,'r'))
	counts_i = n.sum(data_i, axis=0)
	ok = (counts_i>10)
	data = data_i.T[ok].T
	counts = n.sum(data, axis=0)
	sigma = sigma_i[ok]
	count_matrix = n.outer(counts, counts)/1000.
	cv = (n.cov(data.T, ddof=0)/count_matrix)**0.5
	ctotal = cv + count_matrix**(-0.5)

	xcv, ycv = n.meshgrid(sigma, sigma)

	model = {"MD_0.4Gpc": dn_cov_L04, "MD_1Gpc": dn_cov_L10, "MD_2.5Gpc": dn_cov_L25, "MD_4Gpc": dn_cov_L40,"MD_2.5GpcNW": dn_cov_L25, "MD_4GpcNW": dn_cov_L40 }

	fig, (ax1, ax2) = p.subplots(1,2, sharex=True, sharey=True)
	ax1.set_title(boxName)
	sca = ax1.scatter(-n.log10(xcv), -n.log10(ycv), c=n.log10(ctotal), s=10, edgecolors='none',vmin=-4,vmax=0)
	#cb = sca.colorbar(shrink=0.8)
	#cb.set_label("C($\sigma_1, \sigma_2$)")
	ax1.set_xlabel(r'$log_{10}(\sigma_1^{-1})$')
	ax1.set_ylabel(r'$log_{10}(\sigma_2^{-1})$')
	ax1.set_xlim((-0.7, 0.6))
	ax1.set_ylim((-0.7, 0.6))
	ax1.grid()
	#ax2=fig.add_subplot(122, sharex=ax1, sharey=ax1)
	ax2.set_title("model")
	ax2.scatter(-n.log10(xcv), -n.log10(ycv), c=n.log10(model[boxName](xcv, ycv)), s=10, edgecolors='none',vmin=-4,vmax=0)
	ax2.set_xlim((-0.7, 0.6))
	ax2.grid()
	ax2.set_ylim((-0.7, 0.6))
	ax2.set_xlabel(r'$log_{10}(\sigma_1^{-1})$')
	fig.savefig(join(os.environ['MULTIDARK_LIGHTCONE_DIR'], 'mvir',"covariance","covariance_matrix_"+boxName+".png"))
	fig.clf()