Skip to content

Faraday RM-synthesis: Step 0 (rmsynth module + calibration) - #1

Open
christianhbye wants to merge 36 commits into
mainfrom
faraday-rmsynth
Open

Faraday RM-synthesis: Step 0 (rmsynth module + calibration)#1
christianhbye wants to merge 36 commits into
mainfrom
faraday-rmsynth

Conversation

@christianhbye

Copy link
Copy Markdown
Owner

Summary

First slice of the model-independent Faraday-detection pipeline (full spec: docs/superpowers/specs/2026-06-08-faraday-rmsynth-design.md).

  • src/lusee_faraday/rmsynth.py — RM synthesis on channelized Stokes Q/U: lambda2, faraday_resolution, max_scale, phi_grid (zero-centered), rmsf, faraday_spectrum. Pure NumPy, degenerate-input guards, 100% test coverage.
  • notebooks/rmsynth_calibration.py — Step-0 calibration: runs RM synthesis on the existing 10/30/50 MHz zoom spectra to size the eventual full-band grid.
  • Infra: pytest-cov added to the dev dependency-group so uv run pytest works; spec + step-0 plan under docs/superpowers/.

Key finding

The sparse 3-band comb (192 channels) produces catastrophic RMSF sidelobes — first sidelobe ~73% of peak, contamination across the whole ±100 rad/m² range. RM synthesis on the existing data alone cannot separate real RM from aliases, which quantitatively motivates continuous full-band λ² coverage in the next steps. RMSF resolution is ~0.004 rad/m² (huge λ² lever arm), so resolution is never the limit — SNR/sidelobes/beam-depolarization are.

Status

Step 0 of 5. Steps 1–4 (FrequencyPlan zoom/wide switch + noise + LST tagging; curated full-band sim; analysis with noise MC; repo attic + docs) will continue on this branch.

Test Plan

  • uv run pytest — 94 passed (18 new in tests/test_rmsynth.py)
  • uv run python notebooks/rmsynth_calibration.py runs headless and writes notebooks/results/rmsynth_calibration.png
  • Tests cover known-RM recovery (±sign), RMSF unity peak, weight handling, shape contracts, and degenerate-input guards

🤖 Generated with Claude Code

christianhbye and others added 30 commits June 8, 2026 18:20
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…pectrum channelization

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8 oversubscribed processes (each multi-threaded) on 4 physical cores
thrashed; single-threaded workers, one per physical core, run clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
christianhbye and others added 6 commits June 8, 2026 23:36
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… SNR

Peak-|F| SNR measures polarized-signal detection (huge); the Faraday
effect itself is the RM synthesis of the FR-noFR difference. Both are
noise-dominated-free at hours of integration -- the limit is the
intrinsic-sky degeneracy, not sensitivity.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@christianhbye
christianhbye requested a review from Copilot June 9, 2026 14:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants