In [12]:
import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits
%matplotlib inline

In [1]:
# Galaxy and Star QA plots

In [2]:
tractorfile = '/global/homes/i/ioannis/tractor-sdss-spectro-specObj-dr13.fits'
sdssfile = '/global/homes/i/ioannis/specObj-dr13.fits'

In [3]:
print('Reading {}'.format(tractorfile))
trac = fits.getdata(tractorfile, 1)
print('Reading {}'.format(sdssfile))
sdss = fits.getdata(sdssfile, 1)


Reading /global/homes/i/ioannis/tractor-sdss-spectro-specObj-dr13.fits
Reading /global/homes/i/ioannis/specObj-dr13.fits

In [4]:
print(trac.columns)
print(sdss.columns)


ColDefs(
    name = 'BRICKID'; format = 'J'
    name = 'BRICKNAME'; format = '8A'
    name = 'OBJID'; format = 'J'
    name = 'BRICK_PRIMARY'; format = 'L'
    name = 'BLOB'; format = 'J'
    name = 'NINBLOB'; format = 'I'
    name = 'TYCHO2INBLOB'; format = 'L'
    name = 'TYPE'; format = '4A'
    name = 'RA'; format = 'D'
    name = 'RA_IVAR'; format = 'E'
    name = 'DEC'; format = 'D'
    name = 'DEC_IVAR'; format = 'E'
    name = 'BX'; format = 'E'
    name = 'BY'; format = 'E'
    name = 'BX0'; format = 'E'
    name = 'BY0'; format = 'E'
    name = 'LEFT_BLOB'; format = 'L'
    name = 'OUT_OF_BOUNDS'; format = 'L'
    name = 'DCHISQ'; format = '5E'
    name = 'EBV'; format = 'E'
    name = 'CPU_SOURCE'; format = 'E'
    name = 'CPU_BLOB'; format = 'E'
    name = 'BLOB_WIDTH'; format = 'I'
    name = 'BLOB_HEIGHT'; format = 'I'
    name = 'BLOB_NPIX'; format = 'J'
    name = 'BLOB_NIMAGES'; format = 'I'
    name = 'BLOB_TOTALPIX'; format = 'J'
    name = 'DECAM_FLUX'; format = '6E'
    name = 'DECAM_FLUX_IVAR'; format = '6E'
    name = 'DECAM_APFLUX'; format = '48E'; dim = '(8,6)'
    name = 'DECAM_APFLUX_RESID'; format = '48E'; dim = '(8,6)'
    name = 'DECAM_APFLUX_IVAR'; format = '48E'; dim = '(8,6)'
    name = 'DECAM_MW_TRANSMISSION'; format = '6E'
    name = 'DECAM_NOBS'; format = '6B'
    name = 'DECAM_RCHI2'; format = '6E'
    name = 'DECAM_FRACFLUX'; format = '6E'
    name = 'DECAM_FRACMASKED'; format = '6E'
    name = 'DECAM_FRACIN'; format = '6E'
    name = 'DECAM_ANYMASK'; format = '6I'
    name = 'DECAM_ALLMASK'; format = '6I'
    name = 'DECAM_PSFSIZE'; format = '6E'
    name = 'WISE_FLUX'; format = '4E'
    name = 'WISE_FLUX_IVAR'; format = '4E'
    name = 'WISE_MW_TRANSMISSION'; format = '4E'
    name = 'WISE_NOBS'; format = '4I'
    name = 'WISE_FRACFLUX'; format = '4E'
    name = 'WISE_RCHI2'; format = '4E'
    name = 'WISE_LC_FLUX'; format = '10E'; dim = '(5,2)'
    name = 'WISE_LC_FLUX_IVAR'; format = '10E'; dim = '(5,2)'
    name = 'WISE_LC_NOBS'; format = '10I'; dim = '(5,2)'
    name = 'WISE_LC_FRACFLUX'; format = '10E'; dim = '(5,2)'
    name = 'WISE_LC_RCHI2'; format = '10E'; dim = '(5,2)'
    name = 'WISE_LC_MJD'; format = '10E'; dim = '(5,2)'
    name = 'FRACDEV'; format = 'E'
    name = 'FRACDEV_IVAR'; format = 'E'
    name = 'SHAPEEXP_R'; format = 'E'
    name = 'SHAPEEXP_R_IVAR'; format = 'E'
    name = 'SHAPEEXP_E1'; format = 'E'
    name = 'SHAPEEXP_E1_IVAR'; format = 'E'
    name = 'SHAPEEXP_E2'; format = 'E'
    name = 'SHAPEEXP_E2_IVAR'; format = 'E'
    name = 'SHAPEDEV_R'; format = 'E'
    name = 'SHAPEDEV_R_IVAR'; format = 'E'
    name = 'SHAPEDEV_E1'; format = 'E'
    name = 'SHAPEDEV_E1_IVAR'; format = 'E'
    name = 'SHAPEDEV_E2'; format = 'E'
    name = 'SHAPEDEV_E2_IVAR'; format = 'E'
    name = 'DECAM_DEPTH'; format = '6E'
    name = 'DECAM_GALDEPTH'; format = '6E'
)
ColDefs(
    name = 'SURVEY'; format = '6A'
    name = 'INSTRUMENT'; format = '4A'
    name = 'CHUNK'; format = '16A'
    name = 'PROGRAMNAME'; format = '27A'
    name = 'PLATERUN'; format = '16A'
    name = 'PLATEQUALITY'; format = '8A'
    name = 'PLATESN2'; format = 'E'
    name = 'DEREDSN2'; format = 'E'
    name = 'LAMBDA_EFF'; format = 'E'
    name = 'BLUEFIBER'; format = 'J'
    name = 'ZOFFSET'; format = 'E'
    name = 'SNTURNOFF'; format = 'E'
    name = 'NTURNOFF'; format = 'J'
    name = 'SPECPRIMARY'; format = 'B'
    name = 'SPECSDSS'; format = 'B'
    name = 'SPECLEGACY'; format = 'B'
    name = 'SPECSEGUE'; format = 'B'
    name = 'SPECSEGUE1'; format = 'B'
    name = 'SPECSEGUE2'; format = 'B'
    name = 'SPECBOSS'; format = 'B'
    name = 'BOSS_SPECOBJ_ID'; format = 'J'
    name = 'SPECOBJID'; format = '22A'
    name = 'FLUXOBJID'; format = '19A'
    name = 'BESTOBJID'; format = '19A'
    name = 'TARGETOBJID'; format = '22A'
    name = 'PLATEID'; format = '19A'
    name = 'NSPECOBS'; format = 'I'
    name = 'FIRSTRELEASE'; format = '4A'
    name = 'RUN2D'; format = '6A'
    name = 'RUN1D'; format = '6A'
    name = 'DESIGNID'; format = 'J'
    name = 'CX'; format = 'D'
    name = 'CY'; format = 'D'
    name = 'CZ'; format = 'D'
    name = 'XFOCAL'; format = 'E'
    name = 'YFOCAL'; format = 'E'
    name = 'SOURCETYPE'; format = '21A'
    name = 'TARGETTYPE'; format = '8A'
    name = 'PRIMTARGET'; format = 'J'
    name = 'SECTARGET'; format = 'J'
    name = 'LEGACY_TARGET1'; format = 'J'
    name = 'LEGACY_TARGET2'; format = 'J'
    name = 'SPECIAL_TARGET1'; format = 'K'
    name = 'SPECIAL_TARGET2'; format = 'K'
    name = 'SEGUE1_TARGET1'; format = 'J'
    name = 'SEGUE1_TARGET2'; format = 'J'
    name = 'SEGUE2_TARGET1'; format = 'J'
    name = 'SEGUE2_TARGET2'; format = 'J'
    name = 'MARVELS_TARGET1'; format = 'J'
    name = 'MARVELS_TARGET2'; format = 'J'
    name = 'BOSS_TARGET1'; format = 'K'
    name = 'BOSS_TARGET2'; format = 'K'
    name = 'EBOSS_TARGET0'; format = 'K'
    name = 'ANCILLARY_TARGET1'; format = 'K'
    name = 'ANCILLARY_TARGET2'; format = 'K'
    name = 'SPECTROGRAPHID'; format = 'I'
    name = 'PLATE'; format = 'J'
    name = 'TILE'; format = 'J'
    name = 'MJD'; format = 'J'
    name = 'FIBERID'; format = 'J'
    name = 'OBJID'; format = '5J'
    name = 'PLUG_RA'; format = 'D'
    name = 'PLUG_DEC'; format = 'D'
    name = 'CLASS'; format = '6A'
    name = 'SUBCLASS'; format = '21A'
    name = 'Z'; format = 'E'
    name = 'Z_ERR'; format = 'E'
    name = 'RCHI2'; format = 'E'
    name = 'DOF'; format = 'J'
    name = 'RCHI2DIFF'; format = 'E'
    name = 'TFILE'; format = '24A'
    name = 'TCOLUMN'; format = '10J'
    name = 'NPOLY'; format = 'J'
    name = 'THETA'; format = '10E'
    name = 'VDISP'; format = 'E'
    name = 'VDISP_ERR'; format = 'E'
    name = 'VDISPZ'; format = 'E'
    name = 'VDISPZ_ERR'; format = 'E'
    name = 'VDISPCHI2'; format = 'E'
    name = 'VDISPNPIX'; format = 'E'
    name = 'VDISPDOF'; format = 'J'
    name = 'WAVEMIN'; format = 'E'
    name = 'WAVEMAX'; format = 'E'
    name = 'WCOVERAGE'; format = 'E'
    name = 'ZWARNING'; format = 'J'
    name = 'SN_MEDIAN_ALL'; format = 'E'
    name = 'SN_MEDIAN'; format = '5E'
    name = 'CHI68P'; format = 'E'
    name = 'FRACNSIGMA'; format = '10E'
    name = 'FRACNSIGHI'; format = '10E'
    name = 'FRACNSIGLO'; format = '10E'
    name = 'SPECTROFLUX'; format = '5E'
    name = 'SPECTROFLUX_IVAR'; format = '5E'
    name = 'SPECTROSYNFLUX'; format = '5E'
    name = 'SPECTROSYNFLUX_IVAR'; format = '5E'
    name = 'SPECTROSKYFLUX'; format = '5E'
    name = 'ANYANDMASK'; format = 'J'
    name = 'ANYORMASK'; format = 'J'
    name = 'SPEC1_G'; format = 'E'
    name = 'SPEC1_R'; format = 'E'
    name = 'SPEC1_I'; format = 'E'
    name = 'SPEC2_G'; format = 'E'
    name = 'SPEC2_R'; format = 'E'
    name = 'SPEC2_I'; format = 'E'
    name = 'ELODIE_FILENAME'; format = '25A'
    name = 'ELODIE_OBJECT'; format = '21A'
    name = 'ELODIE_SPTYPE'; format = '12A'
    name = 'ELODIE_BV'; format = 'E'
    name = 'ELODIE_TEFF'; format = 'E'
    name = 'ELODIE_LOGG'; format = 'E'
    name = 'ELODIE_FEH'; format = 'E'
    name = 'ELODIE_Z'; format = 'E'
    name = 'ELODIE_Z_ERR'; format = 'E'
    name = 'ELODIE_Z_MODELERR'; format = 'E'
    name = 'ELODIE_RCHI2'; format = 'E'
    name = 'ELODIE_DOF'; format = 'J'
    name = 'Z_NOQSO'; format = 'E'
    name = 'Z_ERR_NOQSO'; format = 'E'
    name = 'ZWARNING_NOQSO'; format = 'J'
    name = 'CLASS_NOQSO'; format = '6A'
    name = 'SUBCLASS_NOQSO'; format = '21A'
    name = 'RCHI2DIFF_NOQSO'; format = 'E'
    name = 'Z_PERSON'; format = 'E'
    name = 'CLASS_PERSON'; format = 'J'
    name = 'Z_CONF_PERSON'; format = 'J'
    name = 'COMMENTS_PERSON'; format = 'A'
    name = 'CALIBFLUX'; format = '5E'
    name = 'CALIBFLUX_IVAR'; format = '5E'
)

