Skip to content

Commit ede7280

Browse files
committed
move shared ana_cov funcs into covariance
1 parent 9844564 commit ede7280

2 files changed

Lines changed: 24 additions & 118 deletions

File tree

project/SO/pISO/python/get_ana_cov_blocks.py

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -124,59 +124,6 @@ def update_pseudospectra_dict(f1, f2, pseudospectra_dict=None):
124124

125125
return pseudospectra_dict
126126

127-
def TEB2pol(TEB):
128-
if TEB == 'T':
129-
return 'T'
130-
elif TEB in ('E', 'B'):
131-
return 'pol'
132-
else:
133-
raise ValueError('Only valid strs are T, E, or B')
134-
135-
def get_can_discon_com_4pt(snf1, snf2, snf3, snf4):
136-
sv1, m1, pol1, split1 = snf1
137-
sv2, m2, pol2, split2 = snf2
138-
sv3, m3, pol3, split3 = snf3
139-
sv4, m4, pol4, split4 = snf4
140-
can_sn_field_info = pspipe_list.canonize_disconnected_4pt(snf1, snf2, snf3, snf4)
141-
can = can_sn_field_info in canonized_sn_field_info2canonized_disconnected_combo_4pt
142-
143-
ref_split1, ref_split2, ref_split3, ref_split4 = covariance.get_4pt_sn_term_type(split1, split2, split3, split4)
144-
ref_snf1 = (sv1, m1, pol1, ref_split1)
145-
ref_snf2 = (sv2, m2, pol2, ref_split2)
146-
ref_snf3 = (sv3, m3, pol3, ref_split3)
147-
ref_snf4 = (sv4, m4, pol4, ref_split4)
148-
ref_sn_field_info = (ref_snf1, ref_snf2, ref_snf3, ref_snf4)
149-
ref = ref_sn_field_info in reference_sn_field_info2reference_canonized_disconnected_combo_4pt
150-
151-
if can and ref:
152-
raise ValueError(
153-
f'For sn_field_info {snf1, snf2, snf3, snf4}, the possible reference disconnected '
154-
f'sn_field_info {ref_sn_field_info} is in '
155-
'reference_sn_field_info2reference_canonized_disconnected_combo_4pt '
156-
f'and canonized disconnected sn_field_info {can_sn_field_info} is in '
157-
'canonized_sn_field_info2canonized_disconnected_combo_4pt'
158-
)
159-
160-
if can:
161-
can_discon_com_4pt = canonized_sn_field_info2canonized_disconnected_combo_4pt[can_sn_field_info]
162-
if ref:
163-
can_discon_com_4pt = reference_sn_field_info2reference_canonized_disconnected_combo_4pt[ref_sn_field_info]
164-
165-
return can_discon_com_4pt
166-
167-
# NOTE: this function is insensitive to disconnected 4pt canonization
168-
def pols_disconnected_combo_4pt2ducc_optype(pol1, pol2, pol3, pol4):
169-
if cov_spin00_coupling_only:
170-
return 0
171-
else:
172-
spin2_1 = int(pol1 == 'pol' and pol2 == 'pol')
173-
spin2_2 = int(pol3 == 'pol' and pol4 == 'pol')
174-
175-
# if 0, then the spintype is 00, which is ducc optype 0
176-
# if 1, then the spintype is 02 (or 20), which is ducc optype 1
177-
# if 2, then the spintype is ++, which is ducc optype 2
178-
return spin2_1 + spin2_2
179-
180127
@numba.njit(parallel=True)
181128
def add_term_to_pseudo_cov_block(pseudo_cov_block, num_terms, w4_1234, w4_coupling, w2_12, w2_34, C12, C34, coupling):
182129
# important to cast the scalar to the right type before multiplication,
@@ -296,10 +243,10 @@ def add_term_to_pseudo_cov_block(pseudo_cov_block, num_terms, w4_1234, w4_coupli
296243
sv3, m3, TEB3, split3 = sna3
297244
sv4, m4, TEB4, split4 = sna4
298245

299-
pol1 = TEB2pol(TEB1)
300-
pol2 = TEB2pol(TEB2)
301-
pol3 = TEB2pol(TEB3)
302-
pol4 = TEB2pol(TEB4)
246+
pol1 = covariance.TEB2pol(TEB1)
247+
pol2 = covariance.TEB2pol(TEB2)
248+
pol3 = covariance.TEB2pol(TEB3)
249+
pol4 = covariance.TEB2pol(TEB4)
303250

304251
snf1 = (sv1, m1, pol1, split1)
305252
snf2 = (sv2, m2, pol2, split2)
@@ -312,7 +259,11 @@ def add_term_to_pseudo_cov_block(pseudo_cov_block, num_terms, w4_1234, w4_coupli
312259
w4_1234 = canonized_w4s[can_con_com_4pt_1234]
313260

314261
# get the w4 for the coupling that will be used for this term
315-
can_discon_com_4pt_coupling = get_can_discon_com_4pt(snf1, snf2, snf3, snf4)
262+
can_discon_com_4pt_coupling = covariance.get_can_discon_com_4pt(
263+
snf1, snf2, snf3, snf4,
264+
canonized_sn_field_info2canonized_disconnected_combo_4pt,
265+
reference_sn_field_info2reference_canonized_disconnected_combo_4pt
266+
)
316267
can_con_com_4pt_coupling = pspipe_list.canonize_connected_4pt(*can_discon_com_4pt_coupling)
317268
w4_coupling = canonized_w4s[can_con_com_4pt_coupling]
318269

@@ -334,7 +285,9 @@ def add_term_to_pseudo_cov_block(pseudo_cov_block, num_terms, w4_1234, w4_coupli
334285
#
335286
# NOTE: although using uncanonized pol1, pol2, pol3, pol4, the optype is
336287
# insensitive to disconnected 4pt canonization
337-
optype = pols_disconnected_combo_4pt2ducc_optype(pol1, pol2, pol3, pol4)
288+
optype = covariance.pols_disconnected_combo_4pt2ducc_optype(
289+
pol1, pol2, pol3, pol4, cov_spin00_coupling_only
290+
)
338291
coups_idx = can_discon_com_4pts_and_optypes.index((can_discon_com_4pt_coupling, optype))
339292
coupling = coups[coups_idx]
340293

project/SO/pISO/python/get_ana_cov_blocks_recipe.py

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -42,59 +42,6 @@
4242
canonized_sn_field_info2canonized_disconnected_combo_4pt = npy.load(opj(cov_dir, 'canonized_sn_field_info2canonized_disconnected_combo_4pt.npy'), allow_pickle=True).item()
4343
reference_sn_field_info2reference_canonized_disconnected_combo_4pt = npy.load(opj(cov_dir, 'reference_sn_field_info2reference_canonized_disconnected_combo_4pt.npy'), allow_pickle=True).item()
4444

45-
def TEB2pol(TEB):
46-
if TEB == 'T':
47-
return 'T'
48-
elif TEB in ('E', 'B'):
49-
return 'pol'
50-
else:
51-
raise ValueError('Only valid strs are T, E, or B')
52-
53-
def get_can_discon_com_4pt(snf1, snf2, snf3, snf4):
54-
sv1, m1, pol1, split1 = snf1
55-
sv2, m2, pol2, split2 = snf2
56-
sv3, m3, pol3, split3 = snf3
57-
sv4, m4, pol4, split4 = snf4
58-
can_sn_field_info = pspipe_list.canonize_disconnected_4pt(snf1, snf2, snf3, snf4)
59-
can = can_sn_field_info in canonized_sn_field_info2canonized_disconnected_combo_4pt
60-
61-
ref_split1, ref_split2, ref_split3, ref_split4 = covariance.get_4pt_sn_term_type(split1, split2, split3, split4)
62-
ref_snf1 = (sv1, m1, pol1, ref_split1)
63-
ref_snf2 = (sv2, m2, pol2, ref_split2)
64-
ref_snf3 = (sv3, m3, pol3, ref_split3)
65-
ref_snf4 = (sv4, m4, pol4, ref_split4)
66-
ref_sn_field_info = (ref_snf1, ref_snf2, ref_snf3, ref_snf4)
67-
ref = ref_sn_field_info in reference_sn_field_info2reference_canonized_disconnected_combo_4pt
68-
69-
if can and ref:
70-
raise ValueError(
71-
f'For sn_field_info {snf1, snf2, snf3, snf4}, the possible reference disconnected '
72-
f'sn_field_info {ref_sn_field_info} is in '
73-
'reference_sn_field_info2reference_canonized_disconnected_combo_4pt '
74-
f'and canonized disconnected sn_field_info {can_sn_field_info} is in '
75-
'canonized_sn_field_info2canonized_disconnected_combo_4pt'
76-
)
77-
78-
if can:
79-
can_discon_com_4pt = canonized_sn_field_info2canonized_disconnected_combo_4pt[can_sn_field_info]
80-
if ref:
81-
can_discon_com_4pt = reference_sn_field_info2reference_canonized_disconnected_combo_4pt[ref_sn_field_info]
82-
83-
return can_discon_com_4pt
84-
85-
# NOTE: this function is insensitive to disconnected 4pt canonization
86-
def pols_disconnected_combo_4pt2ducc_optype(pol1, pol2, pol3, pol4):
87-
if cov_spin00_coupling_only:
88-
return 0
89-
else:
90-
spin2_1 = int(pol1 == 'pol' and pol2 == 'pol')
91-
spin2_2 = int(pol3 == 'pol' and pol4 == 'pol')
92-
93-
# if 0, then the spintype is 00, which is ducc optype 0
94-
# if 1, then the spintype is 02 (or 20), which is ducc optype 1
95-
# if 2, then the spintype is ++, which is ducc optype 2
96-
return spin2_1 + spin2_2
97-
9845
def update_ducc_inputs_and_nterms(sna1, sna2, sna3, sna4,
9946
this_block_can_discon_com_4pts_and_optypes,
10047
can_sn_alm_info2nterms):
@@ -104,20 +51,26 @@ def update_ducc_inputs_and_nterms(sna1, sna2, sna3, sna4,
10451
sv3, m3, TEB3, split3 = sna3
10552
sv4, m4, TEB4, split4 = sna4
10653

107-
pol1 = TEB2pol(TEB1)
108-
pol2 = TEB2pol(TEB2)
109-
pol3 = TEB2pol(TEB3)
110-
pol4 = TEB2pol(TEB4)
54+
pol1 = covariance.TEB2pol(TEB1)
55+
pol2 = covariance.TEB2pol(TEB2)
56+
pol3 = covariance.TEB2pol(TEB3)
57+
pol4 = covariance.TEB2pol(TEB4)
11158

11259
snf1 = (sv1, m1, pol1, split1)
11360
snf2 = (sv2, m2, pol2, split2)
11461
snf3 = (sv3, m3, pol3, split3)
11562
snf4 = (sv4, m4, pol4, split4)
116-
can_discon_com_4pt = get_can_discon_com_4pt(snf1, snf2, snf3, snf4)
63+
can_discon_com_4pt = covariance.get_can_discon_com_4pt(
64+
snf1, snf2, snf3, snf4,
65+
canonized_sn_field_info2canonized_disconnected_combo_4pt,
66+
reference_sn_field_info2reference_canonized_disconnected_combo_4pt
67+
)
11768

11869
# NOTE: although using uncanonized pol1, pol2, pol3, pol4, the optype is
11970
# insensitive to disconnected 4pt canonization
120-
optype = pols_disconnected_combo_4pt2ducc_optype(pol1, pol2, pol3, pol4)
71+
optype = covariance.pols_disconnected_combo_4pt2ducc_optype(
72+
pol1, pol2, pol3, pol4, cov_spin00_coupling_only
73+
)
12174

12275
# adding to set does nothing if already in set
12376
this_block_can_discon_com_4pts_and_optypes.add((can_discon_com_4pt, optype))

0 commit comments

Comments
 (0)