Repository navigation
Fix modeling separability of pseudocylindrical, Bonne and HEALPix projections - #20590
Thanatos9404 wants to merge 1 commit into
Conversation
These projections set ``_separable = True``, so ``separability_matrix`` reported their two outputs as independent although the first output depends on latitude. SFL, PAR, MOL and HPX now report a triangular matrix (the second output depends only on the second input), while AIT and BON report a full matrix.
|
Thank you for your contribution to Astropy! 🌌 This checklist is meant to remind the package maintainers who will review this pull request of some common things to look for.
|
|
Hi 👋 and thank you for your contribution! 🙏 This pull request is being closed automatically - but don't worry, this is not the end, and we may re-open it. For some background, we have recently started seeing a rapid increase in the number of pull requests opened. Some of these are from good-faith humans, but some of which are from autonomous LLM agents or humans using LLMs who do not have a genuine understanding of, or interest in, the project. We are therefore auto-closing pull requests from new contributors, but if you are a good-faith human, we want to make sure your pull request gets considered! So if you would like us to re-open your pull request so that it gets reviewed, you need to do two things:
The second step is important, as we may otherwise miss notifications about this pull request. To be clear, our AI policy does allow the use of LLMs as part of contributions, but we need to see authentic engagement and understanding from humans making the contribution. Notes for maintainersIf you know this is a genuine user and the PR is is compliance with the AI policy, you may re-open this straight away. After two successful merged pull requests, the user will be added to the allowlist and future PRs will no longer be closed automatically. This user has not made any pull requests to this repository prior to this one. In addition, here are some statistics on the user's activity on GitHub:
|
|
Hi maintainers, thanks for explaining the new-contributor process! I investigated #20578 as a correctness issue rather than because it was blocking one of my own projects. The existing separability matrices incorrectly treat certain sky projection outputs as independent, even when they mathematically depend on both inputs. For example, in the Sanson-Flamsteed projection, x = longitude × cos(latitude), so the first output depends on both longitude and latitude. However, the existing separability matrix does not reflect that dependency. This can also lead to incorrect axis-correlation information in downstream WCS workflows. My PR addresses this for the affected pseudocylindrical, Bonne, and HEALPix projections. I also added parameterized regression tests covering both transformation directions and different projection configurations. I've disclosed my use of Claude Code in the PR description, and I understand that I'm personally responsible for the implementation and any changes requested during review. I've also joined the Astropy Slack workspace and will introduce myself in #new-contributor-requests. I'd appreciate the opportunity to have the PR reviewed and am happy to discuss the technical details or make further improvements. Thanks for your time! |
Description
This pull request is to address
separability_matrixandis_separabletreating the pseudocylindrical (SFL, PAR, MOL, AIT), Bonne (BON) and HEALPix (HPX) projections as separable. These classes set_separable = True, but their first output depends on both inputs because the meridians are curved.SFL, PAR, MOL and HPX now return
[[True, True], [False, True]]from_calculate_separability_matrix, since their second output depends only on the second input (this also holds in the HPX polar facets for anyHandX). AIT and BON, whose second output also depends on the first input, now report a full matrix. For BON with the defaulttheta1=0, which wcslib evaluates as SFL, the full matrix is a conservative over-report.To check for other cases, I perturbed each input of every
Pix2Sky_*/Sky2Pix_*class and compared which outputs change againstseparability_matrix; after this change none of them under-reports.Fixes #20578
AI Disclosure
I used Claude Opus 5.5 (Anthropic) through Claude Code to investigate the issue, draft the code change, tests and this description, and run the test suites. I reviewed all of it and can explain every change.
Merge method