In [5]:
match = np.where(trac['RA_IVAR'] > 0)[0]
print('Number of matching sources = {} / {}'.format(len(match), len(trac)))


Number of matching sources = 2094096 / 4411200

In [6]:
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 3))
_, _, _ = ax1.hist((trac['ra'][match] - sdss['plug_ra'][match])*3600, bins=50, normed=True)
ax1.set_xlabel(r'$\Delta$RA (arcsec)')
ax1.set_xlim(-1.5, 1.5)

_, _, _ = ax2.hist((trac['dec'][match] - sdss['plug_dec'][match])*3600, bins=50, normed=True)
ax2.set_xlabel(r'$\Delta$Dec (arcsec)')
ax2.set_xlim(-1.5, 1.5)


Out[6]:
(-1.5, 1.5)

In [7]:
fig, ax = plt.subplots(1, 3, figsize=(12, 3))
for ii, (col, clss) in enumerate(zip(['red', 'orange', 'blue'], ['GALAXY', 'QSO', 'STAR'])):
    these = np.where(sdss['CLASS'][match] == clss)[0]
    ax[ii].hist(sdss['Z'][match][these], color=col, bins=80)
    ax[ii].set_xlabel('Redshift')



In [8]:
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
im1 = ax1.hexbin(sdss['plug_ra'], sdss['plug_dec'], bins='log', cmap=plt.cm.Blues_r,
               mincnt=1, extent=(0, 360, -90, 90))
ax1.set_ylabel('Dec (degrees)')
ax1.set_xlabel('RA (degrees)')

im2 = ax2.hexbin(trac['ra'][match], trac['dec'][match], bins='log', cmap=plt.cm.Oranges_r,
               mincnt=1, extent=(0, 360, -90, 90))
ax2.set_ylabel('Dec (degrees)')
ax2.set_xlabel('RA (degrees)')


Out[8]:
<matplotlib.text.Text at 0x7f2a5e59c510>

In [ ]:
# QSO QAplots