Beispiel #1
0
def fisher_analysis(pars, fsky, mukarcminT, fwhmdeg, deltal=1, cambparams=CambDefaultParams, maxellcamb=MAXELL, der=False, basic_spectra=False, errors=False, noT=False, noE=False, noTE=False, noB=False, minell=False, maxell=False, varnames=False, plotmat=False):
	nbins = maxellcamb/deltal
	lmin = 1+(deltal)*np.arange(nbins)	
	lmax = lmin+deltal-1
	lcenter = (lmax+lmin)/2

	##### Generate basic spectra
	if basic_spectra is False:
		print("Calculate Basic Spectra")
		binned, spec, basic_spectra = get_binned_spectra(pars, lcenter, lmin, lmax)

	##### Generate derivatives
	if der is False:
		print("Calculate Derivatives")
		args = [lcenter, lmin, lmax, fsky, mukarcminT, fwhmdeg, deltal, CambDefaultParams, False, MAXELL]
		der = FisherNew.give_derivatives(pars, args, return_bins_and_errors)

	##### Calculate Error bars if needed
	args = [lcenter, lmin, lmax, fsky, mukarcminT, fwhmdeg, deltal, CambDefaultParams, basic_spectra, MAXELL]
	data, theerrors = return_bins_and_errors(pars, args)
	nbins = len(data)/4
	allell = np.ravel(np.array([lcenter, lcenter, lcenter, lcenter]))
	allellmin = np.ravel(np.array([lmin, lmin, lmin, lmin]))
	allellmax = np.ravel(np.array([lmax, lmax, lmax, lmax]))
	##### Update errors
	if errors is not False:
		theerrors = errors
	if noT is True:
		theerrors[0*nbins:1*nbins] = 1e30
	if noE is True:
		theerrors[1*nbins:2*nbins] = 1e30
	if noTE is True:
		theerrors[2*nbins:3*nbins] = 1e30
	if noB is True:
		theerrors[3*nbins:4*nbins] = 1e30
	if minell is not False:
		mask = allell < minell
		theerrors[mask] = 1e30
	if maxell is not False:
		mask = allell > maxell
		theerrors[mask] = 1e30
	### Remove low ell not allowed by fsky
	fskyminell = np.int(180/np.degrees((np.sqrt(2*fsky))))
	mask = allellmin < fskyminell
	theerrors[mask] = 1e30

	##### Calculate Fisher Matrix
	fm = FisherNew.fishermatrix(pars, args, der, theerrors, return_bins_and_errors)

	if plotmat:
		clf()
		a0,leg0 = FisherNew.plot_fisher(fm, pars,'b', varnames=varnames, onesigma=True)
		subplot(2,2,2)
		axis('off')
		legend([a0],[leg0],loc='upper right',fontsize=10)

	return fm, basic_spectra, der, lcenter, data, theerrors
Beispiel #2
0
	fwhmdeg = 4./60
	fm_hrs, dum, dum, lcenter, data, error = CMBspectra.fisher_analysis(pars, fsky, mukarcminT, fwhmdeg, basic_spectra=basic_spec, der=der, deltal=25, varnames=varnames, noT=noT, noE=noE, noTE=noTE)
	errhrs = np.reshape(error,(4,nbins))


	## CORE++ ?
	fsky = 0.75
	mukarcminT = 0.1
	pars['lensing_residual'] = 0.1
	fwhmdeg = 3./60
	fm_hrsplus, dum, dum, lcenter, data, error = CMBspectra.fisher_analysis(pars, fsky, mukarcminT, fwhmdeg, basic_spectra=basic_spec, der=der, deltal=25, varnames=varnames, noT=noT, noE=noE, noTE=noTE)
	errhrsplus = np.reshape(error,(4,nbins))

	#### get the correct matrix for r and ns
	## fix nt
	sub_fm_stage4 = FisherNew.submatrix(fm_stage4,[0,1,3])
	sub_fm_lrs = FisherNew.submatrix(fm_lrs,[0,1,3])
	sub_fm_lrs_stage4 = FisherNew.submatrix(fm_stage4+fm_lrs,[0,1,3])
	sub_fm_hrs = FisherNew.submatrix(fm_hrs,[0,1,3])
	sub_fm_hrsplus = FisherNew.submatrix(fm_hrsplus,[0,1,3])

	## Marginalize over al and reverse order for having ns, r
	cov_nsr_stage4 = FisherNew.submatrix(np.linalg.inv(sub_fm_stage4), [0,2])
	cov_nsr_lrs = FisherNew.submatrix(np.linalg.inv(sub_fm_lrs), [0,2])
	cov_nsr_lrs_stage4 = FisherNew.submatrix(np.linalg.inv(sub_fm_lrs_stage4), [0,2])
	cov_nsr_hrs = FisherNew.submatrix(np.linalg.inv(sub_fm_hrs), [0,2])
	cov_nsr_hrsplus = FisherNew.submatrix(np.linalg.inv(sub_fm_hrsplus), [0,2])

	fm_nsr_lrs.append(np.linalg.inv(cov_nsr_lrs))
	fm_nsr_stage4.append(np.linalg.inv(cov_nsr_stage4))
	fm_nsr_lrs_stage4.append(np.linalg.inv(cov_nsr_lrs_stage4))
Beispiel #3
0
mukarcminT = 4.*(fsky/0.01)**0.5
pars['lensing_residual'] = 1
fwhmdeg = 0.52
fmqubicnew, dum, dum, lcenter, data, error = CMBspectra.fisher_analysis(pars, fsky, mukarcminT, fwhmdeg, basic_spectra=basic_spec, der=der, noT=True, noE=True, noTE=True, deltal=25, varnames=varnames, maxell = 1./np.radians(fwhmdeg / 2.35))

# QUBIC reoptimized
fsky = 0.04
mukarcminT = 4.*(fsky/0.01)**0.5/sqrt(6)
pars['lensing_residual'] = 1
fwhmdeg = 0.52
fmqubicnew6, dum, dum, lcenter, data, error = CMBspectra.fisher_analysis(pars, fsky, mukarcminT, fwhmdeg, basic_spectra=basic_spec, der=der, noT=True, noE=True, noTE=True, deltal=25, varnames=varnames, maxell = 1./np.radians(fwhmdeg / 2.35))



clf()
a1,leg1 = FisherNew.plot_fisher(fmqubic, pars,'b', fixed=['tensor_index','scalar_index'], varnames=varnames, onesigma=True)
a2,leg2 = FisherNew.plot_fisher(fmqubicnew, pars,'g', fixed=['tensor_index','scalar_index'], varnames=varnames, onesigma=True)
a3,leg3 = FisherNew.plot_fisher(fmqubicnew6, pars,'r', fixed=['tensor_index','scalar_index'], varnames=varnames, onesigma=True)
a0,leg0 = FisherNew.plot_fisher(fmbicep2, pars,'k', fixed=['tensor_index','scalar_index'], varnames=varnames, onesigma=True)
subplot(4,4,4)
axis('off')
legend([a0, a1, a2, a3],[leg0, leg1, leg2, leg3])


################# satellites
pars = {'tensor_ratio':0.01, 'tensor_index':-0.025, 'lensing_residual':1, 'scalar_index':0.9624}
varnames = {'tensor_ratio':'$r$', 'tensor_index':'$n_T$', 'lensing_residual':'$a_L$', 'scalar_index':'$n_S$'}
fm, basic_spec, der, lcenter, data, error = CMBspectra.fisher_analysis(pars, fsky, mukarcminT, fwhmdeg, deltal=25)
nbins=len(data)/4
noT=False
noE=False