feat: add DES Y band (u band deferred pending sourcing decision) - #137
Merged
Merged
Conversation
aboucaud
force-pushed
the
add-des-u-y-bands
branch
from
September 30, 2026 23:57
3e8df97 to
3641a55
Compare
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
force-pushed
the
add-des-u-y-bands
branch
from
October 1, 2026 00:08
3641a55 to
756864a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Yfilter tosurveycodex/data/DES.yaml, completing DES's grizY wide-survey filter set.ufilter — see "Why u was not added" below.Values added (Y band)
sky_brightnesspsf_fwhmfull_exposure_timezeropointdecam2014-Y), matchesscripts/check_zeropoints.pyexactlyeffective_wavelengthdecam2014-Y), matchesscripts/check_effective_wavelengths.pyexactlyThe
full_exposure_timereference 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:—) 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_fwhmrepresent 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 adduwith 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 passedpre-commit run --all-files— all hooks passpython -m surveycodex— DES now shows['g', 'r', 'i', 'z', 'Y'], Y filter prints correctlysurveycodex --refs— references table renders correctly, includes updated full_exposure_time commentpython 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