DC2 Object Catalog Run2.2i GCR tutorial -- Part I: GCR access

Owners: Francois Lanusse @EiffL, Javier Sanchez @fjaviersanchez
Last Verifed to Run: 2020-07-02 (by @jrbogart)

This notebook will illustrate the basics of accessing the DPDD-like object catalog, which contains the detected objects at the coadd level, through the Generic Catalog Reader (GCR, https://github.com/yymao/generic-catalog-reader) as well as how to select useful samples of stars/galaxies from the DM outputs.

Learning objectives:

After going through this notebook, you should be able to:

  1. Load and efficiently access a DC2 object catalog with the GCR
  2. Understand and have references for the catalog schema
  3. Apply cuts to the catalog using GCR functionalities
  4. Have an example of quality cuts and simple star/galaxy separation cut
  5. Load the HSC Public Data Release catalog in the XMM field [Advanced]

Logistics: This notebook is intended to be run through the JupyterHub NERSC interface available here: https://jupyter-dev.nersc.gov. To setup your NERSC environment, please follow the instructions available here: https://confluence.slac.stanford.edu/display/LSSTDESC/Using+Jupyter-dev+at+NERSC

Other notes:

  • If you restart your kernel, or if it automatically restarts for some reason, all imports and variables will become undefined so, you probably will have to re-run everything.
In [1]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

Accessing the object catalog with the GCR

The GCRCatalogs package is a DESC project which aims at gathering in one convenient location various simulation/data catalogs made available to the collaboration.
In this section, we illustrate how to use this tool to access the object catalogs from DC2 Run2.2i.

In [2]:
import GCRCatalogs
# Load the object catalog
catalog = GCRCatalogs.load_catalog('dc2_object_run2.2i_dr3')

A significant numbers of catalogs besides the DC2 object catalogs are already available, use sorted(GCRCatalogs.get_available_catalogs(False)) to see a full list and visit the DC2 Data Product page to see all the DC2 related catalogs.

DC2 object catalog Schema

To see the quantities available in the catalog, you can use the following:

In [3]:
sorted(catalog.list_all_quantities())
Out[3]:
['I_flag',
 'I_flag_g',
 'I_flag_i',
 'I_flag_r',
 'I_flag_u',
 'I_flag_y',
 'I_flag_z',
 'Ixx',
 'IxxPSF',
 'IxxPSF_g',
 'IxxPSF_i',
 'IxxPSF_r',
 'IxxPSF_u',
 'IxxPSF_y',
 'IxxPSF_z',
 'Ixx_g',
 'Ixx_i',
 'Ixx_r',
 'Ixx_u',
 'Ixx_y',
 'Ixx_z',
 'Ixy',
 'IxyPSF',
 'IxyPSF_g',
 'IxyPSF_i',
 'IxyPSF_r',
 'IxyPSF_u',
 'IxyPSF_y',
 'IxyPSF_z',
 'Ixy_g',
 'Ixy_i',
 'Ixy_r',
 'Ixy_u',
 'Ixy_y',
 'Ixy_z',
 'Iyy',
 'IyyPSF',
 'IyyPSF_g',
 'IyyPSF_i',
 'IyyPSF_r',
 'IyyPSF_u',
 'IyyPSF_y',
 'IyyPSF_z',
 'Iyy_g',
 'Iyy_i',
 'Iyy_r',
 'Iyy_u',
 'Iyy_y',
 'Iyy_z',
 'blendedness',
 'cModelFluxErr_g',
 'cModelFluxErr_i',
 'cModelFluxErr_r',
 'cModelFluxErr_u',
 'cModelFluxErr_y',
 'cModelFluxErr_z',
 'cModelFlux_flag_g',
 'cModelFlux_flag_i',
 'cModelFlux_flag_r',
 'cModelFlux_flag_u',
 'cModelFlux_flag_y',
 'cModelFlux_flag_z',
 'cModelFlux_g',
 'cModelFlux_i',
 'cModelFlux_r',
 'cModelFlux_u',
 'cModelFlux_y',
 'cModelFlux_z',
 'clean',
 'dec',
 'extendedness',
 'good',
 'mag_g',
 'mag_g_cModel',
 'mag_i',
 'mag_i_cModel',
 'mag_r',
 'mag_r_cModel',
 'mag_u',
 'mag_u_cModel',
 'mag_y',
 'mag_y_cModel',
 'mag_z',
 'mag_z_cModel',
 'magerr_g',
 'magerr_g_cModel',
 'magerr_i',
 'magerr_i_cModel',
 'magerr_r',
 'magerr_r_cModel',
 'magerr_u',
 'magerr_u_cModel',
 'magerr_y',
 'magerr_y_cModel',
 'magerr_z',
 'magerr_z_cModel',
 'objectId',
 'parentObjectId',
 'psFluxErr_g',
 'psFluxErr_i',
 'psFluxErr_r',
 'psFluxErr_u',
 'psFluxErr_y',
 'psFluxErr_z',
 'psFlux_flag_g',
 'psFlux_flag_i',
 'psFlux_flag_r',
 'psFlux_flag_u',
 'psFlux_flag_y',
 'psFlux_flag_z',
 'psFlux_g',
 'psFlux_i',
 'psFlux_r',
 'psFlux_u',
 'psFlux_y',
 'psFlux_z',
 'psNdata',
 'psf_fwhm_g',
 'psf_fwhm_i',
 'psf_fwhm_r',
 'psf_fwhm_u',
 'psf_fwhm_y',
 'psf_fwhm_z',
 'ra',
 'snr_g_cModel',
 'snr_i_cModel',
 'snr_r_cModel',
 'snr_u_cModel',
 'snr_y_cModel',
 'snr_z_cModel',
 'x',
 'xErr',
 'xy_flag',
 'y',
 'yErr']

The meaning of these fields is documented in the SCHEMA.md file of the LSSTDESC/gcr-catalogs repository.
As explained in that link, the values exposed here are not the native quantities produced by the Data Management stack, but instead this schema strives to follow the standard nomenclature of the LSST Data Products Definition Document DPDD.

The DPDD is an effort made by the LSST project to standardize the format of the official Data Release Products (DRP). While the native outputs of the DM stack are succeptible to change, the DPDD will be more stable. An early adoption of these conventions by the DESC will save time and energy down the road.

This being said, not all use-cases and relevant quantities are covered by these conventions yet, so the GCR preserves access to the underlying native DM stack fieds, all 2046 of which can be listed using:

In [4]:
sorted(catalog.list_all_native_quantities())
Out[4]:
['base_Blendedness_abs',
 'base_Blendedness_abs_child_instFlux',
 'base_Blendedness_abs_child_xx',
 'base_Blendedness_abs_child_xy',
 'base_Blendedness_abs_child_yy',
 'base_Blendedness_abs_parent_instFlux',
 'base_Blendedness_abs_parent_xx',
 'base_Blendedness_abs_parent_xy',
 'base_Blendedness_abs_parent_yy',
 'base_Blendedness_flag',
 'base_Blendedness_flag_noCentroid',
 'base_Blendedness_flag_noShape',
 'base_Blendedness_old',
 'base_Blendedness_raw',
 'base_Blendedness_raw_child_instFlux',
 'base_Blendedness_raw_child_xx',
 'base_Blendedness_raw_child_xy',
 'base_Blendedness_raw_child_yy',
 'base_Blendedness_raw_parent_instFlux',
 'base_Blendedness_raw_parent_xx',
 'base_Blendedness_raw_parent_xy',
 'base_Blendedness_raw_parent_yy',
 'base_CircularApertureFlux_12_0_flag',
 'base_CircularApertureFlux_12_0_flag_apertureTruncated',
 'base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated',
 'base_CircularApertureFlux_12_0_instFlux',
 'base_CircularApertureFlux_12_0_instFluxErr',
 'base_CircularApertureFlux_17_0_flag',
 'base_CircularApertureFlux_17_0_flag_apertureTruncated',
 'base_CircularApertureFlux_17_0_instFlux',
 'base_CircularApertureFlux_17_0_instFluxErr',
 'base_CircularApertureFlux_25_0_flag',
 'base_CircularApertureFlux_25_0_flag_apertureTruncated',
 'base_CircularApertureFlux_25_0_instFlux',
 'base_CircularApertureFlux_25_0_instFluxErr',
 'base_CircularApertureFlux_35_0_flag',
 'base_CircularApertureFlux_35_0_flag_apertureTruncated',
 'base_CircularApertureFlux_35_0_instFlux',
 'base_CircularApertureFlux_35_0_instFluxErr',
 'base_CircularApertureFlux_3_0_flag',
 'base_CircularApertureFlux_3_0_flag_apertureTruncated',
 'base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated',
 'base_CircularApertureFlux_3_0_instFlux',
 'base_CircularApertureFlux_3_0_instFluxErr',
 'base_CircularApertureFlux_4_5_flag',
 'base_CircularApertureFlux_4_5_flag_apertureTruncated',
 'base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated',
 'base_CircularApertureFlux_4_5_instFlux',
 'base_CircularApertureFlux_4_5_instFluxErr',
 'base_CircularApertureFlux_50_0_flag',
 'base_CircularApertureFlux_50_0_flag_apertureTruncated',
 'base_CircularApertureFlux_50_0_instFlux',
 'base_CircularApertureFlux_50_0_instFluxErr',
 'base_CircularApertureFlux_6_0_flag',
 'base_CircularApertureFlux_6_0_flag_apertureTruncated',
 'base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated',
 'base_CircularApertureFlux_6_0_instFlux',
 'base_CircularApertureFlux_6_0_instFluxErr',
 'base_CircularApertureFlux_70_0_flag',
 'base_CircularApertureFlux_70_0_flag_apertureTruncated',
 'base_CircularApertureFlux_70_0_instFlux',
 'base_CircularApertureFlux_70_0_instFluxErr',
 'base_CircularApertureFlux_9_0_flag',
 'base_CircularApertureFlux_9_0_flag_apertureTruncated',
 'base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated',
 'base_CircularApertureFlux_9_0_instFlux',
 'base_CircularApertureFlux_9_0_instFluxErr',
 'base_CircularApertureFlux_flag_badCentroid',
 'base_CircularApertureFlux_flag_badCentroid_almostNoSecondDerivative',
 'base_CircularApertureFlux_flag_badCentroid_badError',
 'base_CircularApertureFlux_flag_badCentroid_edge',
 'base_CircularApertureFlux_flag_badCentroid_noSecondDerivative',
 'base_CircularApertureFlux_flag_badCentroid_notAtMaximum',
 'base_CircularApertureFlux_flag_badCentroid_resetToPeak',
 'base_ClassificationExtendedness_flag',
 'base_ClassificationExtendedness_value',
 'base_FootprintArea_value',
 'base_GaussianFlux_apCorr',
 'base_GaussianFlux_apCorrErr',
 'base_GaussianFlux_flag',
 'base_GaussianFlux_flag_apCorr',
 'base_GaussianFlux_flag_badCentroid',
 'base_GaussianFlux_flag_badCentroid_almostNoSecondDerivative',
 'base_GaussianFlux_flag_badCentroid_badError',
 'base_GaussianFlux_flag_badCentroid_edge',
 'base_GaussianFlux_flag_badCentroid_noSecondDerivative',
 'base_GaussianFlux_flag_badCentroid_notAtMaximum',
 'base_GaussianFlux_flag_badCentroid_resetToPeak',
 'base_GaussianFlux_flag_badShape',
 'base_GaussianFlux_flag_badShape_no_pixels',
 'base_GaussianFlux_flag_badShape_not_contained',
 'base_GaussianFlux_flag_badShape_parent_source',
 'base_GaussianFlux_instFlux',
 'base_GaussianFlux_instFluxErr',
 'base_InputCount_flag',
 'base_InputCount_flag_badCentroid',
 'base_InputCount_flag_badCentroid_almostNoSecondDerivative',
 'base_InputCount_flag_badCentroid_badError',
 'base_InputCount_flag_badCentroid_edge',
 'base_InputCount_flag_badCentroid_noSecondDerivative',
 'base_InputCount_flag_badCentroid_notAtMaximum',
 'base_InputCount_flag_badCentroid_resetToPeak',
 'base_InputCount_flag_noInputs',
 'base_InputCount_value',
 'base_LocalBackground_flag',
 'base_LocalBackground_flag_badCentroid',
 'base_LocalBackground_flag_badCentroid_almostNoSecondDerivative',
 'base_LocalBackground_flag_badCentroid_badError',
 'base_LocalBackground_flag_badCentroid_edge',
 'base_LocalBackground_flag_badCentroid_noSecondDerivative',
 'base_LocalBackground_flag_badCentroid_notAtMaximum',
 'base_LocalBackground_flag_badCentroid_resetToPeak',
 'base_LocalBackground_flag_noGoodPixels',
 'base_LocalBackground_flag_noPsf',
 'base_LocalBackground_instFlux',
 'base_LocalBackground_instFluxErr',
 'base_NaiveCentroid_flag',
 'base_NaiveCentroid_flag_badInitialCentroid',
 'base_NaiveCentroid_flag_badInitialCentroid_almostNoSecondDerivative',
 'base_NaiveCentroid_flag_badInitialCentroid_badError',
 'base_NaiveCentroid_flag_badInitialCentroid_edge',
 'base_NaiveCentroid_flag_badInitialCentroid_noSecondDerivative',
 'base_NaiveCentroid_flag_badInitialCentroid_notAtMaximum',
 'base_NaiveCentroid_flag_badInitialCentroid_resetToPeak',
 'base_NaiveCentroid_flag_edge',
 'base_NaiveCentroid_flag_noCounts',
 'base_NaiveCentroid_flag_resetToPeak',
 'base_NaiveCentroid_x',
 'base_NaiveCentroid_y',
 'base_PixelFlags_flag',
 'base_PixelFlags_flag_bad',
 'base_PixelFlags_flag_bright_object',
 'base_PixelFlags_flag_bright_objectCenter',
 'base_PixelFlags_flag_clipped',
 'base_PixelFlags_flag_clippedCenter',
 'base_PixelFlags_flag_cr',
 'base_PixelFlags_flag_crCenter',
 'base_PixelFlags_flag_edge',
 'base_PixelFlags_flag_inexact_psf',
 'base_PixelFlags_flag_inexact_psfCenter',
 'base_PixelFlags_flag_interpolated',
 'base_PixelFlags_flag_interpolatedCenter',
 'base_PixelFlags_flag_offimage',
 'base_PixelFlags_flag_saturated',
 'base_PixelFlags_flag_saturatedCenter',
 'base_PixelFlags_flag_sensor_edge',
 'base_PixelFlags_flag_sensor_edgeCenter',
 'base_PixelFlags_flag_suspect',
 'base_PixelFlags_flag_suspectCenter',
 'base_PsfFlux_apCorr',
 'base_PsfFlux_apCorrErr',
 'base_PsfFlux_area',
 'base_PsfFlux_flag',
 'base_PsfFlux_flag_apCorr',
 'base_PsfFlux_flag_badCentroid',
 'base_PsfFlux_flag_badCentroid_almostNoSecondDerivative',
 'base_PsfFlux_flag_badCentroid_badError',
 'base_PsfFlux_flag_badCentroid_edge',
 'base_PsfFlux_flag_badCentroid_noSecondDerivative',
 'base_PsfFlux_flag_badCentroid_notAtMaximum',
 'base_PsfFlux_flag_badCentroid_resetToPeak',
 'base_PsfFlux_flag_edge',
 'base_PsfFlux_flag_noGoodPixels',
 'base_PsfFlux_instFlux',
 'base_PsfFlux_instFluxErr',
 'base_SdssCentroid_flag',
 'base_SdssCentroid_flag_almostNoSecondDerivative',
 'base_SdssCentroid_flag_badError',
 'base_SdssCentroid_flag_edge',
 'base_SdssCentroid_flag_noSecondDerivative',
 'base_SdssCentroid_flag_notAtMaximum',
 'base_SdssCentroid_flag_resetToPeak',
 'base_SdssCentroid_x',
 'base_SdssCentroid_xErr',
 'base_SdssCentroid_y',
 'base_SdssCentroid_yErr',
 'base_SdssShape_flag',
 'base_SdssShape_flag_badCentroid',
 'base_SdssShape_flag_badCentroid_almostNoSecondDerivative',
 'base_SdssShape_flag_badCentroid_badError',
 'base_SdssShape_flag_badCentroid_edge',
 'base_SdssShape_flag_badCentroid_noSecondDerivative',
 'base_SdssShape_flag_badCentroid_notAtMaximum',
 'base_SdssShape_flag_badCentroid_resetToPeak',
 'base_SdssShape_flag_maxIter',
 'base_SdssShape_flag_psf',
 'base_SdssShape_flag_shift',
 'base_SdssShape_flag_unweighted',
 'base_SdssShape_flag_unweightedBad',
 'base_SdssShape_instFlux',
 'base_SdssShape_instFluxErr',
 'base_SdssShape_instFlux_xx_Cov',
 'base_SdssShape_instFlux_xy_Cov',
 'base_SdssShape_instFlux_yy_Cov',
 'base_SdssShape_psf_xx',
 'base_SdssShape_psf_xy',
 'base_SdssShape_psf_yy',
 'base_SdssShape_x',
 'base_SdssShape_xx',
 'base_SdssShape_xxErr',
 'base_SdssShape_xy',
 'base_SdssShape_xyErr',
 'base_SdssShape_y',
 'base_SdssShape_yy',
 'base_SdssShape_yyErr',
 'base_Variance_flag',
 'base_Variance_flag_badCentroid',
 'base_Variance_flag_badCentroid_almostNoSecondDerivative',
 'base_Variance_flag_badCentroid_badError',
 'base_Variance_flag_badCentroid_edge',
 'base_Variance_flag_badCentroid_noSecondDerivative',
 'base_Variance_flag_badCentroid_notAtMaximum',
 'base_Variance_flag_badCentroid_resetToPeak',
 'base_Variance_flag_emptyFootprint',
 'base_Variance_value',
 'calib_astrometry_used',
 'calib_photometry_reserved',
 'calib_photometry_used',
 'calib_psf_candidate',
 'calib_psf_reserved',
 'calib_psf_used',
 'coord_dec',
 'coord_ra',
 'deblend_deblendedAsPsf',
 'deblend_hasStrayFlux',
 'deblend_masked',
 'deblend_nChild',
 'deblend_parentTooBig',
 'deblend_patchedTemplate',
 'deblend_psfCenter_x',
 'deblend_psfCenter_y',
 'deblend_psf_instFlux',
 'deblend_rampedTemplate',
 'deblend_skipped',
 'deblend_tooManyPeaks',
 'detect_isPatchInner',
 'detect_isPrimary',
 'detect_isTractInner',
 'ext_convolved_ConvolvedFlux_0_3_3_apCorr',
 'ext_convolved_ConvolvedFlux_0_3_3_apCorrErr',
 'ext_convolved_ConvolvedFlux_0_3_3_flag',
 'ext_convolved_ConvolvedFlux_0_3_3_flag_apCorr',
 'ext_convolved_ConvolvedFlux_0_3_3_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_0_3_3_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_0_3_3_instFlux',
 'ext_convolved_ConvolvedFlux_0_3_3_instFluxErr',
 'ext_convolved_ConvolvedFlux_0_4_5_apCorr',
 'ext_convolved_ConvolvedFlux_0_4_5_apCorrErr',
 'ext_convolved_ConvolvedFlux_0_4_5_flag',
 'ext_convolved_ConvolvedFlux_0_4_5_flag_apCorr',
 'ext_convolved_ConvolvedFlux_0_4_5_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_0_4_5_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_0_4_5_instFlux',
 'ext_convolved_ConvolvedFlux_0_4_5_instFluxErr',
 'ext_convolved_ConvolvedFlux_0_6_0_apCorr',
 'ext_convolved_ConvolvedFlux_0_6_0_apCorrErr',
 'ext_convolved_ConvolvedFlux_0_6_0_flag',
 'ext_convolved_ConvolvedFlux_0_6_0_flag_apCorr',
 'ext_convolved_ConvolvedFlux_0_6_0_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_0_6_0_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_0_6_0_instFlux',
 'ext_convolved_ConvolvedFlux_0_6_0_instFluxErr',
 'ext_convolved_ConvolvedFlux_0_deconv',
 'ext_convolved_ConvolvedFlux_0_flag_badCentroid',
 'ext_convolved_ConvolvedFlux_0_flag_badCentroid_almostNoSecondDerivative',
 'ext_convolved_ConvolvedFlux_0_flag_badCentroid_badError',
 'ext_convolved_ConvolvedFlux_0_flag_badCentroid_edge',
 'ext_convolved_ConvolvedFlux_0_flag_badCentroid_noSecondDerivative',
 'ext_convolved_ConvolvedFlux_0_flag_badCentroid_notAtMaximum',
 'ext_convolved_ConvolvedFlux_0_flag_badCentroid_resetToPeak',
 'ext_convolved_ConvolvedFlux_0_kron_apCorr',
 'ext_convolved_ConvolvedFlux_0_kron_apCorrErr',
 'ext_convolved_ConvolvedFlux_0_kron_flag',
 'ext_convolved_ConvolvedFlux_0_kron_flag_apCorr',
 'ext_convolved_ConvolvedFlux_0_kron_instFlux',
 'ext_convolved_ConvolvedFlux_0_kron_instFluxErr',
 'ext_convolved_ConvolvedFlux_1_3_3_apCorr',
 'ext_convolved_ConvolvedFlux_1_3_3_apCorrErr',
 'ext_convolved_ConvolvedFlux_1_3_3_flag',
 'ext_convolved_ConvolvedFlux_1_3_3_flag_apCorr',
 'ext_convolved_ConvolvedFlux_1_3_3_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_1_3_3_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_1_3_3_instFlux',
 'ext_convolved_ConvolvedFlux_1_3_3_instFluxErr',
 'ext_convolved_ConvolvedFlux_1_4_5_apCorr',
 'ext_convolved_ConvolvedFlux_1_4_5_apCorrErr',
 'ext_convolved_ConvolvedFlux_1_4_5_flag',
 'ext_convolved_ConvolvedFlux_1_4_5_flag_apCorr',
 'ext_convolved_ConvolvedFlux_1_4_5_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_1_4_5_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_1_4_5_instFlux',
 'ext_convolved_ConvolvedFlux_1_4_5_instFluxErr',
 'ext_convolved_ConvolvedFlux_1_6_0_apCorr',
 'ext_convolved_ConvolvedFlux_1_6_0_apCorrErr',
 'ext_convolved_ConvolvedFlux_1_6_0_flag',
 'ext_convolved_ConvolvedFlux_1_6_0_flag_apCorr',
 'ext_convolved_ConvolvedFlux_1_6_0_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_1_6_0_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_1_6_0_instFlux',
 'ext_convolved_ConvolvedFlux_1_6_0_instFluxErr',
 'ext_convolved_ConvolvedFlux_1_deconv',
 'ext_convolved_ConvolvedFlux_1_flag_badCentroid',
 'ext_convolved_ConvolvedFlux_1_flag_badCentroid_almostNoSecondDerivative',
 'ext_convolved_ConvolvedFlux_1_flag_badCentroid_badError',
 'ext_convolved_ConvolvedFlux_1_flag_badCentroid_edge',
 'ext_convolved_ConvolvedFlux_1_flag_badCentroid_noSecondDerivative',
 'ext_convolved_ConvolvedFlux_1_flag_badCentroid_notAtMaximum',
 'ext_convolved_ConvolvedFlux_1_flag_badCentroid_resetToPeak',
 'ext_convolved_ConvolvedFlux_1_kron_apCorr',
 'ext_convolved_ConvolvedFlux_1_kron_apCorrErr',
 'ext_convolved_ConvolvedFlux_1_kron_flag',
 'ext_convolved_ConvolvedFlux_1_kron_flag_apCorr',
 'ext_convolved_ConvolvedFlux_1_kron_instFlux',
 'ext_convolved_ConvolvedFlux_1_kron_instFluxErr',
 'ext_convolved_ConvolvedFlux_2_3_3_apCorr',
 'ext_convolved_ConvolvedFlux_2_3_3_apCorrErr',
 'ext_convolved_ConvolvedFlux_2_3_3_flag',
 'ext_convolved_ConvolvedFlux_2_3_3_flag_apCorr',
 'ext_convolved_ConvolvedFlux_2_3_3_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_2_3_3_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_2_3_3_instFlux',
 'ext_convolved_ConvolvedFlux_2_3_3_instFluxErr',
 'ext_convolved_ConvolvedFlux_2_4_5_apCorr',
 'ext_convolved_ConvolvedFlux_2_4_5_apCorrErr',
 'ext_convolved_ConvolvedFlux_2_4_5_flag',
 'ext_convolved_ConvolvedFlux_2_4_5_flag_apCorr',
 'ext_convolved_ConvolvedFlux_2_4_5_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_2_4_5_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_2_4_5_instFlux',
 'ext_convolved_ConvolvedFlux_2_4_5_instFluxErr',
 'ext_convolved_ConvolvedFlux_2_6_0_apCorr',
 'ext_convolved_ConvolvedFlux_2_6_0_apCorrErr',
 'ext_convolved_ConvolvedFlux_2_6_0_flag',
 'ext_convolved_ConvolvedFlux_2_6_0_flag_apCorr',
 'ext_convolved_ConvolvedFlux_2_6_0_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_2_6_0_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_2_6_0_instFlux',
 'ext_convolved_ConvolvedFlux_2_6_0_instFluxErr',
 'ext_convolved_ConvolvedFlux_2_deconv',
 'ext_convolved_ConvolvedFlux_2_flag_badCentroid',
 'ext_convolved_ConvolvedFlux_2_flag_badCentroid_almostNoSecondDerivative',
 'ext_convolved_ConvolvedFlux_2_flag_badCentroid_badError',
 'ext_convolved_ConvolvedFlux_2_flag_badCentroid_edge',
 'ext_convolved_ConvolvedFlux_2_flag_badCentroid_noSecondDerivative',
 'ext_convolved_ConvolvedFlux_2_flag_badCentroid_notAtMaximum',
 'ext_convolved_ConvolvedFlux_2_flag_badCentroid_resetToPeak',
 'ext_convolved_ConvolvedFlux_2_kron_apCorr',
 'ext_convolved_ConvolvedFlux_2_kron_apCorrErr',
 'ext_convolved_ConvolvedFlux_2_kron_flag',
 'ext_convolved_ConvolvedFlux_2_kron_flag_apCorr',
 'ext_convolved_ConvolvedFlux_2_kron_instFlux',
 'ext_convolved_ConvolvedFlux_2_kron_instFluxErr',
 'ext_convolved_ConvolvedFlux_3_3_3_apCorr',
 'ext_convolved_ConvolvedFlux_3_3_3_apCorrErr',
 'ext_convolved_ConvolvedFlux_3_3_3_flag',
 'ext_convolved_ConvolvedFlux_3_3_3_flag_apCorr',
 'ext_convolved_ConvolvedFlux_3_3_3_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_3_3_3_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_3_3_3_instFlux',
 'ext_convolved_ConvolvedFlux_3_3_3_instFluxErr',
 'ext_convolved_ConvolvedFlux_3_4_5_apCorr',
 'ext_convolved_ConvolvedFlux_3_4_5_apCorrErr',
 'ext_convolved_ConvolvedFlux_3_4_5_flag',
 'ext_convolved_ConvolvedFlux_3_4_5_flag_apCorr',
 'ext_convolved_ConvolvedFlux_3_4_5_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_3_4_5_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_3_4_5_instFlux',
 'ext_convolved_ConvolvedFlux_3_4_5_instFluxErr',
 'ext_convolved_ConvolvedFlux_3_6_0_apCorr',
 'ext_convolved_ConvolvedFlux_3_6_0_apCorrErr',
 'ext_convolved_ConvolvedFlux_3_6_0_flag',
 'ext_convolved_ConvolvedFlux_3_6_0_flag_apCorr',
 'ext_convolved_ConvolvedFlux_3_6_0_flag_apertureTruncated',
 'ext_convolved_ConvolvedFlux_3_6_0_flag_sincCoeffsTruncated',
 'ext_convolved_ConvolvedFlux_3_6_0_instFlux',
 'ext_convolved_ConvolvedFlux_3_6_0_instFluxErr',
 'ext_convolved_ConvolvedFlux_3_deconv',
 'ext_convolved_ConvolvedFlux_3_flag_badCentroid',
 'ext_convolved_ConvolvedFlux_3_flag_badCentroid_almostNoSecondDerivative',
 'ext_convolved_ConvolvedFlux_3_flag_badCentroid_badError',
 'ext_convolved_ConvolvedFlux_3_flag_badCentroid_edge',
 'ext_convolved_ConvolvedFlux_3_flag_badCentroid_noSecondDerivative',
 'ext_convolved_ConvolvedFlux_3_flag_badCentroid_notAtMaximum',
 'ext_convolved_ConvolvedFlux_3_flag_badCentroid_resetToPeak',
 'ext_convolved_ConvolvedFlux_3_kron_apCorr',
 'ext_convolved_ConvolvedFlux_3_kron_apCorrErr',
 'ext_convolved_ConvolvedFlux_3_kron_flag',
 'ext_convolved_ConvolvedFlux_3_kron_flag_apCorr',
 'ext_convolved_ConvolvedFlux_3_kron_instFlux',
 'ext_convolved_ConvolvedFlux_3_kron_instFluxErr',
 'ext_convolved_ConvolvedFlux_flag',
 'ext_convolved_ConvolvedFlux_flag_badCentroid',
 'ext_convolved_ConvolvedFlux_flag_badCentroid_almostNoSecondDerivative',
 'ext_convolved_ConvolvedFlux_flag_badCentroid_badError',
 'ext_convolved_ConvolvedFlux_flag_badCentroid_edge',
 'ext_convolved_ConvolvedFlux_flag_badCentroid_noSecondDerivative',
 'ext_convolved_ConvolvedFlux_flag_badCentroid_notAtMaximum',
 'ext_convolved_ConvolvedFlux_flag_badCentroid_resetToPeak',
 'ext_convolved_ConvolvedFlux_seeing',
 'ext_photometryKron_KronFlux_apCorr',
 'ext_photometryKron_KronFlux_apCorrErr',
 'ext_photometryKron_KronFlux_flag',
 'ext_photometryKron_KronFlux_flag_apCorr',
 'ext_photometryKron_KronFlux_flag_badInitialCentroid',
 'ext_photometryKron_KronFlux_flag_badInitialCentroid_almostNoSecondDerivative',
 'ext_photometryKron_KronFlux_flag_badInitialCentroid_badError',
 'ext_photometryKron_KronFlux_flag_badInitialCentroid_edge',
 'ext_photometryKron_KronFlux_flag_badInitialCentroid_noSecondDerivative',
 'ext_photometryKron_KronFlux_flag_badInitialCentroid_notAtMaximum',
 'ext_photometryKron_KronFlux_flag_badInitialCentroid_resetToPeak',
 'ext_photometryKron_KronFlux_flag_bad_radius',
 'ext_photometryKron_KronFlux_flag_bad_shape',
 'ext_photometryKron_KronFlux_flag_bad_shape_no_psf',
 'ext_photometryKron_KronFlux_flag_edge',
 'ext_photometryKron_KronFlux_flag_no_fallback_radius',
 'ext_photometryKron_KronFlux_flag_no_minimum_radius',
 'ext_photometryKron_KronFlux_flag_small_radius',
 'ext_photometryKron_KronFlux_flag_used_minimum_radius',
 'ext_photometryKron_KronFlux_flag_used_psf_radius',
 'ext_photometryKron_KronFlux_instFlux',
 'ext_photometryKron_KronFlux_instFluxErr',
 'ext_photometryKron_KronFlux_psf_radius',
 'ext_photometryKron_KronFlux_radius',
 'ext_photometryKron_KronFlux_radius_for_radius',
 'ext_shapeHSM_HsmPsfMoments_flag',
 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid',
 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative',
 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_badError',
 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge',
 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative',
 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum',
 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak',
 'ext_shapeHSM_HsmPsfMoments_flag_no_pixels',
 'ext_shapeHSM_HsmPsfMoments_flag_not_contained',
 'ext_shapeHSM_HsmPsfMoments_flag_parent_source',
 'ext_shapeHSM_HsmPsfMoments_x',
 'ext_shapeHSM_HsmPsfMoments_xx',
 'ext_shapeHSM_HsmPsfMoments_xy',
 'ext_shapeHSM_HsmPsfMoments_y',
 'ext_shapeHSM_HsmPsfMoments_yy',
 'ext_shapeHSM_HsmShapeRegauss_e1',
 'ext_shapeHSM_HsmShapeRegauss_e2',
 'ext_shapeHSM_HsmShapeRegauss_flag',
 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid',
 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_almostNoSecondDerivative',
 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_badError',
 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_edge',
 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_noSecondDerivative',
 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_notAtMaximum',
 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_resetToPeak',
 'ext_shapeHSM_HsmShapeRegauss_flag_galsim',
 'ext_shapeHSM_HsmShapeRegauss_flag_no_pixels',
 'ext_shapeHSM_HsmShapeRegauss_flag_not_contained',
 'ext_shapeHSM_HsmShapeRegauss_flag_parent_source',
 'ext_shapeHSM_HsmShapeRegauss_resolution',
 'ext_shapeHSM_HsmShapeRegauss_sigma',
 'ext_shapeHSM_HsmSourceMomentsRound_Flux',
 'ext_shapeHSM_HsmSourceMomentsRound_flag',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_almostNoSecondDerivative',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_badError',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_edge',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_noSecondDerivative',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_notAtMaximum',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_resetToPeak',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_no_pixels',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_not_contained',
 'ext_shapeHSM_HsmSourceMomentsRound_flag_parent_source',
 'ext_shapeHSM_HsmSourceMomentsRound_x',
 'ext_shapeHSM_HsmSourceMomentsRound_xx',
 'ext_shapeHSM_HsmSourceMomentsRound_xy',
 'ext_shapeHSM_HsmSourceMomentsRound_y',
 'ext_shapeHSM_HsmSourceMomentsRound_yy',
 'ext_shapeHSM_HsmSourceMoments_flag',
 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid',
 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid_almostNoSecondDerivative',
 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid_badError',
 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid_edge',
 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid_noSecondDerivative',
 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid_notAtMaximum',
 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid_resetToPeak',
 'ext_shapeHSM_HsmSourceMoments_flag_no_pixels',
 'ext_shapeHSM_HsmSourceMoments_flag_not_contained',
 'ext_shapeHSM_HsmSourceMoments_flag_parent_source',
 'ext_shapeHSM_HsmSourceMoments_x',
 'ext_shapeHSM_HsmSourceMoments_xx',
 'ext_shapeHSM_HsmSourceMoments_xy',
 'ext_shapeHSM_HsmSourceMoments_y',
 'ext_shapeHSM_HsmSourceMoments_yy',
 'g_FLUXMAG0',
 'g_base_CircularApertureFlux_12_0_flag',
 'g_base_CircularApertureFlux_12_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated',
 'g_base_CircularApertureFlux_12_0_instFlux',
 'g_base_CircularApertureFlux_12_0_instFluxErr',
 'g_base_CircularApertureFlux_17_0_flag',
 'g_base_CircularApertureFlux_17_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_17_0_instFlux',
 'g_base_CircularApertureFlux_17_0_instFluxErr',
 'g_base_CircularApertureFlux_25_0_flag',
 'g_base_CircularApertureFlux_25_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_25_0_instFlux',
 'g_base_CircularApertureFlux_25_0_instFluxErr',
 'g_base_CircularApertureFlux_35_0_flag',
 'g_base_CircularApertureFlux_35_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_35_0_instFlux',
 'g_base_CircularApertureFlux_35_0_instFluxErr',
 'g_base_CircularApertureFlux_3_0_flag',
 'g_base_CircularApertureFlux_3_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated',
 'g_base_CircularApertureFlux_3_0_instFlux',
 'g_base_CircularApertureFlux_3_0_instFluxErr',
 'g_base_CircularApertureFlux_4_5_flag',
 'g_base_CircularApertureFlux_4_5_flag_apertureTruncated',
 'g_base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated',
 'g_base_CircularApertureFlux_4_5_instFlux',
 'g_base_CircularApertureFlux_4_5_instFluxErr',
 'g_base_CircularApertureFlux_50_0_flag',
 'g_base_CircularApertureFlux_50_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_50_0_instFlux',
 'g_base_CircularApertureFlux_50_0_instFluxErr',
 'g_base_CircularApertureFlux_6_0_flag',
 'g_base_CircularApertureFlux_6_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated',
 'g_base_CircularApertureFlux_6_0_instFlux',
 'g_base_CircularApertureFlux_6_0_instFluxErr',
 'g_base_CircularApertureFlux_70_0_flag',
 'g_base_CircularApertureFlux_70_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_70_0_instFlux',
 'g_base_CircularApertureFlux_70_0_instFluxErr',
 'g_base_CircularApertureFlux_9_0_flag',
 'g_base_CircularApertureFlux_9_0_flag_apertureTruncated',
 'g_base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated',
 'g_base_CircularApertureFlux_9_0_instFlux',
 'g_base_CircularApertureFlux_9_0_instFluxErr',
 'g_base_CircularApertureFlux_flag_badCentroid',
 'g_base_ClassificationExtendedness_flag',
 'g_base_ClassificationExtendedness_value',
 'g_base_GaussianFlux_apCorr',
 'g_base_GaussianFlux_apCorrErr',
 'g_base_GaussianFlux_flag',
 'g_base_GaussianFlux_flag_apCorr',
 'g_base_GaussianFlux_flag_badCentroid',
 'g_base_GaussianFlux_flag_badShape',
 'g_base_GaussianFlux_instFlux',
 'g_base_GaussianFlux_instFluxErr',
 'g_base_InputCount_flag',
 'g_base_InputCount_flag_badCentroid',
 'g_base_InputCount_flag_noInputs',
 'g_base_InputCount_value',
 'g_base_LocalBackground_flag',
 'g_base_LocalBackground_flag_badCentroid',
 'g_base_LocalBackground_flag_noGoodPixels',
 'g_base_LocalBackground_flag_noPsf',
 'g_base_LocalBackground_instFlux',
 'g_base_LocalBackground_instFluxErr',
 'g_base_PixelFlags_flag',
 'g_base_PixelFlags_flag_bad',
 'g_base_PixelFlags_flag_bright_object',
 'g_base_PixelFlags_flag_bright_objectCenter',
 'g_base_PixelFlags_flag_clipped',
 'g_base_PixelFlags_flag_clippedCenter',
 'g_base_PixelFlags_flag_cr',
 'g_base_PixelFlags_flag_crCenter',
 'g_base_PixelFlags_flag_edge',
 'g_base_PixelFlags_flag_inexact_psf',
 'g_base_PixelFlags_flag_inexact_psfCenter',
 'g_base_PixelFlags_flag_interpolated',
 'g_base_PixelFlags_flag_interpolatedCenter',
 'g_base_PixelFlags_flag_offimage',
 'g_base_PixelFlags_flag_rejected',
 'g_base_PixelFlags_flag_rejectedCenter',
 'g_base_PixelFlags_flag_saturated',
 'g_base_PixelFlags_flag_saturatedCenter',
 'g_base_PixelFlags_flag_sensor_edge',
 'g_base_PixelFlags_flag_sensor_edgeCenter',
 'g_base_PixelFlags_flag_suspect',
 'g_base_PixelFlags_flag_suspectCenter',
 'g_base_PsfFlux_apCorr',
 'g_base_PsfFlux_apCorrErr',
 'g_base_PsfFlux_area',
 'g_base_PsfFlux_flag',
 'g_base_PsfFlux_flag_apCorr',
 'g_base_PsfFlux_flag_badCentroid',
 'g_base_PsfFlux_flag_edge',
 'g_base_PsfFlux_flag_noGoodPixels',
 'g_base_PsfFlux_instFlux',
 'g_base_PsfFlux_instFluxErr',
 'g_base_SdssCentroid_flag',
 'g_base_SdssCentroid_flag_almostNoSecondDerivative',
 'g_base_SdssCentroid_flag_badError',
 'g_base_SdssCentroid_flag_badInitialCentroid',
 'g_base_SdssCentroid_flag_edge',
 'g_base_SdssCentroid_flag_noSecondDerivative',
 'g_base_SdssCentroid_flag_notAtMaximum',
 'g_base_SdssCentroid_flag_resetToPeak',
 'g_base_SdssCentroid_x',
 'g_base_SdssCentroid_xErr',
 'g_base_SdssCentroid_y',
 'g_base_SdssCentroid_yErr',
 'g_base_SdssShape_flag',
 'g_base_SdssShape_flag_badCentroid',
 'g_base_SdssShape_flag_maxIter',
 'g_base_SdssShape_flag_psf',
 'g_base_SdssShape_flag_shift',
 'g_base_SdssShape_flag_unweighted',
 'g_base_SdssShape_flag_unweightedBad',
 'g_base_SdssShape_instFlux',
 'g_base_SdssShape_instFluxErr',
 'g_base_SdssShape_instFlux_xx_Cov',
 'g_base_SdssShape_instFlux_xy_Cov',
 'g_base_SdssShape_instFlux_yy_Cov',
 'g_base_SdssShape_psf_xx',
 'g_base_SdssShape_psf_xy',
 'g_base_SdssShape_psf_yy',
 'g_base_SdssShape_x',
 'g_base_SdssShape_xx',
 'g_base_SdssShape_xxErr',
 'g_base_SdssShape_xy',
 'g_base_SdssShape_xyErr',
 'g_base_SdssShape_y',
 'g_base_SdssShape_yy',
 'g_base_SdssShape_yyErr',
 'g_base_TransformedCentroid_flag',
 'g_base_TransformedCentroid_x',
 'g_base_TransformedCentroid_y',
 'g_base_TransformedShape_flag',
 'g_base_TransformedShape_xx',
 'g_base_TransformedShape_xy',
 'g_base_TransformedShape_yy',
 'g_base_Variance_flag',
 'g_base_Variance_flag_badCentroid',
 'g_base_Variance_flag_emptyFootprint',
 'g_base_Variance_value',
 'g_coord_dec',
 'g_coord_ra',
 'g_deblend_nChild',
 'g_ext_convolved_ConvolvedFlux_0_3_3_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_3_3_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_0_3_3_flag',
 'g_ext_convolved_ConvolvedFlux_0_3_3_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_3_3_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_0_3_3_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_0_3_3_instFlux',
 'g_ext_convolved_ConvolvedFlux_0_3_3_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_0_4_5_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_4_5_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_0_4_5_flag',
 'g_ext_convolved_ConvolvedFlux_0_4_5_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_4_5_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_0_4_5_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_0_4_5_instFlux',
 'g_ext_convolved_ConvolvedFlux_0_4_5_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_0_6_0_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_6_0_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_0_6_0_flag',
 'g_ext_convolved_ConvolvedFlux_0_6_0_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_6_0_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_0_6_0_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_0_6_0_instFlux',
 'g_ext_convolved_ConvolvedFlux_0_6_0_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_0_deconv',
 'g_ext_convolved_ConvolvedFlux_0_flag_badCentroid',
 'g_ext_convolved_ConvolvedFlux_0_kron_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_kron_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_0_kron_flag',
 'g_ext_convolved_ConvolvedFlux_0_kron_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_0_kron_instFlux',
 'g_ext_convolved_ConvolvedFlux_0_kron_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_1_3_3_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_3_3_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_1_3_3_flag',
 'g_ext_convolved_ConvolvedFlux_1_3_3_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_3_3_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_1_3_3_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_1_3_3_instFlux',
 'g_ext_convolved_ConvolvedFlux_1_3_3_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_1_4_5_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_4_5_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_1_4_5_flag',
 'g_ext_convolved_ConvolvedFlux_1_4_5_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_4_5_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_1_4_5_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_1_4_5_instFlux',
 'g_ext_convolved_ConvolvedFlux_1_4_5_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_1_6_0_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_6_0_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_1_6_0_flag',
 'g_ext_convolved_ConvolvedFlux_1_6_0_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_6_0_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_1_6_0_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_1_6_0_instFlux',
 'g_ext_convolved_ConvolvedFlux_1_6_0_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_1_deconv',
 'g_ext_convolved_ConvolvedFlux_1_flag_badCentroid',
 'g_ext_convolved_ConvolvedFlux_1_kron_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_kron_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_1_kron_flag',
 'g_ext_convolved_ConvolvedFlux_1_kron_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_1_kron_instFlux',
 'g_ext_convolved_ConvolvedFlux_1_kron_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_2_3_3_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_3_3_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_2_3_3_flag',
 'g_ext_convolved_ConvolvedFlux_2_3_3_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_3_3_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_2_3_3_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_2_3_3_instFlux',
 'g_ext_convolved_ConvolvedFlux_2_3_3_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_2_4_5_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_4_5_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_2_4_5_flag',
 'g_ext_convolved_ConvolvedFlux_2_4_5_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_4_5_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_2_4_5_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_2_4_5_instFlux',
 'g_ext_convolved_ConvolvedFlux_2_4_5_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_2_6_0_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_6_0_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_2_6_0_flag',
 'g_ext_convolved_ConvolvedFlux_2_6_0_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_6_0_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_2_6_0_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_2_6_0_instFlux',
 'g_ext_convolved_ConvolvedFlux_2_6_0_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_2_deconv',
 'g_ext_convolved_ConvolvedFlux_2_flag_badCentroid',
 'g_ext_convolved_ConvolvedFlux_2_kron_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_kron_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_2_kron_flag',
 'g_ext_convolved_ConvolvedFlux_2_kron_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_2_kron_instFlux',
 'g_ext_convolved_ConvolvedFlux_2_kron_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_3_3_3_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_3_3_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_3_3_3_flag',
 'g_ext_convolved_ConvolvedFlux_3_3_3_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_3_3_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_3_3_3_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_3_3_3_instFlux',
 'g_ext_convolved_ConvolvedFlux_3_3_3_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_3_4_5_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_4_5_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_3_4_5_flag',
 'g_ext_convolved_ConvolvedFlux_3_4_5_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_4_5_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_3_4_5_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_3_4_5_instFlux',
 'g_ext_convolved_ConvolvedFlux_3_4_5_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_3_6_0_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_6_0_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_3_6_0_flag',
 'g_ext_convolved_ConvolvedFlux_3_6_0_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_6_0_flag_apertureTruncated',
 'g_ext_convolved_ConvolvedFlux_3_6_0_flag_sincCoeffsTruncated',
 'g_ext_convolved_ConvolvedFlux_3_6_0_instFlux',
 'g_ext_convolved_ConvolvedFlux_3_6_0_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_3_deconv',
 'g_ext_convolved_ConvolvedFlux_3_flag_badCentroid',
 'g_ext_convolved_ConvolvedFlux_3_kron_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_kron_apCorrErr',
 'g_ext_convolved_ConvolvedFlux_3_kron_flag',
 'g_ext_convolved_ConvolvedFlux_3_kron_flag_apCorr',
 'g_ext_convolved_ConvolvedFlux_3_kron_instFlux',
 'g_ext_convolved_ConvolvedFlux_3_kron_instFluxErr',
 'g_ext_convolved_ConvolvedFlux_flag',
 'g_ext_convolved_ConvolvedFlux_flag_badCentroid',
 'g_ext_convolved_ConvolvedFlux_seeing',
 'g_ext_photometryKron_KronFlux_apCorr',
 'g_ext_photometryKron_KronFlux_apCorrErr',
 'g_ext_photometryKron_KronFlux_flag',
 'g_ext_photometryKron_KronFlux_flag_apCorr',
 'g_ext_photometryKron_KronFlux_flag_badInitialCentroid',
 'g_ext_photometryKron_KronFlux_flag_bad_radius',
 'g_ext_photometryKron_KronFlux_flag_bad_shape',
 'g_ext_photometryKron_KronFlux_flag_bad_shape_no_psf',
 'g_ext_photometryKron_KronFlux_flag_edge',
 'g_ext_photometryKron_KronFlux_flag_no_fallback_radius',
 'g_ext_photometryKron_KronFlux_flag_no_minimum_radius',
 'g_ext_photometryKron_KronFlux_flag_small_radius',
 'g_ext_photometryKron_KronFlux_flag_used_minimum_radius',
 'g_ext_photometryKron_KronFlux_flag_used_psf_radius',
 'g_ext_photometryKron_KronFlux_instFlux',
 'g_ext_photometryKron_KronFlux_instFluxErr',
 'g_ext_photometryKron_KronFlux_psf_radius',
 'g_ext_photometryKron_KronFlux_radius',
 'g_ext_photometryKron_KronFlux_radius_for_radius',
 'g_modelfit_CModel_apCorr',
 'g_modelfit_CModel_apCorrErr',
 'g_modelfit_CModel_dev_apCorr',
 'g_modelfit_CModel_dev_apCorrErr',
 'g_modelfit_CModel_dev_flag',
 'g_modelfit_CModel_dev_flag_apCorr',
 'g_modelfit_CModel_dev_flag_badReference',
 'g_modelfit_CModel_dev_flag_numericError',
 'g_modelfit_CModel_dev_instFlux',
 'g_modelfit_CModel_dev_instFluxErr',
 'g_modelfit_CModel_dev_instFlux_inner',
 'g_modelfit_CModel_exp_apCorr',
 'g_modelfit_CModel_exp_apCorrErr',
 'g_modelfit_CModel_exp_flag',
 'g_modelfit_CModel_exp_flag_apCorr',
 'g_modelfit_CModel_exp_flag_badReference',
 'g_modelfit_CModel_exp_flag_numericError',
 'g_modelfit_CModel_exp_instFlux',
 'g_modelfit_CModel_exp_instFluxErr',
 'g_modelfit_CModel_exp_instFlux_inner',
 'g_modelfit_CModel_flag',
 'g_modelfit_CModel_flag_apCorr',
 'g_modelfit_CModel_flag_badCentroid',
 'g_modelfit_CModel_flag_badReference',
 'g_modelfit_CModel_flag_noShapeletPsf',
 'g_modelfit_CModel_flag_region_maxArea',
 'g_modelfit_CModel_flag_region_maxBadPixelFraction',
 'g_modelfit_CModel_fracDev',
 'g_modelfit_CModel_initial_apCorr',
 'g_modelfit_CModel_initial_apCorrErr',
 'g_modelfit_CModel_initial_flag',
 'g_modelfit_CModel_initial_flag_apCorr',
 'g_modelfit_CModel_initial_flag_badReference',
 'g_modelfit_CModel_initial_flag_numericError',
 'g_modelfit_CModel_initial_instFlux',
 'g_modelfit_CModel_initial_instFluxErr',
 'g_modelfit_CModel_initial_instFlux_inner',
 'g_modelfit_CModel_instFlux',
 'g_modelfit_CModel_instFluxErr',
 'g_modelfit_CModel_instFlux_inner',
 'g_modelfit_CModel_objective',
 'g_modelfit_DoubleShapeletPsfApprox_0_0',
 'g_modelfit_DoubleShapeletPsfApprox_0_1',
 'g_modelfit_DoubleShapeletPsfApprox_0_2',
 'g_modelfit_DoubleShapeletPsfApprox_0_3',
 'g_modelfit_DoubleShapeletPsfApprox_0_4',
 'g_modelfit_DoubleShapeletPsfApprox_0_5',
 'g_modelfit_DoubleShapeletPsfApprox_0_x',
 'g_modelfit_DoubleShapeletPsfApprox_0_xx',
 'g_modelfit_DoubleShapeletPsfApprox_0_xy',
 'g_modelfit_DoubleShapeletPsfApprox_0_y',
 'g_modelfit_DoubleShapeletPsfApprox_0_yy',
 'g_modelfit_DoubleShapeletPsfApprox_1_0',
 'g_modelfit_DoubleShapeletPsfApprox_1_1',
 'g_modelfit_DoubleShapeletPsfApprox_1_2',
 'g_modelfit_DoubleShapeletPsfApprox_1_x',
 'g_modelfit_DoubleShapeletPsfApprox_1_xx',
 'g_modelfit_DoubleShapeletPsfApprox_1_xy',
 'g_modelfit_DoubleShapeletPsfApprox_1_y',
 'g_modelfit_DoubleShapeletPsfApprox_1_yy',
 'g_modelfit_DoubleShapeletPsfApprox_flag',
 'g_modelfit_DoubleShapeletPsfApprox_flag_badCentroid',
 'g_modelfit_DoubleShapeletPsfApprox_flag_invalidMoments',
 'g_modelfit_DoubleShapeletPsfApprox_flag_invalidPointForPsf',
 'g_modelfit_DoubleShapeletPsfApprox_flag_maxIterations',
 'g_parent',
 'g_slot_Centroid_flag',
 'g_slot_Centroid_x',
 'g_slot_Centroid_y',
 'g_slot_ModelFlux_apCorr',
 'g_slot_ModelFlux_apCorrErr',
 'g_slot_ModelFlux_dev_apCorr',
 'g_slot_ModelFlux_dev_apCorrErr',
 'g_slot_ModelFlux_dev_flag',
 'g_slot_ModelFlux_dev_flag_apCorr',
 'g_slot_ModelFlux_dev_flag_badReference',
 'g_slot_ModelFlux_dev_flag_numericError',
 'g_slot_ModelFlux_dev_instFlux',
 'g_slot_ModelFlux_dev_instFluxErr',
 'g_slot_ModelFlux_dev_instFlux_inner',
 'g_slot_ModelFlux_exp_apCorr',
 'g_slot_ModelFlux_exp_apCorrErr',
 'g_slot_ModelFlux_exp_flag',
 'g_slot_ModelFlux_exp_flag_apCorr',
 'g_slot_ModelFlux_exp_flag_badReference',
 'g_slot_ModelFlux_exp_flag_numericError',
 'g_slot_ModelFlux_exp_instFlux',
 'g_slot_ModelFlux_exp_instFluxErr',
 'g_slot_ModelFlux_exp_instFlux_inner',
 'g_slot_ModelFlux_flag',
 'g_slot_ModelFlux_flag_apCorr',
 'g_slot_ModelFlux_flag_badCentroid',
 'g_slot_ModelFlux_flag_badReference',
 'g_slot_ModelFlux_flag_noShapeletPsf',
 'g_slot_ModelFlux_flag_region_maxArea',
 'g_slot_ModelFlux_flag_region_maxBadPixelFraction',
 'g_slot_ModelFlux_fracDev',
 'g_slot_ModelFlux_initial_apCorr',
 'g_slot_ModelFlux_initial_apCorrErr',
 'g_slot_ModelFlux_initial_flag',
 'g_slot_ModelFlux_initial_flag_apCorr',
 'g_slot_ModelFlux_initial_flag_badReference',
 'g_slot_ModelFlux_initial_flag_numericError',
 'g_slot_ModelFlux_initial_instFlux',
 'g_slot_ModelFlux_initial_instFluxErr',
 'g_slot_ModelFlux_initial_instFlux_inner',
 'g_slot_ModelFlux_instFlux',
 'g_slot_ModelFlux_instFluxErr',
 'g_slot_ModelFlux_instFlux_inner',
 'g_slot_ModelFlux_objective',
 'g_slot_PsfFlux_apCorr',
 'g_slot_PsfFlux_apCorrErr',
 'g_slot_PsfFlux_area',
 'g_slot_PsfFlux_flag',
 'g_slot_PsfFlux_flag_apCorr',
 'g_slot_PsfFlux_flag_edge',
 'g_slot_PsfFlux_flag_noGoodPixels',
 'g_slot_PsfFlux_instFlux',
 'g_slot_PsfFlux_instFluxErr',
 'g_slot_PsfShape_xx',
 'g_slot_PsfShape_xy',
 'g_slot_PsfShape_yy',
 'g_slot_Shape_flag',
 'g_slot_Shape_xx',
 'g_slot_Shape_xy',
 'g_slot_Shape_yy',
 'g_undeblended_base_CircularApertureFlux_12_0_flag',
 'g_undeblended_base_CircularApertureFlux_12_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated',
 'g_undeblended_base_CircularApertureFlux_12_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_12_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_17_0_flag',
 'g_undeblended_base_CircularApertureFlux_17_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_17_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_17_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_25_0_flag',
 'g_undeblended_base_CircularApertureFlux_25_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_25_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_25_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_35_0_flag',
 'g_undeblended_base_CircularApertureFlux_35_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_35_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_35_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_3_0_flag',
 'g_undeblended_base_CircularApertureFlux_3_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated',
 'g_undeblended_base_CircularApertureFlux_3_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_3_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_4_5_flag',
 'g_undeblended_base_CircularApertureFlux_4_5_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated',
 'g_undeblended_base_CircularApertureFlux_4_5_instFlux',
 'g_undeblended_base_CircularApertureFlux_4_5_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_50_0_flag',
 'g_undeblended_base_CircularApertureFlux_50_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_50_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_50_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_6_0_flag',
 'g_undeblended_base_CircularApertureFlux_6_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated',
 'g_undeblended_base_CircularApertureFlux_6_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_6_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_70_0_flag',
 'g_undeblended_base_CircularApertureFlux_70_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_70_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_70_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_9_0_flag',
 'g_undeblended_base_CircularApertureFlux_9_0_flag_apertureTruncated',
 'g_undeblended_base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated',
 'g_undeblended_base_CircularApertureFlux_9_0_instFlux',
 'g_undeblended_base_CircularApertureFlux_9_0_instFluxErr',
 'g_undeblended_base_CircularApertureFlux_flag_badCentroid',
 'g_undeblended_base_PsfFlux_area',
 'g_undeblended_base_PsfFlux_flag',
 'g_undeblended_base_PsfFlux_flag_badCentroid',
 'g_undeblended_base_PsfFlux_flag_edge',
 'g_undeblended_base_PsfFlux_flag_noGoodPixels',
 'g_undeblended_base_PsfFlux_instFlux',
 'g_undeblended_base_PsfFlux_instFluxErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_apCorrErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_apertureTruncated',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_sincCoeffsTruncated',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_instFlux',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_3_3_instFluxErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_apCorrErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_apertureTruncated',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_sincCoeffsTruncated',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_instFlux',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_4_5_instFluxErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_apCorrErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_apertureTruncated',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_sincCoeffsTruncated',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_instFlux',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_6_0_instFluxErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_deconv',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_flag_badCentroid',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_kron_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_kron_apCorrErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_kron_flag',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_kron_flag_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_kron_instFlux',
 'g_undeblended_ext_convolved_ConvolvedFlux_0_kron_instFluxErr',
 'g_undeblended_ext_convolved_ConvolvedFlux_1_3_3_apCorr',
 'g_undeblended_ext_convolved_ConvolvedFlux_1_3_3_apCorrErr',
 ...]

We can see that the catalog includes:

  • Positions
  • Fluxes and magnitudes (PSF and CModel)
  • Shapes (using GalSim's HSM)
  • Quality flags: e.g, does the source have any interpolated pixels? Has any of the measurement algorithms returned an error?
  • Other useful quantities: blendedness, measure of how flux is affected by neighbors: (1 - flux.child/flux.parent) (see 4.9.11 of Bosch et al. 2018); extendedness, classifies sources as extended or psf-like.

Accessing the data

Run2.2i is considerably larger than Run1.2i; accessing the full dataset can be challenging. In order to access the data efficiently, it is important to understand how it is physically stored and how to access it, one piece at the time.

The coadds produced by the DM stack are structured in terms of large tracts and smaller patches, illustrated here for DC2 Run1.1i (Run2.2i covers 300 square degrees and has 165 tracts): Here the tracts have large blue numbers, and the patches are denoted with an (x,y) format. (In the illustration each tract has 8x8 patches. In later runs, including 2.2i, each tract has 7x7 patches.)

You can learn more about how to make such a plot of the tract and patches here

The GCR object catalog preserves the tract structure of the data so that any particular quantity can be accessed on a per-tract basis. The tracts available in the catalog can be listed using the following command:

In [5]:
# Query all available tracts, only displays the first 5
catalog.available_tracts[:5]
Out[5]:
[2723, 2724, 2725, 2726, 2727]

The DM stack includes functionality to get the tract and patch number corresponding to a certain position (RA,DEC). However, it is out of the scope of this tutorial.

GCR provides the following native_filters mechanism, which you can use to speed up data access if you only need certain chunks of the dataset. For the object catalog, the chunks are broken into tract, and hence that is what you can use in values for native_filters:

In [6]:
# Retrieve the ra,dec coordinates of all sources within tract number 4430
data = catalog.get_quantities(['ra', 'dec'], native_filters=['tract == 4430'])

# Plot a 2d histogram of sources
plt.figure(figsize=(10,7))
plt.hist2d(data['ra'], data['dec'],100); plt.gca().set_aspect('equal'); plt.colorbar(label='Number of objects')
plt.xlabel('RA [deg]');
plt.ylabel('dec [deg]');

native_filters can be used to filter a catalog by some specific quantities that are related to its underlying data format (use catalog._native_filter_quantities to see them). You have more information here

The data returned by the GCR is structured as a native Python dictionary:

In [7]:
data
Out[7]:
{'ra': array([54.76099046, 54.74325167, 54.75261299, ..., 53.12993772,
        53.10522035, 53.10481801]),
 'dec': array([-32.72714484, -32.72699882, -32.72667863, ..., -31.31642063,
        -31.25337157, -31.25376005])}

But it can also easily be converted into a Pandas DataFrame, if you are so inclined ;-)

In [8]:
import pandas
pdata = pandas.DataFrame(data)
pdata
Out[8]:
ra dec
0 54.760990 -32.727145
1 54.743252 -32.726999
2 54.752613 -32.726679
3 54.689073 -32.727105
4 54.723926 -32.726942
... ... ...
712722 53.123090 -31.348546
712723 53.130008 -31.316799
712724 53.129938 -31.316421
712725 53.105220 -31.253372
712726 53.104818 -31.253760

712727 rows × 2 columns

As a simple test, you can show the advantage of loading one tract at a time compared to the entire catalog:

In [9]:
%time data = catalog.get_quantities(['ra', 'dec'], native_filters=['tract == 4431'])
CPU times: user 248 ms, sys: 123 ms, total: 371 ms
Wall time: 2.5 s
In [10]:
%time data = catalog.get_quantities(['ra', 'dec']) #This cell takes a bit to execute so, if you are in a hurry you can skip this
CPU times: user 41.6 s, sys: 17.3 s, total: 58.9 s
Wall time: 8min 18s

In order to make accessing chunks of data convenient to the user, the catalog.get_quantities also provides the option to return an iterator. This allows you to only read and work on one piece of data at a time while looping through the entire catalog. Remember that catalogs can be very large and might not fit in memory if you try to load the entire catalog at once. In the DC2 object catalog for Run2.2i, as we follow the DM structure of data, the catalog will iterate over tract when using return_iterator.

You can find more general information about iterators here.

In [11]:
# Loop through a few tracts using an iterator
for d in catalog.get_quantities(['ra', 'dec'],
                                native_filters=['tract >= 2900', 'tract < 3000'],
                                return_iterator=True):
    # Here we only handle a tract at a time
    plt.scatter(d['ra'], d['dec'], s=2);
    
plt.xlabel('RA');
plt.ylabel('Dec');
plt.title('2900 <= Tract < 3000');

Applying filters and cuts

In order to avoid returning unecessary data, the GCR has a functionality to filter out entries as it reads the files. Note that this is different from the native_filters discussed above, which avoids reading part of the data altogether.

Defining these filters requires the GCRQuery module of the GCR package and can then be applied during the call to get_quantities:

In [12]:
from GCR import GCRQuery

# Simple cut to remove unreliable detections
# More cuts can be added, as a logical AND, by appending GCRQuery objects to this list
simple_cuts = [
    GCRQuery('clean'), # The source has no flagged pixels (interpolated, saturated, edge, clipped...) 
                       # and was not skipped by the deblender
]

# Loads the data after cut
data_cut = catalog.get_quantities(['ra', 'dec'], 
                              filters = simple_cuts, 
                              native_filters=['tract == 3830'])

# Loads data without cuts
data_full = catalog.get_quantities(['ra', 'dec'], 
                              native_filters=['tract == 3830'])
In [13]:
print(len(data_cut['ra']),len(data_full['ra']))
620544 622881
In [14]:
# Plot a 2d histogram of sources
plt.figure(figsize=(15,7))
plt.subplot(121)
plt.hist2d(data_full['ra'], data_full['dec'],256); plt.gca().set_aspect('equal'); 
plt.xlabel('RA [deg]');
plt.ylabel('dec [deg]');
plt.title('Full sample')
plt.colorbar(label='Number of objects')

plt.subplot(122)
plt.hist2d(data_cut['ra'], data_cut['dec'],256); plt.gca().set_aspect('equal');
plt.xlabel('RA [deg]');
plt.ylabel('dec [deg]');
plt.title('Clean objects');
plt.colorbar(label='Number of objects');

Admittedly, this plot is a little underwhelming, these quality cuts only remove a very small number of objects. This is due in part to the fact that there are relatively few pixel defects in the DC2 simulations that would be flagged by Instrument Signature Removal (ISR). In general, the number of objects that are affected by pixel defects will grow as the coadds get deeper, but the total number of objects will also increase with depth.

To get a sense of the impact of these quality flags on real data, we can compare with a tract of the HSC PDR1 data (Aihara et al (2018)) which had been available on cori. Note that this HSC catalog follows the same schema as Run 1.2i. This tract is part of the XMM subfield of HSC (find out more about the HSC data release here and here).

While this catalog was available, it was loaded, the same cuts were applied, and the data were plotted. Here is the result:

This is a more dramatic plot, and illustrates the importance of selecting clean samples of objets.

Example of filtering: Star/galaxy separation

For now, we have extendedness == base_ClassificationExtendedness_value as a tool for star/galaxy classification. An object is considered extended if the the difference between the PSF magnitude and the CModel magnitude is beyond certain threshold (0.0164). To know more about this see Bosch et al. 2018 section 4.9.10

In [15]:
star_cuts = [
    GCRQuery('clean'), # The source has no flagged pixels (interpolated, saturated, edge, clipped...) 
                       # and was not skipped by the deblender
    GCRQuery('extendedness==0'),
    GCRQuery((np.isfinite, 'mag_g_cModel')),
    GCRQuery((np.isfinite, 'mag_r_cModel')),
    GCRQuery((np.isfinite, 'mag_i_cModel')),
]

quantities = ['mag_g_cModel', 'mag_r_cModel', 'mag_i_cModel']

d = catalog.get_quantities(quantities, 
                           filters=star_cuts, 
                           native_filters=['tract == 3830'])
/global/common/software/lsst/common/miniconda/py3.7-4.7.12.1-v2/envs/desc/lib/python3.7/site-packages/GCRCatalogs/dc2_dm_catalog.py:44: RuntimeWarning: divide by zero encountered in log10
  return -2.5 * np.log10(flux) + AB_mag_zp_wrt_nanoJansky
/global/common/software/lsst/common/miniconda/py3.7-4.7.12.1-v2/envs/desc/lib/python3.7/site-packages/GCRCatalogs/dc2_dm_catalog.py:44: RuntimeWarning: invalid value encountered in log10
  return -2.5 * np.log10(flux) + AB_mag_zp_wrt_nanoJansky

Note: The cell above will output some runtime warnings related to objects that have negative or zero measured fluxes but we can safely ignore the warning since those objects will not appear in our 2D histogram.

So now, we are selected what we think are stars. Let's take a look at the colors of these objects

In [16]:
plt.hexbin(d['mag_g_cModel']-d['mag_r_cModel'],
           d['mag_r_cModel']-d['mag_i_cModel'], 
           bins='log', extent=[-1,2,-1,2]);
plt.xlabel('$g-r$')
plt.ylabel('$r-i$')
plt.colorbar(label='log(Number of objects)')
Out[16]:
<matplotlib.colorbar.Colorbar at 0x2aad3532df10>