478478 ps_dict_all = {}
479479 for sv1 , m1 , sv2 , m2 in zip (sv1_iterator , m1_iterator , sv2_iterator , m2_iterator , strict = True ):
480480 spec_name = f"{ sv1 } _{ m1 } x{ sv2 } _{ m2 } "
481- pseudo2datavec = np .load (opj (f'{ mcm_dir } ' , f'pseudo2datavec_{ spec_name } .npy' ))
482-
483- def get_ps (snk1 , snk2 ):
484- # compute specific cls with higher precision, save memory overall by
485- # doing this per spectrum. start_at_zero=False to match pspy convention
486- _ , pseudo_dict = so_spectra .get_spectra_pixell (master_alms [sv1 , m1 , snk1 ].astype (np .complex128 ),
487- master_alms [sv2 , m2 , snk2 ].astype (np .complex128 ),
488- spectra = spectra ,
489- apply_pspy_cut = True )
490-
491- pseudovec = so_spectra .spec_dict2vec (pseudo_dict , spectra )
492- datavec = pseudo2datavec @ pseudovec
493-
494- # xtra corr debiases signal-only spectra, but cross signal-noise spectra have mean 0
495- # and cross noise-noise spectra are always from different splits (also mean 0)
496- if apply_kspace_filter and kspace_tf_path != "analytical" :
497- if ('s' in snk1 ) and ('s' in snk2 ):
498- datavec -= TE_corr_vec [spec_name ]
499-
500- return so_spectra .vec2spec_dict (len (lb ), datavec , spectra )
481+ pseudo2datavec = np .load (opj (f'{ mcm_dir } ' , f'pseudo2datavec_{ spec_name } .npy' ))
501482
502483 # first measure the raw per-split spectra. NOTE: this is only redundant
503484 # if sv1==sv2, m1==m2, and pol1==pol2.
@@ -506,9 +487,25 @@ def get_ps(snk1, snk2):
506487 for snk1 in splits_iterator [sv1 ]:
507488 for snk2 in splits_iterator [sv2 ]:
508489
490+ # compute specific cls with higher precision, save memory overall by
491+ # doing this per spectrum. start_at_zero=False to match pspy convention
492+ _ , pseudo_dict = so_spectra .get_spectra_pixell (master_alms [sv1 , m1 , snk1 ].astype (np .complex128 ),
493+ master_alms [sv2 , m2 , snk2 ].astype (np .complex128 ),
494+ spectra = spectra ,
495+ apply_pspy_cut = True )
496+
497+ pseudovec = so_spectra .spec_dict2vec (pseudo_dict , spectra )
498+ datavec = pseudo2datavec @ pseudovec
499+
500+ # xtra corr debiases signal-only spectra, but cross signal-noise spectra have mean 0
501+ # and cross noise-noise spectra are always from different splits (also mean 0)
502+ if apply_kspace_filter and kspace_tf_path != "analytical" :
503+ if ('s' in snk1 ) and ('s' in snk2 ):
504+ datavec -= TE_corr_vec [spec_name ]
505+
509506 # ps_dict is a nested dict: (sv1, m1, snk1), (sv2, m2, snk2) -> XY -> data,
510507 # where XY is some pol cross
511- ps_dict_all [(sv1 , m1 , snk1 ), (sv2 , m2 , snk2 )] = get_ps ( snk1 , snk2 )
508+ ps_dict_all [(sv1 , m1 , snk1 ), (sv2 , m2 , snk2 )] = so_spectra . vec2spec_dict ( len ( lb ), datavec , spectra )
512509
513510 pseudo2datavec = None
514511
0 commit comments