Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions doc/changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,14 @@ desispec Change Log
- Cache camera overlap calculation for faster coaddition.
- Use ``ls-dr11`` sky cutout (ls-dr11-early-v2 no longer works).
- Fix timing log messages MPI barrier logic.
* Add back ``MW_TRANSMISSION_{G,R,Z,W1,W2}`` columns to zcatalogs, computed
from ``EBV`` (PR `#2913`_).

.. _`#2901`: https://github.com/desihub/desispec/pull/2901
.. _`#2905`: https://github.com/desihub/desispec/pull/2905
.. _`#2907`: https://github.com/desihub/desispec/pull/2907
.. _`#2911`: https://github.com/desihub/desispec/pull/2911
.. _`#2913`: https://github.com/desihub/desispec/pull/2913

0.73.3 (2026-10-14)
-------------------
Expand Down
13 changes: 12 additions & 1 deletion py/desispec/scripts/zcatalog.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

from desiutil.log import get_logger, DEBUG
from desiutil.annotate import load_csv_units
from desiutil.dust import mwdust_transmission
from desiutil.names import radec_to_desiname
import desiutil.depend
import desiutil.healpix
Expand Down Expand Up @@ -818,9 +819,19 @@ def main(args=None):
columns_basic = ['TARGETID', 'TILEID', 'HEALPIX', 'LASTNIGHT', 'Z_BEST', 'Z_CONF', 'ZERR_BEST', 'ZWARN_BEST', 'SPECTYPE_BEST', 'SUBTYPE_BEST', 'CHI2_BEST', 'DELTACHI2_BEST', 'PETAL_LOC', 'FIBER', 'COADD_FIBERSTATUS', 'TARGET_RA', 'TARGET_DEC', 'DESINAME', 'OBJTYPE', 'FIBERASSIGN_X', 'FIBERASSIGN_Y', 'PRIORITY', 'DESI_TARGET', 'BGS_TARGET', 'MWS_TARGET', 'SCND_TARGET', 'CMX_TARGET', 'SV1_DESI_TARGET', 'SV1_BGS_TARGET', 'SV1_MWS_TARGET', 'SV1_SCND_TARGET', 'SV2_DESI_TARGET', 'SV2_BGS_TARGET', 'SV2_MWS_TARGET', 'SV2_SCND_TARGET', 'SV3_DESI_TARGET', 'SV3_BGS_TARGET', 'SV3_MWS_TARGET', 'SV3_SCND_TARGET', 'COADD_NUMEXP', 'COADD_EXPTIME', 'COADD_NUMNIGHT', 'COADD_NUMTILE', 'MIN_MJD', 'MAX_MJD', 'MEAN_MJD', 'GOOD_SPEC', 'EFFTIME_SPEC', 'ZCAT_NSPEC', 'ZCAT_PRIMARY']
if args.group == 'uniqpix':
columns_basic = ['UNIQPIX' if col == 'HEALPIX' else col for col in columns_basic]
columns_imaging = ['PMRA', 'PMDEC', 'REF_EPOCH', 'RELEASE', 'BRICKNAME', 'BRICKID', 'BRICK_OBJID', 'MORPHTYPE', 'EBV', 'FLUX_G', 'FLUX_R', 'FLUX_Z', 'FLUX_W1', 'FLUX_W2', 'FLUX_IVAR_G', 'FLUX_IVAR_R', 'FLUX_IVAR_Z', 'FLUX_IVAR_W1', 'FLUX_IVAR_W2', 'FIBERFLUX_G', 'FIBERFLUX_R', 'FIBERFLUX_Z', 'FIBERTOTFLUX_G', 'FIBERTOTFLUX_R', 'FIBERTOTFLUX_Z', 'MASKBITS', 'SERSIC', 'SHAPE_R', 'SHAPE_E1', 'SHAPE_E2', 'REF_ID', 'REF_CAT', 'GAIA_PHOT_G_MEAN_MAG', 'GAIA_PHOT_BP_MEAN_MAG', 'GAIA_PHOT_RP_MEAN_MAG', 'PARALLAX', 'PHOTSYS']
columns_imaging = ['PMRA', 'PMDEC', 'REF_EPOCH', 'RELEASE', 'BRICKNAME', 'BRICKID', 'BRICK_OBJID', 'MORPHTYPE', 'EBV', 'FLUX_G', 'FLUX_R', 'FLUX_Z', 'FLUX_W1', 'FLUX_W2', 'FLUX_IVAR_G', 'FLUX_IVAR_R', 'FLUX_IVAR_Z', 'FLUX_IVAR_W1', 'FLUX_IVAR_W2', 'MW_TRANSMISSION_G', 'MW_TRANSMISSION_R', 'MW_TRANSMISSION_Z', 'MW_TRANSMISSION_W1', 'MW_TRANSMISSION_W2', 'FIBERFLUX_G', 'FIBERFLUX_R', 'FIBERFLUX_Z', 'FIBERTOTFLUX_G', 'FIBERTOTFLUX_R', 'FIBERTOTFLUX_Z', 'MASKBITS', 'SERSIC', 'SHAPE_R', 'SHAPE_E1', 'SHAPE_E2', 'REF_ID', 'REF_CAT', 'GAIA_PHOT_G_MEAN_MAG', 'GAIA_PHOT_BP_MEAN_MAG', 'GAIA_PHOT_RP_MEAN_MAG', 'PARALLAX', 'PHOTSYS']
assert len(np.intersect1d(columns_basic, columns_imaging))==0

# Add back the MW_TRANSMISSION columns
# With match_legacy_surveys=True, the extinction coefficients are the ones used for MW_TRANSMISSION_*
# in Legacy Surveys DR9, which are the same for photsys N and S
# Some entries have invalid (zero-filled) EBV values and zero-filled fluxes; zero fill their MW_TRANSMISSION_* values
invalid_ebv = (zcat['EBV']==0) & (zcat['FLUX_G']==0) & (zcat['FLUX_R']==0) & (zcat['FLUX_Z']==0)
for band in ['G', 'R', 'Z', 'W1', 'W2']:
zcat['MW_TRANSMISSION_'+band] = np.zeros(len(zcat), dtype=np.float32)
zcat['MW_TRANSMISSION_'+band][~invalid_ebv] = mwdust_transmission(
zcat['EBV'][~invalid_ebv], band, 'S', match_legacy_surveys=True).astype(np.float32)

# Remove main-survey target bits for CMX and SVn surveys (they are not the actual main-survey target bits)
if survey in ('cmx', 'sv1', 'sv2', 'sv3'):
for col in ['DESI_TARGET', 'BGS_TARGET', 'MWS_TARGET', 'SCND_TARGET']:
Expand Down
Loading