Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
bad5122
Allow user to choose rectangulare distortion matrix
londumas Dec 19, 2018
d396cfe
add to definition of matrices
londumas Dec 19, 2018
8b34b72
change npm and ntm for a global coefficient
londumas Dec 20, 2018
9e0864d
Save matrix to another HDU because of dimension
londumas Dec 20, 2018
6c5452e
update docstring and reading metal dm
londumas Dec 20, 2018
0473056
The metal distortion matrix should be square
londumas Dec 20, 2018
25fc5f3
Start adding rp, rt, z in dmat
londumas Dec 20, 2018
e758522
remove useless space
londumas Dec 20, 2018
8cde74f
Save rp, rt, z in 2nd hdu
londumas Dec 20, 2018
a4b31f3
compute rp, rt, z in xdmat
londumas Dec 20, 2018
02e3112
compute rp, rt, z in dmat
londumas Dec 20, 2018
ec5b634
Merge branch 'master' into rectangle_distortion_matrix
londumas Dec 21, 2018
79282bf
Update export function to store rp, rt, z for model
londumas Dec 21, 2018
ceddcbe
change test
londumas Dec 21, 2018
c262a02
read new dm in fitter2, correct bug in new xdmat
londumas Dec 21, 2018
4583492
rearange functions
londumas Jan 7, 2019
16a9275
working non-symetric dm
londumas Jan 8, 2019
7eac5a2
revert some changes
londumas Jan 8, 2019
ec081cf
revert some changes
londumas Jan 8, 2019
7a8f59f
revert some changes
londumas Jan 8, 2019
8305c6b
revert some changes
londumas Jan 8, 2019
a184f5d
revert some changes
londumas Jan 8, 2019
f2d6df9
revert some changes
londumas Jan 8, 2019
4a7a349
revert some changes
londumas Jan 8, 2019
0fb88ce
revert some changes
londumas Jan 8, 2019
5e44e60
revert some changes
londumas Jan 8, 2019
e0fa5d2
revert some changes
londumas Jan 8, 2019
5d032b7
revert some changes
londumas Jan 8, 2019
0459f5c
revert some changes
londumas Jan 8, 2019
dbea4f1
revert some changes
londumas Jan 8, 2019
6ce84f6
revert some changes
londumas Jan 8, 2019
c64874d
revert some changes
londumas Jan 8, 2019
b744a59
revert some changes
londumas Jan 8, 2019
3f0c700
keep coordinate if distortion matrix is symetric
londumas Jan 9, 2019
82b5039
update the distortion matrix files
londumas Jan 9, 2019
9d8c955
Changes to fitter2 for new iminuit
londumas Jan 9, 2019
f54966f
reinstate numba
londumas Jan 10, 2019
4db0227
Merge branch 'master' into rectangle_distortion_matrix
londumas Jan 10, 2019
8ac353b
revert update of iminuit
londumas Jan 10, 2019
94c8497
revert changes to requirements
londumas Jan 10, 2019
6e4e230
get coordinate from full sample if not rectangular
londumas Jan 10, 2019
49cd7db
check that possible to devide
londumas Jan 10, 2019
c880f66
do not use multiprocessing if nproc==1
londumas Jan 11, 2019
c4ba8c5
do not use multiprocessing if nproc==1
londumas Jan 11, 2019
c840ed2
Merge branch 'master' into rectangle_distortion_matrix
londumas Jan 15, 2019
b3ad87f
Merge branch 'master' into rectangle_distortion_matrix
londumas Jan 22, 2019
7a2c9aa
fix merge conflicts
londumas Jan 24, 2019
7989704
Merge branch 'master' into rectangle_distortion_matrix
londumas Jan 25, 2019
d00cdbe
Merge branch 'master' into rectangle_distortion_matrix
londumas Jan 28, 2019
063f246
Merge branch 'master' into rectangle_distortion_matrix
londumas Feb 1, 2019
1ae74fe
Merge branch 'master' into rectangle_distortion_matrix
londumas Feb 1, 2019
191df7a
resolve merging conflict
londumas Feb 5, 2019
3f5fe4b
Fix merging conflict
londumas Feb 5, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 33 additions & 6 deletions bin/picca_dmat.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ def calc_dmat(p):
parser.add_argument('--nt', type=int, default=50, required=False,
help='Number of r-transverse bins')

parser.add_argument('--coef-binning-model', type=int, default=1, required=False,
help='Coefficient multiplying np and nt to get finner binning for the model')

parser.add_argument('--z-cut-min', type=float, default=0., required=False,
help='Use only pairs of forest x object with the mean of the last absorber \
redshift and the object redshift larger than z-cut-min')
Expand Down Expand Up @@ -108,6 +111,8 @@ def calc_dmat(p):
cf.z_cut_min = args.z_cut_min
cf.np = args.np
cf.nt = args.nt
cf.npm = args.np*args.coef_binning_model
cf.ntm = args.nt*args.coef_binning_model
cf.nside = args.nside
cf.zref = args.z_ref
cf.alpha = args.z_evol
Expand Down Expand Up @@ -154,17 +159,29 @@ def calc_dmat(p):
if not ip in cpu_data:
cpu_data[ip] = []
cpu_data[ip].append(p)
pool = Pool(processes=args.nproc)
dm = pool.map(calc_dmat,sorted(cpu_data.values()))
pool.close()

if args.nproc>1:
pool = Pool(processes=args.nproc)
dm = pool.map(calc_dmat,sorted(cpu_data.values()))
pool.close()
elif args.nproc==1:
dm = map(calc_dmat,sorted(cpu_data.values()))
dm = list(dm)

dm = sp.array(dm)
wdm =dm[:,0].sum(axis=0)
npairs=dm[:,2].sum(axis=0)
npairs_used=dm[:,3].sum(axis=0)
rp = dm[:,2].sum(axis=0)
rt = dm[:,3].sum(axis=0)
z = dm[:,4].sum(axis=0)
we = dm[:,5].sum(axis=0)
npairs = dm[:,6].sum(axis=0)
npairs_used = dm[:,7].sum(axis=0)
dm=dm[:,1].sum(axis=0)

w = we>0.
rp[w] /= we[w]
rt[w] /= we[w]
z[w] /= we[w]
w = wdm>0
dm[w]/=wdm[w,None]

Expand All @@ -175,11 +192,21 @@ def calc_dmat(p):
{'name':'RTMAX','value':cf.rt_max,'comment':'Maximum r-transverse [h^-1 Mpc]'},
{'name':'NP','value':cf.np,'comment':'Number of bins in r-parallel'},
{'name':'NT','value':cf.nt,'comment':'Number of bins in r-transverse'},
{'name':'COEFMOD','value':args.coef_binning_model,'comment':'Coefficient for model binning'},
{'name':'ZCUTMIN','value':cf.z_cut_min,'comment':'Minimum redshift of pairs'},
{'name':'ZCUTMAX','value':cf.z_cut_max,'comment':'Maximum redshift of pairs'},
{'name':'REJ','value':cf.rej,'comment':'Rejection factor'},
{'name':'NPALL','value':npairs,'comment':'Number of pairs'},
{'name':'NPUSED','value':npairs_used,'comment':'Number of used pairs'},
]
out.write([wdm,dm],names=['WDM','DM'],header=head,comment=['Sum of weight','Distortion matrix'],extname='DMAT')
out.write([wdm,dm],
names=['WDM','DM'],
comment=['Sum of weight','Distortion matrix'],
units=['',''],
header=head,extname='DMAT')
out.write([rp,rt,z],
names=['RP','RT','Z'],
comment=['R-parallel','R-transverse','Redshift'],
units=['h^-1 Mpc','h^-1 Mpc','',],
extname='ATTRI')
out.close()
17 changes: 17 additions & 0 deletions bin/picca_export.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,24 @@
if args.dmat is not None:
h = fitsio.FITS(args.dmat)
dm = h[1]['DM'][:]
try:
dmrp = h[2]['RP'][:]
dmrt = h[2]['RT'][:]
dmz = h[2]['Z'][:]
except IOError:
dmrp = rp.copy()
dmrt = rt.copy()
dmz = z.copy()
if dm.shape==(da.size,da.size):
dmrp = rp.copy()
dmrt = rt.copy()
dmz = z.copy()
h.close()
else:
dm = sp.eye(len(da))
dmrp = rp.copy()
dmrt = rt.copy()
dmz = z.copy()

h = fitsio.FITS(args.out,'rw',clobber=True)
head = [ {'name':'RPMIN','value':rp_min,'comment':'Minimum r-parallel'},
Expand All @@ -104,4 +119,6 @@
]
comment = ['R-parallel','R-transverse','Redshift','Correlation','Covariance matrix','Distortion matrix','Number of pairs']
h.write([rp,rt,z,da,co,dm,nb],names=['RP','RT','Z','DA','CO','DM','NB'],comment=comment,header=head,extname='COR')
comment = ['R-parallel model','R-transverse model','Redshift model']
h.write([dmrp,dmrt,dmz],names=['DMRP','DMRT','DMZ'],comment=comment,extname='DMATTRI')
h.close()
29 changes: 28 additions & 1 deletion bin/picca_export_coadd_zint.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,13 @@
if not args.no_dmat:
h = fitsio.FITS(args.data[0].replace('cf','dmat'))
dm = h[1]['DM'][:]*0
try:
dmrp = sp.zeros(h[2]['RP'][:].size)
dmrt = sp.zeros(h[2]['RT'][:].size)
dmz = sp.zeros(h[2]['Z'][:].size)
nbdm = 0.
except IOError:
pass
h.close()
else:
dm = sp.eye(nb.shape[0])
Expand Down Expand Up @@ -72,6 +79,12 @@
if not args.no_dmat:
h = fitsio.FITS(f.replace('cf','dmat'))
dm += h[1]['DM'][:]*wet_aux[:,None]
if 'dmrp' in locals():
## TODO: get the weights
dmrp += h[2]['RP'][:]
dmrt += h[2]['RT'][:]
dmz += h[2]['Z'][:]
nbdm += 1.
h.close()

for p in da:
Expand All @@ -91,11 +104,25 @@
da = (da*we).sum(axis=0)
da /= wet


if 'dmrp' in locals():
dmrp /= nbdm
dmrt /= nbdm
dmz /= nbdm
elif dmrp.size==rp.size:
dmrp = rp.copy()
dmrt = rt.copy()
dmz = z.copy()

try:
scipy.linalg.cholesky(co)
except scipy.linalg.LinAlgError:
print('WARNING: Matrix is not positive definite')


h = fitsio.FITS(args.out,"rw",clobber=True)
h.write([rp,rt,z,nb,da,dm,co],names=["RP","RT","Z","NB","DA","DM","CO"],header=head,extname='COR')
comment = ['R-parallel','R-transverse','Redshift','Correlation','Covariance matrix','Distortion matrix','Number of pairs']
h.write([rp,rt,z,da,co,dm,nb],names=['RP','RT','Z','DA','CO','DM','NB'],comment=comment,header=head,extname='COR')
comment = ['R-parallel model','R-transverse model','Redshift model']
h.write([dmrp,dmrt,dmz],names=['DMRP','DMRT','DMZ'],comment=comment,extname='DMATTRI')
h.close()
25 changes: 17 additions & 8 deletions bin/picca_metal_dmat.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ def calc_metal_dmat(abs_igm1,abs_igm2,p):
parser.add_argument('--nt', type=int, default=50, required=False,
help='Number of r-transverse bins')

parser.add_argument('--coef-binning-model', type=int, default=1, required=False,
help='Coefficient multiplying np and nt to get finner binning for the model')

parser.add_argument('--z-cut-min', type=float, default=0., required=False,
help='Use only pairs of forest x object with the mean of the last absorber \
redshift and the object redshift larger than z-cut-min')
Expand Down Expand Up @@ -114,17 +117,16 @@ def calc_metal_dmat(abs_igm1,abs_igm2,p):
cf.rp_min = args.rp_min
cf.z_cut_max = args.z_cut_max
cf.z_cut_min = args.z_cut_min
cf.np = args.np
cf.nt = args.nt
cf.np = args.np*args.coef_binning_model
cf.nt = args.nt*args.coef_binning_model
cf.npm = args.np*args.coef_binning_model
cf.ntm = args.nt*args.coef_binning_model
cf.nside = args.nside
cf.zref = args.z_ref
cf.alpha = args.z_evol
cf.rej = args.rej
cf.lambda_abs = constants.absorber_IGM[args.lambda_abs]
cf.remove_same_half_plate_close_pairs = args.remove_same_half_plate_close_pairs
## use a metal grid equal to the lya grid
cf.npm = args.np
cf.ntm = args.nt

cf.alpha_abs = {}
cf.alpha_abs[args.lambda_abs] = cf.alpha
Expand Down Expand Up @@ -206,9 +208,15 @@ def calc_metal_dmat(abs_igm1,abs_igm2,p):
cf.counter.value=0
f=partial(calc_metal_dmat,abs_igm1,abs_igm2)
print("")
pool = Pool(processes=args.nproc)
dm = pool.map(f,sorted(list(cpu_data.values())))
pool.close()

if args.nproc>1:
pool = Pool(processes=args.nproc)
dm = pool.map(f,sorted(cpu_data.values()))
pool.close()
elif args.nproc==1:
dm = map(f,sorted(cpu_data.values()))
dm = list(dm)

dm = sp.array(dm)
wdm =dm[:,0].sum(axis=0)
rp = dm[:,2].sum(axis=0)
Expand Down Expand Up @@ -241,6 +249,7 @@ def calc_metal_dmat(abs_igm1,abs_igm2,p):
{'name':'RTMAX','value':cf.rt_max,'comment':'Maximum r-transverse [h^-1 Mpc]'},
{'name':'NP','value':cf.np,'comment':'Number of bins in r-parallel'},
{'name':'NT','value':cf.nt,'comment':'Number of bins in r-transverse'},
{'name':'COEFMOD','value':args.coef_binning_model,'comment':'Coefficient for model binning'},
{'name':'ZCUTMIN','value':cf.z_cut_min,'comment':'Minimum redshift of pairs'},
{'name':'ZCUTMAX','value':cf.z_cut_max,'comment':'Maximum redshift of pairs'},
{'name':'REJ','value':cf.rej,'comment':'Rejection factor'},
Expand Down
26 changes: 17 additions & 9 deletions bin/picca_metal_xdmat.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ def calc_metal_xdmat(abs_igm,p):
parser.add_argument('--nt', type=int, default=50, required=False,
help='Number of r-transverse bins')

parser.add_argument('--coef-binning-model', type=int, default=1, required=False,
help='Coefficient multiplying np and nt to get finner binning for the model')

parser.add_argument('--z-min-obj', type=float, default=None, required=False,
help='Min redshift for object field')

Expand Down Expand Up @@ -102,17 +105,15 @@ def calc_metal_xdmat(abs_igm,p):
xcf.rt_max = args.rt_max
xcf.z_cut_max = args.z_cut_max
xcf.z_cut_min = args.z_cut_min
xcf.np = args.np
xcf.nt = args.nt
xcf.np = args.np*args.coef_binning_model
xcf.nt = args.nt*args.coef_binning_model
xcf.npm = args.np*args.coef_binning_model
xcf.ntm = args.nt*args.coef_binning_model
xcf.nside = args.nside
xcf.zref = args.z_ref
xcf.lambda_abs = constants.absorber_IGM[args.lambda_abs]
xcf.rej = args.rej

## use a metal grid equal to the lya grid
xcf.npm = args.np
xcf.ntm = args.nt

cosmo = constants.cosmo(args.fid_Om)
xcf.cosmo=cosmo

Expand Down Expand Up @@ -166,9 +167,15 @@ def calc_metal_xdmat(abs_igm,p):
xcf.counter.value=0
f=partial(calc_metal_xdmat,abs_igm)
print("")
pool = Pool(processes=args.nproc)
dm = pool.map(f,sorted(list(cpu_data.values())))
pool.close()

if args.nproc>1:
pool = Pool(processes=args.nproc)
dm = pool.map(f,sorted(cpu_data.values()))
pool.close()
elif args.nproc==1:
dm = map(f,sorted(cpu_data.values()))
dm = list(dm)

dm = sp.array(dm)
wdm =dm[:,0].sum(axis=0)
rp = dm[:,2].sum(axis=0)
Expand Down Expand Up @@ -201,6 +208,7 @@ def calc_metal_xdmat(abs_igm,p):
{'name':'RTMAX','value':xcf.rt_max,'comment':'Maximum r-transverse [h^-1 Mpc]'},
{'name':'NP','value':xcf.np,'comment':'Number of bins in r-parallel'},
{'name':'NT','value':xcf.nt,'comment':'Number of bins in r-transverse'},
{'name':'COEFMOD','value':args.coef_binning_model,'comment':'Coefficient for model binning'},
{'name':'ZCUTMIN','value':xcf.z_cut_min,'comment':'Minimum redshift of pairs'},
{'name':'ZCUTMAX','value':xcf.z_cut_max,'comment':'Maximum redshift of pairs'},
{'name':'REJ','value':xcf.rej,'comment':'Rejection factor'},
Expand Down
41 changes: 34 additions & 7 deletions bin/picca_xdmat.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ def calc_dmat(p):
parser.add_argument('--nt', type=int, default=50, required=False,
help='Number of r-transverse bins')

parser.add_argument('--coef-binning-model', type=int, default=1, required=False,
help='Coefficient multiplying np and nt to get finner binning for the model')

parser.add_argument('--z-min-obj', type=float, default=None, required=False,
help='Min redshift for object field')

Expand Down Expand Up @@ -99,6 +102,8 @@ def calc_dmat(p):
xcf.z_cut_min = args.z_cut_min
xcf.np = args.np
xcf.nt = args.nt
xcf.npm = args.np*args.coef_binning_model
xcf.ntm = args.nt*args.coef_binning_model
xcf.nside = args.nside
xcf.zref = args.z_ref
xcf.alpha = args.z_evol_del
Expand Down Expand Up @@ -151,30 +156,52 @@ def calc_dmat(p):
cpu_data[ip] = []
cpu_data[ip].append(p)

pool = Pool(processes=args.nproc)
dm = pool.map(calc_dmat,sorted(list(cpu_data.values())))
pool.close()
if args.nproc>1:
pool = Pool(processes=args.nproc)
dm = pool.map(calc_dmat,sorted(list(cpu_data.values())))
pool.close()
elif args.nproc==1:
dm = map(calc_dmat,sorted(list(cpu_data.values())))
dm = list(dm)

dm = sp.array(dm)
wdm =dm[:,0].sum(axis=0)
npairs=dm[:,2].sum(axis=0)
npairs_used=dm[:,3].sum(axis=0)
rp = dm[:,2].sum(axis=0)
rt = dm[:,3].sum(axis=0)
z = dm[:,4].sum(axis=0)
we = dm[:,5].sum(axis=0)
npairs = dm[:,6].sum(axis=0)
npairs_used = dm[:,7].sum(axis=0)
dm=dm[:,1].sum(axis=0)

w = we>0.
rp[w] /= we[w]
rt[w] /= we[w]
z[w] /= we[w]
w = wdm>0.
dm[w,:] /= wdm[w,None]


out = fitsio.FITS(args.out,'rw',clobber=True)
head = [ {'name':'RPMIN','value':xcf.rp_min,'comment':'Minimum r-parallel [h^-1 Mpc]'},
{'name':'RPMAX','value':xcf.rp_max,'comment':'Maximum r-parallel [h^-1 Mpc]'},
{'name':'RTMAX','value':xcf.rt_max,'comment':'Maximum r-transverse [h^-1 Mpc]'},
{'name':'NP','value':xcf.np,'comment':'Number of bins in r-parallel'},
{'name':'NT','value':xcf.nt,'comment':'Number of bins in r-transverse'},
{'name':'COEFMOD','value':args.coef_binning_model,'comment':'Coefficient for model binning'},
{'name':'ZCUTMIN','value':xcf.z_cut_min,'comment':'Minimum redshift of pairs'},
{'name':'ZCUTMAX','value':xcf.z_cut_max,'comment':'Maximum redshift of pairs'},
{'name':'REJ','value':xcf.rej,'comment':'Rejection factor'},
{'name':'NPALL','value':npairs,'comment':'Number of pairs'},
{'name':'NPUSED','value':npairs_used,'comment':'Number of used pairs'},
]
out.write([wdm,dm],names=['WDM','DM'],header=head,comment=['Sum of weight','Distortion matrix'],extname='DMAT')
out.write([wdm,dm],
names=['WDM','DM'],
comment=['Sum of weight','Distortion matrix'],
units=['',''],
header=head,extname='DMAT')
out.write([rp,rt,z],
names=['RP','RT','Z'],
comment=['R-parallel','R-transverse','Redshift'],
units=['h^-1 Mpc','h^-1 Mpc','',],
extname='ATTRI')
out.close()
Loading