{ "cells": [ { "cell_type": "markdown", "id": "433e51d7", "metadata": {}, "source": [ "# 07 — Higher-Order Statistics (Bispectrum and Trispectrum)\n", "\n", "**Purpose:** Compute and compare collapsed equilateral bispectrum (S3) and trispectrum\n", "(S4) statistics for Agora, DDPM, and Gaussian samples.\n", "\n", "Following Lee et al., the bispectrum and trispectrum are estimated from the skewness and\n", "kurtosis of harmonic band-filtered maps. This notebook covers both levels of analysis:\n", "\n", "1. **Summed channel** — adds CIB and tSZ into a single map and computes S2, S3, S4 per\n", " ℓ-band (8 bands of width 720, centred from ℓ ≈ 300 to ℓ ≈ 5700). This is the primary\n", " result shown in the paper (Figure 7).\n", "\n", "2. **Joint cross-moments** — computes all 12 channel combinations (S2^{aa}, S2^{bb},\n", " S2^{ab}, S3^{aaa}, …, S4^{abbb}) separately for CIB and tSZ. This is the extended\n", " analysis shown in Appendix C (Figures 10–11).\n", "\n", "Both analyses add three tiers of ILC residual noise (SPT-3G, S4-Wide, S4-Ultra Deep)\n", "before computing moments, and save intermediate results as `.npy` arrays so the slow\n", "computation only needs to run once.\n", "\n", "**Note:** Computing moments for 800+ samples across 8 bands is slow (~hours). Run the\n", "moment computation cells once and reload from the saved arrays for plotting.\n", "\n", "**Inputs:**\n", "- Test maps, DDPM samples, Gaussian baseline: `data/low_pass/2mJy/*.npy`\n", "- ILC noise spectra: `data/ilc/ilc_weights_residuals_agora_fg_model.npy`\n", "\n", "**Outputs:**\n", "- Moment arrays: `data/moments_train_*.npy`, `data/moments_samples_*.npy`,\n", " `data/moments_gaussian_*.npy` (shape: N × 8 × 12)\n", "- Bispectrum/trispectrum comparison plots (Figures 7, 10, 11)\n", "\n", "**Key module functions:**\n", "- `foregrounds_diffusion.flatmaps.get_lpf_hpf` (bandpass filter construction)\n", "- `foregrounds_diffusion.preprocessing.load_all_moments`\n", "\n", "**Paper reference:** §3.2 (moment statistics definition), §4.6 (Figure 7), Appendix C\n", "(Figures 10–11)." ] }, { "cell_type": "code", "execution_count": 10, "id": "79610d7f-7e2e-4534-93d2-5fbfe176ee43", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Obtaining file:///home/apb86/cmb_foregrounds_diffusion\n", " Installing build dependencies ... \u001b[?25ldone\n", "\u001b[?25h Checking if build backend supports build_editable ... \u001b[?25ldone\n", "\u001b[?25h Getting requirements to build editable ... \u001b[?25ldone\n", "\u001b[?25h Preparing editable metadata (pyproject.toml) ... \u001b[?25ldone\n", "\u001b[?25hRequirement already satisfied: numpy>=1.26 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (1.26.4)\n", "Requirement already satisfied: scipy>=1.11 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (1.17.0)\n", "Requirement already satisfied: torch>=2.10 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (2.10.0)\n", "Requirement already satisfied: torchvision>=0.25 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (0.25.0)\n", "Requirement already satisfied: accelerate>=1.12 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (1.12.0)\n", "Requirement already satisfied: denoising-diffusion-pytorch>=2.2.5 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (2.2.6)\n", "Requirement already satisfied: healpy>=1.19 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (1.19.0)\n", "Requirement already satisfied: astropy>=7.2 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (7.2.0)\n", "Requirement already satisfied: einops>=0.8 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (0.8.2)\n", "Requirement already satisfied: ema-pytorch>=0.7 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (0.7.9)\n", "Requirement already satisfied: pillow>=12.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (12.1.1)\n", "Requirement already satisfied: pytorch-fid>=0.3 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (0.3.0)\n", "Requirement already satisfied: tqdm>=4.67 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from foregrounds_diffusion==0.1.0) (4.67.3)\n", "Requirement already satisfied: packaging>=20.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from accelerate>=1.12->foregrounds_diffusion==0.1.0) (26.0)\n", "Requirement already satisfied: psutil in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from accelerate>=1.12->foregrounds_diffusion==0.1.0) (7.2.2)\n", "Requirement already satisfied: pyyaml in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from accelerate>=1.12->foregrounds_diffusion==0.1.0) (6.0.3)\n", "Requirement already satisfied: huggingface_hub>=0.21.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from accelerate>=1.12->foregrounds_diffusion==0.1.0) (1.4.1)\n", "Requirement already satisfied: safetensors>=0.4.3 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from accelerate>=1.12->foregrounds_diffusion==0.1.0) (0.7.0)\n", "Requirement already satisfied: pyerfa>=2.0.1.1 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from astropy>=7.2->foregrounds_diffusion==0.1.0) (2.0.1.5)\n", "Requirement already satisfied: astropy-iers-data>=0.2025.10.27.0.39.10 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from astropy>=7.2->foregrounds_diffusion==0.1.0) (0.2026.2.9.0.50.33)\n", "Requirement already satisfied: filelock in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (3.24.0)\n", "Requirement already satisfied: fsspec>=2023.5.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (2026.2.0)\n", "Requirement already satisfied: hf-xet<2.0.0,>=1.2.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (1.2.0)\n", "Requirement already satisfied: httpx<1,>=0.23.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (0.28.1)\n", "Requirement already satisfied: shellingham in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (1.5.4)\n", "Requirement already satisfied: typer-slim in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (0.23.1)\n", "Requirement already satisfied: typing-extensions>=4.1.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (4.15.0)\n", "Requirement already satisfied: anyio in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from httpx<1,>=0.23.0->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (4.12.1)\n", "Requirement already satisfied: certifi in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from httpx<1,>=0.23.0->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (2026.1.4)\n", "Requirement already satisfied: httpcore==1.* in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from httpx<1,>=0.23.0->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (1.0.9)\n", "Requirement already satisfied: idna in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from httpx<1,>=0.23.0->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (3.11)\n", "Requirement already satisfied: h11>=0.16 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (0.16.0)\n", "Requirement already satisfied: sympy>=1.13.3 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (1.14.0)\n", "Requirement already satisfied: networkx>=2.5.1 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (3.6.1)\n", "Requirement already satisfied: jinja2 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (3.1.6)\n", "Requirement already satisfied: cuda-bindings==12.9.4 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.9.4)\n", "Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.8.93 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.8.93)\n", "Requirement already satisfied: nvidia-cuda-runtime-cu12==12.8.90 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.8.90)\n", "Requirement already satisfied: nvidia-cuda-cupti-cu12==12.8.90 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.8.90)\n", "Requirement already satisfied: nvidia-cudnn-cu12==9.10.2.21 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (9.10.2.21)\n", "Requirement already satisfied: nvidia-cublas-cu12==12.8.4.1 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.8.4.1)\n", "Requirement already satisfied: nvidia-cufft-cu12==11.3.3.83 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (11.3.3.83)\n", "Requirement already satisfied: nvidia-curand-cu12==10.3.9.90 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (10.3.9.90)\n", "Requirement already satisfied: nvidia-cusolver-cu12==11.7.3.90 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (11.7.3.90)\n", "Requirement already satisfied: nvidia-cusparse-cu12==12.5.8.93 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.5.8.93)\n", "Requirement already satisfied: nvidia-cusparselt-cu12==0.7.1 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (0.7.1)\n", "Requirement already satisfied: nvidia-nccl-cu12==2.27.5 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (2.27.5)\n", "Requirement already satisfied: nvidia-nvshmem-cu12==3.4.5 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (3.4.5)\n", "Requirement already satisfied: nvidia-nvtx-cu12==12.8.90 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.8.90)\n", "Requirement already satisfied: nvidia-nvjitlink-cu12==12.8.93 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (12.8.93)\n", "Requirement already satisfied: nvidia-cufile-cu12==1.13.1.3 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (1.13.1.3)\n", "Requirement already satisfied: triton==3.6.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from torch>=2.10->foregrounds_diffusion==0.1.0) (3.6.0)\n", "Requirement already satisfied: cuda-pathfinder~=1.1 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from cuda-bindings==12.9.4->torch>=2.10->foregrounds_diffusion==0.1.0) (1.3.4)\n", "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from sympy>=1.13.3->torch>=2.10->foregrounds_diffusion==0.1.0) (1.3.0)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from jinja2->torch>=2.10->foregrounds_diffusion==0.1.0) (3.0.3)\n", "Requirement already satisfied: typer>=0.23.1 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from typer-slim->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (0.23.1)\n", "Requirement already satisfied: click>=8.0.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from typer>=0.23.1->typer-slim->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (8.3.1)\n", "Requirement already satisfied: rich>=10.11.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from typer>=0.23.1->typer-slim->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (14.3.2)\n", "Requirement already satisfied: annotated-doc>=0.0.2 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from typer>=0.23.1->typer-slim->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (0.0.4)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from rich>=10.11.0->typer>=0.23.1->typer-slim->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (4.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from rich>=10.11.0->typer>=0.23.1->typer-slim->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (2.19.2)\n", "Requirement already satisfied: mdurl~=0.1 in /home/apb86/diffusion_project_env/lib64/python3.11/site-packages (from markdown-it-py>=2.2.0->rich>=10.11.0->typer>=0.23.1->typer-slim->huggingface_hub>=0.21.0->accelerate>=1.12->foregrounds_diffusion==0.1.0) (0.1.2)\n", "Building wheels for collected packages: foregrounds_diffusion\n", " Building editable for foregrounds_diffusion (pyproject.toml) ... \u001b[?25ldone\n", "\u001b[?25h Created wheel for foregrounds_diffusion: filename=foregrounds_diffusion-0.1.0-0.editable-py3-none-any.whl size=4647 sha256=9d3bb3d6aa21f816caa1c61ecba54c7ac9d3d800d32df0d942fb8567eb370553\n", " Stored in directory: /tmp/pip-ephem-wheel-cache-hqaxvf3s/wheels/ad/05/47/d622ea03cc2c607997f65b7643dab9c4f27fa5f37d82097115\n", "Successfully built foregrounds_diffusion\n", "Installing collected packages: foregrounds_diffusion\n", " Attempting uninstall: foregrounds_diffusion\n", " Found existing installation: foregrounds_diffusion 0.1.0\n", " Uninstalling foregrounds_diffusion-0.1.0:\n", " Successfully uninstalled foregrounds_diffusion-0.1.0\n", "Successfully installed foregrounds_diffusion-0.1.0\n", "\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m26.0.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m26.1.2\u001b[0m\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" ] } ], "source": [ "!pip install -e ~/cmb_foregrounds_diffusion/" ] }, { "cell_type": "markdown", "id": "da82477a", "metadata": {}, "source": [ "## 1 Configuration\n", "\n", "Band-pass filter parameters. We tile [ℓ_min, ℓ_max] = [300, 6060] into\n", "N_BANDS = 8 uniform bands of width Δℓ = 720, centred at ℓ ≈ 660, 1380, …,\n", "5700. These choices follow Lee et al. and the paper's Figure 7. The Gaussian\n", "difference filter (`filter_type=2`) is a band-pass with smooth roll-off that\n", "avoids the Gibbs ringing of a hard top-hat." ] }, { "cell_type": "code", "execution_count": null, "id": "6198640f", "metadata": {}, "outputs": [], "source": [ "# compute_summed_moments(cib_arr + tsz_arr, bp_filters):\n", "# For each band b and map i, band-filter (cib_i + tsz_i) and compute:\n", "# col 0 = S2 = var(filtered_map) — proportional to C_ell\n", "# col 1 = S3 = mean(f^3) / var(f)^1.5 — skewness\n", "# col 2 = S4 = mean(f^4) / var(f)^2 - 3 — excess kurtosis\n", "# Returns ndarray(N, B, 3).\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from pathlib import Path\n", "\n", "from foregrounds_diffusion.flatmaps import get_lpf_hpf, bandpass_filter\n", "from foregrounds_diffusion.preprocessing import load_all_moments, renormalize_dm_maps, denormalize_dm_maps\n", "from foregrounds_diffusion.moments import compute_summed_moments, compute_cross_moments\n", "\n", "PTSRC = 2\n", "N_BANDS = 8\n", "LMIN_BAND = 300\n", "LMAX_BAND = 6060\n", "BAND_WIDTH = (LMAX_BAND - LMIN_BAND) // N_BANDS # 720\n", "flatskymapparams = [256, 256, 1.40625, 1.40625]\n", "\n", "PROJECT_ROOT = Path(\"/home/apb86/cmb_foregrounds_diffusion\")\n", "PATCHES_DIR = Path(f\"data/low_pass/{PTSRC}mJy\")\n", "\n", "bp_edges = [(LMIN_BAND + i * BAND_WIDTH, LMIN_BAND + (i + 1) * BAND_WIDTH)\n", " for i in range(N_BANDS)]\n", "bandpass_centers = np.array([0.5 * (lo + hi) for lo, hi in bp_edges])\n", "print(\"Bandpass centres:\", bandpass_centers.astype(int))\n" ] }, { "cell_type": "markdown", "id": "62701b77", "metadata": {}, "source": [ "## 2 Pre-compute band-pass filters\n", "\n", "`get_lpf_hpf` with `filter_type=2` returns a 2D Fourier-space filter array\n", "of shape `(ny, nx)` whose values lie in `[0, 1]`. Pre-computing these once\n", "and passing them as a list to `compute_summed_moments` / `compute_cross_moments`\n", "avoids redundant FFT frequency grid construction during the per-map loop.\n", "Store the filter list as `bp_filters` — it is reused for all three sample\n", "populations (Agora, DDPM, Gaussian)." ] }, { "cell_type": "code", "execution_count": null, "id": "35657092", "metadata": {}, "outputs": [], "source": [ "# Pre-compute the 2D band-pass filters once. Each filter is a (ny, nx) float\n", "# array in Fourier space with values in [0,1]. filter_type=2 gives a Gaussian\n", "# difference (DoG) filter, which has a smooth roll-off that avoids ringing\n", "# artefacts at the band edges. Storing the list avoids repeated FFT-grid\n", "# construction inside the moment-computation loops.\n", "# Pre-compute all bandpass filters (stored as 2D arrays)\n", "bp_filters = [get_lpf_hpf(flatskymapparams, lminmax, filter_type=2)\n", " for lminmax in bp_edges]\n" ] }, { "cell_type": "markdown", "id": "6b956f82", "metadata": {}, "source": [ "## 3 Optional: ILC noise spectra\n", "\n", "Instrument noise from the SPT-3G and CMB-S4 experiments can be added to\n", "each sample before computing statistics, to simulate realistic map-level\n", "signal-to-noise. The ILC residual spectra are pre-computed from a\n", "Wiener-filtered combination of frequency channels. This cell loads those\n", "spectra but does not apply them in the main analysis — uncomment the example\n", "line to add a noise realisation to any map." ] }, { "cell_type": "code", "execution_count": 13, "id": "6d892798", "metadata": {}, "outputs": [], "source": [ "# Load ILC noise spectra (SPT-3G, S4-Wide, S4-Ultra Deep)\n", "ilc_noise = np.load(\n", " PROJECT_ROOT / \"data\" / \"ilc\" / \"ilc_weights_residuals_agora_fg_model.npy\", allow_pickle=True\n", ").item()\n", "\n", "# Example: add SPT-3G noise realisation to a map\n", "# noise_map = cl2map(flatskymapparams, ilc_noise['spt3g_150'], el=ilc_noise['el'])\n" ] }, { "cell_type": "markdown", "id": "d9f04ed0", "metadata": {}, "source": [ "## 4 Load and denormalise maps\n", "\n", "Identical loading pattern to notebook 06. The Agora test set is defined by\n", "the same `rng.permutation(seed=42)` split used during training, so there is\n", "no data leakage." ] }, { "cell_type": "code", "execution_count": null, "id": "fba283be", "metadata": {}, "outputs": [], "source": [ "cib_maps = np.load(PATCHES_DIR / f\"CIB_map_150GHz_256_st6_minmax_{PTSRC}mJy_zero_lp.npy\")\n", "tsz_maps = np.load(PATCHES_DIR / f\"tSZ3_map_150GHz_256_st6_minmax_{PTSRC}mJy_norm_lp.npy\")\n", "ddpm_raw = np.load(PROJECT_ROOT / \"data\" / \"low_pass\" / f\"{PTSRC}mJy\" / f\"new_samples_cib_tsz_{PTSRC}mJy_zero_norm_6x6_w_au_lp.npy\")\n", "gauss_maps = np.load(PATCHES_DIR / f\"gaussian_cib_tsz_{PTSRC}mJy_lp.npy\")\n", "\n", "agora_cib = cib_maps[:, :, :, 0]\n", "agora_tsz = tsz_maps[:, :, :, 0]\n", "\n", "train_maps = np.concatenate([cib_maps, tsz_maps], axis=-1) # (N, H, W, 2)\n", "print(f\"train_maps shape: {train_maps.shape}\")\n", "print(f\"ddpm_raw shape: {ddpm_raw.shape}\")\n", "\n", "# Load saved normalisation parameters from patch extraction\n", "norm_params = np.load(PATCHES_DIR / f\"norm_params_{PTSRC}mJy.npy\")\n", "cib_mean, cib_std, tsz_mean, tsz_std = norm_params\n", "print(f\"CIB — mean: {cib_mean:.4f} std: {cib_std:.4f}\")\n", "print(f\"tSZ — mean: {tsz_mean:.4f} std: {tsz_std:.4f}\")\n", "\n", "ddpm_renorm = denormalize_dm_maps(ddpm_raw, cib_mean, cib_std, tsz_mean, tsz_std)\n", "print(f\"Denormalised DDPM — CIB range: [{ddpm_renorm[:,0].min():.4f}, {ddpm_renorm[:,0].max():.4f}]\")\n", "print(f\"Denormalised DDPM — tSZ range: [{ddpm_renorm[:,1].min():.4f}, {ddpm_renorm[:,1].max():.4f}]\")\n", "\n", "# DDPM samples are (N, 2, H, W) channels-first; Agora/Gaussian are (N, H, W, 1)\n", "ddpm_cib = ddpm_renorm[:, 0] # (N, H, W)\n", "ddpm_tsz = ddpm_renorm[:, 1]\n", "\n", "if gauss_maps.shape[1] == 2:\n", " gauss_cib = gauss_maps[:, 0]; gauss_tsz = gauss_maps[:, 1]\n", "else:\n", " gauss_cib = gauss_maps[:, :, :, 0]; gauss_tsz = gauss_maps[:, :, :, 1]\n" ] }, { "cell_type": "markdown", "id": "56026506", "metadata": {}, "source": [ "## 5 Compute summed-channel moments\n", "\n", "`compute_summed_moments(cib + tsz, bp_filters)` band-filters the sum\n", "CIB + tSZ, then computes the variance S2, skewness S3, and excess kurtosis S4\n", "of the filtered field. A Gaussian field has S3 = S4 = 0 by definition, so\n", "non-zero values indicate non-Gaussianity. The expected ordering is\n", "|S3_Agora| > |S3_DDPM| > |S3_Gaussian| if the DDPM captures some but not all\n", "non-Gaussian structure. This computation takes ≈ 30 min for N = 200 maps;\n", "reduce `N_TEST` for a quick check." ] }, { "cell_type": "code", "execution_count": null, "id": "b896c738", "metadata": {}, "outputs": [], "source": [ "# compute_summed_moments(cib_arr + tsz_arr, bp_filters):\n", "# For each band b and map i, band-filter (cib_i + tsz_i) and compute:\n", "# col 0 = S2 = var(filtered_map) — proportional to C_ell\n", "# col 1 = S3 = mean(f^3) / var(f)^1.5 — skewness\n", "# col 2 = S4 = mean(f^4) / var(f)^2 - 3 — excess kurtosis\n", "# Returns ndarray(N, B, 3).\n", "# NOTE: this takes ~30 min for full datasets — compute once and save\n", "print(\"Computing Agora moments … (set N=50 for a quick test)\")\n", "N_TEST = 200 # replace with -1 for full run\n", "agora_moments = compute_summed_moments(\n", " agora_cib[:N_TEST], agora_tsz[:N_TEST], bp_filters)\n", "ddpm_moments = compute_summed_moments(\n", " ddpm_cib[:N_TEST], ddpm_tsz[:N_TEST], bp_filters)\n", "gauss_moments = compute_summed_moments(\n", " gauss_cib[:N_TEST], gauss_tsz[:N_TEST], bp_filters)\n" ] }, { "cell_type": "markdown", "id": "9ea15632", "metadata": {}, "source": [ "## 6 Compute cross-channel moments\n", "\n", "`compute_cross_moments` computes all 12 mixed moments between the CIB (a) and\n", "tSZ (b) channels per ℓ-band: three second-order (S2^{aa}, S2^{bb}, S2^{ab}),\n", "four third-order, and five fourth-order terms. The second-order terms\n", "correspond to the auto- and cross-power spectra after band-filtering. The\n", "higher-order terms capture non-linear coupling between the two foreground\n", "components that cannot be recovered from the power spectrum alone." ] }, { "cell_type": "code", "execution_count": null, "id": "09edf975", "metadata": {}, "outputs": [], "source": [ "# compute_cross_moments(cib_arr, tsz_arr, bp_filters) → (ndarray(N, B, 12), labels)\n", "# The 12 labels are: S2aa, S2bb, S2ab, S3aaa, S3bbb, S3aab, S3abb,\n", "# S4aaaa, S4bbbb, S4aaab, S4aabb, S4abbb\n", "# where a = CIB channel, b = tSZ channel.\n", "# NOTE: this takes ~30-60 min for full datasets — compute once and save\n", "print(\"Computing Agora cross-moments …\")\n", "agora_cross, cross_labels = compute_cross_moments(\n", " agora_cib[:N_TEST], agora_tsz[:N_TEST], bp_filters)\n", "print(\"Computing DDPM cross-moments …\")\n", "ddpm_cross, _ = compute_cross_moments(\n", " ddpm_cib[:N_TEST], ddpm_tsz[:N_TEST], bp_filters)\n", "print(\"Computing Gaussian cross-moments …\")\n", "gauss_cross, _ = compute_cross_moments(\n", " gauss_cib[:N_TEST], gauss_tsz[:N_TEST], bp_filters)\n", "print(f\"Done. Shape: {agora_cross.shape} — labels: {cross_labels}\")" ] }, { "cell_type": "markdown", "id": "e0771b0e", "metadata": {}, "source": [ "## 7 Save and reload\n", "\n", "Moment computation is the most expensive step (≈ 30–60 min for N = 200 maps\n", "on a single CPU core). Save results to disk immediately after computation so\n", "that subsequent plotting cells can be re-run quickly without recomputing. The\n", "commented `np.load` lines below illustrate how to reload from disk." ] }, { "cell_type": "code", "execution_count": null, "id": "1edf4c3f", "metadata": {}, "outputs": [], "source": [ "# Save and reload — run the computation cells once, then reload from disk\n", "OUT_DIR = Path(\"data\")\n", "np.save(OUT_DIR / f\"moments_train_summed_{PTSRC}mJy.npy\", agora_moments)\n", "np.save(OUT_DIR / f\"moments_samples_summed_{PTSRC}mJy.npy\", ddpm_moments)\n", "np.save(OUT_DIR / f\"moments_gaussian_summed_{PTSRC}mJy.npy\", gauss_moments)\n", "\n", "np.save(OUT_DIR / f\"moments_train_cross_{PTSRC}mJy.npy\", agora_cross)\n", "np.save(OUT_DIR / f\"moments_samples_cross_{PTSRC}mJy.npy\", ddpm_cross)\n", "np.save(OUT_DIR / f\"moments_gaussian_cross_{PTSRC}mJy.npy\", gauss_cross)\n", "\n", "# Reload (uncomment to skip recomputation)\n", "# agora_cross = np.load(OUT_DIR / f\"moments_train_cross_{PTSRC}mJy.npy\")\n", "# ddpm_cross = np.load(OUT_DIR / f\"moments_samples_cross_{PTSRC}mJy.npy\")\n", "# gauss_cross = np.load(OUT_DIR / f\"moments_gaussian_cross_{PTSRC}mJy.npy\")\n", "# cross_labels = ['S2aa', 'S2bb', 'S2ab',\n", "# 'S3aaa', 'S3bbb', 'S3aab', 'S3abb',\n", "# 'S4aaaa', 'S4bbbb', 'S4aaab', 'S4aabb', 'S4abbb']" ] }, { "cell_type": "markdown", "id": "bccdb547", "metadata": {}, "source": [ "## 8 Plot summed-channel moments" ] }, { "cell_type": "code", "execution_count": 18, "id": "b750c754", "metadata": {}, "outputs": [ { "data": { "image/png": "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qVOnjjnpXqBAATZt2sSgQYMICwtj9OjRAMybN493332Xbt26MWrUKGJiYjh9+jSHDh3i9ddfB+Dtt99m9erVjBw5kvLly/PgwQP27t3LhQsXqFatmjmu8uXLY2dnx759+8w39oUQQqgnrefXVatWsX//fi5cuGBOxKbG7du3CQgIsDgnJErNebFZs2YMHz6ciRMn0rlzZ6pVq0ZgYCDvvPMOLVq0MJeIMRgMtG/fnm3bttGrVy9GjRpFeHg4fn5+nD17lhIlSgCmp7QXLVrEgAEDePfdd7l+/TrTp0/nxIkT7Nu3D2tra+7evUurVq0oUKAAH330ES4uLvj7+5sT3AB+fn707t2b5s2b8/333wOmDmv79u1j1KhRqf58DAYDAwcOZMWKFaxdu5Z27dqlet2nDR8+nAIFCjB+/HgiIyNp06YN//33H3/88Qc//fSTOQ9QoEABAAYPHszixYvp1q0bY8eO5dChQ0ycOJELFy6wdu1agFR9DsmR7wZCNYoQQjz277//KjqdTtHpdErdunWVDz74QNmyZYsSFxf33PViY2OV8uXLK8WKFVPi4+MzKVohhBDi1aX13BcYGKgA5qlw4cLKihUrXrifK1euKIAybdo0i/knTpxQAGXVqlXPXR9QRowYoSiKoowdO1bRarXKokWLzMvDw8MVFxcXZciQIRbrBQUFKc7OzhbzK1SooPTo0cP8vlq1akr37t0VQLlw4YKiKIry559/KoBy6tQpixj0er1y5coV87xTp04lOa5BgwYpBQsWVO7fv28RS69evRRnZ2clKipKURRF6dSpk1KhQoXnHrezs7P5uF+kdOnSSps2bVLVVgghRMZKy/k1KipKKVKkiDJu3DhFURRlx44dqTo3KoqibN26VQGUv//+22J+Ws6LkZGRSsmSJZUKFSooMTExSrt27RQnJyflxo0b5jYLFixQAGXKlClJYjAajYqiKMqePXsUQPn9998tlm/evNli/tq1axVAOXLkSIrHNWrUKMXJyUlJSEh44WfwtOvXryuAMmnSJCU+Pl7p2bOnYmdnp2zZssWiHaB8/vnnSdYvWrSo0q9fP/P7hQsXKoDSoEGDJLFMmjRJAZTr169bzD958qQCKIMHD7aY/9577ymAsn37dkVRUvc5JBerfDcQapFyLkIIs5YtW3LgwAE6duzIqVOn+OGHH/D19cXT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P/4477333hWdKz8/n+HDh3PXXXfx9ddfk5uby8aNG+31jx07ltatW/P+++9jMpmIiorCYrFcsq709HSGDBnCiy++iLOzM59//jnXXHMN+/btIzw83F7ujTfeYOrUqfznP/9h/vz53HvvvfTs2ZNGjRoV5zKJiIhIFVbsJPr06dO56667uO222wCYNWsWixcv5pNPPuHJJ5+8qPxbb73FoEGDeOyxxwCYOnUqS5cu5d1332XWrFn2cs7OzgQHB5e0HSIiUoW4WEy0re1L29q+3NWjLjabjRNnstgafYatx2qz8XhTDqXuxuByDKPrMUwuMaTnpfB77BoOHWlEr1o+tAn3oYbnSZbH/EBkQCSRAZHU9qytudWrgcS0HFYfSAIKk+giIhVdx686XnZf95rdea/f+QR0r3m9yMrPumTZdkHt+HTQ+YFJg74dxJmcMxeV2zF+R7HiO3jwIDab7aKksr+/P9nZ2QBMmDCBV155hYceesi+PyIighdeeIF77rnnipPoqamppKSkMGzYMOrVqwdAkyZN7Pujo6N57LHHaNy4MQANGjS4bF2RkZFERkban0+dOpUFCxbw/fffM3HiRPv2IUOGcN999wHwxBNP8Oabb7JixQol0ctLaiwYTODqDWYNphMRkYqpWEn03NxctmzZwuTJk+3bjEYj/fr1Y/369Zc8Zv369UyaNKnItoEDB7Jw4cIi21auXElgYCA+Pj706dOHF154AT8/v+KEJyIiVZTBYCDM140wXzeua1UTaE5m7iC2H09ha/QZNh9LZNvJXWQYDnEgLZD9hw8D4OS3EufAJUVGq7cObEmrwFZEBkTSMqAlrmbNnVrV/LA9lgKrjcgwb+oG1HB0OCIiVdbGjRuxWq2MHTuWnJwcAH777TemTZvG3r17SU1NJT8/n+zsbDIzM69o4VFfX19uvfVWBg4cSP/+/enXrx833XQTISEhAEyaNIk777yT//3vf/Tr148bb7zRnmz/q/T0dJ577jkWL17MyZMnyc/PJysri+jo6CLlWrZsaf/aYDAQHBxMQkJCSS+LFNeCf8OR1YVfm10Lk+ku3n/51+sS2/7yr0Wv6UREpOwUK4melJREQUEBQUFBRbYHBQWxd+/eSx4TFxd3yfJxcXH254MGDeL666+nTp06HDp0iP/85z8MHjyY9evXYzKZLqozJyfH/iINCkcr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tVpZtmwZnTt3vuQxnTt3LlIeYOnSpZct7+zsjKenZ5GHiIhIaTIYDPaH0WDEaDBiMprsjwvvMjIajA55712i6VxERERERERExPEmTZrE+PHjadeuHR06dGDGjBlkZGRw2223ATBu3Dhq1qzJtGnTAHjwwQfp2bMnb7zxBkOHDmXOnDls3ryZDz/80JHNEBERqdCURBcRERERESknVWA2zWqtIn7/Ro0aRWJiIlOmTCEuLo5WrVqxZMkS++Kh0dHRGI3nR/B16dKFr776iqeffpr//Oc/NGjQgIULF9K8eXNHNUFERKTCUxJdRERERESkjFkshQsNZmZm4urq6uBopKQyMzOB89/PimLixIlMnDjxkvtWrlx50bYbb7yRG2+8sYyjEhERqTqURBcRERERESljJpMJb29vEhISAHBzc9NaGpWIzWYjMzOThIQEvL29MZlMjg5JREREypGS6CIiIiIiIuUgODgYwJ5Il8rH29vb/n0UERGR6kNJdBERERERkXJgMBgICQkhMDCQvLw8R4cjxWSxWDQCXUREpJpSEl1ERERERKQcmUwmJWNFREREKhHjPxcREREREREREREREamelEQXEREREREREREREbkMJdFFRERERERERERERC6jSsyJbrPZAEhNTXVwJCIiIlfvXH92rn+rqtR/i4hIVaL+W0REpPK50v67SiTR09LSAAgLC3NwJCIiIqUnLS0NLy8vR4dRZtR/i4hIVaT+W0REpPL5p/7bYKsCH5NbrVZiY2Px8PDAYDA4OpxiSU1NJSwsjOPHj+Pp6enocCoVXbuS07UrOV27ktO1u3I2m420tDRCQ0MxGqvuzGvqv6snXbuS07UrOV27ktO1u3Lqvys+/TyXnK5dyenalZyuXcnp2l25K+2/q8RIdKPRSK1atRwdxlXx9PTUD3UJ6dqVnK5dyenalZyu3ZWpyiPYzlH/Xb3p2pWcrl3J6dqVnK7dlVH/XTno57nkdO1KTteu5HTtSk7X7spcSf9ddT8eFxERERERERERERG5Skqii4iIiIiIiIiIiIhchpLoDubs7Myzzz6Ls7Ozo0OpdHTtSk7XruR07UpO106qEv08l5yuXcnp2pWcrl3J6dpJVaKf55LTtSs5XbuS07UrOV270lclFhYVERERERERERERESkLGokuIiIiIiIiIiIiInIZSqKLiIiI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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "MOMENT_LABELS = ['S2', 'S3 (skewness)', 'S4 (excess kurtosis)']\n", "fig, axes = plt.subplots(1, 3, figsize=(15, 4))\n", "for ax, col, label in zip(axes, range(3), MOMENT_LABELS):\n", " ax.plot(bandpass_centers, agora_moments[:, :, col].mean(axis=0), label=\"Agora\", color=\"C0\")\n", " ax.plot(bandpass_centers, ddpm_moments[:, :, col].mean(axis=0), label=\"DDPM\", color=\"C1\")\n", " ax.plot(bandpass_centers, gauss_moments[:, :, col].mean(axis=0), label=\"Gaussian\", color=\"C2\", ls=\"--\")\n", " ax.set_xlabel(r\"$\\ell$ (band centre)\"); ax.set_title(label); ax.legend()\n", "plt.tight_layout(); plt.show()\n" ] }, { "cell_type": "markdown", "id": "890e3583", "metadata": {}, "source": [ "## Cross-channel bi- and trispectrum (all CIB × tSZ combinations)\n", "\n", "The 9 higher-order cross-moments between the CIB channel (a) and tSZ channel (b),\n", "plotted per ℓ-band. Bispectra (S3, top two rows) and trispectra (S4, bottom row).\n", "Gaussian baseline is dashed — any deviation indicates non-Gaussianity." ] }, { "cell_type": "code", "execution_count": null, "id": "229e43b1", "metadata": {}, "outputs": [], "source": [ "# Indices 3-11 in the cross-moments array are the higher-order terms\n", "# (indices 0-2 are S2aa, S2bb, S2ab — second-order, plotted separately if needed)\n", "HIGHER_ORDER_IDX = list(range(3, 12))\n", "LATEX_LABELS = [\n", " r'$S_3^{aaa}$', r'$S_3^{bbb}$', r'$S_3^{aab}$', r'$S_3^{abb}$',\n", " r'$S_4^{aaaa}$', r'$S_4^{bbbb}$', r'$S_4^{aaab}$', r'$S_4^{aabb}$', r'$S_4^{abbb}$',\n", "]\n", "\n", "sources = [\n", " ('Agora', agora_cross, 'C0', '-'),\n", " ('DDPM', ddpm_cross, 'C1', '-'),\n", " ('Gaussian', gauss_cross, 'C2', '--'),\n", "]\n", "\n", "fig, axes = plt.subplots(3, 3, figsize=(15, 11), sharex=True)\n", "axes = axes.flatten()\n", "\n", "for ax, idx, latex in zip(axes, HIGHER_ORDER_IDX, LATEX_LABELS):\n", " for label, data, color, ls in sources:\n", " vals = data[:, :, idx] # (N, n_bands)\n", " mean = vals.mean(axis=0)\n", " std = vals.std(axis=0) / np.sqrt(len(vals))\n", " ax.plot(bandpass_centers, mean, color=color, ls=ls, lw=1.5, label=label)\n", " ax.fill_between(bandpass_centers, mean - std, mean + std, alpha=0.2, color=color)\n", " ax.axhline(0, color='k', lw=0.6, ls=':')\n", " ax.set_title(latex, fontsize=13)\n", " ax.grid(True, ls=':', lw=0.4, alpha=0.5)\n", "\n", "for ax in axes[6:]:\n", " ax.set_xlabel(r'$\\ell_c$ (band centre)', fontsize=11)\n", "for ax in axes[::3]:\n", " ax.set_ylabel('Moment value', fontsize=11)\n", "\n", "handles, lbls = axes[0].get_legend_handles_labels()\n", "fig.legend(handles, lbls, loc='lower center', ncol=3, fontsize=12,\n", " bbox_to_anchor=(0.5, -0.02), frameon=False)\n", "\n", "# Label the channels\n", "fig.text(0.01, 0.97, r'$a$ = CIB, $b$ = tSZ', fontsize=11, va='top')\n", "\n", "plt.suptitle('Higher-order cross-moments: bispectrum (S3) and trispectrum (S4)', fontsize=14)\n", "plt.tight_layout(rect=[0, 0.04, 1, 0.97])\n", "Path('plots').mkdir(exist_ok=True)\n", "plt.savefig('plots/cross_moments_bispec_trispec.pdf', dpi=200, bbox_inches='tight')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "8b8b52d9-e0c8-43f3-81cf-dd45271d71b1", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.13" } }, "nbformat": 4, "nbformat_minor": 5 }