Skip to content

Commit c792a02

Browse files
authored
Merge pull request #25 from simonsobs/fisher
added fisher sampler
2 parents fecd1ca + 46594e3 commit c792a02

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

bbpower/compsep.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,19 @@ def chi2(par):
388388
res=minimize(chi2, self.params.p0, method="Powell")
389389
return res.x
390390

391+
def fisher(self):
392+
"""
393+
Evaluate Fisher matrix
394+
"""
395+
import numdifftools as nd
396+
def lnprobd(p):
397+
l = self.lnprob(p)
398+
if l == -np.inf:
399+
l = -1E100
400+
return l
401+
fisher = - nd.Hessian(lnprobd)(self.params.p0)
402+
return fisher
403+
391404
def singlepoint(self):
392405
"""
393406
Evaluate at a single point
@@ -417,6 +430,15 @@ def run(self):
417430
chain=sampler.chain,
418431
names=self.params.p_free_names)
419432
print("Finished sampling")
433+
elif self.config.get('sampler')=='fisher':
434+
fisher = self.fisher()
435+
cov = np.linalg.inv(fisher)
436+
for i,(n,p) in enumerate(zip(self.params.p_free_names,
437+
self.params.p0)):
438+
print(n+" = %.3lE +- %.3lE" % (p, np.sqrt(cov[i, i])))
439+
np.savez(self.get_output('param_chains'),
440+
fisher=fisher,
441+
names=self.params.p_free_names)
420442
elif self.config.get('sampler')=='maximum_likelihood':
421443
sampler = self.minimizer()
422444
chi2 = -2*self.lnprob(sampler)

examples/generate_SO_maps.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import matplotlib.pyplot as plt
33
from noise_calc import Simons_Observatory_V3_SA_noise,Simons_Observatory_V3_SA_beams
44
import sys
5-
import pymaster as nmt
5+
#import pymaster as nmt
66
import healpy as hp
77
import os
88
import sacc
@@ -212,6 +212,11 @@ def read_camb(fname):
212212
bpw_model[b1,1,b2,1,:]+=bpw_sync_bb*seds[b1,1]*seds[b2,1]
213213
bpw_model[b1,0,b2,0,:]+=bpw_dust_ee*seds[b1,2]*seds[b2,2]
214214
bpw_model[b1,1,b2,1,:]+=bpw_dust_bb*seds[b1,2]*seds[b2,2]
215+
np.savez("c_ells_sky",
216+
ls = ells_bpw,
217+
cls_ee = bpw_model[:,0,:,0,:],
218+
cls_bb = bpw_model[:,1,:,1,:])
219+
exit(1)
215220
tracers=[]
216221
for b in range(nfreqs):
217222
T=sacc.Tracer("band%d"%(b+1),'CMBP',

examples/generate_SO_spectra.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def get_output_params(do_phase=False,do_angle=False):
2727
# Choose here whether to include the effects of
2828
# - A frequency-dependent polarization angle (do_phase=True)
2929
# - A non-zero constant polarization angle (do_angle=True)
30-
prefix_out,phase_nu,angles=get_output_params(do_phase=True,do_angle=True)
30+
prefix_out,phase_nu,angles=get_output_params(do_phase=False,do_angle=False)
3131

3232

3333
#CMB spectrum
@@ -123,7 +123,9 @@ def rotate(self,cl,transpose=False):
123123
temp_dust=19.6
124124
nu0_dust=353.
125125

126-
Alens=1.
126+
prefix_out+="_2y_Al1p0"
127+
Alens=1.0
128+
nyears=2.
127129

128130
#Bandpowers
129131
dell=10
@@ -205,6 +207,7 @@ def rotate_cells_mat(mat1, mat2, cls):
205207
nell=np.zeros([nfreqs,lmax+1])
206208
_,nell[:,2:],_=Simons_Observatory_V3_SA_noise(sens,knee,ylf,fsky,lmax+1,1)
207209
nell*=cl2dl[None,:]
210+
nell*=5./nyears
208211
n_bpw=np.sum(nell[:,None,:]*windows[None,:,:],axis=2)
209212
bpw_freq_noi=np.zeros_like(bpw_freq_sig)
210213
for ib,n in enumerate(n_bpw):

0 commit comments

Comments
 (0)