@@ -358,7 +358,7 @@ pair, and beam.
358358 avoid calculating the mode-coupling matrices again in a separate script, we
359359 also calculate them here too.
360360
361- - command: `sbatch --ntasks 14 --cpus-per-task 8 --mem-per-cpu 8G --time 10:00 --job-name get_mcm_bbl_and_pseudosignal /path/to/sbatch/script.slurm srun python -u /path/to/PSpipe/project/SO/pISO python/get_mcm_bbl_and_pseudosignal.py /path/to/PSpipe/project/SO/pISO/paramfiles/dr6xdeep56_20251119.dict`
361+ - command: `sbatch --ntasks 14 --cpus-per-task 8 --mem-per-cpu 8G --time 10:00 --job-name get_mcm_bbl_and_pseudosignal /path/to/sbatch/script.slurm srun python -u /path/to/PSpipe/project/SO/pISO/ python/get_mcm_bbl_and_pseudosignal.py /path/to/PSpipe/project/SO/pISO/paramfiles/dr6xdeep56_20251119.dict`
3623624. The power spectra often deconvolve a kspace-filter matrix which is built (for
363363now) at the bin-bin level. The inner product of the inverse kspace-filter matrix
364364and the `mbl_inv` comprise the multiplicative part of the pseudo-to-power
@@ -576,16 +576,22 @@ After this point, the `data_dir` should look like:
576576Notes:
577577* Related to `mbl_inv`, `Bbl`, and `pseudo2datavec`, there are new functions in
578578`pspy` that make applying spin-weighted matrices to spectra easier:
579- 1. `so_mcm.get_spec2spec_array_from_spin2spin_array`, to take a `(5, ny, nx)`
580- shaped spin-weighted array and build the fully-populated `(9*ny, 9*nx)`
581- array for applying to per-ell spectra.
582- 2. `so_spectra.spec_dict2vec`, to turn a `ps[pol_pair]` dictionary into a
579+ 1. `so_mcm.get_spec2spec_sparse_dict_mat_from_spin2spin_array`, to take a
580+ `(5, ny, nx)` shaped spin-weighted array and build the sparse `(9*ny, 9*nx)`
581+ array for applying to per-ell spectra. The sparsity is preserved by
582+ representing the non-zero blocks as a two-level, row-major dictionary.
583+ 2. `so_mcm.sparse_dict_mat_matmul_sparse_dict_mat` and
584+ `so_mcm.sparse_dict_mat_matmul_sparse_dict_vec`, to apply a sparse block
585+ matrix to a sparse block matrix or sparse block vector. The sparsity is
586+ preserved by representing the non-zero blocks as a two-level, row-major
587+ dictionary.
588+ 3. Convenience functions that combine 1 and 2 into one line,
589+ `spin2spin_array_matmul_sparse_dict_mat` and
590+ `spin2spin_array_matmul_sparse_dict_vec`. The latter is how one would apply
591+ `Bbl` to a vector, since they are represented on-disk as spin2spin arrays.
592+ 4. `so_spectra.spec_dict2vec`, to turn a `ps[pol_pair]` dictionary into a
583593 1d array.
584- 3. `so_spectra.vec2spec_dict`, the opposite of that.
585- 4. `so_spectra.spin2spin_array_matmul_spec_dict`, to apply a `(5, ny, nx)`
586- shaped spin-weighted array to a `ps[pol_pair]` dictionary of spectra. Avoids
587- needing to fully populate the `(9*ny, 9*nx)` array and matmul it against the
588- 1d array. Either option is how one would, e.g., apply `Bbl` to a vector!
594+ 5. `so_spectra.vec2spec_dict`, the opposite of that.
589595* Other important new functions in `pspy` are:
590596 1. `so_mcm.ducc_couplings`, for fast couplings and mode-coupling matrices.
591597 2. `so_mcm.invert_mcm`, to use linalg tricks for fast inversion of
0 commit comments