Source code for desisim.spec_qa.utils

"""
desisim.spec_qa.redshifts
=========================

Module to run high_level QA on a given DESI run

Written by JXP on 3 Sep 2015
"""
from __future__ import print_function, absolute_import, division

import numpy as np
import sys, os, pdb, glob

from astropy.io import fits
from astropy.table import Table, vstack, hstack, MaskedColumn, join

from desiutil.log import get_logger, DEBUG
from desitarget.targetmask import desi_mask


[docs]def elg_flux_lim(z, oii_flux): '''Assess which objects pass the ELG flux limit Uses DESI document 318 from August 2014 Parameters ---------- z : ndarray ELG redshifts oii_flux : ndarray [OII] fluxes ''' # Init mask mask = np.array([False]*len(z)) # # Flux limits from document OII_lim = np.array([10., 9., 9., 9., 9])*1e-17 # Get bin #zbin = (z-0.6)/zstep zbins = [0.6, 0.8, 1., 1.2, 1.4, 5.6] z_i = np.digitize(z, zbins) - 1 gd_elg = (z_i >= 0) & (oii_flux>0.) #gd = np.where((zbin>0.) & (zbin<len(OII_lim)) & (oii_flux>0.))[0] # Fill gd OII_match = np.ones_like(gd_elg) * 9e99 for ss in range(len(zbins)-1): OII_match[z_i==ss] = OII_lim[ss] # Query really_gd = (oii_flux > OII_match) & gd_elg mask[really_gd] = True # Return return mask
[docs]def catastrophic_dv(objtype): '''Pass back catastrophic velocity limit for given objtype From DESI document 318 (August 2014) in docdb Parameters ---------- objtype : str Object type, e.g. 'ELG', 'LRG' ''' cat_dict = dict(ELG=1000., LRG=1000., QSO_L=1000., QSO_T=1000., STAR=1000., WD=1000.) # return cat_dict[objtype]
[docs]def get_sty_otype(): '''Styles for plots''' sty_otype = dict(ELG={'color':'green', 'pcolor':'Greens', 'lbl':'ELG'}, LRG={'color':'red', 'lbl':'LRG', 'pcolor':'Reds'}, BGS={'color':'orange', 'lbl':'BGS', 'pcolor':'Oranges'}, MWS={'color':'purple', 'lbl':'MWS', 'pcolor':'Purples'}, QSO={'color':'blue', 'lbl':'QSO', 'pcolor':'Blues'}, QSO_L={'color':'blue', 'lbl':'QSO z>2.1', 'pcolor':'Blues'}, QSO_T={'color':'cyan', 'lbl':'QSO z<2.1', 'pcolor':'GnBu'}) return sty_otype
[docs]def match_otype(tbl, objtype): """ Generate a mask for the input objtype :param tbl: :param objtype: str :return: targets: bool mask """ if objtype in ['BGS']: targets = (tbl['DESI_TARGET'] & desi_mask['BGS_ANY']) != 0 elif objtype in ['MWS']: targets = (tbl['DESI_TARGET'] & desi_mask['MWS_ANY']) != 0 elif objtype in ['QSO_L']: targets = match_otype(tbl, 'QSO') & (tbl['TRUEZ'] >= 2.1) elif objtype in ['QSO_T']: targets = match_otype(tbl, 'QSO') & (tbl['TRUEZ'] < 2.1) else: targets = (tbl['DESI_TARGET'] & desi_mask[objtype]) != 0 # Return return targets