Skip to content

feat: add DES Y band (u band deferred pending sourcing decision) - #137

Merged
aboucaud merged 1 commit into
mainfrom
add-des-u-y-bands
Oct 1, 2026
Merged

aboucaud merged 1 commit into
mainfrom
add-des-u-y-bands

Conversation

@aboucaud

@aboucaud aboucaud commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Adds the Y filter to surveycodex/data/DES.yaml, completing DES's grizY wide-survey filter set.
  • Does not add a u filter — see "Why u was not added" below.

Values added (Y band)

Field Value Source
sky_brightness 17.96 mag/arcsec² arXiv:1801.03181 (DES DR1), Table 1
psf_fwhm 0.90 arcsec arXiv:1801.03181, Table 1
full_exposure_time 450 s (10 × 45 s) arXiv:1801.03181, Section 2.2 ("cumulative exposure time of ... 450 s in Y"), footnote 9
zeropoint 25.56 mag computed with speclite (decam2014-Y), matches scripts/check_zeropoints.py exactly
effective_wavelength 989.297 nm computed with speclite (decam2014-Y), matches scripts/check_effective_wavelengths.py exactly

The full_exposure_time reference comment was updated to clarify that the existing 900 s value (10x90s) is specific to g/r/i/z and does not apply to Y.

Key finding: Y's exposure time is NOT 900s like g/r/i/z

This is the crux of the task. The DES wide-field survey used 90 s single exposures for g/r/i/z but only 45 s for Y, giving cumulative coadd exposure times of 900 s (griz) vs. 450 s (Y) during Y1-Y3 (the data covered by arXiv:1801.03181). A footnote in that paper notes Y's single-exposure time was only raised to 90s starting in Y4, while keeping the same 450s cumulative depth target — so even DES's own later data keeps the same Y cumulative value, just reached with fewer, longer exposures. Copying 900s from g/r/i/z would have been wrong.

Why u was not added

I dug into whether DES has a u-band survey configuration comparable to g/r/i/z/Y and found it does not:

  • arXiv:1801.03181 (DES DR1) and arXiv:2101.05765 (DES DR2) — the papers describing the actual wide-field survey — have no u-band data at all. DES's wide survey is grizY only.
  • The only DES-associated u-band imaging is described in arXiv:2012.12824 (Hartley et al. 2022, "DES Y3: Deep Field Optical + Near-Infrared Images and Catalogue"). That u-band data:
    • comes from ~15 separate community-time programs (different PIs, different programs — Table 2), not a homogeneous DES-run survey;
    • is restricted to the 10 SN deep pencil-beam fields + COSMOS, ~30 sq deg total vs. ~5000 sq deg for the wide survey;
    • has wildly heterogeneous per-field cumulative exposure times (~3,300 s-45,380 s depending on field/program — Table A1);
    • has no standardized single-epoch cadence: Table A1's "SE_TRUTH" (single-epoch-equivalent) row is blank (—) for u in every single field, unlike g/r/i/z which all have SE_TRUTH entries.

In short, there's no legitimate single value that would represent "DES u" the way full_exposure_time/sky_brightness/psf_fwhm represent g/r/i/z/Y — any such value would be either cherry-picked from one arbitrary community program/field, or fabricated. Per this repo's own rule ("Values without a source are not accepted"), and per this task's explicit goal of not repeating an earlier unverified-assumption mistake (copying a sibling filter's exposure time across a genuinely different observing configuration), I'm flagging this rather than guessing. Happy to add u with speclite-only zeropoint/effective_wavelength plus a clearly-caveated field-specific choice if maintainers want that tradeoff — I've left it out of this PR pending that decision.

Test plan

  • pytest --cov — 36 passed
  • pre-commit run --all-files — all hooks pass
  • python -m surveycodex — DES now shows ['g', 'r', 'i', 'z', 'Y'], Y filter prints correctly
  • surveycodex --refs — references table renders correctly, includes updated full_exposure_time comment
  • python scripts/check_zeropoints.py — DES section shows 5 filters (g/r/i/z/Y), all matching speclite exactly (Y: 25.56 mag vs 25.56 mag)
  • python scripts/check_effective_wavelengths.py — DES section shows 5 filters, all matching speclite exactly (Y: 989.30 nm vs 989.30 nm)

🤖 Generated with Claude Code

Add the Y filter to DES.yaml, sourced from arXiv:1801.03181 (same paper
as the existing g/r/i/z): sky_brightness=17.96 and psf_fwhm=0.90 from
Table 1, full_exposure_time=450s (10 x 45s single-epoch exposures,
Section 2.2) -- note this is *not* 900s like g/r/i/z: the paper's
footnote 9 states Y exposure time was only raised to 90s (keeping the
same 450s cumulative target) starting in Y4, after the Y1-Y3 data this
DR1 paper describes. zeropoint (25.56) and effective_wavelength
(989.297) are computed with speclite (decam2014-Y), reproduced exactly
via scripts/check_zeropoints.py / check_effective_wavelengths.py.

u band was intentionally NOT added. Research into arXiv:1801.03181 and
arXiv:2012.12824 (Hartley et al. 2022, DES Y3 Deep Fields) shows DES's
u-band imaging is not part of the homogeneous wide-field survey that
the other filters in this file represent: it comes from ~15 separate
community-time programs restricted to the 10 SN deep pencil-beam
fields + COSMOS (~30 sq deg total, vs. ~5000 sq deg for the wide
survey), with heterogeneous per-field cumulative exposure times
(~3,300s-45,380s) and no standardized single-epoch cadence (Table A1's
"SE_TRUTH" row is blank for u in every field). There is no single
value that would legitimately represent "DES u" the way full_exposure_time/
sky_brightness/psf_fwhm represent g/r/i/z/Y, so fabricating one would
repeat the kind of unverified-assumption mistake this task was meant
to avoid. Flagging for a follow-up decision rather than guessing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@aboucaud
aboucaud merged commit 161e94d into main Oct 1, 2026
7 checks passed
@aboucaud
aboucaud deleted the add-des-u-y-bands branch October 1, 2026 00:14
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.

1 participant