Skip to content

Instantly share code, notes, and snippets.

@josePhoenix
Last active July 27, 2016 14:56
Show Gist options
  • Save josePhoenix/8325c16b44fb5fa51f40261b184a78ef to your computer and use it in GitHub Desktop.
Save josePhoenix/8325c16b44fb5fa51f40261b184a78ef to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Deblending using the DM stack\n",
"\n",
"Jim Bosch:\n",
"\n",
"> all of this code is intended to be very much usable as a Python library, and in fact for simple simulated data it may be easier (and certainly more flexible) than using scripts like processFile. Here's a snippet that may help get you started, assuming you have an image with a constant PSF that you'd like to use instead of doing PSF modeling using our code (which is where a lot of the complexity in processfile comes from). One big caveat: I haven't tested this, so there are probably some trivial bugs.\n",
"\n",
"https://community.lsst.org/t/how-to-run-the-dm-stack-on-simulated-fits-images/892/6"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/jlong/research/lsst_stack/DarwinX86/miniconda2/3.19.0.lsst4/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n",
" warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n"
]
}
],
"source": [
"import lsst.afw.table\n",
"import lsst.afw.image\n",
"import lsst.afw.math\n",
"import lsst.meas.algorithms\n",
"import lsst.meas.base\n",
"import lsst.meas.deblender\n",
"import numpy"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# jlong addition\n",
"%matplotlib inline\n",
"import matplotlib\n",
"matplotlib.rcParams['image.origin'] = 'lower'\n",
"matplotlib.rcParams['image.cmap'] = 'viridis'\n",
"from matplotlib import pyplot as plt\n",
"import numpy as np\n",
"from astropy.io import fits\n",
"from astropy.wcs import WCS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"High-level algorithms are in classes called \"Tasks\". Each of these has a Config\n",
"class to control how it runs; to use it, construct an instance of Task.ConfigClass(),\n",
"set attributes on it, and pass that as the config kwarg to the Task constructor.\n",
"It's usually a good idea to construct all Tasks before using any of them, mostly\n",
"to define the full schema of any catalogs we'll produce up front."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"schema = lsst.afw.table.SourceTable.makeMinimalSchema()\n",
"detect = lsst.meas.algorithms.SourceDetectionTask(schema=schema)\n",
"deblend = lsst.meas.deblender.SourceDeblendTask(schema=schema)\n",
"measure = lsst.meas.base.SingleFrameMeasurementTask(schema=schema)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Load one of our multiextension FITS cutouts"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def display_blend(blend_hdul, ext_seeing_limited='F606W_SL', ext_original='F606W'):\n",
" plt.figure()\n",
" imgwcs = WCS(blend_hdul[ext_seeing_limited].header)\n",
" coords = imgwcs.all_world2pix(zip(\n",
" blend_hdul['CATALOG'].data['RA'],\n",
" egs_blend['CATALOG'].data['DEC']\n",
" ), 1)\n",
"\n",
" ymax, xmax = blend_hdul[ext_seeing_limited].data.shape\n",
" plt.subplot(1, 2, 1)\n",
" plt.imshow(blend_hdul[ext_seeing_limited].data, cmap='viridis')\n",
" plt.scatter(coords[:,0], coords[:,1], marker='x', color='red')\n",
" plt.xlim(0, xmax)\n",
" plt.ylim(0, ymax)\n",
" plt.subplot(1, 2, 2)\n",
" plt.imshow(blend_hdul[ext_original].data, cmap='viridis')\n",
" plt.scatter(coords[:,0], coords[:,1], marker='x', color='red')\n",
" plt.xlim(0, xmax)\n",
" plt.ylim(0, ymax)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116005750>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# jlong: load the FITS for a blend\n",
"egs_blend = fits.open('./EGS_214.88685460+52.8863737_0.70arcsec.fits')\n",
"display_blend(egs_blend)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"image_array = egs_blend['F606W_SL'].data.copy()\n",
"image_array_orig = image_array.copy()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fake a variance array using a 10px box of sky from the corner"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0034898773"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numpy.nanmean(image_array)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.015912259"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"variance_ish = np.sqrt(numpy.nanmean(image_array[0:10,0:10]))\n",
"variance_ish"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"variance_array = variance_ish * numpy.ones_like(image_array) # TODO do RMS image cutouts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Convert into LSST Stack types\n",
"\n",
"Given NumPy float32 arrays containing the image to be measured and its variance, make an LSST\n",
"\"MaskedImage\" to hold them. This also holds a mask, which we'll set to None to make a blank mask."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"image = lsst.afw.image.ImageF(image_array)\n",
"variance = lsst.afw.image.ImageF(variance_array)\n",
"masked_image = lsst.afw.image.MaskedImageF(image, None, variance)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/jlong/research/lsst_stack/DarwinX86/miniconda2/3.19.0.lsst4/lib/python2.7/site-packages/numpy/ma/core.py:2293: RuntimeWarning: invalid value encountered in isfinite\n",
" condition = ~(np.isfinite(a))\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x116d4be90>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/jlong/research/lsst_stack/DarwinX86/miniconda2/3.19.0.lsst4/lib/python2.7/site-packages/matplotlib/colors.py:949: RuntimeWarning: overflow encountered in subtract\n",
" resdat -= vmin\n",
"/Users/jlong/research/lsst_stack/DarwinX86/miniconda2/3.19.0.lsst4/lib/python2.7/site-packages/matplotlib/colors.py:949: RuntimeWarning: invalid value encountered in subtract\n",
" resdat -= vmin\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x116a16c10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplot(1,3,1)\n",
"plt.imshow(image_array)\n",
"plt.subplot(1, 3, 2)\n",
"plt.imshow(image_array_orig)\n",
"plt.subplot(1, 3, 3)\n",
"plt.imshow(masked_image.getImage().getArray())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load the PSF array from disk and convert to float64"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"psf_array = fits.getdata('./gauss_0.70_0.060.fits')\n",
"psf_array = psf_array.astype(numpy.float64)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a PSF object from a NumPy array of the PSF image. This should have odd dimensions, and be\n",
"centered on the center pixel."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"psf_image = lsst.afw.image.ImageD(psf_array)\n",
"psf_kernel = lsst.afw.math.FixedKernel(psf_image)\n",
"psf = lsst.meas.algorithms.KernelPsf(psf_kernel)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create an Exposure object that combines the MaskedImage with the PSF. Exposures can hold\n",
"quite a bit more (WCS, photometric zeropoint (`Calib`), but I think this is all we need for now."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"exposure = lsst.afw.image.ExposureF(masked_image)\n",
"exposure.setPsf(psf)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Run the tasks"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"table = lsst.afw.table.SourceTable.make(schema) # this is really just a factory for records, not a table\n",
"detect_result = detect.run(table, exposure)\n",
"catalog = detect_result.sources # this is the actual catalog, but most of it's still empty\n",
"deblend.run(exposure, catalog, exposure.getPsf())\n",
"measure.run(catalog, exposure)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This outputs something like:\n",
"\n",
" sourceDetection: Detected 0 positive sources to 5 sigma.\n",
" sourceDetection: Resubtracting the background after object detection\n",
" sourceDeblend: Deblending 0 sources\n",
" sourceDeblend: Deblended: of 0 sources, 0 were deblended, creating 0 children, total 0 sources\n",
" measurement: Measuring 0 sources (0 parents, 0 children)\n",
"\n",
"in the console. However, I noticed something weird while playing with the variance values. The image I pass in as `image_array` is getting modified in-place by the measurement tasks."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x117193c10>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n4MlxL6b4CAcAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x106949310>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplot(1,3,1)\n",
"plt.imshow(image_array)\n",
"plt.subplot(1, 3, 2)\n",
"plt.imshow(image_array_orig)\n",
"plt.subplot(1, 3, 3)\n",
"plt.imshow(masked_image.getImage().getArray())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Catalog should now be filled. To inspect the results, it'll be easier to first make it contiguous, and\n",
"then get an Astropy table view:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"catalog = catalog.copy(deep=True)\n",
"catalog.writeFits('./detections.fits')"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: hdu= was not specified but multiple tables are present, reading in first available table (hdu=1) [astropy.io.fits.connect]\n"
]
},
{
"data": {
"text/html": [
"&lt;Table length=0&gt;\n",
"<table id=\"table4687702288\" class=\"table-striped table-bordered table-condensed\">\n",
"<thead><tr><th>flags [69]</th><th>id</th><th>coord_ra</th><th>coord_dec</th><th>parent</th><th>deblend_nChild</th><th>deblend_psfCenter_x</th><th>deblend_psfCenter_y</th><th>deblend_psfFlux</th><th>base_GaussianCentroid_x</th><th>base_GaussianCentroid_y</th><th>base_NaiveCentroid_x</th><th>base_NaiveCentroid_y</th><th>base_SdssCentroid_x</th><th>base_SdssCentroid_y</th><th>base_SdssCentroid_xSigma</th><th>base_SdssCentroid_ySigma</th><th>base_SdssShape_xx</th><th>base_SdssShape_yy</th><th>base_SdssShape_xy</th><th>base_SdssShape_xxSigma</th><th>base_SdssShape_yySigma</th><th>base_SdssShape_xySigma</th><th>base_SdssShape_x</th><th>base_SdssShape_y</th><th>base_SdssShape_flux</th><th>base_SdssShape_fluxSigma</th><th>base_SdssShape_flux_xx_Cov</th><th>base_SdssShape_flux_yy_Cov</th><th>base_SdssShape_flux_xy_Cov</th><th>base_CircularApertureFlux_3_0_flux</th><th>base_CircularApertureFlux_3_0_fluxSigma</th><th>base_CircularApertureFlux_4_5_flux</th><th>base_CircularApertureFlux_4_5_fluxSigma</th><th>base_CircularApertureFlux_6_0_flux</th><th>base_CircularApertureFlux_6_0_fluxSigma</th><th>base_CircularApertureFlux_9_0_flux</th><th>base_CircularApertureFlux_9_0_fluxSigma</th><th>base_CircularApertureFlux_12_0_flux</th><th>base_CircularApertureFlux_12_0_fluxSigma</th><th>base_CircularApertureFlux_17_0_flux</th><th>base_CircularApertureFlux_17_0_fluxSigma</th><th>base_CircularApertureFlux_25_0_flux</th><th>base_CircularApertureFlux_25_0_fluxSigma</th><th>base_CircularApertureFlux_35_0_flux</th><th>base_CircularApertureFlux_35_0_fluxSigma</th><th>base_CircularApertureFlux_50_0_flux</th><th>base_CircularApertureFlux_50_0_fluxSigma</th><th>base_CircularApertureFlux_70_0_flux</th><th>base_CircularApertureFlux_70_0_fluxSigma</th><th>base_GaussianFlux_flux</th><th>base_GaussianFlux_fluxSigma</th><th>base_PsfFlux_flux</th><th>base_PsfFlux_fluxSigma</th><th>base_Variance_value</th><th>base_ClassificationExtendedness_value</th><th>base_PsfFlux_apCorr</th><th>base_PsfFlux_apCorrSigma</th><th>base_GaussianFlux_apCorr</th><th>base_GaussianFlux_apCorrSigma</th><th>footprint</th></tr></thead>\n",
"<thead><tr><th></th><th></th><th></th><th></th><th></th><th></th><th>pix</th><th>pix</th><th></th><th>pix</th><th>pix</th><th>pix</th><th>pix</th><th>pix</th><th>pix</th><th>pix</th><th>pix</th><th>pix2</th><th>pix2</th><th>pix2</th><th>pix2</th><th>pix2</th><th>pix2</th><th>pix</th><th>pix</th><th>ct</th><th>ct</th><th>ct pix2</th><th>ct pix2</th><th>ct pix2</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th>ct</th><th></th><th></th><th></th><th></th><th></th><th></th><th></th></tr></thead>\n",
"<thead><tr><th>bool</th><th>int64</th><th>float64</th><th>float64</th><th>int64</th><th>int32</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float32</th><th>float32</th><th>float64</th><th>float64</th><th>float64</th><th>float32</th><th>float32</th><th>float32</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float32</th><th>float32</th><th>float32</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>float64</th><th>int32</th></tr></thead>\n",
"</table>"
],
"text/plain": [
"<Table length=0>\n",
"flags [69] id coord_ra ... base_GaussianFlux_apCorrSigma footprint\n",
" ... \n",
" bool int64 float64 ... float64 int32 \n",
"---------- ----- -------- ... ----------------------------- ---------"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from astropy.table import Table\n",
"Table.read('./detections.fits')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
SIMPLE = T / file does conform to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 0 / number of data axes EXTEND = T / FITS dataset may contain extensions COMMENT FITS (Flexible Image Transport System) format is defined in 'AstronomyCOMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / 8-bit bytes NAXIS = 2 / 2-dimensional binary table NAXIS1 = 449 / width of table in bytes NAXIS2 = 0 / number of rows in table PCOUNT = 0 / size of special data area GCOUNT = 1 / one data group (required keyword) TFIELDS = 61 / number of fields in each row TTYPE1 = 'flags ' / bits for all Flag fields; see also TFLAGn TFORM1 = '69X ' / format of field FLAGCOL = 1 / Column number for the bitflags. TTYPE2 = 'id ' / unique ID TFORM2 = '1K ' / format of field TDOC2 = 'unique ID' TCCLS2 = 'Scalar ' / Field template used by lsst.afw.table TTYPE3 = 'coord_ra' / position in ra/dec TFORM3 = '1D ' / format of field TDOC3 = 'position in ra/dec' TCCLS3 = 'Angle ' / Field template used by lsst.afw.table TTYPE4 = 'coord_dec' / position in ra/dec TFORM4 = '1D ' / format of field TDOC4 = 'position in ra/dec' TCCLS4 = 'Angle ' / Field template used by lsst.afw.table TTYPE5 = 'parent ' / unique ID of parent source TFORM5 = '1K ' / format of field TDOC5 = 'unique ID of parent source' TCCLS5 = 'Scalar ' / Field template used by lsst.afw.table TFLAG1 = 'flags_negative' TFDOC1 = 'set if source was detected as significantly negative' TTYPE6 = 'deblend_nChild' / Number of children this object has (defaults toTFORM6 = '1J ' / format of field TDOC6 = 'Number of children this object has (defaults to 0)' TCCLS6 = 'Scalar ' / Field template used by lsst.afw.table TFLAG2 = 'deblend_deblendedAsPsf' TFDOC2 = 'Deblender thought this source looked like a PSF' TTYPE7 = 'deblend_psfCenter_x' / If deblended-as-psf, the PSF centroid TFORM7 = '1D ' / format of field TDOC7 = 'If deblended-as-psf, the PSF centroid' TUNIT7 = 'pixel ' TCCLS7 = 'Scalar ' / Field template used by lsst.afw.table TTYPE8 = 'deblend_psfCenter_y' / If deblended-as-psf, the PSF centroid TFORM8 = '1D ' / format of field TDOC8 = 'If deblended-as-psf, the PSF centroid' TUNIT8 = 'pixel ' TCCLS8 = 'Scalar ' / Field template used by lsst.afw.table TTYPE9 = 'deblend_psfFlux' / If deblended-as-psf, the PSF flux TFORM9 = '1D ' / format of field TDOC9 = 'If deblended-as-psf, the PSF flux' TCCLS9 = 'Scalar ' / Field template used by lsst.afw.table TFLAG3 = 'deblend_tooManyPeaks' TFDOC3 = 'Source had too many peaks; only the brightest were included' TFLAG4 = 'deblend_parentTooBig' TFDOC4 = 'Parent footprint covered too many pixels' TFLAG5 = 'deblend_masked' TFDOC5 = 'Parent footprint was predominantly masked' TFLAG6 = 'deblend_skipped' TFDOC6 = 'Deblender skipped this source' TFLAG7 = 'deblend_rampedTemplate' TFDOC7 = 'This source was near an image edge and the deblender used "ramp" ed&'CONTINUE 'ge-handling.' TFLAG8 = 'deblend_patchedTemplate' TFDOC8 = 'This source was near an image edge and the deblender used "patched"&'CONTINUE ' edge-handling.' TFLAG9 = 'deblend_hasStrayFlux' TFDOC9 = 'This source was assigned some stray flux' TTYPE10 = 'base_GaussianCentroid_x' / centroid from Gaussian Centroid algorithm TFORM10 = '1D ' / format of field TDOC10 = 'centroid from Gaussian Centroid algorithm' TUNIT10 = 'pixel ' TCCLS10 = 'Scalar ' / Field template used by lsst.afw.table TTYPE11 = 'base_GaussianCentroid_y' / centroid from Gaussian Centroid algorithm TFORM11 = '1D ' / format of field TDOC11 = 'centroid from Gaussian Centroid algorithm' TUNIT11 = 'pixel ' TCCLS11 = 'Scalar ' / Field template used by lsst.afw.table TFLAG10 = 'base_GaussianCentroid_flag' TFDOC10 = 'general failure flag, set if anything went wrong' TFLAG11 = 'base_GaussianCentroid_flag_noPeak' TFDOC11 = 'Fitted Centroid has a negative peak' TTYPE12 = 'base_NaiveCentroid_x' / centroid from Naive Centroid algorithm TFORM12 = '1D ' / format of field TDOC12 = 'centroid from Naive Centroid algorithm' TUNIT12 = 'pixel ' TCCLS12 = 'Scalar ' / Field template used by lsst.afw.table TTYPE13 = 'base_NaiveCentroid_y' / centroid from Naive Centroid algorithm TFORM13 = '1D ' / format of field TDOC13 = 'centroid from Naive Centroid algorithm' TUNIT13 = 'pixel ' TCCLS13 = 'Scalar ' / Field template used by lsst.afw.table TFLAG12 = 'base_NaiveCentroid_flag' TFDOC12 = 'general failure flag, set if anything went wrong' TFLAG13 = 'base_NaiveCentroid_flag_noCounts' TFDOC13 = 'Object to be centroided has no counts' TFLAG14 = 'base_NaiveCentroid_flag_edge' TFDOC14 = 'Object too close to edge' TTYPE14 = 'base_SdssCentroid_x' / centroid from Sdss Centroid algorithm TFORM14 = '1D ' / format of field TDOC14 = 'centroid from Sdss Centroid algorithm' TUNIT14 = 'pixel ' TCCLS14 = 'Scalar ' / Field template used by lsst.afw.table TTYPE15 = 'base_SdssCentroid_y' / centroid from Sdss Centroid algorithm TFORM15 = '1D ' / format of field TDOC15 = 'centroid from Sdss Centroid algorithm' TUNIT15 = 'pixel ' TCCLS15 = 'Scalar ' / Field template used by lsst.afw.table TTYPE16 = 'base_SdssCentroid_xSigma' / 1-sigma uncertainty on x position TFORM16 = '1E ' / format of field TDOC16 = '1-sigma uncertainty on x position' TUNIT16 = 'pixel ' TCCLS16 = 'Scalar ' / Field template used by lsst.afw.table TTYPE17 = 'base_SdssCentroid_ySigma' / 1-sigma uncertainty on y position TFORM17 = '1E ' / format of field TDOC17 = '1-sigma uncertainty on y position' TUNIT17 = 'pixel ' TCCLS17 = 'Scalar ' / Field template used by lsst.afw.table TFLAG15 = 'base_SdssCentroid_flag' TFDOC15 = 'general failure flag, set if anything went wrong' TFLAG16 = 'base_SdssCentroid_flag_edge' TFDOC16 = 'Object too close to edge' TFLAG17 = 'base_SdssCentroid_flag_noSecondDerivative' TFDOC17 = 'Vanishing second derivative' TFLAG18 = 'base_SdssCentroid_flag_almostNoSecondDerivative' TFDOC18 = 'Almost vanishing second derivative' TFLAG19 = 'base_SdssCentroid_flag_notAtMaximum' TFDOC19 = 'Object is not at a maximum' TTYPE18 = 'base_SdssShape_xx' / elliptical Gaussian adaptive moments TFORM18 = '1D ' / format of field TDOC18 = 'elliptical Gaussian adaptive moments' TUNIT18 = 'pixel^2 ' TCCLS18 = 'Scalar ' / Field template used by lsst.afw.table TTYPE19 = 'base_SdssShape_yy' / elliptical Gaussian adaptive moments TFORM19 = '1D ' / format of field TDOC19 = 'elliptical Gaussian adaptive moments' TUNIT19 = 'pixel^2 ' TCCLS19 = 'Scalar ' / Field template used by lsst.afw.table TTYPE20 = 'base_SdssShape_xy' / elliptical Gaussian adaptive moments TFORM20 = '1D ' / format of field TDOC20 = 'elliptical Gaussian adaptive moments' TUNIT20 = 'pixel^2 ' TCCLS20 = 'Scalar ' / Field template used by lsst.afw.table TTYPE21 = 'base_SdssShape_xxSigma' / 1-sigma uncertainty on xx moment TFORM21 = '1E ' / format of field TDOC21 = '1-sigma uncertainty on xx moment' TUNIT21 = 'pixel^2 ' TCCLS21 = 'Scalar ' / Field template used by lsst.afw.table TTYPE22 = 'base_SdssShape_yySigma' / 1-sigma uncertainty on yy moment TFORM22 = '1E ' / format of field TDOC22 = '1-sigma uncertainty on yy moment' TUNIT22 = 'pixel^2 ' TCCLS22 = 'Scalar ' / Field template used by lsst.afw.table TTYPE23 = 'base_SdssShape_xySigma' / 1-sigma uncertainty on xy moment TFORM23 = '1E ' / format of field TDOC23 = '1-sigma uncertainty on xy moment' TUNIT23 = 'pixel^2 ' TCCLS23 = 'Scalar ' / Field template used by lsst.afw.table TTYPE24 = 'base_SdssShape_x' / elliptical Gaussian adaptive moments TFORM24 = '1D ' / format of field TDOC24 = 'elliptical Gaussian adaptive moments' TUNIT24 = 'pixel ' TCCLS24 = 'Scalar ' / Field template used by lsst.afw.table TTYPE25 = 'base_SdssShape_y' / elliptical Gaussian adaptive moments TFORM25 = '1D ' / format of field TDOC25 = 'elliptical Gaussian adaptive moments' TUNIT25 = 'pixel ' TCCLS25 = 'Scalar ' / Field template used by lsst.afw.table TTYPE26 = 'base_SdssShape_flux' / elliptical Gaussian adaptive moments TFORM26 = '1D ' / format of field TDOC26 = 'elliptical Gaussian adaptive moments' TUNIT26 = 'count ' TCCLS26 = 'Scalar ' / Field template used by lsst.afw.table TTYPE27 = 'base_SdssShape_fluxSigma' / 1-sigma flux uncertainty TFORM27 = '1D ' / format of field TDOC27 = '1-sigma flux uncertainty' TUNIT27 = 'count ' TCCLS27 = 'Scalar ' / Field template used by lsst.afw.table TTYPE28 = 'base_SdssShape_flux_xx_Cov' / uncertainty covariance between base_SdsTFORM28 = '1E ' / format of field TDOC28 = 'uncertainty covariance between base_SdssShape_flux and base_SdssSha&'CONTINUE 'pe_xx ' TUNIT28 = 'count*pixel^2' TCCLS28 = 'Scalar ' / Field template used by lsst.afw.table TTYPE29 = 'base_SdssShape_flux_yy_Cov' / uncertainty covariance between base_SdsTFORM29 = '1E ' / format of field TDOC29 = 'uncertainty covariance between base_SdssShape_flux and base_SdssSha&'CONTINUE 'pe_yy ' TUNIT29 = 'count*pixel^2' TCCLS29 = 'Scalar ' / Field template used by lsst.afw.table TTYPE30 = 'base_SdssShape_flux_xy_Cov' / uncertainty covariance between base_SdsTFORM30 = '1E ' / format of field TDOC30 = 'uncertainty covariance between base_SdssShape_flux and base_SdssSha&'CONTINUE 'pe_xy ' TUNIT30 = 'count*pixel^2' TCCLS30 = 'Scalar ' / Field template used by lsst.afw.table TFLAG20 = 'base_SdssShape_flag' TFDOC20 = 'general failure flag, set if anything went wrong' TFLAG21 = 'base_SdssShape_flag_unweightedBad' TFDOC21 = 'Both weighted and unweighted moments were invalid' TFLAG22 = 'base_SdssShape_flag_unweighted' TFDOC22 = 'Weighted moments converged to an invalid value; using unweighted mo&'CONTINUE 'ments ' TFLAG23 = 'base_SdssShape_flag_shift' TFDOC23 = 'centroid shifted by more than the maximum allowed amount' TFLAG24 = 'base_SdssShape_flag_maxIter' TFDOC24 = 'Too many iterations in adaptive moments' TTYPE31 = 'base_CircularApertureFlux_3_0_flux' / flux within 3.000000-pixel aperTFORM31 = '1D ' / format of field TDOC31 = 'flux within 3.000000-pixel aperture' TUNIT31 = 'count ' TCCLS31 = 'Scalar ' / Field template used by lsst.afw.table TTYPE32 = 'base_CircularApertureFlux_3_0_fluxSigma' / 1-sigma flux uncertainty TFORM32 = '1D ' / format of field TDOC32 = '1-sigma flux uncertainty' TUNIT32 = 'count ' TCCLS32 = 'Scalar ' / Field template used by lsst.afw.table TFLAG25 = 'base_CircularApertureFlux_3_0_flag' TFDOC25 = 'general failure flag' TFLAG26 = 'base_CircularApertureFlux_3_0_flag_apertureTruncated' TFDOC26 = 'aperture did not fit within measurement image' TFLAG27 = 'base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated' TFDOC27 = 'full sinc coefficient image did not fit within measurement image' TTYPE33 = 'base_CircularApertureFlux_4_5_flux' / flux within 4.500000-pixel aperTFORM33 = '1D ' / format of field TDOC33 = 'flux within 4.500000-pixel aperture' TUNIT33 = 'count ' TCCLS33 = 'Scalar ' / Field template used by lsst.afw.table TTYPE34 = 'base_CircularApertureFlux_4_5_fluxSigma' / 1-sigma flux uncertainty TFORM34 = '1D ' / format of field TDOC34 = '1-sigma flux uncertainty' TUNIT34 = 'count ' TCCLS34 = 'Scalar ' / Field template used by lsst.afw.table TFLAG28 = 'base_CircularApertureFlux_4_5_flag' TFDOC28 = 'general failure flag' TFLAG29 = 'base_CircularApertureFlux_4_5_flag_apertureTruncated' TFDOC29 = 'aperture did not fit within measurement image' TFLAG30 = 'base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated' TFDOC30 = 'full sinc coefficient image did not fit within measurement image' TTYPE35 = 'base_CircularApertureFlux_6_0_flux' / flux within 6.000000-pixel aperTFORM35 = '1D ' / format of field TDOC35 = 'flux within 6.000000-pixel aperture' TUNIT35 = 'count ' TCCLS35 = 'Scalar ' / Field template used by lsst.afw.table TTYPE36 = 'base_CircularApertureFlux_6_0_fluxSigma' / 1-sigma flux uncertainty TFORM36 = '1D ' / format of field TDOC36 = '1-sigma flux uncertainty' TUNIT36 = 'count ' TCCLS36 = 'Scalar ' / Field template used by lsst.afw.table TFLAG31 = 'base_CircularApertureFlux_6_0_flag' TFDOC31 = 'general failure flag' TFLAG32 = 'base_CircularApertureFlux_6_0_flag_apertureTruncated' TFDOC32 = 'aperture did not fit within measurement image' TFLAG33 = 'base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated' TFDOC33 = 'full sinc coefficient image did not fit within measurement image' TTYPE37 = 'base_CircularApertureFlux_9_0_flux' / flux within 9.000000-pixel aperTFORM37 = '1D ' / format of field TDOC37 = 'flux within 9.000000-pixel aperture' TUNIT37 = 'count ' TCCLS37 = 'Scalar ' / Field template used by lsst.afw.table TTYPE38 = 'base_CircularApertureFlux_9_0_fluxSigma' / 1-sigma flux uncertainty TFORM38 = '1D ' / format of field TDOC38 = '1-sigma flux uncertainty' TUNIT38 = 'count ' TCCLS38 = 'Scalar ' / Field template used by lsst.afw.table TFLAG34 = 'base_CircularApertureFlux_9_0_flag' TFDOC34 = 'general failure flag' TFLAG35 = 'base_CircularApertureFlux_9_0_flag_apertureTruncated' TFDOC35 = 'aperture did not fit within measurement image' TFLAG36 = 'base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated' TFDOC36 = 'full sinc coefficient image did not fit within measurement image' TTYPE39 = 'base_CircularApertureFlux_12_0_flux' / flux within 12.000000-pixel apTFORM39 = '1D ' / format of field TDOC39 = 'flux within 12.000000-pixel aperture' TUNIT39 = 'count ' TCCLS39 = 'Scalar ' / Field template used by lsst.afw.table TTYPE40 = 'base_CircularApertureFlux_12_0_fluxSigma' / 1-sigma flux uncertainty TFORM40 = '1D ' / format of field TDOC40 = '1-sigma flux uncertainty' TUNIT40 = 'count ' TCCLS40 = 'Scalar ' / Field template used by lsst.afw.table TFLAG37 = 'base_CircularApertureFlux_12_0_flag' TFDOC37 = 'general failure flag' TFLAG38 = 'base_CircularApertureFlux_12_0_flag_apertureTruncated' TFDOC38 = 'aperture did not fit within measurement image' TTYPE41 = 'base_CircularApertureFlux_17_0_flux' / flux within 17.000000-pixel apTFORM41 = '1D ' / format of field TDOC41 = 'flux within 17.000000-pixel aperture' TUNIT41 = 'count ' TCCLS41 = 'Scalar ' / Field template used by lsst.afw.table TTYPE42 = 'base_CircularApertureFlux_17_0_fluxSigma' / 1-sigma flux uncertainty TFORM42 = '1D ' / format of field TDOC42 = '1-sigma flux uncertainty' TUNIT42 = 'count ' TCCLS42 = 'Scalar ' / Field template used by lsst.afw.table TFLAG39 = 'base_CircularApertureFlux_17_0_flag' TFDOC39 = 'general failure flag' TFLAG40 = 'base_CircularApertureFlux_17_0_flag_apertureTruncated' TFDOC40 = 'aperture did not fit within measurement image' TTYPE43 = 'base_CircularApertureFlux_25_0_flux' / flux within 25.000000-pixel apTFORM43 = '1D ' / format of field TDOC43 = 'flux within 25.000000-pixel aperture' TUNIT43 = 'count ' TCCLS43 = 'Scalar ' / Field template used by lsst.afw.table TTYPE44 = 'base_CircularApertureFlux_25_0_fluxSigma' / 1-sigma flux uncertainty TFORM44 = '1D ' / format of field TDOC44 = '1-sigma flux uncertainty' TUNIT44 = 'count ' TCCLS44 = 'Scalar ' / Field template used by lsst.afw.table TFLAG41 = 'base_CircularApertureFlux_25_0_flag' TFDOC41 = 'general failure flag' TFLAG42 = 'base_CircularApertureFlux_25_0_flag_apertureTruncated' TFDOC42 = 'aperture did not fit within measurement image' TTYPE45 = 'base_CircularApertureFlux_35_0_flux' / flux within 35.000000-pixel apTFORM45 = '1D ' / format of field TDOC45 = 'flux within 35.000000-pixel aperture' TUNIT45 = 'count ' TCCLS45 = 'Scalar ' / Field template used by lsst.afw.table TTYPE46 = 'base_CircularApertureFlux_35_0_fluxSigma' / 1-sigma flux uncertainty TFORM46 = '1D ' / format of field TDOC46 = '1-sigma flux uncertainty' TUNIT46 = 'count ' TCCLS46 = 'Scalar ' / Field template used by lsst.afw.table TFLAG43 = 'base_CircularApertureFlux_35_0_flag' TFDOC43 = 'general failure flag' TFLAG44 = 'base_CircularApertureFlux_35_0_flag_apertureTruncated' TFDOC44 = 'aperture did not fit within measurement image' TTYPE47 = 'base_CircularApertureFlux_50_0_flux' / flux within 50.000000-pixel apTFORM47 = '1D ' / format of field TDOC47 = 'flux within 50.000000-pixel aperture' TUNIT47 = 'count ' TCCLS47 = 'Scalar ' / Field template used by lsst.afw.table TTYPE48 = 'base_CircularApertureFlux_50_0_fluxSigma' / 1-sigma flux uncertainty TFORM48 = '1D ' / format of field TDOC48 = '1-sigma flux uncertainty' TUNIT48 = 'count ' TCCLS48 = 'Scalar ' / Field template used by lsst.afw.table TFLAG45 = 'base_CircularApertureFlux_50_0_flag' TFDOC45 = 'general failure flag' TFLAG46 = 'base_CircularApertureFlux_50_0_flag_apertureTruncated' TFDOC46 = 'aperture did not fit within measurement image' TTYPE49 = 'base_CircularApertureFlux_70_0_flux' / flux within 70.000000-pixel apTFORM49 = '1D ' / format of field TDOC49 = 'flux within 70.000000-pixel aperture' TUNIT49 = 'count ' TCCLS49 = 'Scalar ' / Field template used by lsst.afw.table TTYPE50 = 'base_CircularApertureFlux_70_0_fluxSigma' / 1-sigma flux uncertainty TFORM50 = '1D ' / format of field TDOC50 = '1-sigma flux uncertainty' TUNIT50 = 'count ' TCCLS50 = 'Scalar ' / Field template used by lsst.afw.table TFLAG47 = 'base_CircularApertureFlux_70_0_flag' TFDOC47 = 'general failure flag' TFLAG48 = 'base_CircularApertureFlux_70_0_flag_apertureTruncated' TFDOC48 = 'aperture did not fit within measurement image' TTYPE51 = 'base_GaussianFlux_flux' / flux from Gaussian Flux algorithm TFORM51 = '1D ' / format of field TDOC51 = 'flux from Gaussian Flux algorithm' TUNIT51 = 'count ' TCCLS51 = 'Scalar ' / Field template used by lsst.afw.table TTYPE52 = 'base_GaussianFlux_fluxSigma' / 1-sigma flux uncertainty TFORM52 = '1D ' / format of field TDOC52 = '1-sigma flux uncertainty' TUNIT52 = 'count ' TCCLS52 = 'Scalar ' / Field template used by lsst.afw.table TFLAG49 = 'base_GaussianFlux_flag' TFDOC49 = 'general failure flag, set if anything went wrong' TFLAG50 = 'base_PixelFlags_flag' TFDOC50 = 'general failure flag, set if anything went wring' TFLAG51 = 'base_PixelFlags_flag_offimage' TFDOC51 = 'Source center is off image' TFLAG52 = 'base_PixelFlags_flag_edge' TFDOC52 = 'Source is outside usable exposure region (masked EDGE or NO_DATA)' TFLAG53 = 'base_PixelFlags_flag_interpolated' TFDOC53 = 'Interpolated pixel in the Source footprint' TFLAG54 = 'base_PixelFlags_flag_saturated' TFDOC54 = 'Saturated pixel in the Source footprint' TFLAG55 = 'base_PixelFlags_flag_cr' TFDOC55 = 'Cosmic ray in the Source footprint' TFLAG56 = 'base_PixelFlags_flag_bad' TFDOC56 = 'Bad pixel in the Source footprint' TFLAG57 = 'base_PixelFlags_flag_suspect' TFDOC57 = 'Source''s footprint includes suspect pixels' TFLAG58 = 'base_PixelFlags_flag_interpolatedCenter' TFDOC58 = 'Interpolated pixel in the Source center' TFLAG59 = 'base_PixelFlags_flag_saturatedCenter' TFDOC59 = 'Saturated pixel in the Source center' TFLAG60 = 'base_PixelFlags_flag_crCenter' TFDOC60 = 'Cosmic ray in the Source center' TFLAG61 = 'base_PixelFlags_flag_suspectCenter' TFDOC61 = 'Source''s center is close to suspect pixels' TTYPE53 = 'base_PsfFlux_flux' / flux derived from linear least-squares fit of PTFORM53 = '1D ' / format of field TDOC53 = 'flux derived from linear least-squares fit of PSF model' TUNIT53 = 'count ' TCCLS53 = 'Scalar ' / Field template used by lsst.afw.table TTYPE54 = 'base_PsfFlux_fluxSigma' / 1-sigma flux uncertainty TFORM54 = '1D ' / format of field TDOC54 = '1-sigma flux uncertainty' TUNIT54 = 'count ' TCCLS54 = 'Scalar ' / Field template used by lsst.afw.table TFLAG62 = 'base_PsfFlux_flag' TFDOC62 = 'general failure flag' TFLAG63 = 'base_PsfFlux_flag_noGoodPixels' TFDOC63 = 'not enough non-rejected pixels in data to attempt the fit' TFLAG64 = 'base_PsfFlux_flag_edge' TFDOC64 = 'object was too close to the edge of the image to use the full PSF m&'CONTINUE 'odel ' TTYPE55 = 'base_Variance_value' / Variance at object position TFORM55 = '1D ' / format of field TDOC55 = 'Variance at object position' TCCLS55 = 'Scalar ' / Field template used by lsst.afw.table TFLAG65 = 'base_Variance_flag' TFDOC65 = 'Set to True for any fatal failure' TFLAG66 = 'base_Variance_flag_emptyFootprint' TFDOC66 = 'Set to True when the footprint has no usable pixels' TTYPE56 = 'base_ClassificationExtendedness_value' / Set to 1 for extended sourceTFORM56 = '1D ' / format of field TDOC56 = 'Set to 1 for extended sources, 0 for point sources.' TCCLS56 = 'Scalar ' / Field template used by lsst.afw.table TFLAG67 = 'base_ClassificationExtendedness_flag' TFDOC67 = 'Set to 1 for any fatal failure.' TTYPE57 = 'base_PsfFlux_apCorr' / aperture correction applied to base_PsfFlux TFORM57 = '1D ' / format of field TDOC57 = 'aperture correction applied to base_PsfFlux' TCCLS57 = 'Scalar ' / Field template used by lsst.afw.table TTYPE58 = 'base_PsfFlux_apCorrSigma' / aperture correction applied to base_PsfFlTFORM58 = '1D ' / format of field TDOC58 = 'aperture correction applied to base_PsfFlux' TCCLS58 = 'Scalar ' / Field template used by lsst.afw.table TFLAG68 = 'base_PsfFlux_flag_apCorr' TFDOC68 = 'set if unable to aperture correct base_PsfFlux' TTYPE59 = 'base_GaussianFlux_apCorr' / aperture correction applied to base_GaussTFORM59 = '1D ' / format of field TDOC59 = 'aperture correction applied to base_GaussianFlux' TCCLS59 = 'Scalar ' / Field template used by lsst.afw.table TTYPE60 = 'base_GaussianFlux_apCorrSigma' / aperture correction applied to base_TFORM60 = '1D ' / format of field TDOC60 = 'aperture correction applied to base_GaussianFlux' TCCLS60 = 'Scalar ' / Field template used by lsst.afw.table TFLAG69 = 'base_GaussianFlux_flag_apCorr' TFDOC69 = 'set if unable to aperture correct base_GaussianFlux' TTYPE61 = 'footprint' / archive ID for Footprint TFORM61 = '1J ' / format of field TDOC61 = 'archive ID for Footprint' TCCLS61 = 'Scalar ' / Field template used by lsst.afw.table ALIAS = 'base_CircularApertureFlux_flag_badCentroid:base_SdssCentroid_flag' ALIAS = 'base_GaussianCentroid_flag_badInitialCentroid:base_SdssCentroid_flag'ALIAS = 'base_GaussianFlux_flag_badCentroid:base_SdssCentroid_flag' ALIAS = 'base_GaussianFlux_flag_badShape:base_SdssShape_flag' ALIAS = 'base_NaiveCentroid_flag_badInitialCentroid:base_SdssCentroid_flag' ALIAS = 'base_PsfFlux_flag_badCentroid:base_SdssCentroid_flag' ALIAS = 'base_SdssShape_flag_badCentroid:base_SdssCentroid_flag' ALIAS = 'base_Variance_flag_badCentroid:base_SdssCentroid_flag' ALIAS = 'slot_ApFlux:base_CircularApertureFlux_3_0' ALIAS = 'slot_CalibFlux:base_CircularApertureFlux_12_0' ALIAS = 'slot_Centroid:base_SdssCentroid' ALIAS = 'slot_InstFlux:base_GaussianFlux' ALIAS = 'slot_ModelFlux:base_GaussianFlux' ALIAS = 'slot_PsfFlux:base_PsfFlux' ALIAS = 'slot_Shape:base_SdssShape' AR_HDU = 3 / HDU containing the archive index for non-recordHIERARCH AFW_TABLE_VERSION = 1 AFW_TYPE= 'SOURCE ' / Tells lsst::afw to load this as a Source table.END XTENSION= 'BINTABLE' / binary table extension BITPIX = 8 / 8-bit bytes NAXIS = 2 / 2-dimensional binary table NAXIS1 = 148 / width of table in bytes NAXIS2 = 0 / number of rows in table PCOUNT = 0 / size of special data area GCOUNT = 1 / one data group (required keyword) TFIELDS = 7 / number of fields in each row TTYPE1 = 'id ' / Archive ID of the persistable object that owns TFORM1 = '1J ' / format of field TDOC1 = 'Archive ID of the persistable object that owns the records pointed &'CONTINUE 'at by this entry' TCCLS1 = 'Scalar ' / Field template used by lsst.afw.table TTYPE2 = 'cat.archive' / index of the catalog this entry points to, fromTFORM2 = '1J ' / format of field TDOC2 = 'index of the catalog this entry points to, from the perspective of &'CONTINUE 'the archive' TCCLS2 = 'Scalar ' / Field template used by lsst.afw.table TTYPE3 = 'cat.persistable' / index of the catalog this entry points to, fromTFORM3 = '1J ' / format of field TDOC3 = 'index of the catalog this entry points to, from the perspective of &'CONTINUE 'the Persistable' TCCLS3 = 'Scalar ' / Field template used by lsst.afw.table TTYPE4 = 'row0 ' / first row used by the persistable object in thiTFORM4 = '1J ' / format of field TDOC4 = 'first row used by the persistable object in this catalog' TCCLS4 = 'Scalar ' / Field template used by lsst.afw.table TTYPE5 = 'nrows ' / number of rows used by the persistable object iTFORM5 = '1J ' / format of field TDOC5 = 'number of rows used by the persistable object in this catalog' TCCLS5 = 'Scalar ' / Field template used by lsst.afw.table TTYPE6 = 'name ' / unique name for the persistable object's class TFORM6 = '64A ' / format of field TDOC6 = 'unique name for the persistable object''s class' TCCLS6 = 'String ' / Field template used by lsst.afw.table TTYPE7 = 'module ' / Python module that should be imported to registTFORM7 = '64A ' / format of field TDOC7 = 'Python module that should be imported to register the object''s fac&'CONTINUE 'tory ' TCCLS7 = 'String ' / Field template used by lsst.afw.table EXTTYPE = 'ARCHIVE_INDEX' AR_CATN = 0 / # of this catalog relative to the start of thisAR_NCAT = 1 / # of catalogs in this archive, including the inHIERARCH AFW_TABLE_VERSION = 1 END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment