Skip to content

Commit 5edaffa

Browse files
committed
fix wcl iteration in get_mcm_bbl_and_pseudosignal.py, only affects when windows are different within a mcm
1 parent e4b2910 commit 5edaffa

2 files changed

Lines changed: 17 additions & 12 deletions

File tree

project/SO/pISO/python/get_mcm_bbl_and_pseudosignal.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,15 @@
117117
bls = []
118118
for task in subtasks:
119119
sv1, m1, sv2, m2 = sv1_list[task], m1_list[task], sv2_list[task], m2_list[task]
120-
mapnames = ((sv1, m1), (sv2, m2))
121120
pols = ('T', 'pol')
122121

123122
log.info(f"[Rank {so_mpi.rank}, {task:02d}]: Preparing data for {sv1}_{m1} x {sv2}_{m2}")
124123

125124
# only calculate the stuff we need to avoid numerical differences
126125
m2win_fn = {}
127-
for (sv, m) in mapnames:
128-
for pol in pols:
129-
m2win_fn[sv, m, pol] = d[f"window_{pol}_{sv}_{m}"] # no repeated keys
126+
for pol in pols:
127+
m2win_fn[sv1, m1, pol] = d[f"window_{pol}_{sv1}_{m1}"]
128+
m2win_fn[sv2, m2, pol] = d[f"window_{pol}_{sv2}_{m2}"] # no repeated keys
130129

131130
win_fn2win = {}
132131
for win_fn in m2win_fn.values():
@@ -149,12 +148,17 @@
149148
win_fn2walm[win_fn] = sph_tools.map2alm(win, niter=niter, lmax=maxl, dtype=np.complex128) # no repeated computation (or keys)
150149

151150
can_win_fn_2pt2cl = {}
152-
for win_fn1, walm1 in win_fn2walm.items():
153-
for win_fn2, walm2 in win_fn2walm.items():
154-
can_win_fn_2pt = pspipe_list.canonize_connected_2pt(win_fn1, win_fn2)
155-
if can_win_fn_2pt not in can_win_fn_2pt2cl:
156-
can_win_fn_2pt2cl[can_win_fn_2pt] = curvedsky.alm2cl(walm1, walm2, dtype=np.float64) # no repeated computation (or keys)
151+
for poli in pols:
152+
win_fni = m2win_fn[sv1, m1, poli]
153+
walmi = win_fn2walm[win_fni]
154+
for polj in pols:
155+
win_fnj = m2win_fn[sv2, m2, polj]
156+
walmj = win_fn2walm[win_fnj]
157157

158+
can_win_fn_2pt_ij = pspipe_list.canonize_connected_2pt(win_fni, win_fnj)
159+
if can_win_fn_2pt_ij not in can_win_fn_2pt2cl:
160+
can_win_fn_2pt2cl[can_win_fn_2pt_ij] = curvedsky.alm2cl(walmi, walmj, dtype=np.float64) # no repeated computation (or keys)
161+
158162
# beams have no numerical differences due to multithreading
159163
_, bl1 = misc.read_beams(d[f"beam_T_{sv1}_{m1}"], d[f"beam_pol_{sv1}_{m1}"])
160164
_, bl2 = misc.read_beams(d[f"beam_T_{sv2}_{m2}"], d[f"beam_pol_{sv2}_{m2}"])
@@ -167,11 +171,10 @@
167171
bl = []
168172
for i in range(2):
169173
for j in range(2):
170-
(svi, mi), (svj, mj) = mapnames[i], mapnames[j]
171174
poli, polj = pols[i], pols[j]
172-
win_fni, win_fnj = m2win_fn[svi, mi, poli], m2win_fn[svj, mj, polj]
175+
win_fni, win_fnj = m2win_fn[sv1, m1, poli], m2win_fn[sv2, m2, polj]
173176
can_win_fn_2pt_ij = pspipe_list.canonize_connected_2pt(win_fni, win_fnj)
174-
spec_for_ducc.append(can_win_fn_2pt2cl[can_win_fn_2pt])
177+
spec_for_ducc.append(can_win_fn_2pt2cl[can_win_fn_2pt_ij])
175178
bl.append(bl1[i][2:lmax] * bl2[j][2:lmax]) # TODO: reconsider pspipe conventions
176179
specs_for_ducc.append(spec_for_ducc)
177180
bls.append(bl)

project/SO/pISO/python/get_w2_w4_and_window_spectra.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ def calc_w2(w1, w2, pixsizemap):
166166
def calc_w4(w1, w2, w3, w4, pixsizemap):
167167
return np.sum(w1 * w2 * w3 * w4 * pixsizemap)/(4*np.pi)
168168

169+
# TODO: test if storing some walms helps speed without hurting memory too much, since
170+
# this appears to be the bottleneck when going to large maps
169171
def calc_wl(w1, w2, w3, w4):
170172
walm12 = curvedsky.map2alm(enmap.samewcs(mult_2(w1, w2), w1), lmax=lmax + dl_window_spectra)
171173
walm34 = curvedsky.map2alm(enmap.samewcs(mult_2(w3, w4), w3), lmax=lmax + dl_window_spectra)

0 commit comments

Comments
 (0)