From a0ac2c932e864cee3e4adb020bad031a19e2014a Mon Sep 17 00:00:00 2001 From: ih64 Date: Thu, 6 Sep 2018 07:46:28 +0000 Subject: [PATCH 1/5] first commit with preliminary notebook --- Basics/afw_guided_tour.ipynb | 1431 ++++++++++++++++++++++++++++++++++ 1 file changed, 1431 insertions(+) create mode 100644 Basics/afw_guided_tour.ipynb diff --git a/Basics/afw_guided_tour.ipynb b/Basics/afw_guided_tour.ipynb new file mode 100644 index 00000000..913c5a8d --- /dev/null +++ b/Basics/afw_guided_tour.ipynb @@ -0,0 +1,1431 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# AFW Tables: A Guided Tour\n", + "
Owner(s): **Imran Hasan** ([@ih64](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@ih64)), **Second Owner** ([@username2](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@username2))\n", + "
Last Verified to Run: **20XX-XX-XX**\n", + "
Verified Stack Release: **16.0**\n", + "\n", + "### Learning Objectives:\n", + "\n", + "After working through this tutorial you should be able to: \n", + "1. Make a bare bones afw schema and table;\n", + "2. Set and get values in a schema and table;\n", + "3. Read and write a source detection catalog table;\n", + "4. Learn to use source detection catalog methods, and to avoid common pitfalls;\n", + "5. Learn to use source match vectors;\n", + "\n", + "### Logistics\n", + "This notebook is intended to be runnable on `lsst-lspdev.ncsa.illinois.edu` from a local git clone of https://github.com/LSSTScienceCollaborations/StackClub.\n", + "\n", + "## Set-up" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The next few cells give you some options for your \"Set-up\" section - you may not need them all." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll need the `stackclub` package to be installed. If you are not developing this package, you can install it using `pip`, like this:\n", + "```\n", + "pip install git+git://github.com/LSSTScienceCollaborations/StackClub.git#egg=stackclub\n", + "```\n", + "If you are developing the `stackclub` package (eg by adding modules to it to support the Stack Club tutorial that you are writing, you'll need to make a local, editable installation. In the top level folder of the `StackClub` repo, do:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/ishasan/lsst/StackClub/Basics\n" + ] + } + ], + "source": [ + "! cd .. && python setup.py -q develop --user && cd -" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When editing the `stackclub` package files, we want the latest version to be imported when we re-run the import command. To enable this, we need the %autoreload magic command." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "You can find the Stack version that this notebook is running by using eups list -s on the terminal command line:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "jld-lab-ishasan-r160\n", + "lsst_distrib 16.0+1 \tcurrent v16_0 setup\n" + ] + } + ], + "source": [ + "# What version of the Stack am I using?\n", + "! echo $HOSTNAME\n", + "! eups list -s | grep lsst_distrib" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "For this tutorial we'll need the following modules:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "#%matplotlib ipympl\n", + "\n", + "import os\n", + "import numpy as np\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "from IPython.display import IFrame, display, Markdown" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import lsst.daf.persistence as dafPersist\n", + "import lsst.daf.base as dafBase\n", + "\n", + "import lsst.afw.math as afwMath\n", + "import lsst.afw.geom as afwGeom\n", + "\n", + "import lsst.afw.detection as afwDetect\n", + "import lsst.afw.image as afwImage\n", + "import lsst.afw.table as afwTable\n", + "\n", + "import lsst.afw.display as afwDisplay" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Your first table\n", + "\n", + "To begin, we will make a bear bones afw table so we can clearly showcase important concepts. First we will make the simplest table possible by hand. While creating tables by hand will not likely be the standard use case, it is useful in a tutorail standpoint, as it will allow us to excercise concepts one at a time" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "outputs": [], + "source": [ + "#afw tables need a schemea to tell the table how its data are organized\n", + "#lets have a look at a simple schema\n", + "min_schema = afwTable.SourceTable.makeMinimalSchema()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Schema(\n", + " (Field['L'](name=\"id\", doc=\"unique ID\"), Key(offset=0, nElements=1)),\n", + " (Field['Angle'](name=\"coord_ra\", doc=\"position in ra/dec\"), Key(offset=8, nElements=1)),\n", + " (Field['Angle'](name=\"coord_dec\", doc=\"position in ra/dec\"), Key(offset=16, nElements=1)),\n", + " (Field['L'](name=\"parent\", doc=\"unique ID of parent source\"), Key(offset=24, nElements=1)),\n", + ")\n", + "\n" + ] + } + ], + "source": [ + "#but what is the schema exactly? priting it out can be informative\n", + "print(min_schema)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our schema contains 4 Fields: one for each celestial coordinate, an id that uniquely defines it, and a 'parent', which lists the id of the source this source was deblended from. We will deal with the parent column in more detail in a few cells, but for now you can ignore it.\n", + "\n", + "Each field has some accomanying information to go along with it. In addition to its name, we get a helpful docstring describing it. We also get the units that values for this field must have. For example, any value associated with the id key has to be a long, and all entries for celestial coordniates have to be instances of an Angle class. We will showcase the Angle class shortly.\n", + "\n", + "If printing out the schema gives you more information that you want, you can get the names. If the names are informative enough, this might be all you need." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'coord_dec', 'coord_ra', 'id', 'parent'}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min_schema.getNames()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Schema(\n", + " (Field['L'](name=\"id\", doc=\"unique ID\"), Key(offset=0, nElements=1)),\n", + " (Field['Angle'](name=\"coord_ra\", doc=\"position in ra/dec\"), Key(offset=8, nElements=1)),\n", + " (Field['Angle'](name=\"coord_dec\", doc=\"position in ra/dec\"), Key(offset=16, nElements=1)),\n", + " (Field['L'](name=\"parent\", doc=\"unique ID of parent source\"), Key(offset=24, nElements=1)),\n", + " (Field['F'](name=\"r_mag\", doc=\"r band flux\", units=\"mag\"), Key(offset=32, nElements=1)),\n", + ")\n", + "\n" + ] + } + ], + "source": [ + "#we can also add another field to the schema, using a call pattern like this\n", + "min_schema.addField(\"r_mag\", type=np.float32, doc=\"r band flux\", units=\"mag\")\n", + "#lets make sure the field was added by printing out the schema once more\n", + "print(min_schema)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We pause here to point ou some caviets. \n", + "1. schemas are append only. You can add new fields, but you cannot remove them. \n", + "2. the units you use have to be understood by astropy. You can find a list of acceptable units at the bottom of this page http://docs.astropy.org/en/stable/units/index.html#module-astropy.units\n", + "3. specific types are allowed. The short and long of it is you may use floats, ints, longs, strings, Angle objects, and arrays. For more details you can go to the bottom of this page http://doxygen.lsst.codes/stack/doxygen/x_masterDoxyDoc/afw_table.html" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "our minimal table has 0 rows\n" + ] + } + ], + "source": [ + "#now that we have a schema, we can use it to make a table\n", + "min_table = afwTable.BaseCatalog(min_schema)\n", + "#our table is empty, and we can check this by looking at its length\n", + "print('our minimal table has {} rows'.format(len(min_table)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will add some data to our minimal catalog. Catalogs are collections of 'records', which actually contain the table's data. To add some data to our catalog, we will have to create some records to add on. Records must adhere to the schema that the table has, and so we must add data in field by field." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#make a new record.\n", + "rec = min_table.addNew()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#grab a hold of the keys for the record. We will use these to add data \n", + "keys = min_schema.extract('*') #this returns a dictionary of all the fields\n", + "\n", + "#access the dictionary one field at a time, and grab each field's key\n", + "id_key = keys['id'].key\n", + "ra_key = keys['coord_ra'].key\n", + "dec_key = keys['coord_dec'].key\n", + "parent_key = keys['parent'].key\n", + "r_mag_key = keys['r_mag'].key\n", + "\n", + "#use the keys to add data in our record\n", + "rec.set(id_key, 1)\n", + "rec.set(r_mag_key, 19.0)\n", + "rec.set(ra_key, afwGeom.Angle(33.89))\n", + "rec.set(dec_key, afwGeom.Angle(42.1))\n", + "rec.set(parent_key, 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice to set the ra and dec, we needed to create afwGeom.Angle objects. These are in units of radians by default. Additionally, we set the parent to zero. This means this record refers to the object before any deblending occoured. Lets look at our table now to see how it stands" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + " id coord_ra coord_dec parent r_mag\n", + " rad rad mag \n", + "--- -------- --------- ------ -----\n", + " 1 33.89 42.1 0 19.0" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "min_table" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will flesh out the parent column a bit more by adding our next record. Notice we can keep using the keys we defined above. Notice our second record's parent is listed as 1. This means the object 2 was the result of being deblended from object 1, i.e. object 2 is a child object of object 1." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + " id coord_ra coord_dec parent r_mag\n", + " rad rad mag \n", + "--- -------- --------- ------ -----\n", + " 1 33.89 42.1 0 19.0\n", + " 2 32.01 42.5 1 18.5" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rec = min_table.addNew()\n", + "rec.set(id_key, 2)\n", + "rec.set(r_mag_key, 18.5)\n", + "rec.set(ra_key, afwGeom.Angle(32.01))\n", + "rec.set(dec_key, afwGeom.Angle(42.5))\n", + "rec.set(parent_key, 1)\n", + "min_table" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#your turn. add one more record to our table\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "id: 2\n", + "coord_ra: 32.01 rad\n", + "coord_dec: 42.5 rad\n", + "parent: 1\n", + "r_mag: 18.5" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#now that we have multiple records in our table, we can iterate over them, or select particular ones\n", + "min_table[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#you can grab values from particular records by using our keys\n", + "min_table[1].get(id_key)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using source catalogs produced by DM\n", + "\n", + "A more typical use case will be to read in a catalog that is produced by a DM process. We will show how to read in and work with a source catalog from HSC data in the following section. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### data access\n", + "If you know the path to your source catalog, there is a quick way to read it in. However, it is often more powerful to the 'data butler' to fetch data for you. The butler knows about camera geometry, sensor characteristics, where data are located, and so forth. Having this anciliary information on hand is often very useful. For completeness we will demostrate both ways of reading in a source catalog, with the note that it is largely considered better pratice to use the data butler. \n", + "\n", + "The data butler deserves a tutorial in its own right, and so we will defer further details on it until later. For now, you may think of it as an abstraction that allows you to quickly fetch data. The user just needs to point the butler to where to look and what to look for." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "#here's the quick and dirty way\n", + "file_path = '/project/shared/data/Twinkles_subset/output_data_v2/src/v235-fr/R22/S11.fits'\n", + "source_cat = afwTable.SourceCatalog.readFits(file_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/lsst/software/stack/stack/miniconda3-4.3.21-10a4fa6/Linux64/meas_mosaic/16.0+1/python/lsst/meas/mosaic/utils.py:30: UserWarning: \n", + "This call to matplotlib.use() has no effect because the backend has already\n", + "been chosen; matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", + "or matplotlib.backends is imported for the first time.\n", + "\n", + "The backend was *originally* set to 'module://ipykernel.pylab.backend_inline' by the following code:\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/runpy.py\", line 193, in _run_module_as_main\n", + " \"__main__\", mod_spec)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/runpy.py\", line 85, in _run_code\n", + " exec(code, run_globals)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/__main__.py\", line 3, in \n", + " app.launch_new_instance()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n", + " app.start()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelapp.py\", line 486, in start\n", + " self.io_loop.start()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/platform/asyncio.py\", line 127, in start\n", + " self.asyncio_loop.run_forever()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/asyncio/base_events.py\", line 421, in run_forever\n", + " self._run_once()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/asyncio/base_events.py\", line 1426, in _run_once\n", + " handle._run()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/asyncio/events.py\", line 127, in _run\n", + " self._callback(*self._args)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/ioloop.py\", line 759, in _run_callback\n", + " ret = callback()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/stack_context.py\", line 276, in null_wrapper\n", + " return fn(*args, **kwargs)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 536, in \n", + " self.io_loop.add_callback(lambda : self._handle_events(self.socket, 0))\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 450, in _handle_events\n", + " self._handle_recv()\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 480, in _handle_recv\n", + " self._run_callback(callback, msg)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 432, in _run_callback\n", + " callback(*args, **kwargs)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/stack_context.py\", line 276, in null_wrapper\n", + " return fn(*args, **kwargs)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 283, in dispatcher\n", + " return self.dispatch_shell(stream, msg)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 233, in dispatch_shell\n", + " handler(stream, idents, msg)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 399, in execute_request\n", + " user_expressions, allow_stdin)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/ipkernel.py\", line 208, in do_execute\n", + " res = shell.run_cell(code, store_history=store_history, silent=silent)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/zmqshell.py\", line 537, in run_cell\n", + " return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2666, in run_cell\n", + " self.events.trigger('post_run_cell', result)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/IPython/core/events.py\", line 88, in trigger\n", + " func(*args, **kwargs)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/pylab/backend_inline.py\", line 160, in configure_once\n", + " activate_matplotlib(backend)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/IPython/core/pylabtools.py\", line 311, in activate_matplotlib\n", + " matplotlib.pyplot.switch_backend(backend)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/matplotlib/pyplot.py\", line 231, in switch_backend\n", + " matplotlib.use(newbackend, warn=False, force=True)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/matplotlib/__init__.py\", line 1410, in use\n", + " reload(sys.modules['matplotlib.backends'])\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/importlib/__init__.py\", line 166, in reload\n", + " _bootstrap._exec(spec, module)\n", + " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/matplotlib/backends/__init__.py\", line 16, in \n", + " line for line in traceback.format_stack()\n", + "\n", + "\n", + " matplotlib.use(\"Agg\")\n" + ] + } + ], + "source": [ + "#here is the way to get the catalog with a butler\n", + "#first set up our butler by telling it to look at this twinkles directory\n", + "butler = dafPersist.Butler('/project/shared/data/Twinkles_subset/output_data_v2')\n", + "#now we put together a dataId that uniquely specifies a datum\n", + "dataId = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 235}" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "#use the dataId and the 'src' to get the source catalog. \n", + "source_cat = butler.get('src', **dataId)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A few comments are in order on questions you may be having about the butler, and the previous cell. First, there is no good way to know what dataId's exist and correspond to data. That means you have to know ahead of time what dataId's make sense to use. DM is working hard on fixing this. Second, 'src' refers to a very specific data product in the DM philosophy. This is a measurment catalog contains the results of different measurement algorithms on detected sources on an individual CCD. We will meet some other catalogs later in the tutorial. For now, lets get to know this src" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Schema(\n", + " (Field['L'](name=\"id\", doc=\"unique ID\"), Key(offset=0, nElements=1)),\n", + " (Field['Angle'](name=\"coord_ra\", doc=\"position in ra/dec\"), Key(offset=8, nElements=1)),\n", + " (Field['Angle'](name=\"coord_dec\", doc=\"position in ra/dec\"), Key(offset=16, nElements=1)),\n", + " (Field['L'](name=\"parent\", doc=\"unique ID of parent source\"), Key(offset=24, nElements=1)),\n", + " (Field['Flag'](name=\"calib_detected\", doc=\"Source was detected as an icSource\"), Key['Flag'](offset=32, bit=0)),\n", + " (Field['Flag'](name=\"calib_psfCandidate\", doc=\"Flag set if the source was a candidate for PSF determination, as determined by the star selector.\"), Key['Flag'](offset=32, bit=1)),\n", + " (Field['Flag'](name=\"calib_psfUsed\", doc=\"Flag set if the source was actually used for PSF determination, as determined by the\"), Key['Flag'](offset=32, bit=2)),\n", + " (Field['Flag'](name=\"calib_psf_reserved\", doc=\"set if source was reserved from PSF determination\"), Key['Flag'](offset=32, bit=3)),\n", + " (Field['I'](name=\"deblend_nChild\", doc=\"Number of children this object has (defaults to 0)\"), Key(offset=40, nElements=1)),\n", + " (Field['Flag'](name=\"deblend_deblendedAsPsf\", doc=\"Deblender thought this source looked like a PSF\"), Key['Flag'](offset=32, bit=4)),\n", + " (Field['D'](name=\"deblend_psfCenter_x\", doc=\"If deblended-as-psf, the PSF centroid\", units=\"pixel\"), Key(offset=48, nElements=1)),\n", + " (Field['D'](name=\"deblend_psfCenter_y\", doc=\"If deblended-as-psf, the PSF centroid\", units=\"pixel\"), Key(offset=56, nElements=1)),\n", + " (Field['D'](name=\"deblend_psfFlux\", doc=\"If deblended-as-psf, the PSF flux\"), Key(offset=64, nElements=1)),\n", + " (Field['Flag'](name=\"deblend_tooManyPeaks\", doc=\"Source had too many peaks; only the brightest were included\"), Key['Flag'](offset=32, bit=5)),\n", + " (Field['Flag'](name=\"deblend_parentTooBig\", doc=\"Parent footprint covered too many pixels\"), Key['Flag'](offset=32, bit=6)),\n", + " (Field['Flag'](name=\"deblend_masked\", doc=\"Parent footprint was predominantly masked\"), Key['Flag'](offset=32, bit=7)),\n", + " (Field['Flag'](name=\"deblend_skipped\", doc=\"Deblender skipped this source\"), Key['Flag'](offset=32, bit=8)),\n", + " (Field['Flag'](name=\"deblend_rampedTemplate\", doc=\"This source was near an image edge and the deblender used \"ramp\" edge-handling.\"), Key['Flag'](offset=32, bit=9)),\n", + " (Field['Flag'](name=\"deblend_patchedTemplate\", doc=\"This source was near an image edge and the deblender used \"patched\" edge-handling.\"), Key['Flag'](offset=32, bit=10)),\n", + " (Field['Flag'](name=\"deblend_hasStrayFlux\", doc=\"This source was assigned some stray flux\"), Key['Flag'](offset=32, bit=11)),\n", + " (Field['D'](name=\"base_GaussianCentroid_x\", doc=\"centroid from Gaussian Centroid algorithm\", units=\"pixel\"), Key(offset=72, nElements=1)),\n", + " (Field['D'](name=\"base_GaussianCentroid_y\", doc=\"centroid from Gaussian Centroid algorithm\", units=\"pixel\"), Key(offset=80, nElements=1)),\n", + " (Field['Flag'](name=\"base_GaussianCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=12)),\n", + " (Field['Flag'](name=\"base_GaussianCentroid_flag_noPeak\", doc=\"Fitted Centroid has a negative peak\"), Key['Flag'](offset=32, bit=13)),\n", + " (Field['Flag'](name=\"base_GaussianCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=14)),\n", + " (Field['D'](name=\"base_NaiveCentroid_x\", doc=\"centroid from Naive Centroid algorithm\", units=\"pixel\"), Key(offset=88, nElements=1)),\n", + " (Field['D'](name=\"base_NaiveCentroid_y\", doc=\"centroid from Naive Centroid algorithm\", units=\"pixel\"), Key(offset=96, nElements=1)),\n", + " (Field['Flag'](name=\"base_NaiveCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=15)),\n", + " (Field['Flag'](name=\"base_NaiveCentroid_flag_noCounts\", doc=\"Object to be centroided has no counts\"), Key['Flag'](offset=32, bit=16)),\n", + " (Field['Flag'](name=\"base_NaiveCentroid_flag_edge\", doc=\"Object too close to edge\"), Key['Flag'](offset=32, bit=17)),\n", + " (Field['Flag'](name=\"base_NaiveCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=18)),\n", + " (Field['D'](name=\"base_SdssCentroid_x\", doc=\"centroid from Sdss Centroid algorithm\", units=\"pixel\"), Key(offset=104, nElements=1)),\n", + " (Field['D'](name=\"base_SdssCentroid_y\", doc=\"centroid from Sdss Centroid algorithm\", units=\"pixel\"), Key(offset=112, nElements=1)),\n", + " (Field['F'](name=\"base_SdssCentroid_xSigma\", doc=\"1-sigma uncertainty on x position\", units=\"pixel\"), Key(offset=120, nElements=1)),\n", + " (Field['F'](name=\"base_SdssCentroid_ySigma\", doc=\"1-sigma uncertainty on y position\", units=\"pixel\"), Key(offset=124, nElements=1)),\n", + " (Field['Flag'](name=\"base_SdssCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=19)),\n", + " (Field['Flag'](name=\"base_SdssCentroid_flag_edge\", doc=\"Object too close to edge\"), Key['Flag'](offset=32, bit=20)),\n", + " (Field['Flag'](name=\"base_SdssCentroid_flag_noSecondDerivative\", doc=\"Vanishing second derivative\"), Key['Flag'](offset=32, bit=21)),\n", + " (Field['Flag'](name=\"base_SdssCentroid_flag_almostNoSecondDerivative\", doc=\"Almost vanishing second derivative\"), Key['Flag'](offset=32, bit=22)),\n", + " (Field['Flag'](name=\"base_SdssCentroid_flag_notAtMaximum\", doc=\"Object is not at a maximum\"), Key['Flag'](offset=32, bit=23)),\n", + " (Field['Flag'](name=\"base_SdssCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=24)),\n", + " (Field['D'](name=\"base_Blendedness_old\", doc=\"blendedness from dot products: (child.dot(parent)/child.dot(child) - 1)\"), Key(offset=128, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_flux\", doc=\"measure of how flux is affected by neighbors: (1 - flux.child/flux.parent)\"), Key(offset=136, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_flux_child\", doc=\"flux of the child, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=144, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_flux_parent\", doc=\"flux of the parent, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=152, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_flux\", doc=\"measure of how flux is affected by neighbors: (1 - flux.child/flux.parent)\"), Key(offset=160, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_flux_child\", doc=\"flux of the child, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=168, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_flux_parent\", doc=\"flux of the parent, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=176, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_child_xx\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=184, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_child_yy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=192, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_child_xy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=200, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_parent_xx\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=208, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_parent_yy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=216, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_raw_parent_xy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=224, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_child_xx\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=232, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_child_yy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=240, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_child_xy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=248, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_parent_xx\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=256, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_parent_yy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=264, nElements=1)),\n", + " (Field['D'](name=\"base_Blendedness_abs_parent_xy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=272, nElements=1)),\n", + " (Field['Flag'](name=\"base_Blendedness_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=25)),\n", + " (Field['Flag'](name=\"base_Blendedness_flag_noCentroid\", doc=\"Object has no centroid\"), Key['Flag'](offset=32, bit=26)),\n", + " (Field['Flag'](name=\"base_Blendedness_flag_noShape\", doc=\"Object has no shape\"), Key['Flag'](offset=32, bit=27)),\n", + " (Field['D'](name=\"base_SdssShape_xx\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=280, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_yy\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=288, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_xy\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=296, nElements=1)),\n", + " (Field['F'](name=\"base_SdssShape_xxSigma\", doc=\"1-sigma uncertainty on xx moment\", units=\"pixel^2\"), Key(offset=304, nElements=1)),\n", + " (Field['F'](name=\"base_SdssShape_yySigma\", doc=\"1-sigma uncertainty on yy moment\", units=\"pixel^2\"), Key(offset=308, nElements=1)),\n", + " (Field['F'](name=\"base_SdssShape_xySigma\", doc=\"1-sigma uncertainty on xy moment\", units=\"pixel^2\"), Key(offset=312, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_x\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel\"), Key(offset=320, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_y\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel\"), Key(offset=328, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_flux\", doc=\"elliptical Gaussian adaptive moments\", units=\"count\"), Key(offset=336, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=344, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_psf_xx\", doc=\"adaptive moments of the PSF model at the object position\", units=\"pixel^2\"), Key(offset=352, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_psf_yy\", doc=\"adaptive moments of the PSF model at the object position\", units=\"pixel^2\"), Key(offset=360, nElements=1)),\n", + " (Field['D'](name=\"base_SdssShape_psf_xy\", doc=\"adaptive moments of the PSF model at the object position\", units=\"pixel^2\"), Key(offset=368, nElements=1)),\n", + " (Field['F'](name=\"base_SdssShape_flux_xx_Cov\", doc=\"uncertainty covariance between base_SdssShape_flux and base_SdssShape_xx\", units=\"count*pixel^2\"), Key(offset=376, nElements=1)),\n", + " (Field['F'](name=\"base_SdssShape_flux_yy_Cov\", doc=\"uncertainty covariance between base_SdssShape_flux and base_SdssShape_yy\", units=\"count*pixel^2\"), Key(offset=380, nElements=1)),\n", + " (Field['F'](name=\"base_SdssShape_flux_xy_Cov\", doc=\"uncertainty covariance between base_SdssShape_flux and base_SdssShape_xy\", units=\"count*pixel^2\"), Key(offset=384, nElements=1)),\n", + " (Field['Flag'](name=\"base_SdssShape_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=28)),\n", + " (Field['Flag'](name=\"base_SdssShape_flag_unweightedBad\", doc=\"Both weighted and unweighted moments were invalid\"), Key['Flag'](offset=32, bit=29)),\n", + " (Field['Flag'](name=\"base_SdssShape_flag_unweighted\", doc=\"Weighted moments converged to an invalid value; using unweighted moments\"), Key['Flag'](offset=32, bit=30)),\n", + " (Field['Flag'](name=\"base_SdssShape_flag_shift\", doc=\"centroid shifted by more than the maximum allowed amount\"), Key['Flag'](offset=32, bit=31)),\n", + " (Field['Flag'](name=\"base_SdssShape_flag_maxIter\", doc=\"Too many iterations in adaptive moments\"), Key['Flag'](offset=32, bit=32)),\n", + " (Field['Flag'](name=\"base_SdssShape_flag_psf\", doc=\"Failure in measuring PSF model shape\"), Key['Flag'](offset=32, bit=33)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=392, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=400, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=408, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=416, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=424, nElements=1)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=34)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=35)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=36)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=37)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_e1\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=432, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_e2\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=440, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_sigma\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=448, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_resolution\", doc=\"resolution factor (0=unresolved, 1=resolved)\"), Key(offset=456, nElements=1)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=38)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=39)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=40)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=41)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_galsim\", doc=\"GalSim failure\"), Key['Flag'](offset=32, bit=42)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=464, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=472, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=480, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=488, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=496, nElements=1)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=43)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=44)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=45)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=46)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=504, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=512, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=520, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=528, nElements=1)),\n", + " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=536, nElements=1)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=47)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=48)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=49)),\n", + " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=50)),\n", + " (Field['F'](name=\"ext_shapeHSM_HsmSourceMomentsRound_Flux\", doc=\"HSM flux\"), Key(offset=544, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_3_0_flux\", doc=\"flux within 3.000000-pixel aperture\", units=\"count\"), Key(offset=552, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_3_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=560, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=51)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=52)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=53)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_4_5_flux\", doc=\"flux within 4.500000-pixel aperture\", units=\"count\"), Key(offset=568, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_4_5_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=576, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=54)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=55)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=56)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_6_0_flux\", doc=\"flux within 6.000000-pixel aperture\", units=\"count\"), Key(offset=584, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_6_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=592, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=57)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=58)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=59)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_9_0_flux\", doc=\"flux within 9.000000-pixel aperture\", units=\"count\"), Key(offset=600, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_9_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=608, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=60)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=61)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=62)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_12_0_flux\", doc=\"flux within 12.000000-pixel aperture\", units=\"count\"), Key(offset=616, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_12_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=624, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=63)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=0)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=632, bit=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_17_0_flux\", doc=\"flux within 17.000000-pixel aperture\", units=\"count\"), Key(offset=640, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_17_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=648, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_17_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=2)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_17_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=3)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_25_0_flux\", doc=\"flux within 25.000000-pixel aperture\", units=\"count\"), Key(offset=656, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_25_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=664, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_25_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=4)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_25_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=5)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_35_0_flux\", doc=\"flux within 35.000000-pixel aperture\", units=\"count\"), Key(offset=672, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_35_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=680, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_35_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=6)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_35_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=7)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_50_0_flux\", doc=\"flux within 50.000000-pixel aperture\", units=\"count\"), Key(offset=688, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_50_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=696, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_50_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=8)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_50_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=9)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_70_0_flux\", doc=\"flux within 70.000000-pixel aperture\", units=\"count\"), Key(offset=704, nElements=1)),\n", + " (Field['D'](name=\"base_CircularApertureFlux_70_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=712, nElements=1)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_70_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=10)),\n", + " (Field['Flag'](name=\"base_CircularApertureFlux_70_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=11)),\n", + " (Field['D'](name=\"base_GaussianFlux_flux\", doc=\"flux from Gaussian Flux algorithm\", units=\"count\"), Key(offset=720, nElements=1)),\n", + " (Field['D'](name=\"base_GaussianFlux_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=728, nElements=1)),\n", + " (Field['Flag'](name=\"base_GaussianFlux_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=12)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag\", doc=\"general failure flag, set if anything went wring\"), Key['Flag'](offset=632, bit=13)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_offimage\", doc=\"Source center is off image\"), Key['Flag'](offset=632, bit=14)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_edge\", doc=\"Source is outside usable exposure region (masked EDGE or NO_DATA)\"), Key['Flag'](offset=632, bit=15)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_interpolated\", doc=\"Interpolated pixel in the Source footprint\"), Key['Flag'](offset=632, bit=16)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_saturated\", doc=\"Saturated pixel in the Source footprint\"), Key['Flag'](offset=632, bit=17)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_cr\", doc=\"Cosmic ray in the Source footprint\"), Key['Flag'](offset=632, bit=18)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_bad\", doc=\"Bad pixel in the Source footprint\"), Key['Flag'](offset=632, bit=19)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_suspect\", doc=\"Source''s footprint includes suspect pixels\"), Key['Flag'](offset=632, bit=20)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_interpolatedCenter\", doc=\"Interpolated pixel in the Source center\"), Key['Flag'](offset=632, bit=21)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_saturatedCenter\", doc=\"Saturated pixel in the Source center\"), Key['Flag'](offset=632, bit=22)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_crCenter\", doc=\"Cosmic ray in the Source center\"), Key['Flag'](offset=632, bit=23)),\n", + " (Field['Flag'](name=\"base_PixelFlags_flag_suspectCenter\", doc=\"Source''s center is close to suspect pixels\"), Key['Flag'](offset=632, bit=24)),\n", + " (Field['D'](name=\"base_PsfFlux_flux\", doc=\"flux derived from linear least-squares fit of PSF model\", units=\"count\"), Key(offset=736, nElements=1)),\n", + " (Field['D'](name=\"base_PsfFlux_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=744, nElements=1)),\n", + " (Field['Flag'](name=\"base_PsfFlux_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=25)),\n", + " (Field['Flag'](name=\"base_PsfFlux_flag_noGoodPixels\", doc=\"not enough non-rejected pixels in data to attempt the fit\"), Key['Flag'](offset=632, bit=26)),\n", + " (Field['Flag'](name=\"base_PsfFlux_flag_edge\", doc=\"object was too close to the edge of the image to use the full PSF model\"), Key['Flag'](offset=632, bit=27)),\n", + " (Field['Flag'](name=\"base_Variance_flag\", doc=\"Set for any fatal failure\"), Key['Flag'](offset=632, bit=28)),\n", + " (Field['D'](name=\"base_Variance_value\", doc=\"Variance at object position\"), Key(offset=752, nElements=1)),\n", + " (Field['Flag'](name=\"base_Variance_flag_emptyFootprint\", doc=\"Set to True when the footprint has no usable pixels\"), Key['Flag'](offset=632, bit=29)),\n", + " (Field['D'](name=\"ext_photometryKron_KronFlux_flux\", doc=\"flux from Kron Flux algorithm\", units=\"count\"), Key(offset=760, nElements=1)),\n", + " (Field['D'](name=\"ext_photometryKron_KronFlux_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=768, nElements=1)),\n", + " (Field['F'](name=\"ext_photometryKron_KronFlux_radius\", doc=\"Kron radius (sqrt(a*b))\"), Key(offset=776, nElements=1)),\n", + " (Field['F'](name=\"ext_photometryKron_KronFlux_radius_for_radius\", doc=\"radius used to estimate (sqrt(a*b))\"), Key(offset=780, nElements=1)),\n", + " (Field['F'](name=\"ext_photometryKron_KronFlux_psf_radius\", doc=\"Radius of PSF\"), Key(offset=784, nElements=1)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=632, bit=30)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_edge\", doc=\"bad measurement due to image edge\"), Key['Flag'](offset=632, bit=31)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_shape_no_psf\", doc=\"bad shape and no PSF\"), Key['Flag'](offset=632, bit=32)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_no_minimum_radius\", doc=\"minimum radius could not enforced: no minimum value or PSF\"), Key['Flag'](offset=632, bit=33)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_no_fallback_radius\", doc=\"no minimum radius and no PSF provided\"), Key['Flag'](offset=632, bit=34)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_radius\", doc=\"bad Kron radius\"), Key['Flag'](offset=632, bit=35)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_used_minimum_radius\", doc=\"used the minimum radius for the Kron aperture\"), Key['Flag'](offset=632, bit=36)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_used_psf_radius\", doc=\"used the PSF Kron radius for the Kron aperture\"), Key['Flag'](offset=632, bit=37)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_small_radius\", doc=\"measured Kron radius was smaller than that of the PSF\"), Key['Flag'](offset=632, bit=38)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_shape\", doc=\"shape for measuring Kron radius is bad; used PSF shape\"), Key['Flag'](offset=632, bit=39)),\n", + " (Field['D'](name=\"base_GaussianFlux_apCorr\", doc=\"aperture correction applied to base_GaussianFlux\"), Key(offset=792, nElements=1)),\n", + " (Field['D'](name=\"base_GaussianFlux_apCorrSigma\", doc=\"aperture correction applied to base_GaussianFlux\"), Key(offset=800, nElements=1)),\n", + " (Field['Flag'](name=\"base_GaussianFlux_flag_apCorr\", doc=\"set if unable to aperture correct base_GaussianFlux\"), Key['Flag'](offset=632, bit=40)),\n", + " (Field['D'](name=\"ext_photometryKron_KronFlux_apCorr\", doc=\"aperture correction applied to ext_photometryKron_KronFlux\"), Key(offset=808, nElements=1)),\n", + " (Field['D'](name=\"ext_photometryKron_KronFlux_apCorrSigma\", doc=\"aperture correction applied to ext_photometryKron_KronFlux\"), Key(offset=816, nElements=1)),\n", + " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_apCorr\", doc=\"set if unable to aperture correct ext_photometryKron_KronFlux\"), Key['Flag'](offset=632, bit=41)),\n", + " (Field['D'](name=\"base_PsfFlux_apCorr\", doc=\"aperture correction applied to base_PsfFlux\"), Key(offset=824, nElements=1)),\n", + " (Field['D'](name=\"base_PsfFlux_apCorrSigma\", doc=\"aperture correction applied to base_PsfFlux\"), Key(offset=832, nElements=1)),\n", + " (Field['Flag'](name=\"base_PsfFlux_flag_apCorr\", doc=\"set if unable to aperture correct base_PsfFlux\"), Key['Flag'](offset=632, bit=42)),\n", + " (Field['D'](name=\"base_ClassificationExtendedness_value\", doc=\"Set to 1 for extended sources, 0 for point sources.\"), Key(offset=840, nElements=1)),\n", + " (Field['Flag'](name=\"base_ClassificationExtendedness_flag\", doc=\"Set to 1 for any fatal failure.\"), Key['Flag'](offset=632, bit=43)),\n", + " (Field['I'](name=\"base_FootprintArea_value\", doc=\"Number of pixels in the source''s detection footprint.\", units=\"pixel\"), Key(offset=848, nElements=1)),\n", + " (Field['Flag'](name=\"calib_astrometryUsed\", doc=\"set if source was used in astrometric calibration\"), Key['Flag'](offset=632, bit=44)),\n", + " (Field['Flag'](name=\"calib_photometry_used\", doc=\"set if source was used in photometric calibration\"), Key['Flag'](offset=632, bit=45)),\n", + " (Field['Flag'](name=\"calib_photometry_reserved\", doc=\"set if source was reserved from photometric calibration\"), Key['Flag'](offset=632, bit=46)),\n", + " 'base_CircularApertureFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'base_GaussianCentroid_flag_badInitialCentroid'->'base_SdssCentroid_flag'\n", + " 'base_GaussianFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'base_GaussianFlux_flag_badShape'->'ext_shapeHSM_HsmSourceMoments_flag'\n", + " 'base_NaiveCentroid_flag_badInitialCentroid'->'base_SdssCentroid_flag'\n", + " 'base_PsfFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'base_SdssShape_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'base_Variance_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'ext_photometryKron_KronFlux_flag_badInitialCentroid'->'base_SdssCentroid_flag'\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid'->'base_SdssCentroid_flag'\n", + " 'slot_ApFlux'->'base_CircularApertureFlux_12_0'\n", + " 'slot_CalibFlux'->'base_CircularApertureFlux_12_0'\n", + " 'slot_Centroid'->'base_SdssCentroid'\n", + " 'slot_InstFlux'->'base_GaussianFlux'\n", + " 'slot_ModelFlux'->'base_GaussianFlux'\n", + " 'slot_PsfFlux'->'base_PsfFlux'\n", + " 'slot_PsfShape'->'ext_shapeHSM_HsmPsfMoments'\n", + " 'slot_Shape'->'ext_shapeHSM_HsmSourceMoments'\n", + ")" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#check its schema. Heads up, the schema is pretty big!\n", + "source_cat.getSchema()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These schemas tend to be pretty large, because every measurement algorithm will create several fields. There are handy ways of grabbing fields that are interesting to you. Suppose you are interested in shape measurements. We can use unix like pattern matching with the extract method to search the schema. This returns a dictionary where the keys are the schema fields whose names match the pattern you specified, and the values are the fields themselves. If we are just intested in the field names, we can do this" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['ext_shapeHSM_HsmPsfMoments_flag_badCentroid', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak', 'ext_shapeHSM_HsmPsfMoments_x', 'ext_shapeHSM_HsmPsfMoments_y', 'ext_shapeHSM_HsmPsfMoments_xx', 'ext_shapeHSM_HsmPsfMoments_yy', 'ext_shapeHSM_HsmPsfMoments_xy', 'ext_shapeHSM_HsmPsfMoments_flag', 'ext_shapeHSM_HsmPsfMoments_flag_no_pixels', 'ext_shapeHSM_HsmPsfMoments_flag_not_contained', 'ext_shapeHSM_HsmPsfMoments_flag_parent_source'])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_cat.getSchema().extract('*HSM*Psf*').keys()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at the very bottom of the schema we printed out above, you will notice some of the fields are named 'slot_'. These are called aliases in the schema, and can help you deal with any ambiguity in the table. For example, there are several algorithms used to measure the centroid, and many fileds with 'centroid' in their name as a result. If you want to have quick access to one algorithms measurement result, you can set up a slot alias for it. Lets do a working example on the first record in our table" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gaussian centroid is 1980.019868931552, 7.642499448278578\n", + "sloan centroid is 1980.0, 8.0\n", + "slot centroid is (1980, 8)\n" + ] + } + ], + "source": [ + "slot_centroid = source_cat[0].getCentroid()\n", + "gauss_cent_x, gauss_cent_y = (source_cat['base_GaussianCentroid_x'][0], source_cat['base_GaussianCentroid_y'][0])\n", + "sdss_cent_x, sdss_cent_y = (source_cat['base_SdssCentroid_x'][0], source_cat['base_SdssCentroid_y'][0])\n", + "\n", + "print('gaussian centroid is {}, {}'.format(gauss_cent_x, gauss_cent_y))\n", + "print('sloan centroid is {}, {}'.format(sdss_cent_x, sdss_cent_y))\n", + "print('slot centroid is {}'.format(slot_centroid))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#aliasing works with other methods\n", + "psf_flux_key = source_cat.getPsfFluxKey()\n", + "id_key = source_cat.getIdKey()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As advertised, the slot centroid and SDSS centroid are the same. We also used some syntactic sugar to access the gaussian centroids and sdss centroids, which will be familiar to you if you are an astropy tables user. Speaking of which, you can make an astropy table version of a source catalog. However, source catalogs support a lot of fast operations for common use cases which we will disucss. " + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "Table length=2662\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
idcoord_racoord_decparentcalib_detectedcalib_psfCandidatecalib_psfUsedcalib_psf_reserveddeblend_nChilddeblend_deblendedAsPsfdeblend_psfCenter_xdeblend_psfCenter_ydeblend_psfFluxdeblend_tooManyPeaksdeblend_parentTooBigdeblend_maskeddeblend_skippeddeblend_rampedTemplatedeblend_patchedTemplatedeblend_hasStrayFluxbase_GaussianCentroid_xbase_GaussianCentroid_ybase_GaussianCentroid_flagbase_GaussianCentroid_flag_noPeakbase_GaussianCentroid_flag_resetToPeakbase_NaiveCentroid_xbase_NaiveCentroid_ybase_NaiveCentroid_flagbase_NaiveCentroid_flag_noCountsbase_NaiveCentroid_flag_edgebase_NaiveCentroid_flag_resetToPeakbase_SdssCentroid_xslot_Centroid_xbase_SdssCentroid_yslot_Centroid_ybase_SdssCentroid_xSigmaslot_Centroid_xSigmabase_SdssCentroid_ySigmaslot_Centroid_ySigmabase_SdssCentroid_flagbase_CircularApertureFlux_flag_badCentroidbase_GaussianCentroid_flag_badInitialCentroidbase_GaussianFlux_flag_badCentroidbase_NaiveCentroid_flag_badInitialCentroidbase_PsfFlux_flag_badCentroidbase_SdssShape_flag_badCentroidbase_Variance_flag_badCentroidext_photometryKron_KronFlux_flag_badInitialCentroidext_shapeHSM_HsmPsfMoments_flag_badCentroidext_shapeHSM_HsmShapeRegauss_flag_badCentroidext_shapeHSM_HsmSourceMomentsRound_flag_badCentroidext_shapeHSM_HsmSourceMoments_flag_badCentroidslot_Centroid_flagbase_SdssCentroid_flag_edgebase_CircularApertureFlux_flag_badCentroid_edgebase_GaussianCentroid_flag_badInitialCentroid_edgebase_GaussianFlux_flag_badCentroid_edgebase_NaiveCentroid_flag_badInitialCentroid_edgebase_PsfFlux_flag_badCentroid_edgebase_SdssShape_flag_badCentroid_edgebase_Variance_flag_badCentroid_edgeext_photometryKron_KronFlux_flag_badInitialCentroid_edgeext_shapeHSM_HsmPsfMoments_flag_badCentroid_edgeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_edgeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_edgeext_shapeHSM_HsmSourceMoments_flag_badCentroid_edgeslot_Centroid_flag_edgebase_SdssCentroid_flag_noSecondDerivativebase_CircularApertureFlux_flag_badCentroid_noSecondDerivativebase_GaussianCentroid_flag_badInitialCentroid_noSecondDerivativebase_GaussianFlux_flag_badCentroid_noSecondDerivativebase_NaiveCentroid_flag_badInitialCentroid_noSecondDerivativebase_PsfFlux_flag_badCentroid_noSecondDerivativebase_SdssShape_flag_badCentroid_noSecondDerivativebase_Variance_flag_badCentroid_noSecondDerivativeext_photometryKron_KronFlux_flag_badInitialCentroid_noSecondDerivativeext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmSourceMoments_flag_badCentroid_noSecondDerivativeslot_Centroid_flag_noSecondDerivativebase_SdssCentroid_flag_almostNoSecondDerivativebase_CircularApertureFlux_flag_badCentroid_almostNoSecondDerivativebase_GaussianCentroid_flag_badInitialCentroid_almostNoSecondDerivativebase_GaussianFlux_flag_badCentroid_almostNoSecondDerivativebase_NaiveCentroid_flag_badInitialCentroid_almostNoSecondDerivativebase_PsfFlux_flag_badCentroid_almostNoSecondDerivativebase_SdssShape_flag_badCentroid_almostNoSecondDerivativebase_Variance_flag_badCentroid_almostNoSecondDerivativeext_photometryKron_KronFlux_flag_badInitialCentroid_almostNoSecondDerivativeext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmSourceMoments_flag_badCentroid_almostNoSecondDerivativeslot_Centroid_flag_almostNoSecondDerivativebase_SdssCentroid_flag_notAtMaximumbase_CircularApertureFlux_flag_badCentroid_notAtMaximumbase_GaussianCentroid_flag_badInitialCentroid_notAtMaximumbase_GaussianFlux_flag_badCentroid_notAtMaximumbase_NaiveCentroid_flag_badInitialCentroid_notAtMaximumbase_PsfFlux_flag_badCentroid_notAtMaximumbase_SdssShape_flag_badCentroid_notAtMaximumbase_Variance_flag_badCentroid_notAtMaximumext_photometryKron_KronFlux_flag_badInitialCentroid_notAtMaximumext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximumext_shapeHSM_HsmShapeRegauss_flag_badCentroid_notAtMaximumext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_notAtMaximumext_shapeHSM_HsmSourceMoments_flag_badCentroid_notAtMaximumslot_Centroid_flag_notAtMaximumbase_SdssCentroid_flag_resetToPeakbase_CircularApertureFlux_flag_badCentroid_resetToPeakbase_GaussianCentroid_flag_badInitialCentroid_resetToPeakbase_GaussianFlux_flag_badCentroid_resetToPeakbase_NaiveCentroid_flag_badInitialCentroid_resetToPeakbase_PsfFlux_flag_badCentroid_resetToPeakbase_SdssShape_flag_badCentroid_resetToPeakbase_Variance_flag_badCentroid_resetToPeakext_photometryKron_KronFlux_flag_badInitialCentroid_resetToPeakext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeakext_shapeHSM_HsmShapeRegauss_flag_badCentroid_resetToPeakext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_resetToPeakext_shapeHSM_HsmSourceMoments_flag_badCentroid_resetToPeakslot_Centroid_flag_resetToPeakbase_Blendedness_oldbase_Blendedness_raw_fluxbase_Blendedness_raw_flux_childbase_Blendedness_raw_flux_parentbase_Blendedness_abs_fluxbase_Blendedness_abs_flux_childbase_Blendedness_abs_flux_parentbase_Blendedness_raw_child_xxbase_Blendedness_raw_child_yybase_Blendedness_raw_child_xybase_Blendedness_raw_parent_xxbase_Blendedness_raw_parent_yybase_Blendedness_raw_parent_xybase_Blendedness_abs_child_xxbase_Blendedness_abs_child_yybase_Blendedness_abs_child_xybase_Blendedness_abs_parent_xxbase_Blendedness_abs_parent_yybase_Blendedness_abs_parent_xybase_Blendedness_flagbase_Blendedness_flag_noCentroidbase_Blendedness_flag_noShapebase_SdssShape_xxbase_SdssShape_yybase_SdssShape_xybase_SdssShape_xxSigmabase_SdssShape_yySigmabase_SdssShape_xySigmabase_SdssShape_xbase_SdssShape_ybase_SdssShape_fluxbase_SdssShape_fluxSigmabase_SdssShape_psf_xxbase_SdssShape_psf_yybase_SdssShape_psf_xybase_SdssShape_flux_xx_Covbase_SdssShape_flux_yy_Covbase_SdssShape_flux_xy_Covbase_SdssShape_flagbase_SdssShape_flag_unweightedBadbase_SdssShape_flag_unweightedbase_SdssShape_flag_shiftbase_SdssShape_flag_maxIterbase_SdssShape_flag_psfext_shapeHSM_HsmPsfMoments_xslot_PsfShape_xext_shapeHSM_HsmPsfMoments_yslot_PsfShape_yext_shapeHSM_HsmPsfMoments_xxslot_PsfShape_xxext_shapeHSM_HsmPsfMoments_yyslot_PsfShape_yyext_shapeHSM_HsmPsfMoments_xyslot_PsfShape_xyext_shapeHSM_HsmPsfMoments_flagslot_PsfShape_flagext_shapeHSM_HsmPsfMoments_flag_no_pixelsslot_PsfShape_flag_no_pixelsext_shapeHSM_HsmPsfMoments_flag_not_containedslot_PsfShape_flag_not_containedext_shapeHSM_HsmPsfMoments_flag_parent_sourceslot_PsfShape_flag_parent_sourceext_shapeHSM_HsmShapeRegauss_e1ext_shapeHSM_HsmShapeRegauss_e2ext_shapeHSM_HsmShapeRegauss_sigmaext_shapeHSM_HsmShapeRegauss_resolutionext_shapeHSM_HsmShapeRegauss_flagext_shapeHSM_HsmShapeRegauss_flag_no_pixelsext_shapeHSM_HsmShapeRegauss_flag_not_containedext_shapeHSM_HsmShapeRegauss_flag_parent_sourceext_shapeHSM_HsmShapeRegauss_flag_galsimext_shapeHSM_HsmSourceMoments_xslot_Shape_xext_shapeHSM_HsmSourceMoments_yslot_Shape_yext_shapeHSM_HsmSourceMoments_xxslot_Shape_xxext_shapeHSM_HsmSourceMoments_yyslot_Shape_yyext_shapeHSM_HsmSourceMoments_xyslot_Shape_xyext_shapeHSM_HsmSourceMoments_flagbase_GaussianFlux_flag_badShapeslot_Shape_flagext_shapeHSM_HsmSourceMoments_flag_no_pixelsbase_GaussianFlux_flag_badShape_no_pixelsslot_Shape_flag_no_pixelsext_shapeHSM_HsmSourceMoments_flag_not_containedbase_GaussianFlux_flag_badShape_not_containedslot_Shape_flag_not_containedext_shapeHSM_HsmSourceMoments_flag_parent_sourcebase_GaussianFlux_flag_badShape_parent_sourceslot_Shape_flag_parent_sourceext_shapeHSM_HsmSourceMomentsRound_xslot_ShapeRound_xext_shapeHSM_HsmSourceMomentsRound_yslot_ShapeRound_yext_shapeHSM_HsmSourceMomentsRound_xxslot_ShapeRound_xxext_shapeHSM_HsmSourceMomentsRound_yyslot_ShapeRound_yyext_shapeHSM_HsmSourceMomentsRound_xyslot_ShapeRound_xyext_shapeHSM_HsmSourceMomentsRound_flagslot_ShapeRound_flagext_shapeHSM_HsmSourceMomentsRound_flag_no_pixelsslot_ShapeRound_flag_no_pixelsext_shapeHSM_HsmSourceMomentsRound_flag_not_containedslot_ShapeRound_flag_not_containedext_shapeHSM_HsmSourceMomentsRound_flag_parent_sourceslot_ShapeRound_flag_parent_sourceext_shapeHSM_HsmSourceMomentsRound_Fluxslot_ShapeRound_Fluxbase_CircularApertureFlux_3_0_fluxbase_CircularApertureFlux_3_0_fluxSigmabase_CircularApertureFlux_3_0_flagbase_CircularApertureFlux_3_0_flag_apertureTruncatedbase_CircularApertureFlux_3_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_4_5_fluxbase_CircularApertureFlux_4_5_fluxSigmabase_CircularApertureFlux_4_5_flagbase_CircularApertureFlux_4_5_flag_apertureTruncatedbase_CircularApertureFlux_4_5_flag_sincCoeffsTruncatedbase_CircularApertureFlux_6_0_fluxbase_CircularApertureFlux_6_0_fluxSigmabase_CircularApertureFlux_6_0_flagbase_CircularApertureFlux_6_0_flag_apertureTruncatedbase_CircularApertureFlux_6_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_9_0_fluxbase_CircularApertureFlux_9_0_fluxSigmabase_CircularApertureFlux_9_0_flagbase_CircularApertureFlux_9_0_flag_apertureTruncatedbase_CircularApertureFlux_9_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_12_0_fluxslot_ApFlux_fluxslot_CalibFlux_fluxbase_CircularApertureFlux_12_0_fluxSigmaslot_ApFlux_fluxSigmaslot_CalibFlux_fluxSigmabase_CircularApertureFlux_12_0_flagslot_ApFlux_flagslot_CalibFlux_flagbase_CircularApertureFlux_12_0_flag_apertureTruncatedslot_ApFlux_flag_apertureTruncatedslot_CalibFlux_flag_apertureTruncatedbase_CircularApertureFlux_12_0_flag_sincCoeffsTruncatedslot_ApFlux_flag_sincCoeffsTruncatedslot_CalibFlux_flag_sincCoeffsTruncatedbase_CircularApertureFlux_17_0_fluxbase_CircularApertureFlux_17_0_fluxSigmabase_CircularApertureFlux_17_0_flagbase_CircularApertureFlux_17_0_flag_apertureTruncatedbase_CircularApertureFlux_25_0_fluxbase_CircularApertureFlux_25_0_fluxSigmabase_CircularApertureFlux_25_0_flagbase_CircularApertureFlux_25_0_flag_apertureTruncatedbase_CircularApertureFlux_35_0_fluxbase_CircularApertureFlux_35_0_fluxSigmabase_CircularApertureFlux_35_0_flagbase_CircularApertureFlux_35_0_flag_apertureTruncatedbase_CircularApertureFlux_50_0_fluxbase_CircularApertureFlux_50_0_fluxSigmabase_CircularApertureFlux_50_0_flagbase_CircularApertureFlux_50_0_flag_apertureTruncatedbase_CircularApertureFlux_70_0_fluxbase_CircularApertureFlux_70_0_fluxSigmabase_CircularApertureFlux_70_0_flagbase_CircularApertureFlux_70_0_flag_apertureTruncatedbase_GaussianFlux_fluxslot_InstFlux_fluxslot_ModelFlux_fluxbase_GaussianFlux_fluxSigmaslot_InstFlux_fluxSigmaslot_ModelFlux_fluxSigmabase_GaussianFlux_flagslot_InstFlux_flagslot_ModelFlux_flagbase_PixelFlags_flagbase_PixelFlags_flag_offimagebase_PixelFlags_flag_edgebase_PixelFlags_flag_interpolatedbase_PixelFlags_flag_saturatedbase_PixelFlags_flag_crbase_PixelFlags_flag_badbase_PixelFlags_flag_suspectbase_PixelFlags_flag_interpolatedCenterbase_PixelFlags_flag_saturatedCenterbase_PixelFlags_flag_crCenterbase_PixelFlags_flag_suspectCenterbase_PsfFlux_fluxslot_PsfFlux_fluxbase_PsfFlux_fluxSigmaslot_PsfFlux_fluxSigmabase_PsfFlux_flagslot_PsfFlux_flagbase_PsfFlux_flag_noGoodPixelsslot_PsfFlux_flag_noGoodPixelsbase_PsfFlux_flag_edgeslot_PsfFlux_flag_edgebase_Variance_flagbase_Variance_valuebase_Variance_flag_emptyFootprintext_photometryKron_KronFlux_fluxext_photometryKron_KronFlux_fluxSigmaext_photometryKron_KronFlux_radiusext_photometryKron_KronFlux_radius_for_radiusext_photometryKron_KronFlux_psf_radiusext_photometryKron_KronFlux_flagext_photometryKron_KronFlux_flag_edgeext_photometryKron_KronFlux_flag_bad_shape_no_psfext_photometryKron_KronFlux_flag_no_minimum_radiusext_photometryKron_KronFlux_flag_no_fallback_radiusext_photometryKron_KronFlux_flag_bad_radiusext_photometryKron_KronFlux_flag_used_minimum_radiusext_photometryKron_KronFlux_flag_used_psf_radiusext_photometryKron_KronFlux_flag_small_radiusext_photometryKron_KronFlux_flag_bad_shapebase_GaussianFlux_apCorrslot_InstFlux_apCorrslot_ModelFlux_apCorrbase_GaussianFlux_apCorrSigmaslot_InstFlux_apCorrSigmaslot_ModelFlux_apCorrSigmabase_GaussianFlux_flag_apCorrslot_InstFlux_flag_apCorrslot_ModelFlux_flag_apCorrext_photometryKron_KronFlux_apCorrext_photometryKron_KronFlux_apCorrSigmaext_photometryKron_KronFlux_flag_apCorrbase_PsfFlux_apCorrslot_PsfFlux_apCorrbase_PsfFlux_apCorrSigmaslot_PsfFlux_apCorrSigmabase_PsfFlux_flag_apCorrslot_PsfFlux_flag_apCorrbase_ClassificationExtendedness_valuebase_ClassificationExtendedness_flagbase_FootprintArea_valuecalib_astrometryUsedcalib_photometry_usedcalib_photometry_reserved
radradpixpixpixpixpixpixpixpixpixpixpixpixpixpixctctctctpix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pixpixctctpix2pix2pix2ct pix2ct pix2ct pix2pixpixpixpixpix2pix2pix2pix2pix2pix2pixpixpixpixpix2pix2pix2pix2pix2pix2pixpixpixpixpix2pix2pix2pix2pix2pix2ctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctpix
int64float64float64int64boolboolboolboolint32boolfloat64float64float64boolboolboolboolboolboolboolfloat64float64boolboolboolfloat64float64boolboolboolboolfloat64float64float64float64float32float32float32float32boolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64boolboolboolfloat64float64float64float32float32float32float64float64float64float64float64float64float64float32float32float32boolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolfloat64float64float64float64boolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolfloat32float32float64float64boolboolboolfloat64float64boolboolboolfloat64float64boolboolboolfloat64float64boolboolboolfloat64float64float64float64float64float64boolboolboolboolboolboolboolboolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64float64float64float64float64boolboolboolboolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64boolboolboolboolboolboolboolfloat64boolfloat64float64float32float32float32boolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64boolboolboolfloat64float64boolfloat64float64float64float64boolboolfloat64boolint32boolboolbool
10103575019530.923033029229361-0.47937233360886610FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse1980.0198689315527.642499448278578FalseFalseFalse1980.04532567208827.943966875047312FalseFalseFalseFalse1980.01980.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.05096.547288206665096.547288206660.05098.7212118629665098.7212118629664.0411211024955054.494217271276707-0.33675381970307314.0411211024955054.494217271276707-0.33675381970307314.0813070521650514.593879812379573-0.35053408615134494.0813070521650514.593879812379573-0.3505340861513449TrueTrueTrue4.0332035578875154.620004443579578-0.29489446514162350.509650650.38660260.5838011980.011798048767.8044580014078655204.457512306397328.82733320633994.4945447641283095.212304374560799-0.1371336289244042-83.793536.1267056-95.98486FalseFalseFalseFalseFalseFalse-0.0004632858349975-0.00046328583499750.00174961074882518410.00174961074882518414.4981410071650444.4981410071650445.2151212180237935.215121218023793-0.1371611722138221-0.1371611722138221TrueTrueFalseFalseFalseFalseFalseFalsenannannannanTrueFalseFalseFalseTrue1980.02204727467141980.02204727467147.6166732745664617.6166732745664614.0467033578748824.0467033578748824.4138914454457614.413891445445761-0.3371103277975421-0.3371103277975421TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse1980.01604434729441980.01604434729447.6222420882257237.6222420882257234.1162520255469354.1162520255469354.2950612771908944.295061277190894-0.16487429218976926-0.16487429218976926TrueTrueFalseFalseFalseFalseFalseFalse5177.16755177.16753287.5244140625158.10244750976562TrueFalseFalse4587.88232421875233.74769592285156TrueFalseTrue5432.3828125308.88043212890625TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue5685.4991819212045685.4991819212045685.499181921204254.03851366006722254.03851366006722254.03851366006722FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse6136.8047450215546136.804745021554267.14045510788267.14045510788TrueTrueFalseFalseTrueTrueFalse816.5FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.10464855410283411.10464855410283411.10464855410283410.00.00.0FalseFalseFalse1.0356588917966630.0False0.98806375319393650.98806375319393650.00.0FalseFalsenanTrue219FalseFalseFalse
10103575019540.9231694833170864-0.479842914421948040FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse2481.07.0TrueFalseTrue2481.0812549852736.656761002707083FalseFalseFalseFalse2481.02481.07.07.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.04861.642801097574861.642801097570.04858.8821066872694858.8821066872695.6197044899430142.2569570908999137-0.229427896974516135.6197044899430142.2569570908999137-0.229427896974516135.621248335271272.2581591329912056-0.232905605825375765.621248335271272.2581591329912056-0.23290560582537576TrueTrueTrue4.73526003248149915.521460739535787-0.6623779549931184nannannan2481.0587293125796.0844143602473935nannan4.4792080263437265.245688032035276-0.12282306095729793nannannanTrueFalseTrueFalseFalseFalse-0.0012468354818022888-0.00124683548180228880.00139162622825894020.00139162622825894024.4827137637260274.4827137637260275.2482475741853015.248247574185301-0.12262686082019596-0.12262686082019596TrueTrueFalseFalseFalseFalseFalseFalsenannannannanTrueFalseFalseFalseTrue2481.2138423195712481.2138423195712.63482228243291862.63482228243291864.4982759013788524.4982759013788520.94987009247305610.9498700924730561-0.07294986290213222-0.07294986290213222TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse2481.20656628024652481.20656628024652.84011711145659842.84011711145659843.16358370652212043.16358370652212041.64963056256201361.6496305625620136-0.03608684390821266-0.03608684390821266TrueTrueFalseFalseFalseFalseFalseFalse44684.81244684.8127869.00927734375170.34689331054688TrueFalseFalse25126.294921875271.5418701171875TrueFalseTrue54097.8515625376.9418029785156TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue5565.4115685791425565.4115685791425565.411568579142180.7610900871693180.7610900871693180.7610900871693FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse28075.82065972246328075.820659722463290.8160733166533290.8160733166533TrueTrueFalseFalseTrueTrueTruenanTruenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.1033098252262181.1033098252262181.1033098252262180.00.00.0FalseFalseFalse1.03453856007907170.0False0.98667188005959330.98667188005959330.00.0FalseFalsenanTrue290FalseFalseFalse
10103575019550.9232606263113138-0.480150647075210050FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse2808.5508959973727.6145450937927555FalseFalseFalse2809.1159137493687.985498569930726FalseFalseFalseFalse2809.02809.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.04152.7051575440434152.7051575440430.04597.8663092101614597.86630921016111.18048776207028511.604203740722133-2.154472073001745311.18048776207028511.604203740722133-2.154472073001745314.42181419988061814.396975879584325-2.777072230151773614.42181419988061814.396975879584325-2.7770722301517736TrueTrueTrue11.83275589856663713.743198572702662-1.7211264545276462.80732372.15873033.26057652808.8310146793937.931511413036254556.534787611454540.5193767693584.4711967716017495.276198781057862-0.10904303539699525-758.70636110.357185-881.2024FalseFalseFalseFalseFalseFalse-0.0017805092566785287-0.00178050925667852870.00135327901209920470.00135327901209920474.4746566411745184.4746566411745185.278791711098945.27879171109894-0.10879957969112511-0.10879957969112511TrueTrueFalseFalseFalseFalseFalseFalse0.0904681533575058-0.46066987514495850.2639828920364380.5253836512565613FalseFalseFalseFalseFalse2808.6963671005132808.6963671005137.7567969337116947.75679693371169411.16630497883236711.16630497883236711.08194835128121111.081948351281211-2.271744083254492-2.271744083254492TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse2808.72187826894062808.72187826894067.84752618606357.847526186063510.58770367651755610.58770367651755611.14829214170479211.148292141704792-0.918265658858922-0.918265658858922TrueTrueFalseFalseFalseFalseFalseFalse4195.8334195.8331497.6934814453125152.51393127441406TrueFalseFalse2329.03759765625228.65591430664062TrueFalseTrue3290.886474609375305.20635986328125TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue4649.3952709232534649.3952709232534649.395270923253391.00847572921134391.00847572921134391.00847572921134FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3004.1496129375683004.149612937568256.65130041700127256.65130041700127TrueTrueFalseFalseTrueTrueFalse824.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.1019989324112751.1019989324112751.1019989324112750.00.00.0FalseFalseFalse1.03369660442102360.0False0.9855600063324030.9855600063324030.00.0FalseFalsenanTrue184FalseFalseFalse
10103575019560.9235299085068365-0.481070979076577530FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse3788.93427832814048.539387758264214FalseFalseFalse3789.06289744232667.925577176117846FalseFalseFalseFalse3789.03789.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.015616.71210069885115616.7121006988510.015771.86630548650815771.86630548650822.31729513531659517.6286254746340671.342671509065586322.31729513531659517.6286254746340671.342671509065586324.10573264358280818.1577264713695751.026961432500022324.10573264358280818.1577264713695751.0269614325000223TrueTrueTrue22.6207428173180818.8431425762078181.72036442724605761.90112511.23117981.58364263788.9312273696968.30198941801003316546.66312700411695.31926441185854.4563905678533855.410120931755419-0.046786939633374346-660.94446-50.26648-550.5686FalseFalseFalseFalseFalseFalse-0.0034748336809761107-0.00347483368097611070.00220333858749691270.00220333858749691274.45990632317916454.45990632317916455.41268756167595555.4126875616759555-0.04652427369480204-0.04652427369480204TrueTrueFalseFalseFalseFalseFalseFalse0.227578401565551760.077077269554138180.07393126934766770.7287380695343018FalseFalseFalseFalseFalse3788.89686885248653788.89686885248658.7329215223954368.73292152239543622.40164156394372722.40164156394372716.69957807969366616.6995780796936661.06202408692657561.0620240869265756TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3788.94326786570173788.94326786570178.7551938333445478.75519383334454720.5196203197701720.5196203197701717.82007608536492417.8200760853649240.50329687350277730.5032968735027773TrueTrueFalseFalseFalseFalseFalseFalse15818.45815818.4583348.310791015625157.84092712402344TrueFalseFalse6507.99462890625237.44920349121094TrueFalseTrue9759.1240234375315.2978515625TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue17555.00657589324317555.00657589324317555.006575893243522.100111164956522.100111164956522.100111164956FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse7323.2854721360867323.285472136086264.8928158585222264.8928158585222TrueTrueFalseFalseTrueTrueFalse825.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.0960353298445371.0960353298445371.0960353298445370.00.00.0FalseFalseFalse1.0306568770670360.0False0.98135352626037830.98135352626037830.00.0FalseFalsenanTrue437FalseFalseFalse
10103575019570.9227888992171793-0.47851700249016230FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse1070.4338417635112.834787065506172FalseFalseFalse1070.045088262665312.947012125580347FalseFalseFalseFalse1070.01070.013.013.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.04895.880208475444895.880208475440.05043.8205137835635043.8205137835638.553319128408277.9509855442816253.3944925191729948.553319128408277.9509855442816253.3944925191729949.6799425759956059.2845868224679993.9425291159815439.6799425759956059.2845868224679993.942529115981543TrueTrueTrue8.3190253574004497.9206441089810183.18959642715051.37032081.01584841.30469911070.281945714679312.90973340310744899.5911883445215403.533574468400964.5320044460878425.192914673220645-0.14360192452696993-276.48523-106.00717-263.24493FalseFalseFalseFalseFalseFalse0.00087905712760067040.00087905712760067040.00339061637077680.00339061637077684.5358597614709154.5358597614709155.1956540051874685.195654005187468-0.14370658234868955-0.14370658234868955TrueTrueFalseFalseFalseFalseFalseFalse0.246393769979476931.17430889606475830.26356112957000730.39405590295791626FalseFalseFalseFalseFalse1070.57793043920791070.577930439207912.83294890277511312.8329489027751138.8507908682471728.8507908682471728.0311662761131698.0311662761131693.59253525536202963.5925352553620296TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse1070.53221500163021070.532215001630212.8310906365239112.831090636523917.7926423620404457.7926423620404457.5543349421590427.5543349421590421.5526977686609671.552697768660967TrueTrueFalseFalseFalseFalseFalseFalse4875.48544875.48542229.049560546875154.75946044921875TrueFalseFalse3396.251708984375231.010986328125TrueFalseTrue4309.892578125306.8758544921875TrueFalseTrue4929.19775390625457.35845947265625TrueFalseTrue5370.7363281255370.7363281255370.736328125608.64453125608.64453125608.64453125TrueTrueTrueFalseFalseFalseTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue5471.252012376895471.252012376895471.25201237689318.7288177992751318.7288177992751318.7288177992751FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse4261.4576886669584261.457688666958261.34967757376387261.34967757376387TrueTrueFalseFalseTrueTrueFalse819.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.10502175338789121.10502175338789121.10502175338789120.00.00.0FalseFalseFalse1.03717012766116760.0False0.98966475285825650.98966475285825650.00.0FalseFalsenanTrue264FalseFalseFalse
10103575019580.9235455709036104-0.48112451151376580FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse3846.63286696845038.328366228862016FalseFalseFalse3845.76744397941878.027652131924878FalseFalseFalseFalse3846.03846.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.01364.23936692789681364.23936692789680.01377.5427018309481377.5427018309482.54519701296498155.0965278883533310.49122989039559772.54519701296498155.0965278883533310.49122989039559773.02310988634520336.842709486513710.82955984985603293.02310988634520336.842709486513710.8295598498560329TrueTrueTrue2.82893088249402964.814316131969080.42914398494620611.13520861.05422531.93191473845.90037597926458.1619366802682891412.5891763623806283.42570612558814.455953700486265.419915069643288-0.04216920873724718-160.87366-24.404263-273.77713FalseFalseFalseFalseFalseFalse-0.0035780671004772874-0.00357806710047728740.0022976886404597030.0022976886404597034.4594887315885514.4594887315885515.4225195512159095.422519551215909-0.041891861600586056-0.041891861600586056TrueTrueFalseFalseFalseFalseFalseFalsenannannannanTrueFalseFalseFalseTrue3845.79693268673833845.79693268673838.37610673893458.37610673893452.4528843739971012.4528843739971015.2068989785316455.2068989785316450.67457912545572460.6745791254557246TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3845.80437971639553845.80437971639558.2347563352018518.2347563352018513.30635678627058653.30635678627058654.3021019696629464.3021019696629460.317219712767852270.31721971276785227TrueTrueFalseFalseFalseFalseFalseFalse1425.1551425.155961.1591796875150.7469940185547TrueFalseFalse1407.4061279296875226.62985229492188TrueFalseTrue1390.6527099609375301.9486083984375TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue1510.38554133909971510.38554133909971510.3855413390997214.85124917444455214.85124917444455214.85124917444455FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse1811.47293562279471811.4729356227947253.32039498736083253.32039498736083TrueTrueFalseFalseTrueTrueFalse825.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.09559406463002571.09559406463002571.09559406463002570.00.00.0FalseFalseFalse1.03045607000985750.0False0.98106729700173670.98106729700173670.00.0FalseFalsenanTrue72FalseFalseFalse
10103575019590.9233171043552312-0.48017380567322850TrueFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse2844.997543646197352.36198743810862FalseFalseFalse2845.01715954683751.99697697623359FalseFalseFalseFalse2845.02845.052.052.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.0259907.7045650681259907.70456506810.0259888.83875385614259888.8387538561434.0120055436166286.3664432766023119.67917555198438634.0120055436166286.3664432766023119.67917555198438633.9962886531845186.3332219090696619.6704278360501933.9962886531845186.3332219090696619.67042783605019TrueTrueTrue34.2750457055056387.2591886278954719.838893437161290.423626450.50842921.078492845.00805391580252.21995109610489263103.973203131871625.93216523947654.4718056668331985.282644707347525-0.10630454837659148-344.39392-199.3402-876.7759FalseFalseFalseFalseFalseFalse-0.0018524889783862715-0.00185248897838627150.00118527338092872970.00118527338092872974.4752751482177154.4752751482177155.2852407096849535.285240709684953-0.10606831302537593-0.10606831302537593TrueTrueFalseFalseFalseFalseFalseFalse-0.50736707448959350.38994640111923220.0048717586323618890.9123671650886536FalseFalseFalseFalseFalse2845.015905765612845.0159057656152.4396307397262352.4396307397262334.32935626259736534.32935626259736587.0977966217163887.0977966217163819.88822073964337619.888220739643376TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse2845.0015121725092845.00151217250952.4028023555132852.4028023555132840.1082349561249140.1082349561249158.409417951987858.40941795198786.5451217412410676.545121741241067TrueTrueFalseFalseFalseFalseFalseFalse246525.53246525.5328808.5625221.85679626464844TrueFalseFalse55015.73828125321.6400451660156TrueFalseFalse82856.625413.9692687988281TrueFalseFalse135166.375581.524169921875TrueFalseFalse180920.15625180920.15625180920.15625738.4222412109375738.4222412109375738.4222412109375TrueTrueTrueFalseFalseFalseFalseFalseFalse237391.1485939026988.2418732273998TrueFalse293457.369232565161379.2646591571902TrueFalse324003.19768005611866.8735897215965TrueFalse341125.448683232072603.52261369092TrueFalsenannanTrueTrue289823.2214307699289823.2214307699289823.22143076991266.4661694987091266.4661694987091266.466169498709FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse64110.7593732752764110.75937327527372.22047331133246372.22047331133246TrueTrueFalseFalseFalseFalseFalse827.0False251719.505117673661046.71789165193246.96593913.2715952.762747TrueFalseFalseFalseFalseFalseFalseFalseFalseTrue1.1018479114767911.1018479114767911.1018479114767910.00.00.0FalseFalseFalse1.03366450394543090.0False0.98519635720542410.98519635720542410.00.0FalseFalsenanTrue3087FalseFalseFalse
10103575019600.9234794124400545-0.48082501844873040FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse3532.10416806388126.984826867962663FalseFalseFalse3531.88625230229827.141299683319943FalseFalseFalseFalse3532.03532.027.027.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.03278.05696588600183278.05696588600180.03376.10194971614153376.10194971614156.05987793931902711.5998830359857783.6928167413064726.05987793931902711.5998830359857783.6928167413064727.67743204194794912.6715499539883044.3049469952922437.67743204194794912.6715499539883044.304946995292243TrueTrueTrue6.15292502397062612.0245583519834483.83195902582526851.48514381.60716522.90239173532.014490966553227.044471716422443409.847433284362411.52084263900324.4595223998862575.369500902473593-0.06577093322153546-305.58383-190.3135-597.1973FalseFalseFalseFalseFalseFalse-0.003014795309737453-0.0030147953097374530.00176914146943715770.00176914146943715774.4630435769968274.4630435769968275.3722972434053195.372297243405319-0.06541670326897168-0.06541670326897168TrueTrueFalseFalseFalseFalseFalseFalse-0.51179355382919310.87665057182312010.43100407719612120.39622387290000916FalseFalseFalseFalseFalse3531.9557382348253531.95573823482526.92113803698992726.9211380369899275.9753324368834615.97533243688346110.76024283028628210.7602428302862823.3533014606836353.353301460683635TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3532.00093081468143532.000930814681426.9110969384554126.911096938455417.62429374051786557.62429374051786559.8324651965230789.8324651965230781.43218223492829821.4321822349282982TrueTrueFalseFalseFalseFalseFalseFalse3461.27323461.27321404.349853515625152.13653564453125TrueFalseFalse2415.909423828125228.9794921875TrueFalseFalse2931.16552734375304.7228088378906TrueFalseFalse3770.107421875456.302978515625TrueFalseTrue3380.77343753380.77343753380.7734375607.1520385742188607.1520385742188607.1520385742188TrueTrueTrueFalseFalseFalseTrueTrueTrue3892.829331703484861.7406802513156TrueFalse6639.9116827026011270.592775046356TrueFalsenannanTrueTruenannanTrueTruenannanTrueTrue3637.92868397145963637.92868397145963637.9286839714596310.7077094982714310.7077094982714310.7077094982714FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse2841.00897300895352841.0089730089535255.73505677142194255.73505677142194TrueTrueFalseFalseFalseFalseFalse821.0False3899.0801290395116424.868191912593833.246491213.2715952.772335TrueFalseFalseFalseFalseFalseFalseFalseFalseTrue1.0979153678094831.0979153678094831.0979153678094830.00.00.0FalseFalseFalse1.0315688396734740.0False0.98249727728331140.98249727728331140.00.0FalseFalsenanTrue192FalseFalseFalse
10103575019610.9230547505458153-0.47936343605326540FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse1976.600463315338428.9329083178396FalseFalseFalse1975.94029864158329.195915514247517FalseFalseFalseFalse1976.08433547852931976.084335478529329.54775772600118329.5477577260011830.30258850.30258850.315610260.31561026FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.03562.4214601184123562.4214601184120.03642.16362270181663642.16362270181667.1092045759787816.067559339816632-0.29016034042140777.1092045759787816.067559339816632-0.29016034042140778.0566839906755416.576248964607329-0.53639333239950188.0566839906755416.576248964607329-0.5363933323995018FalseFalseFalse6.8920179679590515.928448967643259-0.224133554551902431.50528970.98780051.2948361976.125081914756729.486543023830563532.681065721204385.787445380797244.4953282695378215.213532958496303-0.13691294423250328-290.360939.442753-249.76575FalseFalseFalseFalseFalseFalse-0.00047205806828473965-0.000472058068284739650.00166225621596824870.00166225621596824874.4989289446259014.4989289446259015.21635369243437455.2163536924343745-0.13694317899239136-0.13694317899239136FalseFalseFalseFalseFalseFalseFalseFalse0.771817147731781-0.129523590207099910.5647237896919250.23256565630435944FalseFalseFalseFalseFalse1976.19048671362571976.190486713625729.4012435359290629.401243535929067.2229518680329377.2229518680329376.1373605291747446.137360529174744-0.33439722354113866-0.33439722354113866FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1976.14686369114571976.146863691145729.39615120059568629.3961512005956866.7548476421015636.7548476421015636.40892004844721356.4089200484472135-0.21271008390407886-0.21271008390407886FalseFalseFalseFalseFalseFalseFalseFalse3584.54793584.54791781.56005859375154.48526000976562FalseFalseFalse2822.815185546875229.62521362304688FalseFalseFalse3232.01171875304.92437744140625FalseFalseFalse3860.5830078125456.303955078125FalseFalseTrue4357.19824218754357.19824218754357.1982421875607.8915405273438607.8915405273438607.8915405273438FalseFalseFalseFalseFalseFalseTrueTrueTrue5381.20047223568866.5483252537044FalseFalse5475.0870805382731271.8065890692658FalseFalsenannanTrueTruenannanTrueTruenannanTrueTrue3980.5155327872583980.5155327872583980.515532787258304.277250513915304.277250513915304.277250513915FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3415.46824573279173415.4682457327917258.4556172698553258.4556172698553FalseFalseFalseFalseFalseFalseFalse823.0False4183.613532767399562.8287420589224.270874515.4721662.7570622FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.10464252827855171.10464252827855171.10464252827855170.00.00.0FalseFalseFalse1.03568311638872480.0False0.98794203378836040.98794203378836040.00.0FalseFalse1.0False203FalseFalseFalse
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
10103575046050.9276100366033875-0.479747640209798431010357503918FalseFalseFalseFalse0True3408.03961.03212.4007116615426FalseFalseFalseFalseFalseFalseFalse3408.48576121233553960.7484770219494FalseFalseFalse3408.07675834558543960.0192416778045FalseFalseFalseFalse3408.3533156081873408.3533156081873960.80017452517363960.80017452517360.478496580.478496580.553202750.55320275FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.032745872658556910.0108718715139595195111.0236278375095167.2007707034290.0155673723590585845161.9620360554525243.5909691711369.0130156559409768.705878947209724-0.68474960994019579.4729674856445358.73015413453301-0.76835889515793089.8681852896201479.336571216987062-0.612675267322953610.6694101545076639.445667454574455-0.7365825928146694FalseFalseFalse9.0604280496788748.891411507832181-0.73813306276693971.60477391.12790761.57483793408.3969839643783960.78620327358985193.6497473183135459.94701606807154.4817988737056355.351930242484749-0.04678096228317851-369.0554830.066137-362.17102FalseFalseFalseFalseFalseFalse0.00234068787483495070.00234068787483495070.0023511700957531480.0023511700957531484.4855959927415254.4855959927415255.3549188734349435.354918873434943-0.0466720913405956-0.0466720913405956FalseFalseFalseFalseFalseFalseFalseFalse0.17984411120414734-0.18199735879898070.268361061811447140.41146934032440186FalseFalseFalseFalseFalse3408.44359251374363408.44359251374363960.76824425827453960.76824425827459.1083429743176589.1083429743176588.7019801449382758.701980144938275-0.7208186160120865-0.7208186160120865FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3408.43044355495163408.43044355495163960.75497333919663960.75497333919668.983049106660128.983049106660128.7390831956241338.739083195624133-0.3437568908354098-0.3437568908354098FalseFalseFalseFalseFalseFalseFalseFalse5162.04935162.04932160.450927734375155.73193359375FalseFalseFalse3418.4697265625230.8243865966797FalseFalseFalse4426.9921875306.9766845703125FalseFalseFalse5006.96875457.759033203125FalseFalseFalse5816.964843755816.964843755816.96484375609.7875366210938609.7875366210938609.7875366210938FalseFalseFalseFalseFalseFalseFalseFalseFalse6467.3769488844555867.6347157646471FalseFalse6802.790759467521272.0821514351971FalseFalse6521.6908178860321779.9587073862135FalseFalse3421.4979460472242540.1102338284454FalseFalse5031.9733803505083556.8173976182698FalseFalse5759.5335276533985759.5335276533985759.533527653398363.18213855423164363.18213855423164363.18213855423164FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse4131.3722336762894131.372233676289261.78043923300083261.78043923300083FalseFalseFalseFalseFalseFalseFalse823.0False6007.003747397248691.95357336837965.191828317.8731692.7735794FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11351244508343441.11351244508343441.11351244508343440.00.00.0FalseFalseFalse1.04264872554122870.0False0.99012134285250310.99012134285250310.00.0FalseFalse1.0False345FalseFalseFalse
10103575046060.9276113859032618-0.479759720357826051010357503918FalseFalseFalseFalse0True3421.03959.01697.9538702280338FalseFalseFalseFalseFalseFalseFalse3420.90058274680043959.2635521902885FalseFalseFalse3420.0322324244633958.082060341563FalseFalseFalseFalse3420.71091418676133420.71091418676133958.8554272777463958.8554272777460.88531450.88531451.15067851.1506785FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.11153893106591790.0213849281711363532043.05022367582232087.69544071880270.031563037404966132296.20948885779762371.0469318569285.8165661583224568.652533244554137-1.50661963508214956.4647237125467178.717164609079484-1.6757936991957267.50236883062769211.488630628424154-1.80828006547608168.42326985952435311.600272525151253-2.1355605723601223FalseFalseFalse6.59813986650859359.47380899730706-1.8663135176897642.49821352.17490773.58701063420.79015882325673959.0058413916822184.8433244058983413.616970743217734.48180661807705155.353430612989533-0.045430341127437816-516.65173146.13728-741.8243FalseFalseFalseFalseFalseFalse0.00234218715219858350.00234218715219858350.0023826897849996240.0023826897849996244.48561167688788754.48561167688788755.3564272458735295.356427245873529-0.04531924269584925-0.04531924269584925FalseFalseFalseFalseFalseFalseFalseFalse-0.7841657996177673-1.41757643222808840.80155783891677860.27552369236946106FalseFalseFalseFalseFalse3420.8318955374243420.8318955374243959.19064664285543959.19064664285545.9346090989685085.9346090989685088.412048605529888.41204860552988-1.4286222855636772-1.4286222855636772FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3420.883475407823420.883475407823959.259322402093959.259322402096.4086309024263256.4086309024263257.46405047062003757.4640504706200375-0.5111695718426064-0.5111695718426064FalseFalseFalseFalseFalseFalseFalseFalse2060.3572060.3571027.536376953125152.36181640625FalseFalseFalse1540.265380859375226.88035583496094FalseFalseFalse1801.6658935546875302.99066162109375FalseFalseFalse2675.472900390625455.60577392578125FalseFalseFalse3616.74511718753616.74511718753616.7451171875608.9865112304688608.9865112304688608.9865112304688FalseFalseFalseFalseFalseFalseFalseFalseFalse4510.08859562967869.186401182163FalseFalse3480.30894670099951272.6928144685976FalseFalse1932.97484290809371778.6534232390525FalseFalse415.573198350379242540.7933800291594FalseFalse-1857.56921759038233556.273611520913FalseFalse2306.532625547892306.532625547892306.53262554789309.4082003127604309.4082003127604309.4082003127604FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1950.6427383594491950.642738359449256.27895519921685256.27895519921685FalseFalseFalseFalseFalseFalseFalse826.0False4378.3351788762975903.20880195611786.782757815.7831122.7737799FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11347126928024241.11347126928024241.11347126928024240.00.00.0FalseFalseFalse1.04264379048646830.0False0.99009251071453170.99009251071453170.00.0FalseFalse1.0False334FalseFalseFalse
10103575046070.9277188763009131-0.480073380297077971010357503921FalseFalseFalseFalse0True3758.03972.08043.02552951514FalseFalseFalseFalseFalseFalseFalse3758.3410058913972.419299220144FalseFalseFalse3758.0071795093443972.005907797692FalseFalseFalseFalse3758.2461162579533758.2461162579533972.4345182202153972.4345182202150.136241930.136241930.143617820.14361782FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.0099251048185010210.000972902865064795311558.07194403261411569.3277761729260.001363256447892924311604.75001578101511620.591862565998.4141682074694788.247047534538712-0.100801826436385698.4437241002099188.256290811991493-0.09364388065295988.547463540032078.568178885256486-0.146053711324116018.5988738102034368.589248249331584-0.12780991181771645FalseFalseFalse8.4449767147199188.281474626839573-0.125519042545340770.68846130.482134340.675132163758.2977153410833972.437221409916711671.55607954596475.75114334592974.4820237393181115.395199631939961-0.007135377440383706-163.768132.4341116-160.59744FalseFalseFalseFalseFalseFalse0.00257386341587503630.00257386341587503630.003629513152844740.003629513152844744.4854641168182344.4854641168182345.3977500803942515.397750080394251-0.007274487049382675-0.007274487049382675FalseFalseFalseFalseFalseFalseFalseFalse0.18851682543754578-0.047720991075038910.123615421354770660.37102121114730835FalseFalseFalseFalseFalse3758.3495541196073758.3495541196073972.44098787054743972.44098787054748.4655023709402878.4655023709402878.313083458477088.31308345847708-0.10438754579644638-0.10438754579644638FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3758.3504222930223758.3504222930223972.44305276252453972.44305276252458.4327275230005728.4327275230005728.3666173926407648.366617392640764-0.04909429439661242-0.04909429439661242FalseFalseFalseFalseFalseFalseFalseFalse11700.97211700.9725106.86328125164.53384399414062FalseFalseFalse8110.1845703125240.5877685546875FalseFalseFalse10131.5556640625315.8812255859375FalseFalseFalse12171.0908203125465.2237243652344FalseFalseFalse12596.028320312512596.028320312512596.0283203125614.7662353515625614.7662353515625614.7662353515625FalseFalseFalseFalseFalseFalseFalseFalseFalse12102.444542870391872.1066448548595FalseFalse12067.363346604981275.879696523148FalseFalse13358.98528629391785.633221017127FalseFalse15641.9525436445842544.873670734954FalseFalse11714.7189542043559.623575604589FalseFalse13006.29073426940513006.29073426940513006.290734269405374.8783041613484374.8783041613484374.8783041613484FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse9711.6229461618249711.622946161824276.2989101191402276.2989101191402FalseFalseFalseFalseFalseFalseFalse820.0False12437.726413719358468.763612795942153.475942917.3775352.7792652FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11260399937480031.11260399937480031.11260399937480030.00.00.0FalseFalseFalse1.042695870541760.0False0.9897868724728240.9897868724728240.00.0FalseFalse1.0False507FalseFalseFalse
10103575046080.9277065384888925-0.48006302640359851010357503921FalseFalseFalseFalse0True3745.03966.01867.692301516086FalseFalseFalseFalseFalseFalseFalse3745.24435006220263964.866360915234FalseFalseFalse3745.05252291927853964.318841850098FalseFalseFalseFalse3745.08590588920743745.08590588920743964.2225370256473964.2225370256470.47138570.47138571.38752891.3875289FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.104092330784322940.0123074462841250562175.8752322756842202.9883935943980.0185860531285064752370.16685748156032415.0531638938593.07208654771414515.0087936490202961.10333688970071653.10975612650021215.0590431106600191.1546031131431944.19204185222859817.9795355778610141.02954500493565254.29186967094646718.325653600333281.175638089450075FalseFalseFalse355.8548948812654240.87655717402257228.8986858556811nannannan3745.03142625576633964.230991000583nannan4.4821136616541445.393851006035526-0.008610663323247388nannannanTrueFalseTrueFalseFalseFalse0.00254308463477677950.00254308463477677950.00354328368228643260.00354328368228643264.4856095610013324.4856095610013325.3964665029750545.396466502975054-0.008738354419686704-0.008738354419686704FalseFalseFalseFalseFalseFalseFalseFalse-1.07805263996124270.218233957886695860.74919372797012330.3549407422542572FalseFalseFalseFalseFalse3745.0626491905783745.0626491905783964.9257769408923964.9257769408923.0627943063722533.06279430637225312.43453981720475312.4345398172047530.85649645633931890.8564964563393189FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3745.11931337422273745.11931337422273965.3701993900883965.3701993900884.5936590593007884.5936590593007889.8119724142554659.8119724142554651.16226016123084761.1622601612308476FalseFalseFalseFalseFalseFalseFalseFalse2114.07472114.07471013.7000122070312152.03372192382812FalseFalseFalse1575.212158203125227.1309814453125FalseFalseFalse2071.24267578125303.4251403808594FalseFalseFalse2319.564453125454.901123046875FalseFalseFalse2588.233886718752588.233886718752588.23388671875607.4537963867188607.4537963867188607.4537963867188FalseFalseFalseFalseFalseFalseFalseFalseFalse2242.824238797417868.1186554843756FalseFalse385.150741063131141274.6058214208815FalseFalse2655.5312104151381781.6186460631804FalseFalse-1135.36566872142432543.4765577846397FalseFalse-2194.18081349872233556.8613973558204FalseFalse2448.65598439184852448.65598439184852448.6559843918485292.01943854435626292.01943854435626292.01943854435626FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1979.69768285285681979.6976828528568256.5233918350809256.5233918350809FalseFalseFalseFalseFalseFalseFalse824.0False2357.4402351054327371.100225893090852.819901514.8329112.7791066FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.1125908427189921.1125908427189921.1125908427189920.00.00.0FalseFalseFalse1.04266663186011230.0False0.9897345980233050.9897345980233050.00.0FalseFalse1.0False454FalseFalseFalse
10103575046090.9277465529622956-0.480079694331067061010357503932FalseFalseFalseFalse0True3771.03996.02056.0471691451585FalseFalseFalseFalseFalseFalseFalse3770.83316270373963995.420959919661FalseFalseFalse3770.0232485340763994.8833651321434FalseFalseFalseFalse3770.89680862165143770.89680862165143995.2348983196233995.2348983196231.22633231.22633230.911069040.91106904FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.069756769355060020.049412461025324937095.0657214854197463.8741100459980.063696406740224487540.041302870038052.98768171880924.3447022604320513.0896626558871342.469887856110554427.35624045298717614.2847522212332210.762094137101819128.36076489515479815.3288455848006963.96610829339153832.63932348444054616.6573679446274632.1705181898150068FalseFalseFalse8.957173107681436.584333510196121.0325695741030263nannannan3771.0432098515583995.269995169916nannan4.4815436574667635.395534384306248-0.005901159790652673nannannanTrueFalseTrueFalseFalseFalse0.0026444400175139820.0026444400175139820.00377881660657953650.00377881660657953654.4849831900569394.4849831900569395.3980653103560255.398065310356025-0.006049665421406922-0.006049665421406922FalseFalseFalseFalseFalseFalseFalseFalse0.54464662075042720.202363401651382450.146191671490669250.7076708674430847FalseFalseFalseFalseFalse3770.912948193163770.912948193163995.443472122353995.4434721223524.08624065741109324.08624065741109312.97191469752068812.9719146975206882.33123653636065782.3312365363606578FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3770.8891623113083770.8891623113083995.34847486135373995.348474861353722.351113050512622.351113050512616.75909901494589216.7590990149458921.24850334360346941.2485033436034694FalseFalseFalseFalseFalseFalseFalseFalse7435.8537435.8531614.2213134765625153.8631591796875FalseFalseFalse3202.833984375230.5242462158203FalseFalseFalse4382.42529296875307.26055908203125FalseFalseFalse6447.1708984375459.9137268066406FalseFalseFalse7546.100097656257546.100097656257546.10009765625612.267578125612.267578125612.267578125FalseFalseFalseFalseFalseFalseFalseFalseFalse8062.100552755452870.9678524492164FalseFalse8524.1943102251241277.5104696244175FalseFalse8152.6798283230021784.9907562785866FalseFalse3400.57269740807532544.283199645826FalseFalse6545.5593475769713559.0161561869877FalseFalse7987.5921286860647987.5921286860647987.592128686064481.38096459581493481.38096459581493481.38096459581493FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3496.794102873873496.79410287387259.4558783854039259.4558783854039FalseFalseFalseFalseFalseFalseFalse824.0False9311.434486225364974.58465635508947.2951625.1153582.779233FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11272126841034911.11272126841034911.11272126841034910.00.00.0FalseFalseFalse1.04278034893711120.0False0.9899686686417290.9899686686417290.00.0FalseFalse1.0False520FalseFalseFalse
10103575046100.9277538247212633-0.48006843066939741010357503932FalseFalseFalseFalse0True3761.04005.02447.559099689495FalseFalseFalseFalseFalseFalseFalse3761.32470502065644004.7231443606265FalseFalseFalse3761.035899109294004.0955291897503FalseFalseFalseFalse3761.3308588636483761.3308588636484004.57154773970754004.57154773970750.4861410.4861410.6363410.636341FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.082411344649922880.0416365543967159865253.9554420047745482.2160278634590.050178189994525285422.0164310629685708.4564430371589.9227575231399613.893461676066222-0.648902773484708211.09339599561125315.805712175336208-2.028624810562726511.84367578408698516.30574809939161-0.562845606255545413.28142000501717718.586756956547987-2.1517690642825387FalseFalseFalse9.88018232081005713.701374625870338-0.52011019474135761.89113781.57630872.62254173761.37688705118444004.5922058410725255.520563784317502.972170448568534.4812959755496095.393636143066219-0.007178043015308446-475.5948525.036148-659.53265FalseFalseFalseFalseFalseFalse0.0026636499517755610.0026636499517755610.00378314004204095050.00378314004204095054.484731064427344.484731064427345.3961749732810825.396174973281082-0.007317177212722565-0.007317177212722565FalseFalseFalseFalseFalseFalseFalseFalse-0.2627652883529663-0.13805425167083740.228767171502113340.5586349964141846FalseFalseFalseFalseFalse3761.41827886202373761.41827886202374004.64011242313974004.64011242313979.9064298611893479.90642986118934714.28431948487607414.284319484876074-0.7257793734023735-0.7257793734023735FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3761.39187853778873761.39187853778874004.6476923286284004.64769232862811.07689638053618211.07689638053618213.31399134679044713.313991346790447-0.333477845576668-0.333477845576668FalseFalseFalseFalseFalseFalseFalseFalse5362.69245362.69241692.944580078125154.53829956054688FalseFalseFalse2910.349609375229.55551147460938FalseFalseFalse4194.373046875306.5992126464844FalseFalseFalse5218.15771484375458.3401794433594FalseFalseFalse4736.7343754736.7343754736.734375609.8260498046875609.8260498046875609.8260498046875FalseFalseFalseFalseFalseFalseFalseFalseFalse5033.59344449884870.7347472106532FalseFalse5503.7928764222911276.1825888171331FalseFalse5121.7957194446371785.5116913646912FalseFalse-1586.82124659430522544.03360826857FalseFalsenannanTrueTrue5910.0023855639625910.0023855639625910.002385563962413.6417233616912413.6417233616912413.6417233616912FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3510.8620012503543510.862001250354260.2236129812605260.2236129812605FalseFalseFalseFalseFalseFalseFalse821.0False5062.477997613962841.1639770479346.31533420.674762.7789366FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11281930179225651.11281930179225651.11281930179225650.00.00.0FalseFalseFalse1.04281663366189650.0False0.99006535818665560.99006535818665560.00.0FalseFalse1.0False518FalseFalseFalse
10103575046110.9276504842721082-0.479647895674777561010357503941FalseFalseFalseFalse0True3318.04022.03114.21563721493FalseFalseFalseFalseFalseFalseFalse3318.19462715439754022.364489283985FalseFalseFalse3317.9822653423794022.0538177688536FalseFalseFalseFalse3318.19279170166653318.19279170166654022.41927153964344022.41927153964340.27748740.27748740.349711150.34971115FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.054892354836600590.00192097853195805083046.362118573553052.22537799938440.0036748046370578273271.01781387511663283.08250067243134.5810182492036556.8605082929816021.54711559998868944.6009232177465786.8630278581924241.56129722422950915.4739987138783557.3062233436008361.6009025734036535.5252017408219257.4046436153733921.6645873900360026FalseFalseFalse4.6001021874906296.87134090742971.56103934187484981.04965170.941442851.56790323318.1572909109394022.45529736910163075.512264988414350.885334299776564.4806390434515745.338544709913181-0.05727487369817446-184.1537-62.492336-275.0771FalseFalseFalseFalseFalseFalse0.0024475652513090320.0024475652513090320.00232418342243267830.00232418342243267834.48440330707253754.48440330707253755.3415015066733855.341501506673385-0.057184021461530135-0.057184021461530135FalseFalseFalseFalseFalseFalseFalseFalse-2.5535306930541996.22693920135498051.04206645488739010.13451442122459412FalseFalseFalseFalseFalse3318.11849063858243318.11849063858244022.490878382774022.490878382774.6289502140499034.6289502140499036.9590152490883986.9590152490883981.66285647000556951.6628564700055695FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3318.16482489498463318.16482489498464022.3985098479494022.3985098479494.6361650799329644.6361650799329645.5414164528751925.5414164528751920.6611600669519250.661160066951925FalseFalseFalseFalseFalseFalseFalseFalse2925.7162925.7161769.234619140625154.67242431640625FalseFalseFalse2473.67822265625228.84710693359375FalseFalseFalse2857.62451171875304.2252197265625FalseFalseFalse3439.818359375456.016845703125FalseFalseFalse3918.0280761718753918.0280761718753918.028076171875608.0740966796875608.0740966796875608.0740966796875FalseFalseFalseFalseFalseFalseFalseFalseFalse4554.875184066652867.2352621982111FalseFalse4393.7448788227631272.2397572784778FalseFalse4551.461154782971781.0654114883034FalseFalsenannanTrueTruenannanTrueTrue3434.44599222200533434.44599222200533434.4459922220053277.0763218984791277.0763218984791277.0763218984791FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3247.8916631538023247.891663153802260.24371054642256260.24371054642256FalseFalseFalseFalseFalseFalseFalse820.0False4082.970990441375628.13290759667044.749010613.9770212.7716343FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11410844004995861.11410844004995861.11410844004995860.00.00.0FalseFalseFalse1.0428409964202290.0False0.99072538943351730.99072538943351730.00.0FalseFalse0.0False410FalseFalseFalse
10103575046120.9276339235895114-0.479643719121406741010357503941FalseFalseFalseFalse0True3310.04009.02603.040157469476FalseFalseFalseFalseFalseFalseFalse3310.2161268152844009.272272145882FalseFalseFalse3310.05392082889384008.121183066228FalseFalseFalseFalse3310.21747539144373310.21747539144374008.88227269671324008.88227269671320.326207130.326207130.782633360.78263336FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.050344891864363860.0212924198608160923859.0663279716853943.022825492860.0287791658727700744043.63031415508344163.4509599341733.65605003327066518.161328591099760.50770071641198483.69910005337675220.0797983851461870.7681116366281644.39905007677777620.1151775954157940.37476084344759114.50874277219124722.62822326619750.8412949224672491FalseFalseFalse3.68818247258916918.1102289171940460.5752791774220670.800980031.25815953.93308423310.20170649150034008.8992647817863912.6714369255938424.866683939581434.4810036832590355.33848613634502-0.0578726029773183-170.15486-26.540594-835.5182FalseFalseFalseFalseFalseFalse0.00240984841486441540.00240984841486441540.0022436366312843230.0022436366312843234.4847678621140684.4847678621140685.3414464737284415.341446473728441-0.057785063995373365-0.057785063995373365FalseFalseFalseFalseFalseFalseFalseFalse-1.27067494392395020.091181091964244840.25578501820564270.5287228226661682FalseFalseFalseFalseFalse3310.1915610116423310.1915610116424008.9252434815834008.9252434815833.67671649079679553.676716490796795517.97044023250412817.9704402325041280.476581907391304850.47658190739130485FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3310.7009375480953310.7009375480954008.94864194303734008.94864194303737.6076087507468877.60760875074688712.63817144906360712.638171449063607-0.2323393258724401-0.2323393258724401FalseFalseFalseFalseFalseFalseFalseFalse4078.96464078.96461587.6236572265625153.9607696533203FalseFalseFalse2346.549560546875228.83824157714844FalseFalseFalse3373.294677734375305.4089050292969FalseFalseFalse4291.17333984375457.1722717285156FalseFalseFalse4458.28027343754458.28027343754458.2802734375608.7979125976562608.7979125976562608.7979125976562FalseFalseFalseFalseFalseFalseFalseFalseFalse4754.149877850767867.015570794435FalseFalse4689.2798030688281273.5603637048382FalseFalse4276.1015135957711780.323846944707FalseFalse8085.6270720823522542.3640573293196FalseFalsenannanTrueTrue4348.57011484511354348.57011484511354348.5701148451135347.09860119871837347.09860119871837347.09860119871837FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3200.2177038508483200.217703850848259.8823069492012259.8823069492012FalseFalseFalseFalseFalseFalseFalse820.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseFalse1.1140344444896421.1140344444896421.1140344444896420.00.00.0FalseFalseFalse1.04279275474611730.0False0.9906167358436560.9906167358436560.00.0FalseFalse1.0False416FalseFalseFalse
10103575046130.9275224846731133-0.479231906606978451010357503945FalseFalseFalseFalse0True2874.04018.03356.2270217677687FalseFalseFalseFalseFalseFalseFalse2873.9348541531034017.61966027659FalseFalseFalse2873.0373922796764017.064410319622FalseFalseFalseFalse2873.9270466385122873.9270466385124017.59085340159574017.59085340159570.330509280.330509280.28129210.2812921FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.062858825102690030.0218570205940237243561.60395517045533641.18950926111850.0285894760761860053606.9936922123093713.15072606234076.74335241132616854.9252636834127-0.248586749064982887.374475924048755.016816880496866-0.44812569881601537.21416373794924855.345764025165738-0.135637855399554458.0886703333401755.50801320606529-0.42618116315503307FalseFalseFalse6.7781329722974094.961561895196438-0.217627385818108171.3566030.82129190.99302712873.92759952280864017.61016541266643599.773285228468360.236665010416064.48420805478778655.298396909824647-0.10002755027369373-244.349097.8453856-178.86238FalseFalseFalseFalseFalseFalse0.0022292965124071080.0022292965124071080.00111596475477992420.00111596475477992424.487907887385034.487907887385035.3013371750476345.301337175047634-0.10004142175608458-0.10004142175608458FalseFalseFalseFalseFalseFalseFalseFalse1.2095670700073242-0.075856655836105350.87984633445739750.14959576725959778FalseFalseFalseFalseFalse2873.9307540871932873.9307540871934017.62966452687854017.62966452687856.7847993888042636.7847993888042634.98155695839651454.9815569583965145-0.1888659716027619-0.1888659716027619FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse2873.9438404641942873.9438404641944017.63343636555564017.63343636555566.3933919512566436.3933919512566435.3908676802082915.390867680208291-0.0016886010613951592-0.0016886010613951592FalseFalseFalseFalseFalseFalseFalseFalse3611.4493611.4491994.705078125154.9298095703125FalseFalseFalse2880.355224609375229.916259765625FalseFalseFalse3433.96533203125305.6745910644531FalseFalseFalse3974.500732421875457.4093017578125FalseFalseFalse3964.42871093753964.42871093753964.4287109375609.2817993164062609.2817993164062609.2817993164062FalseFalseFalseFalseFalseFalseFalseFalseFalse3441.4820769736543866.5633271723423FalseFalse3269.25062355492261271.2497787610428FalseFalse1788.57395815942441777.5505618687757FalseFalse1621.71796543989332540.4971954324214FalseFalsenannanTrueTrue4017.68274139057264017.68274139057264017.6827413905726285.7340882061717285.7340882061717285.7340882061717FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3647.7532384470883647.753238447088260.9834992246833260.9834992246833FalseFalseFalseFalseFalseFalseFalse821.0False3713.3470362983494563.99568626022714.263247514.4631252.766762FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11461526464153331.11461526464153331.11461526464153330.00.00.0FalseFalseFalse1.04262304690233340.0False0.99091144892388080.99091144892388080.00.0FalseFalse1.0False293FalseFalseFalse
10103575046140.9275184726569182-0.479240903367489261010357503945FalseFalseFalseFalse0True2882.04014.01272.9455951824368FalseFalseFalseFalseFalseFalseFalse2881.03830104797234011.221303117771FalseFalseFalse2880.86828992119444010.905577916985FalseFalseFalseFalse2881.97174983924472881.97174983924474011.70486565632934011.70486565632930.79056940.79056942.3418672.341867FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.193972376737670820.096139610832019942011.71620699100072225.69351539215270.11456968907765732207.0369586178732492.61509504777135.70724425780291714.552733807501276-0.369091653709338057.28901080550157915.50157342537748-1.3930350795215247.692036333862450416.311959695280110.072870448621532449.4276111063772917.360424671832252-1.2430590524318474FalseFalseFalse3.6295750930841787.254154866990005-0.6118455152492972nannannan2882.08694627067554012.061579376166nannan4.4842575198575825.299317650455579-0.0991858821550719nannannanTrueFalseTrueFalseFalseFalse0.00221940840939898860.00221940840939898860.00111165468288847070.00111165468288847074.4879690780852814.4879690780852815.3022711789198925.302271178919892-0.09920098591388689-0.09920098591388689FalseFalseFalseFalseFalseFalseFalseFalse-0.48229360580444336-0.095578558743000030.76582634449005130.37288880348205566FalseFalseFalseFalseFalse2882.14854479189942882.14854479189944013.0779050881874013.0779050881875.9748013445288345.97480134452883410.23345631207996210.233456312079962-0.4177984311468803-0.4177984311468803FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse2882.1563131033952882.1563131033954013.11956782192244013.11956782192246.7144261352920366.7144261352920368.9528265041638028.952826504163802-0.15770892593000868-0.15770892593000868FalseFalseFalseFalseFalseFalseFalseFalse2040.9172040.917809.4622192382812151.2576904296875FalseFalseFalse1494.027587890625227.06768798828125FalseFalseFalse1863.7652587890625303.50848388671875FalseFalseFalse2125.309814453125455.9118957519531FalseFalseFalse2272.0100097656252272.0100097656252272.010009765625609.0165405273438609.0165405273438609.0165405273438FalseFalseFalseFalseFalseFalseFalseFalseFalse1344.5725321097998866.0121246264396FalseFalse2599.58835524503961271.3988359283644FalseFalse-172.49326522464981777.2906346458926FalseFalse-2922.0582023840692538.8322118643446FalseFalsenannanTrueTrue2269.73519978637522269.73519978637522269.7351997863752312.07836668489312.07836668489312.07836668489FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1632.1484967076491632.148496707649254.97047306928545254.97047306928545FalseFalseFalseFalseFalseFalseFalse821.0False2190.592864588474364.935383219973972.7668974nan2.7668974FalseFalseFalseFalseFalseTrueFalseTrueFalseFalse1.11457500142851251.11457500142851251.11457500142851250.00.00.0FalseFalseFalse1.04261025123203940.0False0.99086195283486210.99086195283486210.00.0FalseFalse1.0False293FalseFalseFalse
" + ], + "text/plain": [ + "\n", + " id coord_ra ... calib_photometry_reserved\n", + " rad ... \n", + " int64 float64 ... bool \n", + "------------- ------------------ ... -------------------------\n", + "1010357501953 0.923033029229361 ... False\n", + "1010357501954 0.9231694833170864 ... False\n", + "1010357501955 0.9232606263113138 ... False\n", + "1010357501956 0.9235299085068365 ... False\n", + "1010357501957 0.9227888992171793 ... False\n", + "1010357501958 0.9235455709036104 ... False\n", + "1010357501959 0.9233171043552312 ... False\n", + "1010357501960 0.9234794124400545 ... False\n", + "1010357501961 0.9230547505458153 ... False\n", + " ... ... ... ...\n", + "1010357504605 0.9276100366033875 ... False\n", + "1010357504606 0.9276113859032618 ... False\n", + "1010357504607 0.9277188763009131 ... False\n", + "1010357504608 0.9277065384888925 ... False\n", + "1010357504609 0.9277465529622956 ... False\n", + "1010357504610 0.9277538247212633 ... False\n", + "1010357504611 0.9276504842721082 ... False\n", + "1010357504612 0.9276339235895114 ... False\n", + "1010357504613 0.9275224846731133 ... False\n", + "1010357504614 0.9275184726569182 ... False" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_cat.asAstropy()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#sorting is supported. by default catalogs are sorted by id\n", + "source_cat.isSorted(id_key)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#you can cut on the catalog\n", + "#make a bool array to only keep sources with positive psf flux\n", + "#we will showcase another way to use aliasing too\n", + "psf_mask = source_cat.getPsfFlux() > 0\n", + "pos_flux = source_cat.subset(psf_mask)\n", + "\n", + "#you can sort on other keys too\n", + "flux_key = pos_flux.getPsfFluxKey()\n", + "pos_flux.sort(flux_key)\n", + "pos_flux.isSorted(flux_key)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + " id coord_ra ... calib_photometry_reserved\n", + " rad ... \n", + "------------- ------------------ ... -------------------------\n", + "1010357504605 0.9276100366033875 ... False\n", + "1010357504606 0.9276113859032618 ... False" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#get the children of particular objects\n", + "#this is useful if you want to understand how one object was deblended\n", + "source_cat.getChildren(1010357503918) #the argument is the id of the parent object\n", + "\n", + "#note that this will only work if the source catalog is sorted on id or parent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some operations (like writing to disk) are only allowed if the source catalog is contiguous in memory. You can check if this is the case" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_cat.isContiguous()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pos_flux.isContiguous()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can force the table to be contiguous if you make a deep copy of it" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pos_flux = pos_flux.copy(deep=True)\n", + "pos_flux.isContiguous()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "slice(2052, 2624, 1)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#use the between method to get the indicies of values within a range\n", + "pos_flux.between(1e4,1e6,psf_flux_key)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1095968.2558799293" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#the slice object tells you the (start, stop, stride) for values that fit our querry\n", + "#you can check to see that the first record outside the slice is above the flux threshold\n", + "pos_flux[2624].getPsfFlux()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "910716.5910917423" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#and that the last element in the slice is inside the threshold\n", + "pos_flux[2623].getPsfFlux()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "#your turn. confirm the lower limits of the between query\n", + "#pos_flux[...].getPsfFlux\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2052" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#the upper and lower bound methods work similarly\n", + "pos_flux.upper_bound(1e4, psf_flux_key)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2624" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pos_flux.lower_bound(1e6, psf_flux_key)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have introduced the new bells and whistles that the source catalog has in its schema and methods, we will do a toy example of star-galaxy separation. This small demo is ment to introduce using flags and particular columns along with some of the methods we introduced above, to make a plot" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "#let's select sources that were not deblended\n", + "select_mask = source_cat['deblend_nChild'] == 0\n", + "select_mask &= source_cat['parent'] == 0\n", + "\n", + "# use the extendedness column for a mock star/galaxy seperation\n", + "# we only want to use columns where this algorithm worked\n", + "#the flag is set true if there was a failure, so we invert the flag values here\n", + "select_mask &= ~source_cat['base_ClassificationExtendedness_flag']\n", + "\n", + "# we will also use the sloan shapes to measure size\n", + "select_mask &= ~source_cat['base_SdssShape_flag']\n", + "\n", + "# and a simple aperture flux for the brightness\n", + "select_mask &= ~source_cat['base_CircularApertureFlux_12_0_flag']\n", + "\n", + "size_bright_cat = source_cat.subset(select_mask)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "plt.style.use('seaborn-poster')" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/__main__.py:1: RuntimeWarning: invalid value encountered in log\n", + " if __name__ == '__main__':\n" + ] + }, + { + "data": { + "text/plain": [ + "Text(0,0.5,'size')" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(np.log(size_bright_cat['base_CircularApertureFlux_12_0_flux']), \n", + " size_bright_cat['base_SdssShape_xx'] + size_bright_cat['base_SdssShape_yy'],\n", + " c=size_bright_cat['base_ClassificationExtendedness_value'], alpha=.5)\n", + "plt.xlabel('log flux')\n", + "plt.ylabel('size')" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'base_CircularApertureFlux_12_0_flux': SchemaItem(key=Key(offset=616, nElements=1), field=Field['D'](name=\"base_CircularApertureFlux_12_0_flux\", doc=\"flux within 12.000000-pixel aperture\", units=\"count\")),\n", + " 'base_CircularApertureFlux_12_0_fluxSigma': SchemaItem(key=Key(offset=624, nElements=1), field=Field['D'](name=\"base_CircularApertureFlux_12_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\")),\n", + " 'base_CircularApertureFlux_12_0_flag': SchemaItem(key=Key['Flag'](offset=32, bit=63), field=Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag\", doc=\"General Failure Flag\")),\n", + " 'base_CircularApertureFlux_12_0_flag_apertureTruncated': SchemaItem(key=Key['Flag'](offset=632, bit=0), field=Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\")),\n", + " 'base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated': SchemaItem(key=Key['Flag'](offset=632, bit=1), field=Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"))}" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_cat.schema.extract('*CircularApertureFlux_12*')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "Remind the user what they have done, and what they should now be able to do." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You could also point them to a related tutorial or reference source, to help them go further." + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "LSST", + "language": "python", + "name": "lsst" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.2" + }, + "livereveal": { + "scroll": true, + "start_slideshow_at": "selected" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 67631c2f67079c86a12d230371836012027137e3 Mon Sep 17 00:00:00 2001 From: ih64 Date: Fri, 7 Sep 2018 06:36:28 +0000 Subject: [PATCH 2/5] added catalog matching and concat section --- ...tour.ipynb => afw_table_guided_tour.ipynb} | 337 +++++++++++++++--- 1 file changed, 279 insertions(+), 58 deletions(-) rename Basics/{afw_guided_tour.ipynb => afw_table_guided_tour.ipynb} (74%) diff --git a/Basics/afw_guided_tour.ipynb b/Basics/afw_table_guided_tour.ipynb similarity index 74% rename from Basics/afw_guided_tour.ipynb rename to Basics/afw_table_guided_tour.ipynb index 913c5a8d..71856c66 100644 --- a/Basics/afw_guided_tour.ipynb +++ b/Basics/afw_table_guided_tour.ipynb @@ -135,6 +135,7 @@ "import numpy as np\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", + "plt.style.use('seaborn-poster')\n", "from IPython.display import IFrame, display, Markdown" ] }, @@ -150,8 +151,6 @@ "import lsst.afw.math as afwMath\n", "import lsst.afw.geom as afwGeom\n", "\n", - "import lsst.afw.detection as afwDetect\n", - "import lsst.afw.image as afwImage\n", "import lsst.afw.table as afwTable\n", "\n", "import lsst.afw.display as afwDisplay" @@ -439,10 +438,30 @@ } ], "source": [ - "#now that we have multiple records in our table, we can iterate over them, or select particular ones\n", + "#now that we have multiple records in our table, we can select particular ones\n", "min_table[1]" ] }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n" + ] + } + ], + "source": [ + "#or iterate over them\n", + "for rec in min_table:\n", + " print(rec.get(id_key))" + ] + }, { "cell_type": "code", "execution_count": 17, @@ -470,7 +489,7 @@ "source": [ "## Using source catalogs produced by DM\n", "\n", - "A more typical use case will be to read in a catalog that is produced by a DM process. We will show how to read in and work with a source catalog from HSC data in the following section. " + "A more typical use case will be to read in a catalog that is produced by a DM process. We will show how to read in and work with a source catalog from the Twinkles data in the following section. " ] }, { @@ -598,6 +617,13 @@ "A few comments are in order on questions you may be having about the butler, and the previous cell. First, there is no good way to know what dataId's exist and correspond to data. That means you have to know ahead of time what dataId's make sense to use. DM is working hard on fixing this. Second, 'src' refers to a very specific data product in the DM philosophy. This is a measurment catalog contains the results of different measurement algorithms on detected sources on an individual CCD. We will meet some other catalogs later in the tutorial. For now, lets get to know this src" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### afw source catalog schemas" + ] + }, { "cell_type": "code", "execution_count": 21, @@ -857,7 +883,7 @@ } ], "source": [ - "#check its schema. Heads up, the schema is pretty big!\n", + "#check its schema. Heads up, the schema is pretty big\n", "source_cat.getSchema()" ] }, @@ -865,7 +891,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "These schemas tend to be pretty large, because every measurement algorithm will create several fields. There are handy ways of grabbing fields that are interesting to you. Suppose you are interested in shape measurements. We can use unix like pattern matching with the extract method to search the schema. This returns a dictionary where the keys are the schema fields whose names match the pattern you specified, and the values are the fields themselves. If we are just intested in the field names, we can do this" + "These schemas tend to be pretty large, because every measurement algorithm will create several fields. There are handy ways of grabbing fields that are interesting to you. Suppose you are interested in HSM PSF shape measurements. We can use unix like pattern matching with the extract method to search the schema. This returns a dictionary where the keys are the schema fields whose names match the pattern you specified, and the values are the fields themselves. " ] }, { @@ -876,7 +902,21 @@ { "data": { "text/plain": [ - "dict_keys(['ext_shapeHSM_HsmPsfMoments_flag_badCentroid', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak', 'ext_shapeHSM_HsmPsfMoments_x', 'ext_shapeHSM_HsmPsfMoments_y', 'ext_shapeHSM_HsmPsfMoments_xx', 'ext_shapeHSM_HsmPsfMoments_yy', 'ext_shapeHSM_HsmPsfMoments_xy', 'ext_shapeHSM_HsmPsfMoments_flag', 'ext_shapeHSM_HsmPsfMoments_flag_no_pixels', 'ext_shapeHSM_HsmPsfMoments_flag_not_contained', 'ext_shapeHSM_HsmPsfMoments_flag_parent_source'])" + "{'ext_shapeHSM_HsmPsfMoments_flag_badCentroid': SchemaItem(key=Key['Flag'](offset=32, bit=19), field=Field['Flag'](name=\"base_SdssCentroid_flag\", doc=\"General Failure Flag\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge': SchemaItem(key=Key['Flag'](offset=32, bit=20), field=Field['Flag'](name=\"base_SdssCentroid_flag_edge\", doc=\"Object too close to edge\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative': SchemaItem(key=Key['Flag'](offset=32, bit=21), field=Field['Flag'](name=\"base_SdssCentroid_flag_noSecondDerivative\", doc=\"Vanishing second derivative\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative': SchemaItem(key=Key['Flag'](offset=32, bit=22), field=Field['Flag'](name=\"base_SdssCentroid_flag_almostNoSecondDerivative\", doc=\"Almost vanishing second derivative\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum': SchemaItem(key=Key['Flag'](offset=32, bit=23), field=Field['Flag'](name=\"base_SdssCentroid_flag_notAtMaximum\", doc=\"Object is not at a maximum\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak': SchemaItem(key=Key['Flag'](offset=32, bit=24), field=Field['Flag'](name=\"base_SdssCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_x': SchemaItem(key=Key(offset=392, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_x\", doc=\"HSM Centroid\", units=\"pixel\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_y': SchemaItem(key=Key(offset=400, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_y\", doc=\"HSM Centroid\", units=\"pixel\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_xx': SchemaItem(key=Key(offset=408, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_yy': SchemaItem(key=Key(offset=416, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_xy': SchemaItem(key=Key(offset=424, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag': SchemaItem(key=Key['Flag'](offset=32, bit=34), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag\", doc=\"general failure flag, set if anything went wrong\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_no_pixels': SchemaItem(key=Key['Flag'](offset=32, bit=35), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_no_pixels\", doc=\"no pixels to measure\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_not_contained': SchemaItem(key=Key['Flag'](offset=32, bit=36), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\")),\n", + " 'ext_shapeHSM_HsmPsfMoments_flag_parent_source': SchemaItem(key=Key['Flag'](offset=32, bit=37), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_parent_source\", doc=\"parent source, ignored\"))}" ] }, "execution_count": 22, @@ -885,20 +925,47 @@ } ], "source": [ - "source_cat.getSchema().extract('*HSM*Psf*').keys()" + "source_cat.getSchema().extract('*HSM*Psf*')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Looking at the very bottom of the schema we printed out above, you will notice some of the fields are named 'slot_'. These are called aliases in the schema, and can help you deal with any ambiguity in the table. For example, there are several algorithms used to measure the centroid, and many fileds with 'centroid' in their name as a result. If you want to have quick access to one algorithms measurement result, you can set up a slot alias for it. Lets do a working example on the first record in our table" + "If we are just intested in the field names, we can do this" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['ext_shapeHSM_HsmPsfMoments_flag_badCentroid', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak', 'ext_shapeHSM_HsmPsfMoments_x', 'ext_shapeHSM_HsmPsfMoments_y', 'ext_shapeHSM_HsmPsfMoments_xx', 'ext_shapeHSM_HsmPsfMoments_yy', 'ext_shapeHSM_HsmPsfMoments_xy', 'ext_shapeHSM_HsmPsfMoments_flag', 'ext_shapeHSM_HsmPsfMoments_flag_no_pixels', 'ext_shapeHSM_HsmPsfMoments_flag_not_contained', 'ext_shapeHSM_HsmPsfMoments_flag_parent_source'])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "source_cat.getSchema().extract('*HSM*Psf*').keys()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When we dumped the entire schema, the very bottom of the schema contained fields are named 'slot_'. These are called aliases in the schema, and can help you deal with any ambiguity in the table. For example, there are several algorithms used to measure the centroid, and many fileds with 'centroid' in their name as a result. If you want to have quick access to one algorithms measurement result, you can set up a slot alias for it. Lets do a working example on the first record in our table" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -922,7 +989,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -935,19 +1002,23 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As advertised, the slot centroid and SDSS centroid are the same. We also used some syntactic sugar to access the gaussian centroids and sdss centroids, which will be familiar to you if you are an astropy tables user. Speaking of which, you can make an astropy table version of a source catalog. However, source catalogs support a lot of fast operations for common use cases which we will disucss. " + "As advertised, the slot centroid and SDSS centroid are the same. We also used some syntactic sugar to access the gaussian centroids and sdss centroids, which will be familiar to you if you are an astropy tables user. Now we will set aside the schema for this table, and look at the table itself so we can examine its methods.\n", + "\n", + "### afw source catalogs\n", + "\n", + "speaking of astropy tables, you can make an astropy table version of a source catalog. However, source catalogs support a lot of fast operations for common use cases which we will disucss. " ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "Table length=2662\n", - "
\n", + "
\n", "\n", "\n", "\n", @@ -1001,7 +1072,7 @@ "1010357504614 0.9275184726569182 ... False" ] }, - "execution_count": 25, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -1012,7 +1083,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -1021,7 +1092,7 @@ "True" ] }, - "execution_count": 26, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1033,7 +1104,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -1042,7 +1113,7 @@ "True" ] }, - "execution_count": 27, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -1062,7 +1133,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -1076,7 +1147,7 @@ "1010357504606 0.9276113859032618 ... False" ] }, - "execution_count": 28, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1098,7 +1169,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -1107,7 +1178,7 @@ "True" ] }, - "execution_count": 29, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -1118,7 +1189,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -1127,7 +1198,7 @@ "False" ] }, - "execution_count": 30, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1145,7 +1216,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1154,7 +1225,7 @@ "True" ] }, - "execution_count": 31, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1166,7 +1237,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1175,7 +1246,7 @@ "slice(2052, 2624, 1)" ] }, - "execution_count": 32, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1187,7 +1258,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1196,7 +1267,7 @@ "1095968.2558799293" ] }, - "execution_count": 33, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1209,7 +1280,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1218,7 +1289,7 @@ "910716.5910917423" ] }, - "execution_count": 34, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1230,7 +1301,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -1240,7 +1311,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1249,7 +1320,7 @@ "2052" ] }, - "execution_count": 36, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1261,7 +1332,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1270,7 +1341,7 @@ "2624" ] }, - "execution_count": 37, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1283,12 +1354,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that we have introduced the new bells and whistles that the source catalog has in its schema and methods, we will do a toy example of star-galaxy separation. This small demo is ment to introduce using flags and particular columns along with some of the methods we introduced above, to make a plot" + "Now that we have introduced the functionality of the source catalog and its schema, we will do a toy example of star-galaxy separation. This small demo will also flags and fields that users are use, and ultimately make a plot" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -1311,17 +1382,15 @@ ] }, { - "cell_type": "code", - "execution_count": 64, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "plt.style.use('seaborn-poster')" + "Now we make a crude size magnitude diagram, color coding the data by their 'extendedness value'. The extendedness will be 1 for extended sources-like galaxies-and 0 for point sources-like stars. One hopes the stars will all live on the stellar locus" ] }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -1335,18 +1404,18 @@ { "data": { "text/plain": [ - "Text(0,0.5,'size')" + "(0, 60)" ] }, - "execution_count": 67, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1356,35 +1425,187 @@ "source": [ "plt.scatter(np.log(size_bright_cat['base_CircularApertureFlux_12_0_flux']), \n", " size_bright_cat['base_SdssShape_xx'] + size_bright_cat['base_SdssShape_yy'],\n", - " c=size_bright_cat['base_ClassificationExtendedness_value'], alpha=.5)\n", + " c=size_bright_cat['base_ClassificationExtendedness_value'],\n", + " s=4)\n", "plt.xlabel('log flux')\n", - "plt.ylabel('size')" + "plt.ylabel('size px^2')\n", + "plt.ylim([0,60]) #zoom in to make the stellar locus clearer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our plot shows some star galaxy seperation, but also has other interesting features. Some detected sources appear smaller than the PSF, some of the point sources have a (crudely) calculated size that occupy the same parameter space as extended sources, and there are a few extremely faint detected point sources. We will leave it to you to delve into this mystery further as a home work assignment since we are primarily focused on understanding tables in this tutorial. By making this plot we exercised some of the methods of the catalog and its schema to do a minimal analysis example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As a bit of an aside, the records in the source catalog have information about their analagous calexp. The 'Footprints' of the sources each record refers to can be accessed directly. At the risk of going off on a tangent, we will briefly show " + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "539" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "footprint = pos_flux[20].getFootprint()\n", + "footprint.getArea() #tells you the number of detected pixels assigned to this source" ] }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{'base_CircularApertureFlux_12_0_flux': SchemaItem(key=Key(offset=616, nElements=1), field=Field['D'](name=\"base_CircularApertureFlux_12_0_flux\", doc=\"flux within 12.000000-pixel aperture\", units=\"count\")),\n", - " 'base_CircularApertureFlux_12_0_fluxSigma': SchemaItem(key=Key(offset=624, nElements=1), field=Field['D'](name=\"base_CircularApertureFlux_12_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\")),\n", - " 'base_CircularApertureFlux_12_0_flag': SchemaItem(key=Key['Flag'](offset=32, bit=63), field=Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag\", doc=\"General Failure Flag\")),\n", - " 'base_CircularApertureFlux_12_0_flag_apertureTruncated': SchemaItem(key=Key['Flag'](offset=632, bit=0), field=Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\")),\n", - " 'base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated': SchemaItem(key=Key['Flag'](offset=632, bit=1), field=Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"))}" + "True" ] }, - "execution_count": 59, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "source_cat.schema.extract('*CircularApertureFlux_12*')" + "#if the foot print is 'heavy' we can access information at the pixel level\n", + "footprint.isHeavy()" ] }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "522.26373" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#sum up the pixel values for detected to pixels assigned to this source\n", + "footprint.getImageArray().sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### operations with multiple tables/catalogs\n", + "\n", + "In the next section we will show operations which involve two or more catalogs.\n", + "\n", + "#### table concatination" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "#grab a second catalog using the butler\n", + "dataId2 = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 236}\n", + "source_cat2 = butler.get('src', dataId2)\n", + "\n", + "#put our catalogs in a list\n", + "catalogList = [source_cat, source_cat2]\n", + "\n", + "#this function is courtesy of Jim Bosch\n", + "def concatenate(catalogList):\n", + " from functools import reduce\n", + " \"\"\"Concatenate multiple catalogs (FITS tables from lsst.afw.table)\"\"\"\n", + " schema = catalogList[0].schema\n", + " for i, c in enumerate(catalogList[1:]):\n", + " #check that the schema in the tables are the same\n", + " #we can only cat them if this is true\n", + " if c.schema != schema:\n", + " raise RuntimeError(\"Schema for catalog %d not consistent\" % (i+1))\n", + "\n", + " #prepare the master catalog\n", + " out = afwTable.BaseCatalog(schema)\n", + " num = reduce(lambda n, c: n + len(c), catalogList, 0)\n", + " #set aside enough space for all the records and their pointers\n", + " out.reserve(num)\n", + "\n", + " #stick in all the records from all catalogs into the master catalog\n", + " for catalog in catalogList:\n", + " for record in catalog:\n", + " out.append(out.table.copyRecord(record))\n", + "\n", + " return out\n", + "\n", + "cat_source = concatenate(catalogList)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### catalog matching\n", + "\n", + "quick positional matching is supported by the stack, and offers some useful functionality. We will cover some common matching use cases below\n", + "\n", + "in order to match catalogs, we must provide a MatchControl instance. The MatchControl provides configurations for catalog matching. It has three 'switches' in the form of class attributes. they are defined below\n", + "\n", + "1. findOnlyClosest: True by default. If False, all other sources within a search radius are also matched \n", + "2. includeMismatches: False by default. If False, sources with no match are not reported in the match catalog. If True, sources with no match are included in the match catalog with Null as their match\n", + "3. symmetricMatch: False by default. If False, the match between source a from catalog a with source b from ctalog b is reported alone. If True, the symmetric match between source b and a is also reported" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#get a match control, we will keep the default configuration\n", + "mc = afwTable.MatchControl()\n", + "\n", + "#match our two catalogs\n", + "afwTable.matchRaDec(source_cat, source_cat2, afwGeom.Angle(5,afwGeom.arcseconds), mc)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.42407e-05 rad" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, From 28c08a13fd7f38f4397ec3c9da40773099183c06 Mon Sep 17 00:00:00 2001 From: ih64 Date: Mon, 17 Sep 2018 05:12:08 +0000 Subject: [PATCH 3/5] addressed feedback from stackclub session --- Basics/afw_table_guided_tour.ipynb | 1448 ++++++++++------------------ 1 file changed, 485 insertions(+), 963 deletions(-) diff --git a/Basics/afw_table_guided_tour.ipynb b/Basics/afw_table_guided_tour.ipynb index 71856c66..3978c75a 100644 --- a/Basics/afw_table_guided_tour.ipynb +++ b/Basics/afw_table_guided_tour.ipynb @@ -9,7 +9,7 @@ }, "source": [ "# AFW Tables: A Guided Tour\n", - "
Owner(s): **Imran Hasan** ([@ih64](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@ih64)), **Second Owner** ([@username2](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@username2))\n", + "
Owner(s): **Imran Hasan** ([@ih64](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@ih64))\n", "
Last Verified to Run: **20XX-XX-XX**\n", "
Verified Stack Release: **16.0**\n", "\n", @@ -48,17 +48,9 @@ }, { "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "/home/ishasan/lsst/StackClub/Basics\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "! cd .. && python setup.py -q develop --user && cd -" ] @@ -72,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -93,18 +85,9 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "jld-lab-ishasan-r160\n", - "lsst_distrib 16.0+1 \tcurrent v16_0 setup\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# What version of the Stack am I using?\n", "! echo $HOSTNAME\n", @@ -124,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -132,6 +115,7 @@ "#%matplotlib ipympl\n", "\n", "import os\n", + "import warnings\n", "import numpy as np\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", @@ -141,19 +125,27 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import lsst.daf.persistence as dafPersist\n", "import lsst.daf.base as dafBase\n", - "\n", - "import lsst.afw.math as afwMath\n", "import lsst.afw.geom as afwGeom\n", - "\n", "import lsst.afw.table as afwTable\n", - "\n", - "import lsst.afw.display as afwDisplay" + "from astropy.io import ascii" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Filter some warnings printed by v16.0 of the stack\n", + "# Courtesy of ADW\n", + "warnings.simplefilter(\"ignore\", category=FutureWarning)\n", + "warnings.simplefilter(\"ignore\", category=UserWarning)" ] }, { @@ -171,7 +163,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { "slideshow": { "slide_type": "-" @@ -179,32 +171,18 @@ }, "outputs": [], "source": [ - "#afw tables need a schemea to tell the table how its data are organized\n", - "#lets have a look at a simple schema\n", + "# afw tables need a schemea to tell the table how its data are organized\n", + "# lets have a look at a simple schema\n", "min_schema = afwTable.SourceTable.makeMinimalSchema()" ] }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Schema(\n", - " (Field['L'](name=\"id\", doc=\"unique ID\"), Key(offset=0, nElements=1)),\n", - " (Field['Angle'](name=\"coord_ra\", doc=\"position in ra/dec\"), Key(offset=8, nElements=1)),\n", - " (Field['Angle'](name=\"coord_dec\", doc=\"position in ra/dec\"), Key(offset=16, nElements=1)),\n", - " (Field['L'](name=\"parent\", doc=\"unique ID of parent source\"), Key(offset=24, nElements=1)),\n", - ")\n", - "\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#but what is the schema exactly? priting it out can be informative\n", + "# but what is the schema exactly? priting it out can be informative\n", "print(min_schema)" ] }, @@ -221,48 +199,22 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'coord_dec', 'coord_ra', 'id', 'parent'}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "min_schema.getNames()" ] }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Schema(\n", - " (Field['L'](name=\"id\", doc=\"unique ID\"), Key(offset=0, nElements=1)),\n", - " (Field['Angle'](name=\"coord_ra\", doc=\"position in ra/dec\"), Key(offset=8, nElements=1)),\n", - " (Field['Angle'](name=\"coord_dec\", doc=\"position in ra/dec\"), Key(offset=16, nElements=1)),\n", - " (Field['L'](name=\"parent\", doc=\"unique ID of parent source\"), Key(offset=24, nElements=1)),\n", - " (Field['F'](name=\"r_mag\", doc=\"r band flux\", units=\"mag\"), Key(offset=32, nElements=1)),\n", - ")\n", - "\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#we can also add another field to the schema, using a call pattern like this\n", + "# we can also add another field to the schema, using a call pattern like this\n", "min_schema.addField(\"r_mag\", type=np.float32, doc=\"r band flux\", units=\"mag\")\n", - "#lets make sure the field was added by printing out the schema once more\n", + "# lets make sure the field was added by printing out the schema once more\n", "print(min_schema)" ] }, @@ -278,21 +230,13 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "our minimal table has 0 rows\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#now that we have a schema, we can use it to make a table\n", + "# now that we have a schema, we can use it to make a table\n", "min_table = afwTable.BaseCatalog(min_schema)\n", - "#our table is empty, and we can check this by looking at its length\n", + "# our table is empty, and we can check this by looking at its length\n", "print('our minimal table has {} rows'.format(len(min_table)))" ] }, @@ -305,24 +249,24 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#make a new record.\n", + "# make a new record.\n", "rec = min_table.addNew()" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#grab a hold of the keys for the record. We will use these to add data \n", + "# grab a hold of the keys for the record. We will use these to add data \n", "keys = min_schema.extract('*') #this returns a dictionary of all the fields\n", "\n", - "#access the dictionary one field at a time, and grab each field's key\n", + "# access the dictionary one field at a time, and grab each field's key\n", "id_key = keys['id'].key\n", "ra_key = keys['coord_ra'].key\n", "dec_key = keys['coord_dec'].key\n", @@ -346,24 +290,9 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - " id coord_ra coord_dec parent r_mag\n", - " rad rad mag \n", - "--- -------- --------- ------ -----\n", - " 1 33.89 42.1 0 19.0" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "min_table" ] @@ -377,25 +306,9 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - " id coord_ra coord_dec parent r_mag\n", - " rad rad mag \n", - "--- -------- --------- ------ -----\n", - " 1 33.89 42.1 0 19.0\n", - " 2 32.01 42.5 1 18.5" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "rec = min_table.addNew()\n", "rec.set(id_key, 2)\n", @@ -408,78 +321,42 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#your turn. add one more record to our table\n", + "# your turn. add one more record to our table\n", "\n" ] }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "id: 2\n", - "coord_ra: 32.01 rad\n", - "coord_dec: 42.5 rad\n", - "parent: 1\n", - "r_mag: 18.5" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#now that we have multiple records in our table, we can select particular ones\n", + "# now that we have multiple records in our table, we can select particular ones\n", "min_table[1]" ] }, { "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#or iterate over them\n", + "# or iterate over them\n", "for rec in min_table:\n", " print(rec.get(id_key))" ] }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#you can grab values from particular records by using our keys\n", + "# you can grab values from particular records by using our keys\n", "min_table[1].get(id_key)" ] }, @@ -504,7 +381,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -515,94 +392,22 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/lsst/software/stack/stack/miniconda3-4.3.21-10a4fa6/Linux64/meas_mosaic/16.0+1/python/lsst/meas/mosaic/utils.py:30: UserWarning: \n", - "This call to matplotlib.use() has no effect because the backend has already\n", - "been chosen; matplotlib.use() must be called *before* pylab, matplotlib.pyplot,\n", - "or matplotlib.backends is imported for the first time.\n", - "\n", - "The backend was *originally* set to 'module://ipykernel.pylab.backend_inline' by the following code:\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/runpy.py\", line 193, in _run_module_as_main\n", - " \"__main__\", mod_spec)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/runpy.py\", line 85, in _run_code\n", - " exec(code, run_globals)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/__main__.py\", line 3, in \n", - " app.launch_new_instance()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n", - " app.start()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelapp.py\", line 486, in start\n", - " self.io_loop.start()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/platform/asyncio.py\", line 127, in start\n", - " self.asyncio_loop.run_forever()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/asyncio/base_events.py\", line 421, in run_forever\n", - " self._run_once()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/asyncio/base_events.py\", line 1426, in _run_once\n", - " handle._run()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/asyncio/events.py\", line 127, in _run\n", - " self._callback(*self._args)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/ioloop.py\", line 759, in _run_callback\n", - " ret = callback()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/stack_context.py\", line 276, in null_wrapper\n", - " return fn(*args, **kwargs)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 536, in \n", - " self.io_loop.add_callback(lambda : self._handle_events(self.socket, 0))\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 450, in _handle_events\n", - " self._handle_recv()\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 480, in _handle_recv\n", - " self._run_callback(callback, msg)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/zmq/eventloop/zmqstream.py\", line 432, in _run_callback\n", - " callback(*args, **kwargs)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/tornado/stack_context.py\", line 276, in null_wrapper\n", - " return fn(*args, **kwargs)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 283, in dispatcher\n", - " return self.dispatch_shell(stream, msg)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 233, in dispatch_shell\n", - " handler(stream, idents, msg)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/kernelbase.py\", line 399, in execute_request\n", - " user_expressions, allow_stdin)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/ipkernel.py\", line 208, in do_execute\n", - " res = shell.run_cell(code, store_history=store_history, silent=silent)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/zmqshell.py\", line 537, in run_cell\n", - " return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/IPython/core/interactiveshell.py\", line 2666, in run_cell\n", - " self.events.trigger('post_run_cell', result)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/IPython/core/events.py\", line 88, in trigger\n", - " func(*args, **kwargs)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/pylab/backend_inline.py\", line 160, in configure_once\n", - " activate_matplotlib(backend)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/IPython/core/pylabtools.py\", line 311, in activate_matplotlib\n", - " matplotlib.pyplot.switch_backend(backend)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/matplotlib/pyplot.py\", line 231, in switch_backend\n", - " matplotlib.use(newbackend, warn=False, force=True)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/matplotlib/__init__.py\", line 1410, in use\n", - " reload(sys.modules['matplotlib.backends'])\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/importlib/__init__.py\", line 166, in reload\n", - " _bootstrap._exec(spec, module)\n", - " File \"/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/matplotlib/backends/__init__.py\", line 16, in \n", - " line for line in traceback.format_stack()\n", - "\n", - "\n", - " matplotlib.use(\"Agg\")\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#here is the way to get the catalog with a butler\n", "#first set up our butler by telling it to look at this twinkles directory\n", "butler = dafPersist.Butler('/project/shared/data/Twinkles_subset/output_data_v2')\n", "#now we put together a dataId that uniquely specifies a datum\n", - "dataId = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 235}" + "dataId = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 235}\n", + "\n", + "## look at LSB tutorial to supress warnings" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -626,262 +431,9 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Schema(\n", - " (Field['L'](name=\"id\", doc=\"unique ID\"), Key(offset=0, nElements=1)),\n", - " (Field['Angle'](name=\"coord_ra\", doc=\"position in ra/dec\"), Key(offset=8, nElements=1)),\n", - " (Field['Angle'](name=\"coord_dec\", doc=\"position in ra/dec\"), Key(offset=16, nElements=1)),\n", - " (Field['L'](name=\"parent\", doc=\"unique ID of parent source\"), Key(offset=24, nElements=1)),\n", - " (Field['Flag'](name=\"calib_detected\", doc=\"Source was detected as an icSource\"), Key['Flag'](offset=32, bit=0)),\n", - " (Field['Flag'](name=\"calib_psfCandidate\", doc=\"Flag set if the source was a candidate for PSF determination, as determined by the star selector.\"), Key['Flag'](offset=32, bit=1)),\n", - " (Field['Flag'](name=\"calib_psfUsed\", doc=\"Flag set if the source was actually used for PSF determination, as determined by the\"), Key['Flag'](offset=32, bit=2)),\n", - " (Field['Flag'](name=\"calib_psf_reserved\", doc=\"set if source was reserved from PSF determination\"), Key['Flag'](offset=32, bit=3)),\n", - " (Field['I'](name=\"deblend_nChild\", doc=\"Number of children this object has (defaults to 0)\"), Key(offset=40, nElements=1)),\n", - " (Field['Flag'](name=\"deblend_deblendedAsPsf\", doc=\"Deblender thought this source looked like a PSF\"), Key['Flag'](offset=32, bit=4)),\n", - " (Field['D'](name=\"deblend_psfCenter_x\", doc=\"If deblended-as-psf, the PSF centroid\", units=\"pixel\"), Key(offset=48, nElements=1)),\n", - " (Field['D'](name=\"deblend_psfCenter_y\", doc=\"If deblended-as-psf, the PSF centroid\", units=\"pixel\"), Key(offset=56, nElements=1)),\n", - " (Field['D'](name=\"deblend_psfFlux\", doc=\"If deblended-as-psf, the PSF flux\"), Key(offset=64, nElements=1)),\n", - " (Field['Flag'](name=\"deblend_tooManyPeaks\", doc=\"Source had too many peaks; only the brightest were included\"), Key['Flag'](offset=32, bit=5)),\n", - " (Field['Flag'](name=\"deblend_parentTooBig\", doc=\"Parent footprint covered too many pixels\"), Key['Flag'](offset=32, bit=6)),\n", - " (Field['Flag'](name=\"deblend_masked\", doc=\"Parent footprint was predominantly masked\"), Key['Flag'](offset=32, bit=7)),\n", - " (Field['Flag'](name=\"deblend_skipped\", doc=\"Deblender skipped this source\"), Key['Flag'](offset=32, bit=8)),\n", - " (Field['Flag'](name=\"deblend_rampedTemplate\", doc=\"This source was near an image edge and the deblender used \"ramp\" edge-handling.\"), Key['Flag'](offset=32, bit=9)),\n", - " (Field['Flag'](name=\"deblend_patchedTemplate\", doc=\"This source was near an image edge and the deblender used \"patched\" edge-handling.\"), Key['Flag'](offset=32, bit=10)),\n", - " (Field['Flag'](name=\"deblend_hasStrayFlux\", doc=\"This source was assigned some stray flux\"), Key['Flag'](offset=32, bit=11)),\n", - " (Field['D'](name=\"base_GaussianCentroid_x\", doc=\"centroid from Gaussian Centroid algorithm\", units=\"pixel\"), Key(offset=72, nElements=1)),\n", - " (Field['D'](name=\"base_GaussianCentroid_y\", doc=\"centroid from Gaussian Centroid algorithm\", units=\"pixel\"), Key(offset=80, nElements=1)),\n", - " (Field['Flag'](name=\"base_GaussianCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=12)),\n", - " (Field['Flag'](name=\"base_GaussianCentroid_flag_noPeak\", doc=\"Fitted Centroid has a negative peak\"), Key['Flag'](offset=32, bit=13)),\n", - " (Field['Flag'](name=\"base_GaussianCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=14)),\n", - " (Field['D'](name=\"base_NaiveCentroid_x\", doc=\"centroid from Naive Centroid algorithm\", units=\"pixel\"), Key(offset=88, nElements=1)),\n", - " (Field['D'](name=\"base_NaiveCentroid_y\", doc=\"centroid from Naive Centroid algorithm\", units=\"pixel\"), Key(offset=96, nElements=1)),\n", - " (Field['Flag'](name=\"base_NaiveCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=15)),\n", - " (Field['Flag'](name=\"base_NaiveCentroid_flag_noCounts\", doc=\"Object to be centroided has no counts\"), Key['Flag'](offset=32, bit=16)),\n", - " (Field['Flag'](name=\"base_NaiveCentroid_flag_edge\", doc=\"Object too close to edge\"), Key['Flag'](offset=32, bit=17)),\n", - " (Field['Flag'](name=\"base_NaiveCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=18)),\n", - " (Field['D'](name=\"base_SdssCentroid_x\", doc=\"centroid from Sdss Centroid algorithm\", units=\"pixel\"), Key(offset=104, nElements=1)),\n", - " (Field['D'](name=\"base_SdssCentroid_y\", doc=\"centroid from Sdss Centroid algorithm\", units=\"pixel\"), Key(offset=112, nElements=1)),\n", - " (Field['F'](name=\"base_SdssCentroid_xSigma\", doc=\"1-sigma uncertainty on x position\", units=\"pixel\"), Key(offset=120, nElements=1)),\n", - " (Field['F'](name=\"base_SdssCentroid_ySigma\", doc=\"1-sigma uncertainty on y position\", units=\"pixel\"), Key(offset=124, nElements=1)),\n", - " (Field['Flag'](name=\"base_SdssCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=19)),\n", - " (Field['Flag'](name=\"base_SdssCentroid_flag_edge\", doc=\"Object too close to edge\"), Key['Flag'](offset=32, bit=20)),\n", - " (Field['Flag'](name=\"base_SdssCentroid_flag_noSecondDerivative\", doc=\"Vanishing second derivative\"), Key['Flag'](offset=32, bit=21)),\n", - " (Field['Flag'](name=\"base_SdssCentroid_flag_almostNoSecondDerivative\", doc=\"Almost vanishing second derivative\"), Key['Flag'](offset=32, bit=22)),\n", - " (Field['Flag'](name=\"base_SdssCentroid_flag_notAtMaximum\", doc=\"Object is not at a maximum\"), Key['Flag'](offset=32, bit=23)),\n", - " (Field['Flag'](name=\"base_SdssCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=24)),\n", - " (Field['D'](name=\"base_Blendedness_old\", doc=\"blendedness from dot products: (child.dot(parent)/child.dot(child) - 1)\"), Key(offset=128, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_flux\", doc=\"measure of how flux is affected by neighbors: (1 - flux.child/flux.parent)\"), Key(offset=136, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_flux_child\", doc=\"flux of the child, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=144, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_flux_parent\", doc=\"flux of the parent, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=152, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_flux\", doc=\"measure of how flux is affected by neighbors: (1 - flux.child/flux.parent)\"), Key(offset=160, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_flux_child\", doc=\"flux of the child, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=168, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_flux_parent\", doc=\"flux of the parent, measured with a Gaussian weight matched to the child\", units=\"count\"), Key(offset=176, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_child_xx\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=184, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_child_yy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=192, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_child_xy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=200, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_parent_xx\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=208, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_parent_yy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=216, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_raw_parent_xy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=224, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_child_xx\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=232, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_child_yy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=240, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_child_xy\", doc=\"shape of the child, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=248, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_parent_xx\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=256, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_parent_yy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=264, nElements=1)),\n", - " (Field['D'](name=\"base_Blendedness_abs_parent_xy\", doc=\"shape of the parent, measured with a Gaussian weight matched to the child\", units=\"pixel^2\"), Key(offset=272, nElements=1)),\n", - " (Field['Flag'](name=\"base_Blendedness_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=25)),\n", - " (Field['Flag'](name=\"base_Blendedness_flag_noCentroid\", doc=\"Object has no centroid\"), Key['Flag'](offset=32, bit=26)),\n", - " (Field['Flag'](name=\"base_Blendedness_flag_noShape\", doc=\"Object has no shape\"), Key['Flag'](offset=32, bit=27)),\n", - " (Field['D'](name=\"base_SdssShape_xx\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=280, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_yy\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=288, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_xy\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=296, nElements=1)),\n", - " (Field['F'](name=\"base_SdssShape_xxSigma\", doc=\"1-sigma uncertainty on xx moment\", units=\"pixel^2\"), Key(offset=304, nElements=1)),\n", - " (Field['F'](name=\"base_SdssShape_yySigma\", doc=\"1-sigma uncertainty on yy moment\", units=\"pixel^2\"), Key(offset=308, nElements=1)),\n", - " (Field['F'](name=\"base_SdssShape_xySigma\", doc=\"1-sigma uncertainty on xy moment\", units=\"pixel^2\"), Key(offset=312, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_x\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel\"), Key(offset=320, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_y\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel\"), Key(offset=328, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_flux\", doc=\"elliptical Gaussian adaptive moments\", units=\"count\"), Key(offset=336, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=344, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_psf_xx\", doc=\"adaptive moments of the PSF model at the object position\", units=\"pixel^2\"), Key(offset=352, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_psf_yy\", doc=\"adaptive moments of the PSF model at the object position\", units=\"pixel^2\"), Key(offset=360, nElements=1)),\n", - " (Field['D'](name=\"base_SdssShape_psf_xy\", doc=\"adaptive moments of the PSF model at the object position\", units=\"pixel^2\"), Key(offset=368, nElements=1)),\n", - " (Field['F'](name=\"base_SdssShape_flux_xx_Cov\", doc=\"uncertainty covariance between base_SdssShape_flux and base_SdssShape_xx\", units=\"count*pixel^2\"), Key(offset=376, nElements=1)),\n", - " (Field['F'](name=\"base_SdssShape_flux_yy_Cov\", doc=\"uncertainty covariance between base_SdssShape_flux and base_SdssShape_yy\", units=\"count*pixel^2\"), Key(offset=380, nElements=1)),\n", - " (Field['F'](name=\"base_SdssShape_flux_xy_Cov\", doc=\"uncertainty covariance between base_SdssShape_flux and base_SdssShape_xy\", units=\"count*pixel^2\"), Key(offset=384, nElements=1)),\n", - " (Field['Flag'](name=\"base_SdssShape_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=28)),\n", - " (Field['Flag'](name=\"base_SdssShape_flag_unweightedBad\", doc=\"Both weighted and unweighted moments were invalid\"), Key['Flag'](offset=32, bit=29)),\n", - " (Field['Flag'](name=\"base_SdssShape_flag_unweighted\", doc=\"Weighted moments converged to an invalid value; using unweighted moments\"), Key['Flag'](offset=32, bit=30)),\n", - " (Field['Flag'](name=\"base_SdssShape_flag_shift\", doc=\"centroid shifted by more than the maximum allowed amount\"), Key['Flag'](offset=32, bit=31)),\n", - " (Field['Flag'](name=\"base_SdssShape_flag_maxIter\", doc=\"Too many iterations in adaptive moments\"), Key['Flag'](offset=32, bit=32)),\n", - " (Field['Flag'](name=\"base_SdssShape_flag_psf\", doc=\"Failure in measuring PSF model shape\"), Key['Flag'](offset=32, bit=33)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=392, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=400, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=408, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=416, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=424, nElements=1)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=34)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=35)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=36)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=37)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_e1\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=432, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_e2\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=440, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_sigma\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=448, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_resolution\", doc=\"resolution factor (0=unresolved, 1=resolved)\"), Key(offset=456, nElements=1)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=38)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=39)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=40)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=41)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_galsim\", doc=\"GalSim failure\"), Key['Flag'](offset=32, bit=42)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=464, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=472, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=480, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=488, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=496, nElements=1)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=43)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=44)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=45)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=46)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=504, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=512, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=520, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=528, nElements=1)),\n", - " (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=536, nElements=1)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=47)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=48)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=49)),\n", - " (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=50)),\n", - " (Field['F'](name=\"ext_shapeHSM_HsmSourceMomentsRound_Flux\", doc=\"HSM flux\"), Key(offset=544, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_3_0_flux\", doc=\"flux within 3.000000-pixel aperture\", units=\"count\"), Key(offset=552, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_3_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=560, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=51)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=52)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=53)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_4_5_flux\", doc=\"flux within 4.500000-pixel aperture\", units=\"count\"), Key(offset=568, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_4_5_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=576, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=54)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=55)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=56)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_6_0_flux\", doc=\"flux within 6.000000-pixel aperture\", units=\"count\"), Key(offset=584, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_6_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=592, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=57)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=58)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=59)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_9_0_flux\", doc=\"flux within 9.000000-pixel aperture\", units=\"count\"), Key(offset=600, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_9_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=608, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=60)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=61)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=32, bit=62)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_12_0_flux\", doc=\"flux within 12.000000-pixel aperture\", units=\"count\"), Key(offset=616, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_12_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=624, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=63)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=0)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=632, bit=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_17_0_flux\", doc=\"flux within 17.000000-pixel aperture\", units=\"count\"), Key(offset=640, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_17_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=648, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_17_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=2)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_17_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=3)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_25_0_flux\", doc=\"flux within 25.000000-pixel aperture\", units=\"count\"), Key(offset=656, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_25_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=664, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_25_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=4)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_25_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=5)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_35_0_flux\", doc=\"flux within 35.000000-pixel aperture\", units=\"count\"), Key(offset=672, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_35_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=680, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_35_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=6)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_35_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=7)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_50_0_flux\", doc=\"flux within 50.000000-pixel aperture\", units=\"count\"), Key(offset=688, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_50_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=696, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_50_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=8)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_50_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=9)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_70_0_flux\", doc=\"flux within 70.000000-pixel aperture\", units=\"count\"), Key(offset=704, nElements=1)),\n", - " (Field['D'](name=\"base_CircularApertureFlux_70_0_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=712, nElements=1)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_70_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=10)),\n", - " (Field['Flag'](name=\"base_CircularApertureFlux_70_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=632, bit=11)),\n", - " (Field['D'](name=\"base_GaussianFlux_flux\", doc=\"flux from Gaussian Flux algorithm\", units=\"count\"), Key(offset=720, nElements=1)),\n", - " (Field['D'](name=\"base_GaussianFlux_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=728, nElements=1)),\n", - " (Field['Flag'](name=\"base_GaussianFlux_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=12)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag\", doc=\"general failure flag, set if anything went wring\"), Key['Flag'](offset=632, bit=13)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_offimage\", doc=\"Source center is off image\"), Key['Flag'](offset=632, bit=14)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_edge\", doc=\"Source is outside usable exposure region (masked EDGE or NO_DATA)\"), Key['Flag'](offset=632, bit=15)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_interpolated\", doc=\"Interpolated pixel in the Source footprint\"), Key['Flag'](offset=632, bit=16)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_saturated\", doc=\"Saturated pixel in the Source footprint\"), Key['Flag'](offset=632, bit=17)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_cr\", doc=\"Cosmic ray in the Source footprint\"), Key['Flag'](offset=632, bit=18)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_bad\", doc=\"Bad pixel in the Source footprint\"), Key['Flag'](offset=632, bit=19)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_suspect\", doc=\"Source''s footprint includes suspect pixels\"), Key['Flag'](offset=632, bit=20)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_interpolatedCenter\", doc=\"Interpolated pixel in the Source center\"), Key['Flag'](offset=632, bit=21)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_saturatedCenter\", doc=\"Saturated pixel in the Source center\"), Key['Flag'](offset=632, bit=22)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_crCenter\", doc=\"Cosmic ray in the Source center\"), Key['Flag'](offset=632, bit=23)),\n", - " (Field['Flag'](name=\"base_PixelFlags_flag_suspectCenter\", doc=\"Source''s center is close to suspect pixels\"), Key['Flag'](offset=632, bit=24)),\n", - " (Field['D'](name=\"base_PsfFlux_flux\", doc=\"flux derived from linear least-squares fit of PSF model\", units=\"count\"), Key(offset=736, nElements=1)),\n", - " (Field['D'](name=\"base_PsfFlux_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=744, nElements=1)),\n", - " (Field['Flag'](name=\"base_PsfFlux_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=632, bit=25)),\n", - " (Field['Flag'](name=\"base_PsfFlux_flag_noGoodPixels\", doc=\"not enough non-rejected pixels in data to attempt the fit\"), Key['Flag'](offset=632, bit=26)),\n", - " (Field['Flag'](name=\"base_PsfFlux_flag_edge\", doc=\"object was too close to the edge of the image to use the full PSF model\"), Key['Flag'](offset=632, bit=27)),\n", - " (Field['Flag'](name=\"base_Variance_flag\", doc=\"Set for any fatal failure\"), Key['Flag'](offset=632, bit=28)),\n", - " (Field['D'](name=\"base_Variance_value\", doc=\"Variance at object position\"), Key(offset=752, nElements=1)),\n", - " (Field['Flag'](name=\"base_Variance_flag_emptyFootprint\", doc=\"Set to True when the footprint has no usable pixels\"), Key['Flag'](offset=632, bit=29)),\n", - " (Field['D'](name=\"ext_photometryKron_KronFlux_flux\", doc=\"flux from Kron Flux algorithm\", units=\"count\"), Key(offset=760, nElements=1)),\n", - " (Field['D'](name=\"ext_photometryKron_KronFlux_fluxSigma\", doc=\"1-sigma flux uncertainty\", units=\"count\"), Key(offset=768, nElements=1)),\n", - " (Field['F'](name=\"ext_photometryKron_KronFlux_radius\", doc=\"Kron radius (sqrt(a*b))\"), Key(offset=776, nElements=1)),\n", - " (Field['F'](name=\"ext_photometryKron_KronFlux_radius_for_radius\", doc=\"radius used to estimate (sqrt(a*b))\"), Key(offset=780, nElements=1)),\n", - " (Field['F'](name=\"ext_photometryKron_KronFlux_psf_radius\", doc=\"Radius of PSF\"), Key(offset=784, nElements=1)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=632, bit=30)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_edge\", doc=\"bad measurement due to image edge\"), Key['Flag'](offset=632, bit=31)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_shape_no_psf\", doc=\"bad shape and no PSF\"), Key['Flag'](offset=632, bit=32)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_no_minimum_radius\", doc=\"minimum radius could not enforced: no minimum value or PSF\"), Key['Flag'](offset=632, bit=33)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_no_fallback_radius\", doc=\"no minimum radius and no PSF provided\"), Key['Flag'](offset=632, bit=34)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_radius\", doc=\"bad Kron radius\"), Key['Flag'](offset=632, bit=35)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_used_minimum_radius\", doc=\"used the minimum radius for the Kron aperture\"), Key['Flag'](offset=632, bit=36)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_used_psf_radius\", doc=\"used the PSF Kron radius for the Kron aperture\"), Key['Flag'](offset=632, bit=37)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_small_radius\", doc=\"measured Kron radius was smaller than that of the PSF\"), Key['Flag'](offset=632, bit=38)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_shape\", doc=\"shape for measuring Kron radius is bad; used PSF shape\"), Key['Flag'](offset=632, bit=39)),\n", - " (Field['D'](name=\"base_GaussianFlux_apCorr\", doc=\"aperture correction applied to base_GaussianFlux\"), Key(offset=792, nElements=1)),\n", - " (Field['D'](name=\"base_GaussianFlux_apCorrSigma\", doc=\"aperture correction applied to base_GaussianFlux\"), Key(offset=800, nElements=1)),\n", - " (Field['Flag'](name=\"base_GaussianFlux_flag_apCorr\", doc=\"set if unable to aperture correct base_GaussianFlux\"), Key['Flag'](offset=632, bit=40)),\n", - " (Field['D'](name=\"ext_photometryKron_KronFlux_apCorr\", doc=\"aperture correction applied to ext_photometryKron_KronFlux\"), Key(offset=808, nElements=1)),\n", - " (Field['D'](name=\"ext_photometryKron_KronFlux_apCorrSigma\", doc=\"aperture correction applied to ext_photometryKron_KronFlux\"), Key(offset=816, nElements=1)),\n", - " (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_apCorr\", doc=\"set if unable to aperture correct ext_photometryKron_KronFlux\"), Key['Flag'](offset=632, bit=41)),\n", - " (Field['D'](name=\"base_PsfFlux_apCorr\", doc=\"aperture correction applied to base_PsfFlux\"), Key(offset=824, nElements=1)),\n", - " (Field['D'](name=\"base_PsfFlux_apCorrSigma\", doc=\"aperture correction applied to base_PsfFlux\"), Key(offset=832, nElements=1)),\n", - " (Field['Flag'](name=\"base_PsfFlux_flag_apCorr\", doc=\"set if unable to aperture correct base_PsfFlux\"), Key['Flag'](offset=632, bit=42)),\n", - " (Field['D'](name=\"base_ClassificationExtendedness_value\", doc=\"Set to 1 for extended sources, 0 for point sources.\"), Key(offset=840, nElements=1)),\n", - " (Field['Flag'](name=\"base_ClassificationExtendedness_flag\", doc=\"Set to 1 for any fatal failure.\"), Key['Flag'](offset=632, bit=43)),\n", - " (Field['I'](name=\"base_FootprintArea_value\", doc=\"Number of pixels in the source''s detection footprint.\", units=\"pixel\"), Key(offset=848, nElements=1)),\n", - " (Field['Flag'](name=\"calib_astrometryUsed\", doc=\"set if source was used in astrometric calibration\"), Key['Flag'](offset=632, bit=44)),\n", - " (Field['Flag'](name=\"calib_photometry_used\", doc=\"set if source was used in photometric calibration\"), Key['Flag'](offset=632, bit=45)),\n", - " (Field['Flag'](name=\"calib_photometry_reserved\", doc=\"set if source was reserved from photometric calibration\"), Key['Flag'](offset=632, bit=46)),\n", - " 'base_CircularApertureFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'base_GaussianCentroid_flag_badInitialCentroid'->'base_SdssCentroid_flag'\n", - " 'base_GaussianFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'base_GaussianFlux_flag_badShape'->'ext_shapeHSM_HsmSourceMoments_flag'\n", - " 'base_NaiveCentroid_flag_badInitialCentroid'->'base_SdssCentroid_flag'\n", - " 'base_PsfFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'base_SdssShape_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'base_Variance_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'ext_photometryKron_KronFlux_flag_badInitialCentroid'->'base_SdssCentroid_flag'\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'ext_shapeHSM_HsmShapeRegauss_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'ext_shapeHSM_HsmSourceMoments_flag_badCentroid'->'base_SdssCentroid_flag'\n", - " 'slot_ApFlux'->'base_CircularApertureFlux_12_0'\n", - " 'slot_CalibFlux'->'base_CircularApertureFlux_12_0'\n", - " 'slot_Centroid'->'base_SdssCentroid'\n", - " 'slot_InstFlux'->'base_GaussianFlux'\n", - " 'slot_ModelFlux'->'base_GaussianFlux'\n", - " 'slot_PsfFlux'->'base_PsfFlux'\n", - " 'slot_PsfShape'->'ext_shapeHSM_HsmPsfMoments'\n", - " 'slot_Shape'->'ext_shapeHSM_HsmSourceMoments'\n", - ")" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#check its schema. Heads up, the schema is pretty big\n", "source_cat.getSchema()" @@ -896,34 +448,9 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'ext_shapeHSM_HsmPsfMoments_flag_badCentroid': SchemaItem(key=Key['Flag'](offset=32, bit=19), field=Field['Flag'](name=\"base_SdssCentroid_flag\", doc=\"General Failure Flag\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge': SchemaItem(key=Key['Flag'](offset=32, bit=20), field=Field['Flag'](name=\"base_SdssCentroid_flag_edge\", doc=\"Object too close to edge\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative': SchemaItem(key=Key['Flag'](offset=32, bit=21), field=Field['Flag'](name=\"base_SdssCentroid_flag_noSecondDerivative\", doc=\"Vanishing second derivative\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative': SchemaItem(key=Key['Flag'](offset=32, bit=22), field=Field['Flag'](name=\"base_SdssCentroid_flag_almostNoSecondDerivative\", doc=\"Almost vanishing second derivative\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum': SchemaItem(key=Key['Flag'](offset=32, bit=23), field=Field['Flag'](name=\"base_SdssCentroid_flag_notAtMaximum\", doc=\"Object is not at a maximum\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak': SchemaItem(key=Key['Flag'](offset=32, bit=24), field=Field['Flag'](name=\"base_SdssCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_x': SchemaItem(key=Key(offset=392, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_x\", doc=\"HSM Centroid\", units=\"pixel\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_y': SchemaItem(key=Key(offset=400, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_y\", doc=\"HSM Centroid\", units=\"pixel\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_xx': SchemaItem(key=Key(offset=408, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_yy': SchemaItem(key=Key(offset=416, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_xy': SchemaItem(key=Key(offset=424, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag': SchemaItem(key=Key['Flag'](offset=32, bit=34), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag\", doc=\"general failure flag, set if anything went wrong\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_no_pixels': SchemaItem(key=Key['Flag'](offset=32, bit=35), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_no_pixels\", doc=\"no pixels to measure\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_not_contained': SchemaItem(key=Key['Flag'](offset=32, bit=36), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\")),\n", - " 'ext_shapeHSM_HsmPsfMoments_flag_parent_source': SchemaItem(key=Key['Flag'](offset=32, bit=37), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_parent_source\", doc=\"parent source, ignored\"))}" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "source_cat.getSchema().extract('*HSM*Psf*')" ] @@ -937,20 +464,9 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['ext_shapeHSM_HsmPsfMoments_flag_badCentroid', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum', 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak', 'ext_shapeHSM_HsmPsfMoments_x', 'ext_shapeHSM_HsmPsfMoments_y', 'ext_shapeHSM_HsmPsfMoments_xx', 'ext_shapeHSM_HsmPsfMoments_yy', 'ext_shapeHSM_HsmPsfMoments_xy', 'ext_shapeHSM_HsmPsfMoments_flag', 'ext_shapeHSM_HsmPsfMoments_flag_no_pixels', 'ext_shapeHSM_HsmPsfMoments_flag_not_contained', 'ext_shapeHSM_HsmPsfMoments_flag_parent_source'])" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "source_cat.getSchema().extract('*HSM*Psf*').keys()" ] @@ -964,19 +480,9 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "gaussian centroid is 1980.019868931552, 7.642499448278578\n", - "sloan centroid is 1980.0, 8.0\n", - "slot centroid is (1980, 8)\n" - ] - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "slot_centroid = source_cat[0].getCentroid()\n", "gauss_cent_x, gauss_cent_y = (source_cat['base_GaussianCentroid_x'][0], source_cat['base_GaussianCentroid_y'][0])\n", @@ -989,11 +495,11 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#aliasing works with other methods\n", + "# aliasing works with other methods\n", "psf_flux_key = source_cat.getPsfFluxKey()\n", "id_key = source_cat.getIdKey()" ] @@ -1011,121 +517,39 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "Table length=2662\n", - "
idcoord_racoord_decparentcalib_detectedcalib_psfCandidatecalib_psfUsedcalib_psf_reserveddeblend_nChilddeblend_deblendedAsPsfdeblend_psfCenter_xdeblend_psfCenter_ydeblend_psfFluxdeblend_tooManyPeaksdeblend_parentTooBigdeblend_maskeddeblend_skippeddeblend_rampedTemplatedeblend_patchedTemplatedeblend_hasStrayFluxbase_GaussianCentroid_xbase_GaussianCentroid_ybase_GaussianCentroid_flagbase_GaussianCentroid_flag_noPeakbase_GaussianCentroid_flag_resetToPeakbase_NaiveCentroid_xbase_NaiveCentroid_ybase_NaiveCentroid_flagbase_NaiveCentroid_flag_noCountsbase_NaiveCentroid_flag_edgebase_NaiveCentroid_flag_resetToPeakbase_SdssCentroid_xslot_Centroid_xbase_SdssCentroid_yslot_Centroid_ybase_SdssCentroid_xSigmaslot_Centroid_xSigmabase_SdssCentroid_ySigmaslot_Centroid_ySigmabase_SdssCentroid_flagbase_CircularApertureFlux_flag_badCentroidbase_GaussianCentroid_flag_badInitialCentroidbase_GaussianFlux_flag_badCentroidbase_NaiveCentroid_flag_badInitialCentroidbase_PsfFlux_flag_badCentroidbase_SdssShape_flag_badCentroidbase_Variance_flag_badCentroidext_photometryKron_KronFlux_flag_badInitialCentroidext_shapeHSM_HsmPsfMoments_flag_badCentroidext_shapeHSM_HsmShapeRegauss_flag_badCentroidext_shapeHSM_HsmSourceMomentsRound_flag_badCentroidext_shapeHSM_HsmSourceMoments_flag_badCentroidslot_Centroid_flagbase_SdssCentroid_flag_edgebase_CircularApertureFlux_flag_badCentroid_edgebase_GaussianCentroid_flag_badInitialCentroid_edgebase_GaussianFlux_flag_badCentroid_edgebase_NaiveCentroid_flag_badInitialCentroid_edgebase_PsfFlux_flag_badCentroid_edgebase_SdssShape_flag_badCentroid_edgebase_Variance_flag_badCentroid_edgeext_photometryKron_KronFlux_flag_badInitialCentroid_edgeext_shapeHSM_HsmPsfMoments_flag_badCentroid_edgeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_edgeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_edgeext_shapeHSM_HsmSourceMoments_flag_badCentroid_edgeslot_Centroid_flag_edgebase_SdssCentroid_flag_noSecondDerivativebase_CircularApertureFlux_flag_badCentroid_noSecondDerivativebase_GaussianCentroid_flag_badInitialCentroid_noSecondDerivativebase_GaussianFlux_flag_badCentroid_noSecondDerivativebase_NaiveCentroid_flag_badInitialCentroid_noSecondDerivativebase_PsfFlux_flag_badCentroid_noSecondDerivativebase_SdssShape_flag_badCentroid_noSecondDerivativebase_Variance_flag_badCentroid_noSecondDerivativeext_photometryKron_KronFlux_flag_badInitialCentroid_noSecondDerivativeext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmSourceMoments_flag_badCentroid_noSecondDerivativeslot_Centroid_flag_noSecondDerivativebase_SdssCentroid_flag_almostNoSecondDerivativebase_CircularApertureFlux_flag_badCentroid_almostNoSecondDerivativebase_GaussianCentroid_flag_badInitialCentroid_almostNoSecondDerivativebase_GaussianFlux_flag_badCentroid_almostNoSecondDerivativebase_NaiveCentroid_flag_badInitialCentroid_almostNoSecondDerivativebase_PsfFlux_flag_badCentroid_almostNoSecondDerivativebase_SdssShape_flag_badCentroid_almostNoSecondDerivativebase_Variance_flag_badCentroid_almostNoSecondDerivativeext_photometryKron_KronFlux_flag_badInitialCentroid_almostNoSecondDerivativeext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmSourceMoments_flag_badCentroid_almostNoSecondDerivativeslot_Centroid_flag_almostNoSecondDerivativebase_SdssCentroid_flag_notAtMaximumbase_CircularApertureFlux_flag_badCentroid_notAtMaximumbase_GaussianCentroid_flag_badInitialCentroid_notAtMaximumbase_GaussianFlux_flag_badCentroid_notAtMaximumbase_NaiveCentroid_flag_badInitialCentroid_notAtMaximumbase_PsfFlux_flag_badCentroid_notAtMaximumbase_SdssShape_flag_badCentroid_notAtMaximumbase_Variance_flag_badCentroid_notAtMaximumext_photometryKron_KronFlux_flag_badInitialCentroid_notAtMaximumext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximumext_shapeHSM_HsmShapeRegauss_flag_badCentroid_notAtMaximumext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_notAtMaximumext_shapeHSM_HsmSourceMoments_flag_badCentroid_notAtMaximumslot_Centroid_flag_notAtMaximumbase_SdssCentroid_flag_resetToPeakbase_CircularApertureFlux_flag_badCentroid_resetToPeakbase_GaussianCentroid_flag_badInitialCentroid_resetToPeakbase_GaussianFlux_flag_badCentroid_resetToPeakbase_NaiveCentroid_flag_badInitialCentroid_resetToPeakbase_PsfFlux_flag_badCentroid_resetToPeakbase_SdssShape_flag_badCentroid_resetToPeakbase_Variance_flag_badCentroid_resetToPeakext_photometryKron_KronFlux_flag_badInitialCentroid_resetToPeakext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeakext_shapeHSM_HsmShapeRegauss_flag_badCentroid_resetToPeakext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_resetToPeakext_shapeHSM_HsmSourceMoments_flag_badCentroid_resetToPeakslot_Centroid_flag_resetToPeakbase_Blendedness_oldbase_Blendedness_raw_fluxbase_Blendedness_raw_flux_childbase_Blendedness_raw_flux_parentbase_Blendedness_abs_fluxbase_Blendedness_abs_flux_childbase_Blendedness_abs_flux_parentbase_Blendedness_raw_child_xxbase_Blendedness_raw_child_yybase_Blendedness_raw_child_xybase_Blendedness_raw_parent_xxbase_Blendedness_raw_parent_yybase_Blendedness_raw_parent_xybase_Blendedness_abs_child_xxbase_Blendedness_abs_child_yybase_Blendedness_abs_child_xybase_Blendedness_abs_parent_xxbase_Blendedness_abs_parent_yybase_Blendedness_abs_parent_xybase_Blendedness_flagbase_Blendedness_flag_noCentroidbase_Blendedness_flag_noShapebase_SdssShape_xxbase_SdssShape_yybase_SdssShape_xybase_SdssShape_xxSigmabase_SdssShape_yySigmabase_SdssShape_xySigmabase_SdssShape_xbase_SdssShape_ybase_SdssShape_fluxbase_SdssShape_fluxSigmabase_SdssShape_psf_xxbase_SdssShape_psf_yybase_SdssShape_psf_xybase_SdssShape_flux_xx_Covbase_SdssShape_flux_yy_Covbase_SdssShape_flux_xy_Covbase_SdssShape_flagbase_SdssShape_flag_unweightedBadbase_SdssShape_flag_unweightedbase_SdssShape_flag_shiftbase_SdssShape_flag_maxIterbase_SdssShape_flag_psfext_shapeHSM_HsmPsfMoments_xslot_PsfShape_xext_shapeHSM_HsmPsfMoments_yslot_PsfShape_yext_shapeHSM_HsmPsfMoments_xxslot_PsfShape_xxext_shapeHSM_HsmPsfMoments_yyslot_PsfShape_yyext_shapeHSM_HsmPsfMoments_xyslot_PsfShape_xyext_shapeHSM_HsmPsfMoments_flagslot_PsfShape_flagext_shapeHSM_HsmPsfMoments_flag_no_pixelsslot_PsfShape_flag_no_pixelsext_shapeHSM_HsmPsfMoments_flag_not_containedslot_PsfShape_flag_not_containedext_shapeHSM_HsmPsfMoments_flag_parent_sourceslot_PsfShape_flag_parent_sourceext_shapeHSM_HsmShapeRegauss_e1ext_shapeHSM_HsmShapeRegauss_e2ext_shapeHSM_HsmShapeRegauss_sigmaext_shapeHSM_HsmShapeRegauss_resolutionext_shapeHSM_HsmShapeRegauss_flagext_shapeHSM_HsmShapeRegauss_flag_no_pixelsext_shapeHSM_HsmShapeRegauss_flag_not_containedext_shapeHSM_HsmShapeRegauss_flag_parent_sourceext_shapeHSM_HsmShapeRegauss_flag_galsimext_shapeHSM_HsmSourceMoments_xslot_Shape_xext_shapeHSM_HsmSourceMoments_yslot_Shape_yext_shapeHSM_HsmSourceMoments_xxslot_Shape_xxext_shapeHSM_HsmSourceMoments_yyslot_Shape_yyext_shapeHSM_HsmSourceMoments_xyslot_Shape_xyext_shapeHSM_HsmSourceMoments_flagbase_GaussianFlux_flag_badShapeslot_Shape_flagext_shapeHSM_HsmSourceMoments_flag_no_pixelsbase_GaussianFlux_flag_badShape_no_pixelsslot_Shape_flag_no_pixelsext_shapeHSM_HsmSourceMoments_flag_not_containedbase_GaussianFlux_flag_badShape_not_containedslot_Shape_flag_not_containedext_shapeHSM_HsmSourceMoments_flag_parent_sourcebase_GaussianFlux_flag_badShape_parent_sourceslot_Shape_flag_parent_sourceext_shapeHSM_HsmSourceMomentsRound_xslot_ShapeRound_xext_shapeHSM_HsmSourceMomentsRound_yslot_ShapeRound_yext_shapeHSM_HsmSourceMomentsRound_xxslot_ShapeRound_xxext_shapeHSM_HsmSourceMomentsRound_yyslot_ShapeRound_yyext_shapeHSM_HsmSourceMomentsRound_xyslot_ShapeRound_xyext_shapeHSM_HsmSourceMomentsRound_flagslot_ShapeRound_flagext_shapeHSM_HsmSourceMomentsRound_flag_no_pixelsslot_ShapeRound_flag_no_pixelsext_shapeHSM_HsmSourceMomentsRound_flag_not_containedslot_ShapeRound_flag_not_containedext_shapeHSM_HsmSourceMomentsRound_flag_parent_sourceslot_ShapeRound_flag_parent_sourceext_shapeHSM_HsmSourceMomentsRound_Fluxslot_ShapeRound_Fluxbase_CircularApertureFlux_3_0_fluxbase_CircularApertureFlux_3_0_fluxSigmabase_CircularApertureFlux_3_0_flagbase_CircularApertureFlux_3_0_flag_apertureTruncatedbase_CircularApertureFlux_3_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_4_5_fluxbase_CircularApertureFlux_4_5_fluxSigmabase_CircularApertureFlux_4_5_flagbase_CircularApertureFlux_4_5_flag_apertureTruncatedbase_CircularApertureFlux_4_5_flag_sincCoeffsTruncatedbase_CircularApertureFlux_6_0_fluxbase_CircularApertureFlux_6_0_fluxSigmabase_CircularApertureFlux_6_0_flagbase_CircularApertureFlux_6_0_flag_apertureTruncatedbase_CircularApertureFlux_6_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_9_0_fluxbase_CircularApertureFlux_9_0_fluxSigmabase_CircularApertureFlux_9_0_flagbase_CircularApertureFlux_9_0_flag_apertureTruncatedbase_CircularApertureFlux_9_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_12_0_fluxslot_ApFlux_fluxslot_CalibFlux_fluxbase_CircularApertureFlux_12_0_fluxSigmaslot_ApFlux_fluxSigmaslot_CalibFlux_fluxSigmabase_CircularApertureFlux_12_0_flagslot_ApFlux_flagslot_CalibFlux_flagbase_CircularApertureFlux_12_0_flag_apertureTruncatedslot_ApFlux_flag_apertureTruncatedslot_CalibFlux_flag_apertureTruncatedbase_CircularApertureFlux_12_0_flag_sincCoeffsTruncatedslot_ApFlux_flag_sincCoeffsTruncatedslot_CalibFlux_flag_sincCoeffsTruncatedbase_CircularApertureFlux_17_0_fluxbase_CircularApertureFlux_17_0_fluxSigmabase_CircularApertureFlux_17_0_flagbase_CircularApertureFlux_17_0_flag_apertureTruncatedbase_CircularApertureFlux_25_0_fluxbase_CircularApertureFlux_25_0_fluxSigmabase_CircularApertureFlux_25_0_flagbase_CircularApertureFlux_25_0_flag_apertureTruncatedbase_CircularApertureFlux_35_0_fluxbase_CircularApertureFlux_35_0_fluxSigmabase_CircularApertureFlux_35_0_flagbase_CircularApertureFlux_35_0_flag_apertureTruncatedbase_CircularApertureFlux_50_0_fluxbase_CircularApertureFlux_50_0_fluxSigmabase_CircularApertureFlux_50_0_flagbase_CircularApertureFlux_50_0_flag_apertureTruncatedbase_CircularApertureFlux_70_0_fluxbase_CircularApertureFlux_70_0_fluxSigmabase_CircularApertureFlux_70_0_flagbase_CircularApertureFlux_70_0_flag_apertureTruncatedbase_GaussianFlux_fluxslot_InstFlux_fluxslot_ModelFlux_fluxbase_GaussianFlux_fluxSigmaslot_InstFlux_fluxSigmaslot_ModelFlux_fluxSigmabase_GaussianFlux_flagslot_InstFlux_flagslot_ModelFlux_flagbase_PixelFlags_flagbase_PixelFlags_flag_offimagebase_PixelFlags_flag_edgebase_PixelFlags_flag_interpolatedbase_PixelFlags_flag_saturatedbase_PixelFlags_flag_crbase_PixelFlags_flag_badbase_PixelFlags_flag_suspectbase_PixelFlags_flag_interpolatedCenterbase_PixelFlags_flag_saturatedCenterbase_PixelFlags_flag_crCenterbase_PixelFlags_flag_suspectCenterbase_PsfFlux_fluxslot_PsfFlux_fluxbase_PsfFlux_fluxSigmaslot_PsfFlux_fluxSigmabase_PsfFlux_flagslot_PsfFlux_flagbase_PsfFlux_flag_noGoodPixelsslot_PsfFlux_flag_noGoodPixelsbase_PsfFlux_flag_edgeslot_PsfFlux_flag_edgebase_Variance_flagbase_Variance_valuebase_Variance_flag_emptyFootprintext_photometryKron_KronFlux_fluxext_photometryKron_KronFlux_fluxSigmaext_photometryKron_KronFlux_radiusext_photometryKron_KronFlux_radius_for_radiusext_photometryKron_KronFlux_psf_radiusext_photometryKron_KronFlux_flagext_photometryKron_KronFlux_flag_edgeext_photometryKron_KronFlux_flag_bad_shape_no_psfext_photometryKron_KronFlux_flag_no_minimum_radiusext_photometryKron_KronFlux_flag_no_fallback_radiusext_photometryKron_KronFlux_flag_bad_radiusext_photometryKron_KronFlux_flag_used_minimum_radiusext_photometryKron_KronFlux_flag_used_psf_radiusext_photometryKron_KronFlux_flag_small_radiusext_photometryKron_KronFlux_flag_bad_shapebase_GaussianFlux_apCorrslot_InstFlux_apCorrslot_ModelFlux_apCorrbase_GaussianFlux_apCorrSigmaslot_InstFlux_apCorrSigmaslot_ModelFlux_apCorrSigmabase_GaussianFlux_flag_apCorrslot_InstFlux_flag_apCorrslot_ModelFlux_flag_apCorrext_photometryKron_KronFlux_apCorrext_photometryKron_KronFlux_apCorrSigmaext_photometryKron_KronFlux_flag_apCorrbase_PsfFlux_apCorrslot_PsfFlux_apCorrbase_PsfFlux_apCorrSigmaslot_PsfFlux_apCorrSigmabase_PsfFlux_flag_apCorrslot_PsfFlux_flag_apCorrbase_ClassificationExtendedness_valuebase_ClassificationExtendedness_flagbase_FootprintArea_valuecalib_astrometryUsedcalib_photometry_usedcalib_photometry_reserved
radradpixpixpixpixpixpixpixpixpixpixpixpixpixpixctctctctpix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pixpixctctpix2pix2pix2ct pix2ct pix2ct pix2pixpixpixpixpix2pix2pix2pix2pix2pix2pixpixpixpixpix2pix2pix2pix2pix2pix2pixpixpixpixpix2pix2pix2pix2pix2pix2ctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctpix
int64float64float64int64boolboolboolboolint32boolfloat64float64float64boolboolboolboolboolboolboolfloat64float64boolboolboolfloat64float64boolboolboolboolfloat64float64float64float64float32float32float32float32boolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64boolboolboolfloat64float64float64float32float32float32float64float64float64float64float64float64float64float32float32float32boolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolfloat64float64float64float64boolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolfloat32float32float64float64boolboolboolfloat64float64boolboolboolfloat64float64boolboolboolfloat64float64boolboolboolfloat64float64float64float64float64float64boolboolboolboolboolboolboolboolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64float64float64float64float64boolboolboolboolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64boolboolboolboolboolboolboolfloat64boolfloat64float64float32float32float32boolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64boolboolboolfloat64float64boolfloat64float64float64float64boolboolfloat64boolint32boolboolbool
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
idcoord_racoord_decparentcalib_detectedcalib_psfCandidatecalib_psfUsedcalib_psf_reserveddeblend_nChilddeblend_deblendedAsPsfdeblend_psfCenter_xdeblend_psfCenter_ydeblend_psfFluxdeblend_tooManyPeaksdeblend_parentTooBigdeblend_maskeddeblend_skippeddeblend_rampedTemplatedeblend_patchedTemplatedeblend_hasStrayFluxbase_GaussianCentroid_xbase_GaussianCentroid_ybase_GaussianCentroid_flagbase_GaussianCentroid_flag_noPeakbase_GaussianCentroid_flag_resetToPeakbase_NaiveCentroid_xbase_NaiveCentroid_ybase_NaiveCentroid_flagbase_NaiveCentroid_flag_noCountsbase_NaiveCentroid_flag_edgebase_NaiveCentroid_flag_resetToPeakbase_SdssCentroid_xslot_Centroid_xbase_SdssCentroid_yslot_Centroid_ybase_SdssCentroid_xSigmaslot_Centroid_xSigmabase_SdssCentroid_ySigmaslot_Centroid_ySigmabase_SdssCentroid_flagbase_CircularApertureFlux_flag_badCentroidbase_GaussianCentroid_flag_badInitialCentroidbase_GaussianFlux_flag_badCentroidbase_NaiveCentroid_flag_badInitialCentroidbase_PsfFlux_flag_badCentroidbase_SdssShape_flag_badCentroidbase_Variance_flag_badCentroidext_photometryKron_KronFlux_flag_badInitialCentroidext_shapeHSM_HsmPsfMoments_flag_badCentroidext_shapeHSM_HsmShapeRegauss_flag_badCentroidext_shapeHSM_HsmSourceMomentsRound_flag_badCentroidext_shapeHSM_HsmSourceMoments_flag_badCentroidslot_Centroid_flagbase_SdssCentroid_flag_edgebase_CircularApertureFlux_flag_badCentroid_edgebase_GaussianCentroid_flag_badInitialCentroid_edgebase_GaussianFlux_flag_badCentroid_edgebase_NaiveCentroid_flag_badInitialCentroid_edgebase_PsfFlux_flag_badCentroid_edgebase_SdssShape_flag_badCentroid_edgebase_Variance_flag_badCentroid_edgeext_photometryKron_KronFlux_flag_badInitialCentroid_edgeext_shapeHSM_HsmPsfMoments_flag_badCentroid_edgeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_edgeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_edgeext_shapeHSM_HsmSourceMoments_flag_badCentroid_edgeslot_Centroid_flag_edgebase_SdssCentroid_flag_noSecondDerivativebase_CircularApertureFlux_flag_badCentroid_noSecondDerivativebase_GaussianCentroid_flag_badInitialCentroid_noSecondDerivativebase_GaussianFlux_flag_badCentroid_noSecondDerivativebase_NaiveCentroid_flag_badInitialCentroid_noSecondDerivativebase_PsfFlux_flag_badCentroid_noSecondDerivativebase_SdssShape_flag_badCentroid_noSecondDerivativebase_Variance_flag_badCentroid_noSecondDerivativeext_photometryKron_KronFlux_flag_badInitialCentroid_noSecondDerivativeext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_noSecondDerivativeext_shapeHSM_HsmSourceMoments_flag_badCentroid_noSecondDerivativeslot_Centroid_flag_noSecondDerivativebase_SdssCentroid_flag_almostNoSecondDerivativebase_CircularApertureFlux_flag_badCentroid_almostNoSecondDerivativebase_GaussianCentroid_flag_badInitialCentroid_almostNoSecondDerivativebase_GaussianFlux_flag_badCentroid_almostNoSecondDerivativebase_NaiveCentroid_flag_badInitialCentroid_almostNoSecondDerivativebase_PsfFlux_flag_badCentroid_almostNoSecondDerivativebase_SdssShape_flag_badCentroid_almostNoSecondDerivativebase_Variance_flag_badCentroid_almostNoSecondDerivativeext_photometryKron_KronFlux_flag_badInitialCentroid_almostNoSecondDerivativeext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmShapeRegauss_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_almostNoSecondDerivativeext_shapeHSM_HsmSourceMoments_flag_badCentroid_almostNoSecondDerivativeslot_Centroid_flag_almostNoSecondDerivativebase_SdssCentroid_flag_notAtMaximumbase_CircularApertureFlux_flag_badCentroid_notAtMaximumbase_GaussianCentroid_flag_badInitialCentroid_notAtMaximumbase_GaussianFlux_flag_badCentroid_notAtMaximumbase_NaiveCentroid_flag_badInitialCentroid_notAtMaximumbase_PsfFlux_flag_badCentroid_notAtMaximumbase_SdssShape_flag_badCentroid_notAtMaximumbase_Variance_flag_badCentroid_notAtMaximumext_photometryKron_KronFlux_flag_badInitialCentroid_notAtMaximumext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximumext_shapeHSM_HsmShapeRegauss_flag_badCentroid_notAtMaximumext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_notAtMaximumext_shapeHSM_HsmSourceMoments_flag_badCentroid_notAtMaximumslot_Centroid_flag_notAtMaximumbase_SdssCentroid_flag_resetToPeakbase_CircularApertureFlux_flag_badCentroid_resetToPeakbase_GaussianCentroid_flag_badInitialCentroid_resetToPeakbase_GaussianFlux_flag_badCentroid_resetToPeakbase_NaiveCentroid_flag_badInitialCentroid_resetToPeakbase_PsfFlux_flag_badCentroid_resetToPeakbase_SdssShape_flag_badCentroid_resetToPeakbase_Variance_flag_badCentroid_resetToPeakext_photometryKron_KronFlux_flag_badInitialCentroid_resetToPeakext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeakext_shapeHSM_HsmShapeRegauss_flag_badCentroid_resetToPeakext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_resetToPeakext_shapeHSM_HsmSourceMoments_flag_badCentroid_resetToPeakslot_Centroid_flag_resetToPeakbase_Blendedness_oldbase_Blendedness_raw_fluxbase_Blendedness_raw_flux_childbase_Blendedness_raw_flux_parentbase_Blendedness_abs_fluxbase_Blendedness_abs_flux_childbase_Blendedness_abs_flux_parentbase_Blendedness_raw_child_xxbase_Blendedness_raw_child_yybase_Blendedness_raw_child_xybase_Blendedness_raw_parent_xxbase_Blendedness_raw_parent_yybase_Blendedness_raw_parent_xybase_Blendedness_abs_child_xxbase_Blendedness_abs_child_yybase_Blendedness_abs_child_xybase_Blendedness_abs_parent_xxbase_Blendedness_abs_parent_yybase_Blendedness_abs_parent_xybase_Blendedness_flagbase_Blendedness_flag_noCentroidbase_Blendedness_flag_noShapebase_SdssShape_xxbase_SdssShape_yybase_SdssShape_xybase_SdssShape_xxSigmabase_SdssShape_yySigmabase_SdssShape_xySigmabase_SdssShape_xbase_SdssShape_ybase_SdssShape_fluxbase_SdssShape_fluxSigmabase_SdssShape_psf_xxbase_SdssShape_psf_yybase_SdssShape_psf_xybase_SdssShape_flux_xx_Covbase_SdssShape_flux_yy_Covbase_SdssShape_flux_xy_Covbase_SdssShape_flagbase_SdssShape_flag_unweightedBadbase_SdssShape_flag_unweightedbase_SdssShape_flag_shiftbase_SdssShape_flag_maxIterbase_SdssShape_flag_psfext_shapeHSM_HsmPsfMoments_xslot_PsfShape_xext_shapeHSM_HsmPsfMoments_yslot_PsfShape_yext_shapeHSM_HsmPsfMoments_xxslot_PsfShape_xxext_shapeHSM_HsmPsfMoments_yyslot_PsfShape_yyext_shapeHSM_HsmPsfMoments_xyslot_PsfShape_xyext_shapeHSM_HsmPsfMoments_flagslot_PsfShape_flagext_shapeHSM_HsmPsfMoments_flag_no_pixelsslot_PsfShape_flag_no_pixelsext_shapeHSM_HsmPsfMoments_flag_not_containedslot_PsfShape_flag_not_containedext_shapeHSM_HsmPsfMoments_flag_parent_sourceslot_PsfShape_flag_parent_sourceext_shapeHSM_HsmShapeRegauss_e1ext_shapeHSM_HsmShapeRegauss_e2ext_shapeHSM_HsmShapeRegauss_sigmaext_shapeHSM_HsmShapeRegauss_resolutionext_shapeHSM_HsmShapeRegauss_flagext_shapeHSM_HsmShapeRegauss_flag_no_pixelsext_shapeHSM_HsmShapeRegauss_flag_not_containedext_shapeHSM_HsmShapeRegauss_flag_parent_sourceext_shapeHSM_HsmShapeRegauss_flag_galsimext_shapeHSM_HsmSourceMoments_xslot_Shape_xext_shapeHSM_HsmSourceMoments_yslot_Shape_yext_shapeHSM_HsmSourceMoments_xxslot_Shape_xxext_shapeHSM_HsmSourceMoments_yyslot_Shape_yyext_shapeHSM_HsmSourceMoments_xyslot_Shape_xyext_shapeHSM_HsmSourceMoments_flagbase_GaussianFlux_flag_badShapeslot_Shape_flagext_shapeHSM_HsmSourceMoments_flag_no_pixelsbase_GaussianFlux_flag_badShape_no_pixelsslot_Shape_flag_no_pixelsext_shapeHSM_HsmSourceMoments_flag_not_containedbase_GaussianFlux_flag_badShape_not_containedslot_Shape_flag_not_containedext_shapeHSM_HsmSourceMoments_flag_parent_sourcebase_GaussianFlux_flag_badShape_parent_sourceslot_Shape_flag_parent_sourceext_shapeHSM_HsmSourceMomentsRound_xslot_ShapeRound_xext_shapeHSM_HsmSourceMomentsRound_yslot_ShapeRound_yext_shapeHSM_HsmSourceMomentsRound_xxslot_ShapeRound_xxext_shapeHSM_HsmSourceMomentsRound_yyslot_ShapeRound_yyext_shapeHSM_HsmSourceMomentsRound_xyslot_ShapeRound_xyext_shapeHSM_HsmSourceMomentsRound_flagslot_ShapeRound_flagext_shapeHSM_HsmSourceMomentsRound_flag_no_pixelsslot_ShapeRound_flag_no_pixelsext_shapeHSM_HsmSourceMomentsRound_flag_not_containedslot_ShapeRound_flag_not_containedext_shapeHSM_HsmSourceMomentsRound_flag_parent_sourceslot_ShapeRound_flag_parent_sourceext_shapeHSM_HsmSourceMomentsRound_Fluxslot_ShapeRound_Fluxbase_CircularApertureFlux_3_0_fluxbase_CircularApertureFlux_3_0_fluxSigmabase_CircularApertureFlux_3_0_flagbase_CircularApertureFlux_3_0_flag_apertureTruncatedbase_CircularApertureFlux_3_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_4_5_fluxbase_CircularApertureFlux_4_5_fluxSigmabase_CircularApertureFlux_4_5_flagbase_CircularApertureFlux_4_5_flag_apertureTruncatedbase_CircularApertureFlux_4_5_flag_sincCoeffsTruncatedbase_CircularApertureFlux_6_0_fluxbase_CircularApertureFlux_6_0_fluxSigmabase_CircularApertureFlux_6_0_flagbase_CircularApertureFlux_6_0_flag_apertureTruncatedbase_CircularApertureFlux_6_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_9_0_fluxbase_CircularApertureFlux_9_0_fluxSigmabase_CircularApertureFlux_9_0_flagbase_CircularApertureFlux_9_0_flag_apertureTruncatedbase_CircularApertureFlux_9_0_flag_sincCoeffsTruncatedbase_CircularApertureFlux_12_0_fluxslot_ApFlux_fluxslot_CalibFlux_fluxbase_CircularApertureFlux_12_0_fluxSigmaslot_ApFlux_fluxSigmaslot_CalibFlux_fluxSigmabase_CircularApertureFlux_12_0_flagslot_ApFlux_flagslot_CalibFlux_flagbase_CircularApertureFlux_12_0_flag_apertureTruncatedslot_ApFlux_flag_apertureTruncatedslot_CalibFlux_flag_apertureTruncatedbase_CircularApertureFlux_12_0_flag_sincCoeffsTruncatedslot_ApFlux_flag_sincCoeffsTruncatedslot_CalibFlux_flag_sincCoeffsTruncatedbase_CircularApertureFlux_17_0_fluxbase_CircularApertureFlux_17_0_fluxSigmabase_CircularApertureFlux_17_0_flagbase_CircularApertureFlux_17_0_flag_apertureTruncatedbase_CircularApertureFlux_25_0_fluxbase_CircularApertureFlux_25_0_fluxSigmabase_CircularApertureFlux_25_0_flagbase_CircularApertureFlux_25_0_flag_apertureTruncatedbase_CircularApertureFlux_35_0_fluxbase_CircularApertureFlux_35_0_fluxSigmabase_CircularApertureFlux_35_0_flagbase_CircularApertureFlux_35_0_flag_apertureTruncatedbase_CircularApertureFlux_50_0_fluxbase_CircularApertureFlux_50_0_fluxSigmabase_CircularApertureFlux_50_0_flagbase_CircularApertureFlux_50_0_flag_apertureTruncatedbase_CircularApertureFlux_70_0_fluxbase_CircularApertureFlux_70_0_fluxSigmabase_CircularApertureFlux_70_0_flagbase_CircularApertureFlux_70_0_flag_apertureTruncatedbase_GaussianFlux_fluxslot_InstFlux_fluxslot_ModelFlux_fluxbase_GaussianFlux_fluxSigmaslot_InstFlux_fluxSigmaslot_ModelFlux_fluxSigmabase_GaussianFlux_flagslot_InstFlux_flagslot_ModelFlux_flagbase_PixelFlags_flagbase_PixelFlags_flag_offimagebase_PixelFlags_flag_edgebase_PixelFlags_flag_interpolatedbase_PixelFlags_flag_saturatedbase_PixelFlags_flag_crbase_PixelFlags_flag_badbase_PixelFlags_flag_suspectbase_PixelFlags_flag_interpolatedCenterbase_PixelFlags_flag_saturatedCenterbase_PixelFlags_flag_crCenterbase_PixelFlags_flag_suspectCenterbase_PsfFlux_fluxslot_PsfFlux_fluxbase_PsfFlux_fluxSigmaslot_PsfFlux_fluxSigmabase_PsfFlux_flagslot_PsfFlux_flagbase_PsfFlux_flag_noGoodPixelsslot_PsfFlux_flag_noGoodPixelsbase_PsfFlux_flag_edgeslot_PsfFlux_flag_edgebase_Variance_flagbase_Variance_valuebase_Variance_flag_emptyFootprintext_photometryKron_KronFlux_fluxext_photometryKron_KronFlux_fluxSigmaext_photometryKron_KronFlux_radiusext_photometryKron_KronFlux_radius_for_radiusext_photometryKron_KronFlux_psf_radiusext_photometryKron_KronFlux_flagext_photometryKron_KronFlux_flag_edgeext_photometryKron_KronFlux_flag_bad_shape_no_psfext_photometryKron_KronFlux_flag_no_minimum_radiusext_photometryKron_KronFlux_flag_no_fallback_radiusext_photometryKron_KronFlux_flag_bad_radiusext_photometryKron_KronFlux_flag_used_minimum_radiusext_photometryKron_KronFlux_flag_used_psf_radiusext_photometryKron_KronFlux_flag_small_radiusext_photometryKron_KronFlux_flag_bad_shapebase_GaussianFlux_apCorrslot_InstFlux_apCorrslot_ModelFlux_apCorrbase_GaussianFlux_apCorrSigmaslot_InstFlux_apCorrSigmaslot_ModelFlux_apCorrSigmabase_GaussianFlux_flag_apCorrslot_InstFlux_flag_apCorrslot_ModelFlux_flag_apCorrext_photometryKron_KronFlux_apCorrext_photometryKron_KronFlux_apCorrSigmaext_photometryKron_KronFlux_flag_apCorrbase_PsfFlux_apCorrslot_PsfFlux_apCorrbase_PsfFlux_apCorrSigmaslot_PsfFlux_apCorrSigmabase_PsfFlux_flag_apCorrslot_PsfFlux_flag_apCorrbase_ClassificationExtendedness_valuebase_ClassificationExtendedness_flagbase_FootprintArea_valuecalib_astrometryUsedcalib_photometry_usedcalib_photometry_reserved
radradpixpixpixpixpixpixpixpixpixpixpixpixpixpixctctctctpix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pix2pixpixctctpix2pix2pix2ct pix2ct pix2ct pix2pixpixpixpixpix2pix2pix2pix2pix2pix2pixpixpixpixpix2pix2pix2pix2pix2pix2pixpixpixpixpix2pix2pix2pix2pix2pix2ctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctctpix
int64float64float64int64boolboolboolboolint32boolfloat64float64float64boolboolboolboolboolboolboolfloat64float64boolboolboolfloat64float64boolboolboolboolfloat64float64float64float64float32float32float32float32boolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64float64boolboolboolfloat64float64float64float32float32float32float64float64float64float64float64float64float64float32float32float32boolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolfloat64float64float64float64boolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64float64float64float64float64boolboolboolboolboolboolboolboolfloat32float32float64float64boolboolboolfloat64float64boolboolboolfloat64float64boolboolboolfloat64float64boolboolboolfloat64float64float64float64float64float64boolboolboolboolboolboolboolboolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64boolboolfloat64float64float64float64float64float64boolboolboolboolboolboolboolboolboolboolboolboolboolboolboolfloat64float64float64float64boolboolboolboolboolboolboolfloat64boolfloat64float64float32float32float32boolboolboolboolboolboolboolboolboolboolfloat64float64float64float64float64float64boolboolboolfloat64float64boolfloat64float64float64float64boolboolfloat64boolint32boolboolbool
10103575019530.923033029229361-0.47937233360886610FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse1980.0198689315527.642499448278578FalseFalseFalse1980.04532567208827.943966875047312FalseFalseFalseFalse1980.01980.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.05096.547288206665096.547288206660.05098.7212118629665098.7212118629664.0411211024955054.494217271276707-0.33675381970307314.0411211024955054.494217271276707-0.33675381970307314.0813070521650514.593879812379573-0.35053408615134494.0813070521650514.593879812379573-0.3505340861513449TrueTrueTrue4.0332035578875154.620004443579578-0.29489446514162350.509650650.38660260.5838011980.011798048767.8044580014078655204.457512306397328.82733320633994.4945447641283095.212304374560799-0.1371336289244042-83.793536.1267056-95.98486FalseFalseFalseFalseFalseFalse-0.0004632858349975-0.00046328583499750.00174961074882518410.00174961074882518414.4981410071650444.4981410071650445.2151212180237935.215121218023793-0.1371611722138221-0.1371611722138221TrueTrueFalseFalseFalseFalseFalseFalsenannannannanTrueFalseFalseFalseTrue1980.02204727467141980.02204727467147.6166732745664617.6166732745664614.0467033578748824.0467033578748824.4138914454457614.413891445445761-0.3371103277975421-0.3371103277975421TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse1980.01604434729441980.01604434729447.6222420882257237.6222420882257234.1162520255469354.1162520255469354.2950612771908944.295061277190894-0.16487429218976926-0.16487429218976926TrueTrueFalseFalseFalseFalseFalseFalse5177.16755177.16753287.5244140625158.10244750976562TrueFalseFalse4587.88232421875233.74769592285156TrueFalseTrue5432.3828125308.88043212890625TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue5685.4991819212045685.4991819212045685.499181921204254.03851366006722254.03851366006722254.03851366006722FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse6136.8047450215546136.804745021554267.14045510788267.14045510788TrueTrueFalseFalseTrueTrueFalse816.5FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.10464855410283411.10464855410283411.10464855410283410.00.00.0FalseFalseFalse1.0356588917966630.0False0.98806375319393650.98806375319393650.00.0FalseFalsenanTrue219FalseFalseFalse
10103575019540.9231694833170864-0.479842914421948040FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse2481.07.0TrueFalseTrue2481.0812549852736.656761002707083FalseFalseFalseFalse2481.02481.07.07.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.04861.642801097574861.642801097570.04858.8821066872694858.8821066872695.6197044899430142.2569570908999137-0.229427896974516135.6197044899430142.2569570908999137-0.229427896974516135.621248335271272.2581591329912056-0.232905605825375765.621248335271272.2581591329912056-0.23290560582537576TrueTrueTrue4.73526003248149915.521460739535787-0.6623779549931184nannannan2481.0587293125796.0844143602473935nannan4.4792080263437265.245688032035276-0.12282306095729793nannannanTrueFalseTrueFalseFalseFalse-0.0012468354818022888-0.00124683548180228880.00139162622825894020.00139162622825894024.4827137637260274.4827137637260275.2482475741853015.248247574185301-0.12262686082019596-0.12262686082019596TrueTrueFalseFalseFalseFalseFalseFalsenannannannanTrueFalseFalseFalseTrue2481.2138423195712481.2138423195712.63482228243291862.63482228243291864.4982759013788524.4982759013788520.94987009247305610.9498700924730561-0.07294986290213222-0.07294986290213222TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse2481.20656628024652481.20656628024652.84011711145659842.84011711145659843.16358370652212043.16358370652212041.64963056256201361.6496305625620136-0.03608684390821266-0.03608684390821266TrueTrueFalseFalseFalseFalseFalseFalse44684.81244684.8127869.00927734375170.34689331054688TrueFalseFalse25126.294921875271.5418701171875TrueFalseTrue54097.8515625376.9418029785156TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue5565.4115685791425565.4115685791425565.411568579142180.7610900871693180.7610900871693180.7610900871693FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse28075.82065972246328075.820659722463290.8160733166533290.8160733166533TrueTrueFalseFalseTrueTrueTruenanTruenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.1033098252262181.1033098252262181.1033098252262180.00.00.0FalseFalseFalse1.03453856007907170.0False0.98667188005959330.98667188005959330.00.0FalseFalsenanTrue290FalseFalseFalse
10103575019550.9232606263113138-0.480150647075210050FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse2808.5508959973727.6145450937927555FalseFalseFalse2809.1159137493687.985498569930726FalseFalseFalseFalse2809.02809.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.04152.7051575440434152.7051575440430.04597.8663092101614597.86630921016111.18048776207028511.604203740722133-2.154472073001745311.18048776207028511.604203740722133-2.154472073001745314.42181419988061814.396975879584325-2.777072230151773614.42181419988061814.396975879584325-2.7770722301517736TrueTrueTrue11.83275589856663713.743198572702662-1.7211264545276462.80732372.15873033.26057652808.8310146793937.931511413036254556.534787611454540.5193767693584.4711967716017495.276198781057862-0.10904303539699525-758.70636110.357185-881.2024FalseFalseFalseFalseFalseFalse-0.0017805092566785287-0.00178050925667852870.00135327901209920470.00135327901209920474.4746566411745184.4746566411745185.278791711098945.27879171109894-0.10879957969112511-0.10879957969112511TrueTrueFalseFalseFalseFalseFalseFalse0.0904681533575058-0.46066987514495850.2639828920364380.5253836512565613FalseFalseFalseFalseFalse2808.6963671005132808.6963671005137.7567969337116947.75679693371169411.16630497883236711.16630497883236711.08194835128121111.081948351281211-2.271744083254492-2.271744083254492TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse2808.72187826894062808.72187826894067.84752618606357.847526186063510.58770367651755610.58770367651755611.14829214170479211.148292141704792-0.918265658858922-0.918265658858922TrueTrueFalseFalseFalseFalseFalseFalse4195.8334195.8331497.6934814453125152.51393127441406TrueFalseFalse2329.03759765625228.65591430664062TrueFalseTrue3290.886474609375305.20635986328125TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue4649.3952709232534649.3952709232534649.395270923253391.00847572921134391.00847572921134391.00847572921134FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3004.1496129375683004.149612937568256.65130041700127256.65130041700127TrueTrueFalseFalseTrueTrueFalse824.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.1019989324112751.1019989324112751.1019989324112750.00.00.0FalseFalseFalse1.03369660442102360.0False0.9855600063324030.9855600063324030.00.0FalseFalsenanTrue184FalseFalseFalse
10103575019560.9235299085068365-0.481070979076577530FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse3788.93427832814048.539387758264214FalseFalseFalse3789.06289744232667.925577176117846FalseFalseFalseFalse3789.03789.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.015616.71210069885115616.7121006988510.015771.86630548650815771.86630548650822.31729513531659517.6286254746340671.342671509065586322.31729513531659517.6286254746340671.342671509065586324.10573264358280818.1577264713695751.026961432500022324.10573264358280818.1577264713695751.0269614325000223TrueTrueTrue22.6207428173180818.8431425762078181.72036442724605761.90112511.23117981.58364263788.9312273696968.30198941801003316546.66312700411695.31926441185854.4563905678533855.410120931755419-0.046786939633374346-660.94446-50.26648-550.5686FalseFalseFalseFalseFalseFalse-0.0034748336809761107-0.00347483368097611070.00220333858749691270.00220333858749691274.45990632317916454.45990632317916455.41268756167595555.4126875616759555-0.04652427369480204-0.04652427369480204TrueTrueFalseFalseFalseFalseFalseFalse0.227578401565551760.077077269554138180.07393126934766770.7287380695343018FalseFalseFalseFalseFalse3788.89686885248653788.89686885248658.7329215223954368.73292152239543622.40164156394372722.40164156394372716.69957807969366616.6995780796936661.06202408692657561.0620240869265756TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3788.94326786570173788.94326786570178.7551938333445478.75519383334454720.5196203197701720.5196203197701717.82007608536492417.8200760853649240.50329687350277730.5032968735027773TrueTrueFalseFalseFalseFalseFalseFalse15818.45815818.4583348.310791015625157.84092712402344TrueFalseFalse6507.99462890625237.44920349121094TrueFalseTrue9759.1240234375315.2978515625TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue17555.00657589324317555.00657589324317555.006575893243522.100111164956522.100111164956522.100111164956FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse7323.2854721360867323.285472136086264.8928158585222264.8928158585222TrueTrueFalseFalseTrueTrueFalse825.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.0960353298445371.0960353298445371.0960353298445370.00.00.0FalseFalseFalse1.0306568770670360.0False0.98135352626037830.98135352626037830.00.0FalseFalsenanTrue437FalseFalseFalse
10103575019570.9227888992171793-0.47851700249016230FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse1070.4338417635112.834787065506172FalseFalseFalse1070.045088262665312.947012125580347FalseFalseFalseFalse1070.01070.013.013.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.04895.880208475444895.880208475440.05043.8205137835635043.8205137835638.553319128408277.9509855442816253.3944925191729948.553319128408277.9509855442816253.3944925191729949.6799425759956059.2845868224679993.9425291159815439.6799425759956059.2845868224679993.942529115981543TrueTrueTrue8.3190253574004497.9206441089810183.18959642715051.37032081.01584841.30469911070.281945714679312.90973340310744899.5911883445215403.533574468400964.5320044460878425.192914673220645-0.14360192452696993-276.48523-106.00717-263.24493FalseFalseFalseFalseFalseFalse0.00087905712760067040.00087905712760067040.00339061637077680.00339061637077684.5358597614709154.5358597614709155.1956540051874685.195654005187468-0.14370658234868955-0.14370658234868955TrueTrueFalseFalseFalseFalseFalseFalse0.246393769979476931.17430889606475830.26356112957000730.39405590295791626FalseFalseFalseFalseFalse1070.57793043920791070.577930439207912.83294890277511312.8329489027751138.8507908682471728.8507908682471728.0311662761131698.0311662761131693.59253525536202963.5925352553620296TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse1070.53221500163021070.532215001630212.8310906365239112.831090636523917.7926423620404457.7926423620404457.5543349421590427.5543349421590421.5526977686609671.552697768660967TrueTrueFalseFalseFalseFalseFalseFalse4875.48544875.48542229.049560546875154.75946044921875TrueFalseFalse3396.251708984375231.010986328125TrueFalseTrue4309.892578125306.8758544921875TrueFalseTrue4929.19775390625457.35845947265625TrueFalseTrue5370.7363281255370.7363281255370.736328125608.64453125608.64453125608.64453125TrueTrueTrueFalseFalseFalseTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue5471.252012376895471.252012376895471.25201237689318.7288177992751318.7288177992751318.7288177992751FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse4261.4576886669584261.457688666958261.34967757376387261.34967757376387TrueTrueFalseFalseTrueTrueFalse819.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.10502175338789121.10502175338789121.10502175338789120.00.00.0FalseFalseFalse1.03717012766116760.0False0.98966475285825650.98966475285825650.00.0FalseFalsenanTrue264FalseFalseFalse
10103575019580.9235455709036104-0.48112451151376580FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse3846.63286696845038.328366228862016FalseFalseFalse3845.76744397941878.027652131924878FalseFalseFalseFalse3846.03846.08.08.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.01364.23936692789681364.23936692789680.01377.5427018309481377.5427018309482.54519701296498155.0965278883533310.49122989039559772.54519701296498155.0965278883533310.49122989039559773.02310988634520336.842709486513710.82955984985603293.02310988634520336.842709486513710.8295598498560329TrueTrueTrue2.82893088249402964.814316131969080.42914398494620611.13520861.05422531.93191473845.90037597926458.1619366802682891412.5891763623806283.42570612558814.455953700486265.419915069643288-0.04216920873724718-160.87366-24.404263-273.77713FalseFalseFalseFalseFalseFalse-0.0035780671004772874-0.00357806710047728740.0022976886404597030.0022976886404597034.4594887315885514.4594887315885515.4225195512159095.422519551215909-0.041891861600586056-0.041891861600586056TrueTrueFalseFalseFalseFalseFalseFalsenannannannanTrueFalseFalseFalseTrue3845.79693268673833845.79693268673838.37610673893458.37610673893452.4528843739971012.4528843739971015.2068989785316455.2068989785316450.67457912545572460.6745791254557246TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3845.80437971639553845.80437971639558.2347563352018518.2347563352018513.30635678627058653.30635678627058654.3021019696629464.3021019696629460.317219712767852270.31721971276785227TrueTrueFalseFalseFalseFalseFalseFalse1425.1551425.155961.1591796875150.7469940185547TrueFalseFalse1407.4061279296875226.62985229492188TrueFalseTrue1390.6527099609375301.9486083984375TrueFalseTruenannanTrueTrueTruenannannannannannanTrueTrueTrueTrueTrueTrueTrueTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTruenannanTrueTrue1510.38554133909971510.38554133909971510.3855413390997214.85124917444455214.85124917444455214.85124917444455FalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse1811.47293562279471811.4729356227947253.32039498736083253.32039498736083TrueTrueFalseFalseTrueTrueFalse825.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseTrue1.09559406463002571.09559406463002571.09559406463002570.00.00.0FalseFalseFalse1.03045607000985750.0False0.98106729700173670.98106729700173670.00.0FalseFalsenanTrue72FalseFalseFalse
10103575019590.9233171043552312-0.48017380567322850TrueFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse2844.997543646197352.36198743810862FalseFalseFalse2845.01715954683751.99697697623359FalseFalseFalseFalse2845.02845.052.052.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.0259907.7045650681259907.70456506810.0259888.83875385614259888.8387538561434.0120055436166286.3664432766023119.67917555198438634.0120055436166286.3664432766023119.67917555198438633.9962886531845186.3332219090696619.6704278360501933.9962886531845186.3332219090696619.67042783605019TrueTrueTrue34.2750457055056387.2591886278954719.838893437161290.423626450.50842921.078492845.00805391580252.21995109610489263103.973203131871625.93216523947654.4718056668331985.282644707347525-0.10630454837659148-344.39392-199.3402-876.7759FalseFalseFalseFalseFalseFalse-0.0018524889783862715-0.00185248897838627150.00118527338092872970.00118527338092872974.4752751482177154.4752751482177155.2852407096849535.285240709684953-0.10606831302537593-0.10606831302537593TrueTrueFalseFalseFalseFalseFalseFalse-0.50736707448959350.38994640111923220.0048717586323618890.9123671650886536FalseFalseFalseFalseFalse2845.015905765612845.0159057656152.4396307397262352.4396307397262334.32935626259736534.32935626259736587.0977966217163887.0977966217163819.88822073964337619.888220739643376TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse2845.0015121725092845.00151217250952.4028023555132852.4028023555132840.1082349561249140.1082349561249158.409417951987858.40941795198786.5451217412410676.545121741241067TrueTrueFalseFalseFalseFalseFalseFalse246525.53246525.5328808.5625221.85679626464844TrueFalseFalse55015.73828125321.6400451660156TrueFalseFalse82856.625413.9692687988281TrueFalseFalse135166.375581.524169921875TrueFalseFalse180920.15625180920.15625180920.15625738.4222412109375738.4222412109375738.4222412109375TrueTrueTrueFalseFalseFalseFalseFalseFalse237391.1485939026988.2418732273998TrueFalse293457.369232565161379.2646591571902TrueFalse324003.19768005611866.8735897215965TrueFalse341125.448683232072603.52261369092TrueFalsenannanTrueTrue289823.2214307699289823.2214307699289823.22143076991266.4661694987091266.4661694987091266.466169498709FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse64110.7593732752764110.75937327527372.22047331133246372.22047331133246TrueTrueFalseFalseFalseFalseFalse827.0False251719.505117673661046.71789165193246.96593913.2715952.762747TrueFalseFalseFalseFalseFalseFalseFalseFalseTrue1.1018479114767911.1018479114767911.1018479114767910.00.00.0FalseFalseFalse1.03366450394543090.0False0.98519635720542410.98519635720542410.00.0FalseFalsenanTrue3087FalseFalseFalse
10103575019600.9234794124400545-0.48082501844873040FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse3532.10416806388126.984826867962663FalseFalseFalse3531.88625230229827.141299683319943FalseFalseFalseFalse3532.03532.027.027.0nannannannanTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.03278.05696588600183278.05696588600180.03376.10194971614153376.10194971614156.05987793931902711.5998830359857783.6928167413064726.05987793931902711.5998830359857783.6928167413064727.67743204194794912.6715499539883044.3049469952922437.67743204194794912.6715499539883044.304946995292243TrueTrueTrue6.15292502397062612.0245583519834483.83195902582526851.48514381.60716522.90239173532.014490966553227.044471716422443409.847433284362411.52084263900324.4595223998862575.369500902473593-0.06577093322153546-305.58383-190.3135-597.1973FalseFalseFalseFalseFalseFalse-0.003014795309737453-0.0030147953097374530.00176914146943715770.00176914146943715774.4630435769968274.4630435769968275.3722972434053195.372297243405319-0.06541670326897168-0.06541670326897168TrueTrueFalseFalseFalseFalseFalseFalse-0.51179355382919310.87665057182312010.43100407719612120.39622387290000916FalseFalseFalseFalseFalse3531.9557382348253531.95573823482526.92113803698992726.9211380369899275.9753324368834615.97533243688346110.76024283028628210.7602428302862823.3533014606836353.353301460683635TrueTrueTrueFalseFalseFalseFalseFalseFalseFalseFalseFalse3532.00093081468143532.000930814681426.9110969384554126.911096938455417.62429374051786557.62429374051786559.8324651965230789.8324651965230781.43218223492829821.4321822349282982TrueTrueFalseFalseFalseFalseFalseFalse3461.27323461.27321404.349853515625152.13653564453125TrueFalseFalse2415.909423828125228.9794921875TrueFalseFalse2931.16552734375304.7228088378906TrueFalseFalse3770.107421875456.302978515625TrueFalseTrue3380.77343753380.77343753380.7734375607.1520385742188607.1520385742188607.1520385742188TrueTrueTrueFalseFalseFalseTrueTrueTrue3892.829331703484861.7406802513156TrueFalse6639.9116827026011270.592775046356TrueFalsenannanTrueTruenannanTrueTruenannanTrueTrue3637.92868397145963637.92868397145963637.9286839714596310.7077094982714310.7077094982714310.7077094982714FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse2841.00897300895352841.0089730089535255.73505677142194255.73505677142194TrueTrueFalseFalseFalseFalseFalse821.0False3899.0801290395116424.868191912593833.246491213.2715952.772335TrueFalseFalseFalseFalseFalseFalseFalseFalseTrue1.0979153678094831.0979153678094831.0979153678094830.00.00.0FalseFalseFalse1.0315688396734740.0False0.98249727728331140.98249727728331140.00.0FalseFalsenanTrue192FalseFalseFalse
10103575019610.9230547505458153-0.47936343605326540FalseFalseFalseFalse0FalsenannannanFalseFalseFalseFalseFalseFalseFalse1976.600463315338428.9329083178396FalseFalseFalse1975.94029864158329.195915514247517FalseFalseFalseFalse1976.08433547852931976.084335478529329.54775772600118329.5477577260011830.30258850.30258850.315610260.31561026FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.00.03562.4214601184123562.4214601184120.03642.16362270181663642.16362270181667.1092045759787816.067559339816632-0.29016034042140777.1092045759787816.067559339816632-0.29016034042140778.0566839906755416.576248964607329-0.53639333239950188.0566839906755416.576248964607329-0.5363933323995018FalseFalseFalse6.8920179679590515.928448967643259-0.224133554551902431.50528970.98780051.2948361976.125081914756729.486543023830563532.681065721204385.787445380797244.4953282695378215.213532958496303-0.13691294423250328-290.360939.442753-249.76575FalseFalseFalseFalseFalseFalse-0.00047205806828473965-0.000472058068284739650.00166225621596824870.00166225621596824874.4989289446259014.4989289446259015.21635369243437455.2163536924343745-0.13694317899239136-0.13694317899239136FalseFalseFalseFalseFalseFalseFalseFalse0.771817147731781-0.129523590207099910.5647237896919250.23256565630435944FalseFalseFalseFalseFalse1976.19048671362571976.190486713625729.4012435359290629.401243535929067.2229518680329377.2229518680329376.1373605291747446.137360529174744-0.33439722354113866-0.33439722354113866FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1976.14686369114571976.146863691145729.39615120059568629.3961512005956866.7548476421015636.7548476421015636.40892004844721356.4089200484472135-0.21271008390407886-0.21271008390407886FalseFalseFalseFalseFalseFalseFalseFalse3584.54793584.54791781.56005859375154.48526000976562FalseFalseFalse2822.815185546875229.62521362304688FalseFalseFalse3232.01171875304.92437744140625FalseFalseFalse3860.5830078125456.303955078125FalseFalseTrue4357.19824218754357.19824218754357.1982421875607.8915405273438607.8915405273438607.8915405273438FalseFalseFalseFalseFalseFalseTrueTrueTrue5381.20047223568866.5483252537044FalseFalse5475.0870805382731271.8065890692658FalseFalsenannanTrueTruenannanTrueTruenannanTrueTrue3980.5155327872583980.5155327872583980.515532787258304.277250513915304.277250513915304.277250513915FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3415.46824573279173415.4682457327917258.4556172698553258.4556172698553FalseFalseFalseFalseFalseFalseFalse823.0False4183.613532767399562.8287420589224.270874515.4721662.7570622FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.10464252827855171.10464252827855171.10464252827855170.00.00.0FalseFalseFalse1.03568311638872480.0False0.98794203378836040.98794203378836040.00.0FalseFalse1.0False203FalseFalseFalse
....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
10103575046050.9276100366033875-0.479747640209798431010357503918FalseFalseFalseFalse0True3408.03961.03212.4007116615426FalseFalseFalseFalseFalseFalseFalse3408.48576121233553960.7484770219494FalseFalseFalse3408.07675834558543960.0192416778045FalseFalseFalseFalse3408.3533156081873408.3533156081873960.80017452517363960.80017452517360.478496580.478496580.553202750.55320275FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.032745872658556910.0108718715139595195111.0236278375095167.2007707034290.0155673723590585845161.9620360554525243.5909691711369.0130156559409768.705878947209724-0.68474960994019579.4729674856445358.73015413453301-0.76835889515793089.8681852896201479.336571216987062-0.612675267322953610.6694101545076639.445667454574455-0.7365825928146694FalseFalseFalse9.0604280496788748.891411507832181-0.73813306276693971.60477391.12790761.57483793408.3969839643783960.78620327358985193.6497473183135459.94701606807154.4817988737056355.351930242484749-0.04678096228317851-369.0554830.066137-362.17102FalseFalseFalseFalseFalseFalse0.00234068787483495070.00234068787483495070.0023511700957531480.0023511700957531484.4855959927415254.4855959927415255.3549188734349435.354918873434943-0.0466720913405956-0.0466720913405956FalseFalseFalseFalseFalseFalseFalseFalse0.17984411120414734-0.18199735879898070.268361061811447140.41146934032440186FalseFalseFalseFalseFalse3408.44359251374363408.44359251374363960.76824425827453960.76824425827459.1083429743176589.1083429743176588.7019801449382758.701980144938275-0.7208186160120865-0.7208186160120865FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3408.43044355495163408.43044355495163960.75497333919663960.75497333919668.983049106660128.983049106660128.7390831956241338.739083195624133-0.3437568908354098-0.3437568908354098FalseFalseFalseFalseFalseFalseFalseFalse5162.04935162.04932160.450927734375155.73193359375FalseFalseFalse3418.4697265625230.8243865966797FalseFalseFalse4426.9921875306.9766845703125FalseFalseFalse5006.96875457.759033203125FalseFalseFalse5816.964843755816.964843755816.96484375609.7875366210938609.7875366210938609.7875366210938FalseFalseFalseFalseFalseFalseFalseFalseFalse6467.3769488844555867.6347157646471FalseFalse6802.790759467521272.0821514351971FalseFalse6521.6908178860321779.9587073862135FalseFalse3421.4979460472242540.1102338284454FalseFalse5031.9733803505083556.8173976182698FalseFalse5759.5335276533985759.5335276533985759.533527653398363.18213855423164363.18213855423164363.18213855423164FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse4131.3722336762894131.372233676289261.78043923300083261.78043923300083FalseFalseFalseFalseFalseFalseFalse823.0False6007.003747397248691.95357336837965.191828317.8731692.7735794FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11351244508343441.11351244508343441.11351244508343440.00.00.0FalseFalseFalse1.04264872554122870.0False0.99012134285250310.99012134285250310.00.0FalseFalse1.0False345FalseFalseFalse
10103575046060.9276113859032618-0.479759720357826051010357503918FalseFalseFalseFalse0True3421.03959.01697.9538702280338FalseFalseFalseFalseFalseFalseFalse3420.90058274680043959.2635521902885FalseFalseFalse3420.0322324244633958.082060341563FalseFalseFalseFalse3420.71091418676133420.71091418676133958.8554272777463958.8554272777460.88531450.88531451.15067851.1506785FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.11153893106591790.0213849281711363532043.05022367582232087.69544071880270.031563037404966132296.20948885779762371.0469318569285.8165661583224568.652533244554137-1.50661963508214956.4647237125467178.717164609079484-1.6757936991957267.50236883062769211.488630628424154-1.80828006547608168.42326985952435311.600272525151253-2.1355605723601223FalseFalseFalse6.59813986650859359.47380899730706-1.8663135176897642.49821352.17490773.58701063420.79015882325673959.0058413916822184.8433244058983413.616970743217734.48180661807705155.353430612989533-0.045430341127437816-516.65173146.13728-741.8243FalseFalseFalseFalseFalseFalse0.00234218715219858350.00234218715219858350.0023826897849996240.0023826897849996244.48561167688788754.48561167688788755.3564272458735295.356427245873529-0.04531924269584925-0.04531924269584925FalseFalseFalseFalseFalseFalseFalseFalse-0.7841657996177673-1.41757643222808840.80155783891677860.27552369236946106FalseFalseFalseFalseFalse3420.8318955374243420.8318955374243959.19064664285543959.19064664285545.9346090989685085.9346090989685088.412048605529888.41204860552988-1.4286222855636772-1.4286222855636772FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3420.883475407823420.883475407823959.259322402093959.259322402096.4086309024263256.4086309024263257.46405047062003757.4640504706200375-0.5111695718426064-0.5111695718426064FalseFalseFalseFalseFalseFalseFalseFalse2060.3572060.3571027.536376953125152.36181640625FalseFalseFalse1540.265380859375226.88035583496094FalseFalseFalse1801.6658935546875302.99066162109375FalseFalseFalse2675.472900390625455.60577392578125FalseFalseFalse3616.74511718753616.74511718753616.7451171875608.9865112304688608.9865112304688608.9865112304688FalseFalseFalseFalseFalseFalseFalseFalseFalse4510.08859562967869.186401182163FalseFalse3480.30894670099951272.6928144685976FalseFalse1932.97484290809371778.6534232390525FalseFalse415.573198350379242540.7933800291594FalseFalse-1857.56921759038233556.273611520913FalseFalse2306.532625547892306.532625547892306.53262554789309.4082003127604309.4082003127604309.4082003127604FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1950.6427383594491950.642738359449256.27895519921685256.27895519921685FalseFalseFalseFalseFalseFalseFalse826.0False4378.3351788762975903.20880195611786.782757815.7831122.7737799FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11347126928024241.11347126928024241.11347126928024240.00.00.0FalseFalseFalse1.04264379048646830.0False0.99009251071453170.99009251071453170.00.0FalseFalse1.0False334FalseFalseFalse
10103575046070.9277188763009131-0.480073380297077971010357503921FalseFalseFalseFalse0True3758.03972.08043.02552951514FalseFalseFalseFalseFalseFalseFalse3758.3410058913972.419299220144FalseFalseFalse3758.0071795093443972.005907797692FalseFalseFalseFalse3758.2461162579533758.2461162579533972.4345182202153972.4345182202150.136241930.136241930.143617820.14361782FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.0099251048185010210.000972902865064795311558.07194403261411569.3277761729260.001363256447892924311604.75001578101511620.591862565998.4141682074694788.247047534538712-0.100801826436385698.4437241002099188.256290811991493-0.09364388065295988.547463540032078.568178885256486-0.146053711324116018.5988738102034368.589248249331584-0.12780991181771645FalseFalseFalse8.4449767147199188.281474626839573-0.125519042545340770.68846130.482134340.675132163758.2977153410833972.437221409916711671.55607954596475.75114334592974.4820237393181115.395199631939961-0.007135377440383706-163.768132.4341116-160.59744FalseFalseFalseFalseFalseFalse0.00257386341587503630.00257386341587503630.003629513152844740.003629513152844744.4854641168182344.4854641168182345.3977500803942515.397750080394251-0.007274487049382675-0.007274487049382675FalseFalseFalseFalseFalseFalseFalseFalse0.18851682543754578-0.047720991075038910.123615421354770660.37102121114730835FalseFalseFalseFalseFalse3758.3495541196073758.3495541196073972.44098787054743972.44098787054748.4655023709402878.4655023709402878.313083458477088.31308345847708-0.10438754579644638-0.10438754579644638FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3758.3504222930223758.3504222930223972.44305276252453972.44305276252458.4327275230005728.4327275230005728.3666173926407648.366617392640764-0.04909429439661242-0.04909429439661242FalseFalseFalseFalseFalseFalseFalseFalse11700.97211700.9725106.86328125164.53384399414062FalseFalseFalse8110.1845703125240.5877685546875FalseFalseFalse10131.5556640625315.8812255859375FalseFalseFalse12171.0908203125465.2237243652344FalseFalseFalse12596.028320312512596.028320312512596.0283203125614.7662353515625614.7662353515625614.7662353515625FalseFalseFalseFalseFalseFalseFalseFalseFalse12102.444542870391872.1066448548595FalseFalse12067.363346604981275.879696523148FalseFalse13358.98528629391785.633221017127FalseFalse15641.9525436445842544.873670734954FalseFalse11714.7189542043559.623575604589FalseFalse13006.29073426940513006.29073426940513006.290734269405374.8783041613484374.8783041613484374.8783041613484FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse9711.6229461618249711.622946161824276.2989101191402276.2989101191402FalseFalseFalseFalseFalseFalseFalse820.0False12437.726413719358468.763612795942153.475942917.3775352.7792652FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11260399937480031.11260399937480031.11260399937480030.00.00.0FalseFalseFalse1.042695870541760.0False0.9897868724728240.9897868724728240.00.0FalseFalse1.0False507FalseFalseFalse
10103575046080.9277065384888925-0.48006302640359851010357503921FalseFalseFalseFalse0True3745.03966.01867.692301516086FalseFalseFalseFalseFalseFalseFalse3745.24435006220263964.866360915234FalseFalseFalse3745.05252291927853964.318841850098FalseFalseFalseFalse3745.08590588920743745.08590588920743964.2225370256473964.2225370256470.47138570.47138571.38752891.3875289FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.104092330784322940.0123074462841250562175.8752322756842202.9883935943980.0185860531285064752370.16685748156032415.0531638938593.07208654771414515.0087936490202961.10333688970071653.10975612650021215.0590431106600191.1546031131431944.19204185222859817.9795355778610141.02954500493565254.29186967094646718.325653600333281.175638089450075FalseFalseFalse355.8548948812654240.87655717402257228.8986858556811nannannan3745.03142625576633964.230991000583nannan4.4821136616541445.393851006035526-0.008610663323247388nannannanTrueFalseTrueFalseFalseFalse0.00254308463477677950.00254308463477677950.00354328368228643260.00354328368228643264.4856095610013324.4856095610013325.3964665029750545.396466502975054-0.008738354419686704-0.008738354419686704FalseFalseFalseFalseFalseFalseFalseFalse-1.07805263996124270.218233957886695860.74919372797012330.3549407422542572FalseFalseFalseFalseFalse3745.0626491905783745.0626491905783964.9257769408923964.9257769408923.0627943063722533.06279430637225312.43453981720475312.4345398172047530.85649645633931890.8564964563393189FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3745.11931337422273745.11931337422273965.3701993900883965.3701993900884.5936590593007884.5936590593007889.8119724142554659.8119724142554651.16226016123084761.1622601612308476FalseFalseFalseFalseFalseFalseFalseFalse2114.07472114.07471013.7000122070312152.03372192382812FalseFalseFalse1575.212158203125227.1309814453125FalseFalseFalse2071.24267578125303.4251403808594FalseFalseFalse2319.564453125454.901123046875FalseFalseFalse2588.233886718752588.233886718752588.23388671875607.4537963867188607.4537963867188607.4537963867188FalseFalseFalseFalseFalseFalseFalseFalseFalse2242.824238797417868.1186554843756FalseFalse385.150741063131141274.6058214208815FalseFalse2655.5312104151381781.6186460631804FalseFalse-1135.36566872142432543.4765577846397FalseFalse-2194.18081349872233556.8613973558204FalseFalse2448.65598439184852448.65598439184852448.6559843918485292.01943854435626292.01943854435626292.01943854435626FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1979.69768285285681979.6976828528568256.5233918350809256.5233918350809FalseFalseFalseFalseFalseFalseFalse824.0False2357.4402351054327371.100225893090852.819901514.8329112.7791066FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.1125908427189921.1125908427189921.1125908427189920.00.00.0FalseFalseFalse1.04266663186011230.0False0.9897345980233050.9897345980233050.00.0FalseFalse1.0False454FalseFalseFalse
10103575046090.9277465529622956-0.480079694331067061010357503932FalseFalseFalseFalse0True3771.03996.02056.0471691451585FalseFalseFalseFalseFalseFalseFalse3770.83316270373963995.420959919661FalseFalseFalse3770.0232485340763994.8833651321434FalseFalseFalseFalse3770.89680862165143770.89680862165143995.2348983196233995.2348983196231.22633231.22633230.911069040.91106904FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.069756769355060020.049412461025324937095.0657214854197463.8741100459980.063696406740224487540.041302870038052.98768171880924.3447022604320513.0896626558871342.469887856110554427.35624045298717614.2847522212332210.762094137101819128.36076489515479815.3288455848006963.96610829339153832.63932348444054616.6573679446274632.1705181898150068FalseFalseFalse8.957173107681436.584333510196121.0325695741030263nannannan3771.0432098515583995.269995169916nannan4.4815436574667635.395534384306248-0.005901159790652673nannannanTrueFalseTrueFalseFalseFalse0.0026444400175139820.0026444400175139820.00377881660657953650.00377881660657953654.4849831900569394.4849831900569395.3980653103560255.398065310356025-0.006049665421406922-0.006049665421406922FalseFalseFalseFalseFalseFalseFalseFalse0.54464662075042720.202363401651382450.146191671490669250.7076708674430847FalseFalseFalseFalseFalse3770.912948193163770.912948193163995.443472122353995.4434721223524.08624065741109324.08624065741109312.97191469752068812.9719146975206882.33123653636065782.3312365363606578FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3770.8891623113083770.8891623113083995.34847486135373995.348474861353722.351113050512622.351113050512616.75909901494589216.7590990149458921.24850334360346941.2485033436034694FalseFalseFalseFalseFalseFalseFalseFalse7435.8537435.8531614.2213134765625153.8631591796875FalseFalseFalse3202.833984375230.5242462158203FalseFalseFalse4382.42529296875307.26055908203125FalseFalseFalse6447.1708984375459.9137268066406FalseFalseFalse7546.100097656257546.100097656257546.10009765625612.267578125612.267578125612.267578125FalseFalseFalseFalseFalseFalseFalseFalseFalse8062.100552755452870.9678524492164FalseFalse8524.1943102251241277.5104696244175FalseFalse8152.6798283230021784.9907562785866FalseFalse3400.57269740807532544.283199645826FalseFalse6545.5593475769713559.0161561869877FalseFalse7987.5921286860647987.5921286860647987.592128686064481.38096459581493481.38096459581493481.38096459581493FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3496.794102873873496.79410287387259.4558783854039259.4558783854039FalseFalseFalseFalseFalseFalseFalse824.0False9311.434486225364974.58465635508947.2951625.1153582.779233FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11272126841034911.11272126841034911.11272126841034910.00.00.0FalseFalseFalse1.04278034893711120.0False0.9899686686417290.9899686686417290.00.0FalseFalse1.0False520FalseFalseFalse
10103575046100.9277538247212633-0.48006843066939741010357503932FalseFalseFalseFalse0True3761.04005.02447.559099689495FalseFalseFalseFalseFalseFalseFalse3761.32470502065644004.7231443606265FalseFalseFalse3761.035899109294004.0955291897503FalseFalseFalseFalse3761.3308588636483761.3308588636484004.57154773970754004.57154773970750.4861410.4861410.6363410.636341FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.082411344649922880.0416365543967159865253.9554420047745482.2160278634590.050178189994525285422.0164310629685708.4564430371589.9227575231399613.893461676066222-0.648902773484708211.09339599561125315.805712175336208-2.028624810562726511.84367578408698516.30574809939161-0.562845606255545413.28142000501717718.586756956547987-2.1517690642825387FalseFalseFalse9.88018232081005713.701374625870338-0.52011019474135761.89113781.57630872.62254173761.37688705118444004.5922058410725255.520563784317502.972170448568534.4812959755496095.393636143066219-0.007178043015308446-475.5948525.036148-659.53265FalseFalseFalseFalseFalseFalse0.0026636499517755610.0026636499517755610.00378314004204095050.00378314004204095054.484731064427344.484731064427345.3961749732810825.396174973281082-0.007317177212722565-0.007317177212722565FalseFalseFalseFalseFalseFalseFalseFalse-0.2627652883529663-0.13805425167083740.228767171502113340.5586349964141846FalseFalseFalseFalseFalse3761.41827886202373761.41827886202374004.64011242313974004.64011242313979.9064298611893479.90642986118934714.28431948487607414.284319484876074-0.7257793734023735-0.7257793734023735FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3761.39187853778873761.39187853778874004.6476923286284004.64769232862811.07689638053618211.07689638053618213.31399134679044713.313991346790447-0.333477845576668-0.333477845576668FalseFalseFalseFalseFalseFalseFalseFalse5362.69245362.69241692.944580078125154.53829956054688FalseFalseFalse2910.349609375229.55551147460938FalseFalseFalse4194.373046875306.5992126464844FalseFalseFalse5218.15771484375458.3401794433594FalseFalseFalse4736.7343754736.7343754736.734375609.8260498046875609.8260498046875609.8260498046875FalseFalseFalseFalseFalseFalseFalseFalseFalse5033.59344449884870.7347472106532FalseFalse5503.7928764222911276.1825888171331FalseFalse5121.7957194446371785.5116913646912FalseFalse-1586.82124659430522544.03360826857FalseFalsenannanTrueTrue5910.0023855639625910.0023855639625910.002385563962413.6417233616912413.6417233616912413.6417233616912FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3510.8620012503543510.862001250354260.2236129812605260.2236129812605FalseFalseFalseFalseFalseFalseFalse821.0False5062.477997613962841.1639770479346.31533420.674762.7789366FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11281930179225651.11281930179225651.11281930179225650.00.00.0FalseFalseFalse1.04281663366189650.0False0.99006535818665560.99006535818665560.00.0FalseFalse1.0False518FalseFalseFalse
10103575046110.9276504842721082-0.479647895674777561010357503941FalseFalseFalseFalse0True3318.04022.03114.21563721493FalseFalseFalseFalseFalseFalseFalse3318.19462715439754022.364489283985FalseFalseFalse3317.9822653423794022.0538177688536FalseFalseFalseFalse3318.19279170166653318.19279170166654022.41927153964344022.41927153964340.27748740.27748740.349711150.34971115FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.054892354836600590.00192097853195805083046.362118573553052.22537799938440.0036748046370578273271.01781387511663283.08250067243134.5810182492036556.8605082929816021.54711559998868944.6009232177465786.8630278581924241.56129722422950915.4739987138783557.3062233436008361.6009025734036535.5252017408219257.4046436153733921.6645873900360026FalseFalseFalse4.6001021874906296.87134090742971.56103934187484981.04965170.941442851.56790323318.1572909109394022.45529736910163075.512264988414350.885334299776564.4806390434515745.338544709913181-0.05727487369817446-184.1537-62.492336-275.0771FalseFalseFalseFalseFalseFalse0.0024475652513090320.0024475652513090320.00232418342243267830.00232418342243267834.48440330707253754.48440330707253755.3415015066733855.341501506673385-0.057184021461530135-0.057184021461530135FalseFalseFalseFalseFalseFalseFalseFalse-2.5535306930541996.22693920135498051.04206645488739010.13451442122459412FalseFalseFalseFalseFalse3318.11849063858243318.11849063858244022.490878382774022.490878382774.6289502140499034.6289502140499036.9590152490883986.9590152490883981.66285647000556951.6628564700055695FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3318.16482489498463318.16482489498464022.3985098479494022.3985098479494.6361650799329644.6361650799329645.5414164528751925.5414164528751920.6611600669519250.661160066951925FalseFalseFalseFalseFalseFalseFalseFalse2925.7162925.7161769.234619140625154.67242431640625FalseFalseFalse2473.67822265625228.84710693359375FalseFalseFalse2857.62451171875304.2252197265625FalseFalseFalse3439.818359375456.016845703125FalseFalseFalse3918.0280761718753918.0280761718753918.028076171875608.0740966796875608.0740966796875608.0740966796875FalseFalseFalseFalseFalseFalseFalseFalseFalse4554.875184066652867.2352621982111FalseFalse4393.7448788227631272.2397572784778FalseFalse4551.461154782971781.0654114883034FalseFalsenannanTrueTruenannanTrueTrue3434.44599222200533434.44599222200533434.4459922220053277.0763218984791277.0763218984791277.0763218984791FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3247.8916631538023247.891663153802260.24371054642256260.24371054642256FalseFalseFalseFalseFalseFalseFalse820.0False4082.970990441375628.13290759667044.749010613.9770212.7716343FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11410844004995861.11410844004995861.11410844004995860.00.00.0FalseFalseFalse1.0428409964202290.0False0.99072538943351730.99072538943351730.00.0FalseFalse0.0False410FalseFalseFalse
10103575046120.9276339235895114-0.479643719121406741010357503941FalseFalseFalseFalse0True3310.04009.02603.040157469476FalseFalseFalseFalseFalseFalseFalse3310.2161268152844009.272272145882FalseFalseFalse3310.05392082889384008.121183066228FalseFalseFalseFalse3310.21747539144373310.21747539144374008.88227269671324008.88227269671320.326207130.326207130.782633360.78263336FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.050344891864363860.0212924198608160923859.0663279716853943.022825492860.0287791658727700744043.63031415508344163.4509599341733.65605003327066518.161328591099760.50770071641198483.69910005337675220.0797983851461870.7681116366281644.39905007677777620.1151775954157940.37476084344759114.50874277219124722.62822326619750.8412949224672491FalseFalseFalse3.68818247258916918.1102289171940460.5752791774220670.800980031.25815953.93308423310.20170649150034008.8992647817863912.6714369255938424.866683939581434.4810036832590355.33848613634502-0.0578726029773183-170.15486-26.540594-835.5182FalseFalseFalseFalseFalseFalse0.00240984841486441540.00240984841486441540.0022436366312843230.0022436366312843234.4847678621140684.4847678621140685.3414464737284415.341446473728441-0.057785063995373365-0.057785063995373365FalseFalseFalseFalseFalseFalseFalseFalse-1.27067494392395020.091181091964244840.25578501820564270.5287228226661682FalseFalseFalseFalseFalse3310.1915610116423310.1915610116424008.9252434815834008.9252434815833.67671649079679553.676716490796795517.97044023250412817.9704402325041280.476581907391304850.47658190739130485FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3310.7009375480953310.7009375480954008.94864194303734008.94864194303737.6076087507468877.60760875074688712.63817144906360712.638171449063607-0.2323393258724401-0.2323393258724401FalseFalseFalseFalseFalseFalseFalseFalse4078.96464078.96461587.6236572265625153.9607696533203FalseFalseFalse2346.549560546875228.83824157714844FalseFalseFalse3373.294677734375305.4089050292969FalseFalseFalse4291.17333984375457.1722717285156FalseFalseFalse4458.28027343754458.28027343754458.2802734375608.7979125976562608.7979125976562608.7979125976562FalseFalseFalseFalseFalseFalseFalseFalseFalse4754.149877850767867.015570794435FalseFalse4689.2798030688281273.5603637048382FalseFalse4276.1015135957711780.323846944707FalseFalse8085.6270720823522542.3640573293196FalseFalsenannanTrueTrue4348.57011484511354348.57011484511354348.5701148451135347.09860119871837347.09860119871837347.09860119871837FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3200.2177038508483200.217703850848259.8823069492012259.8823069492012FalseFalseFalseFalseFalseFalseFalse820.0FalsenannannannannanTrueTrueFalseFalseFalseFalseFalseFalseFalseFalse1.1140344444896421.1140344444896421.1140344444896420.00.00.0FalseFalseFalse1.04279275474611730.0False0.9906167358436560.9906167358436560.00.0FalseFalse1.0False416FalseFalseFalse
10103575046130.9275224846731133-0.479231906606978451010357503945FalseFalseFalseFalse0True2874.04018.03356.2270217677687FalseFalseFalseFalseFalseFalseFalse2873.9348541531034017.61966027659FalseFalseFalse2873.0373922796764017.064410319622FalseFalseFalseFalse2873.9270466385122873.9270466385124017.59085340159574017.59085340159570.330509280.330509280.28129210.2812921FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.062858825102690030.0218570205940237243561.60395517045533641.18950926111850.0285894760761860053606.9936922123093713.15072606234076.74335241132616854.9252636834127-0.248586749064982887.374475924048755.016816880496866-0.44812569881601537.21416373794924855.345764025165738-0.135637855399554458.0886703333401755.50801320606529-0.42618116315503307FalseFalseFalse6.7781329722974094.961561895196438-0.217627385818108171.3566030.82129190.99302712873.92759952280864017.61016541266643599.773285228468360.236665010416064.48420805478778655.298396909824647-0.10002755027369373-244.349097.8453856-178.86238FalseFalseFalseFalseFalseFalse0.0022292965124071080.0022292965124071080.00111596475477992420.00111596475477992424.487907887385034.487907887385035.3013371750476345.301337175047634-0.10004142175608458-0.10004142175608458FalseFalseFalseFalseFalseFalseFalseFalse1.2095670700073242-0.075856655836105350.87984633445739750.14959576725959778FalseFalseFalseFalseFalse2873.9307540871932873.9307540871934017.62966452687854017.62966452687856.7847993888042636.7847993888042634.98155695839651454.9815569583965145-0.1888659716027619-0.1888659716027619FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse2873.9438404641942873.9438404641944017.63343636555564017.63343636555566.3933919512566436.3933919512566435.3908676802082915.390867680208291-0.0016886010613951592-0.0016886010613951592FalseFalseFalseFalseFalseFalseFalseFalse3611.4493611.4491994.705078125154.9298095703125FalseFalseFalse2880.355224609375229.916259765625FalseFalseFalse3433.96533203125305.6745910644531FalseFalseFalse3974.500732421875457.4093017578125FalseFalseFalse3964.42871093753964.42871093753964.4287109375609.2817993164062609.2817993164062609.2817993164062FalseFalseFalseFalseFalseFalseFalseFalseFalse3441.4820769736543866.5633271723423FalseFalse3269.25062355492261271.2497787610428FalseFalse1788.57395815942441777.5505618687757FalseFalse1621.71796543989332540.4971954324214FalseFalsenannanTrueTrue4017.68274139057264017.68274139057264017.6827413905726285.7340882061717285.7340882061717285.7340882061717FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse3647.7532384470883647.753238447088260.9834992246833260.9834992246833FalseFalseFalseFalseFalseFalseFalse821.0False3713.3470362983494563.99568626022714.263247514.4631252.766762FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1.11461526464153331.11461526464153331.11461526464153330.00.00.0FalseFalseFalse1.04262304690233340.0False0.99091144892388080.99091144892388080.00.0FalseFalse1.0False293FalseFalseFalse
10103575046140.9275184726569182-0.479240903367489261010357503945FalseFalseFalseFalse0True2882.04014.01272.9455951824368FalseFalseFalseFalseFalseFalseFalse2881.03830104797234011.221303117771FalseFalseFalse2880.86828992119444010.905577916985FalseFalseFalseFalse2881.97174983924472881.97174983924474011.70486565632934011.70486565632930.79056940.79056942.3418672.341867FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse0.193972376737670820.096139610832019942011.71620699100072225.69351539215270.11456968907765732207.0369586178732492.61509504777135.70724425780291714.552733807501276-0.369091653709338057.28901080550157915.50157342537748-1.3930350795215247.692036333862450416.311959695280110.072870448621532449.4276111063772917.360424671832252-1.2430590524318474FalseFalseFalse3.6295750930841787.254154866990005-0.6118455152492972nannannan2882.08694627067554012.061579376166nannan4.4842575198575825.299317650455579-0.0991858821550719nannannanTrueFalseTrueFalseFalseFalse0.00221940840939898860.00221940840939898860.00111165468288847070.00111165468288847074.4879690780852814.4879690780852815.3022711789198925.302271178919892-0.09920098591388689-0.09920098591388689FalseFalseFalseFalseFalseFalseFalseFalse-0.48229360580444336-0.095578558743000030.76582634449005130.37288880348205566FalseFalseFalseFalseFalse2882.14854479189942882.14854479189944013.0779050881874013.0779050881875.9748013445288345.97480134452883410.23345631207996210.233456312079962-0.4177984311468803-0.4177984311468803FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse2882.1563131033952882.1563131033954013.11956782192244013.11956782192246.7144261352920366.7144261352920368.9528265041638028.952826504163802-0.15770892593000868-0.15770892593000868FalseFalseFalseFalseFalseFalseFalseFalse2040.9172040.917809.4622192382812151.2576904296875FalseFalseFalse1494.027587890625227.06768798828125FalseFalseFalse1863.7652587890625303.50848388671875FalseFalseFalse2125.309814453125455.9118957519531FalseFalseFalse2272.0100097656252272.0100097656252272.010009765625609.0165405273438609.0165405273438609.0165405273438FalseFalseFalseFalseFalseFalseFalseFalseFalse1344.5725321097998866.0121246264396FalseFalse2599.58835524503961271.3988359283644FalseFalse-172.49326522464981777.2906346458926FalseFalse-2922.0582023840692538.8322118643446FalseFalsenannanTrueTrue2269.73519978637522269.73519978637522269.7351997863752312.07836668489312.07836668489312.07836668489FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse1632.1484967076491632.148496707649254.97047306928545254.97047306928545FalseFalseFalseFalseFalseFalseFalse821.0False2190.592864588474364.935383219973972.7668974nan2.7668974FalseFalseFalseFalseFalseTrueFalseTrueFalseFalse1.11457500142851251.11457500142851251.11457500142851250.00.00.0FalseFalseFalse1.04261025123203940.0False0.99086195283486210.99086195283486210.00.0FalseFalse1.0False293FalseFalseFalse
" - ], - "text/plain": [ - "\n", - " id coord_ra ... calib_photometry_reserved\n", - " rad ... \n", - " int64 float64 ... bool \n", - "------------- ------------------ ... -------------------------\n", - "1010357501953 0.923033029229361 ... False\n", - "1010357501954 0.9231694833170864 ... False\n", - "1010357501955 0.9232606263113138 ... False\n", - "1010357501956 0.9235299085068365 ... False\n", - "1010357501957 0.9227888992171793 ... False\n", - "1010357501958 0.9235455709036104 ... False\n", - "1010357501959 0.9233171043552312 ... False\n", - "1010357501960 0.9234794124400545 ... False\n", - "1010357501961 0.9230547505458153 ... False\n", - " ... ... ... ...\n", - "1010357504605 0.9276100366033875 ... False\n", - "1010357504606 0.9276113859032618 ... False\n", - "1010357504607 0.9277188763009131 ... False\n", - "1010357504608 0.9277065384888925 ... False\n", - "1010357504609 0.9277465529622956 ... False\n", - "1010357504610 0.9277538247212633 ... False\n", - "1010357504611 0.9276504842721082 ... False\n", - "1010357504612 0.9276339235895114 ... False\n", - "1010357504613 0.9275224846731133 ... False\n", - "1010357504614 0.9275184726569182 ... False" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "source_cat.asAstropy()" ] }, { "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#sorting is supported. by default catalogs are sorted by id\n", + "# sorting is supported. by default catalogs are sorted by id\n", "source_cat.isSorted(id_key)" ] }, { "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#you can cut on the catalog\n", - "#make a bool array to only keep sources with positive psf flux\n", - "#we will showcase another way to use aliasing too\n", + "# you can cut on the catalog\n", + "# make a bool array to only keep sources with positive psf flux\n", + "# we will showcase another way to use aliasing too\n", "psf_mask = source_cat.getPsfFlux() > 0\n", + "psf_mask &= np.isfinite(source_cat['slot_ApFlux_flux'])\n", + "psf_mask &= np.isfinite(source_cat['slot_ApFlux_fluxSigma'])\n", + "psf_mask &= np.isfinite(source_cat['base_ClassificationExtendedness_value'])\n", "pos_flux = source_cat.subset(psf_mask)\n", "\n", - "#you can sort on other keys too\n", + "# you can sort on other keys too\n", "flux_key = pos_flux.getPsfFluxKey()\n", "pos_flux.sort(flux_key)\n", "pos_flux.isSorted(flux_key)" @@ -1133,76 +557,38 @@ }, { "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - " id coord_ra ... calib_photometry_reserved\n", - " rad ... \n", - "------------- ------------------ ... -------------------------\n", - "1010357504605 0.9276100366033875 ... False\n", - "1010357504606 0.9276113859032618 ... False" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#get the children of particular objects\n", - "#this is useful if you want to understand how one object was deblended\n", + "# get the children of particular objects\n", + "# this is useful if you want to understand how one object was deblended\n", "source_cat.getChildren(1010357503918) #the argument is the id of the parent object\n", "\n", - "#note that this will only work if the source catalog is sorted on id or parent" + "# note that this will only work if the source catalog is sorted on id or parent" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Some operations (like writing to disk) are only allowed if the source catalog is contiguous in memory. You can check if this is the case" + "You can check if catalogs are contiguous in memory." ] }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "source_cat.isContiguous()" ] }, { "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "False" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "pos_flux.isContiguous()" ] @@ -1211,25 +597,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You can force the table to be contiguous if you make a deep copy of it" + "Some operations are quicker if catalogs are contiguous in memory, like using numpy-like syntax to create masks. You can force the table to be contiguous if you make a deep copy of it. We will show how forcing the table to be contiguous makes the previous operation quicker. Although the speedup is marginal, and not statistically significant, it would be for a much larger catalog. Eli Rykoff performed some benchmark tests showing this is the case for a catalog with about half a million enteries. You can find the full details at https://lsstc.slack.com/archives/C2JPL2DGD/p1525799998000344" ] }, { "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "pos_flux = pos_flux.copy(deep=True)\n", "pos_flux.isContiguous()" @@ -1237,94 +612,50 @@ }, { "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "slice(2052, 2624, 1)" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#use the between method to get the indicies of values within a range\n", + "# use the between method to get the indicies of values within a range\n", "pos_flux.between(1e4,1e6,psf_flux_key)" ] }, { "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1095968.2558799293" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#the slice object tells you the (start, stop, stride) for values that fit our querry\n", - "#you can check to see that the first record outside the slice is above the flux threshold\n", - "pos_flux[2624].getPsfFlux()" + "# the slice object tells you the (start, stop, stride) for values that fit our querry\n", + "# you can check to see that the first record outside the slice is above the flux threshold\n", + "pos_flux[2390].getPsfFlux()" ] }, { "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "910716.5910917423" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ - "#and that the last element in the slice is inside the threshold\n", - "pos_flux[2623].getPsfFlux()" + "# and that the last element in the slice is inside the threshold\n", + "pos_flux[2389].getPsfFlux()" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#your turn. confirm the lower limits of the between query\n", - "#pos_flux[...].getPsfFlux\n" + "# your turn. confirm the lower limits of the between query\n", + "# pos_flux[...].getPsfFlux\n" ] }, { "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2052" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "#the upper and lower bound methods work similarly\n", "pos_flux.upper_bound(1e4, psf_flux_key)" @@ -1332,20 +663,9 @@ }, { "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2624" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "pos_flux.lower_bound(1e6, psf_flux_key)" ] @@ -1359,17 +679,17 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#let's select sources that were not deblended\n", + "# let's select sources that were not deblended\n", "select_mask = source_cat['deblend_nChild'] == 0\n", "select_mask &= source_cat['parent'] == 0\n", "\n", "# use the extendedness column for a mock star/galaxy seperation\n", "# we only want to use columns where this algorithm worked\n", - "#the flag is set true if there was a failure, so we invert the flag values here\n", + "# the flag is set true if there was a failure, so we invert the flag values here\n", "select_mask &= ~source_cat['base_ClassificationExtendedness_flag']\n", "\n", "# we will also use the sloan shapes to measure size\n", @@ -1378,6 +698,9 @@ "# and a simple aperture flux for the brightness\n", "select_mask &= ~source_cat['base_CircularApertureFlux_12_0_flag']\n", "\n", + "# only consider sources with positive flux\n", + "select_mask &= source_cat['base_CircularApertureFlux_12_0_flux'] > 0\n", + "\n", "size_bright_cat = source_cat.subset(select_mask)" ] }, @@ -1390,38 +713,9 @@ }, { "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/lsst/software/stack/python/miniconda3-4.3.21/lib/python3.6/site-packages/ipykernel/__main__.py:1: RuntimeWarning: invalid value encountered in log\n", - " if __name__ == '__main__':\n" - ] - }, - { - "data": { - "text/plain": [ - "(0, 60)" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "plt.scatter(np.log(size_bright_cat['base_CircularApertureFlux_12_0_flux']), \n", " size_bright_cat['base_SdssShape_xx'] + size_bright_cat['base_SdssShape_yy'],\n", @@ -1439,76 +733,6 @@ "Our plot shows some star galaxy seperation, but also has other interesting features. Some detected sources appear smaller than the PSF, some of the point sources have a (crudely) calculated size that occupy the same parameter space as extended sources, and there are a few extremely faint detected point sources. We will leave it to you to delve into this mystery further as a home work assignment since we are primarily focused on understanding tables in this tutorial. By making this plot we exercised some of the methods of the catalog and its schema to do a minimal analysis example" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As a bit of an aside, the records in the source catalog have information about their analagous calexp. The 'Footprints' of the sources each record refers to can be accessed directly. At the risk of going off on a tangent, we will briefly show " - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "539" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "footprint = pos_flux[20].getFootprint()\n", - "footprint.getArea() #tells you the number of detected pixels assigned to this source" - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#if the foot print is 'heavy' we can access information at the pixel level\n", - "footprint.isHeavy()" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "522.26373" - ] - }, - "execution_count": 64, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#sum up the pixel values for detected to pixels assigned to this source\n", - "footprint.getImageArray().sum()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -1522,18 +746,18 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "#grab a second catalog using the butler\n", + "# grab a second catalog using the butler\n", "dataId2 = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 236}\n", "source_cat2 = butler.get('src', dataId2)\n", "\n", - "#put our catalogs in a list\n", + "# put our catalogs in a list\n", "catalogList = [source_cat, source_cat2]\n", "\n", - "#this function is courtesy of Jim Bosch\n", + "# this function is courtesy of Jim Bosch\n", "def concatenate(catalogList):\n", " from functools import reduce\n", " \"\"\"Concatenate multiple catalogs (FITS tables from lsst.afw.table)\"\"\"\n", @@ -1544,13 +768,13 @@ " if c.schema != schema:\n", " raise RuntimeError(\"Schema for catalog %d not consistent\" % (i+1))\n", "\n", - " #prepare the master catalog\n", + " # prepare the master catalog\n", " out = afwTable.BaseCatalog(schema)\n", " num = reduce(lambda n, c: n + len(c), catalogList, 0)\n", - " #set aside enough space for all the records and their pointers\n", + " # set aside enough space for all the records and their pointers\n", " out.reserve(num)\n", "\n", - " #stick in all the records from all catalogs into the master catalog\n", + " # stick in all the records from all catalogs into the master catalog\n", " for catalog in catalogList:\n", " for record in catalog:\n", " out.append(out.table.copyRecord(record))\n", @@ -1566,9 +790,143 @@ "source": [ "#### catalog matching\n", "\n", - "quick positional matching is supported by the stack, and offers some useful functionality. We will cover some common matching use cases below\n", + "quick positional matching is supported by the stack, and offers some useful functionality. In the next example, we will match one of the Twinkles truth catalogs against our detection catalog that has been produced by the stack. To be as DM like as possible, we will read in the truth catalog, make a afwTable.BaseTable version of the truth catalog to match against the src catalog produced by DM.\n", + "\n", + "First order of business is to grab and reformat the truth table" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "truth_table = ascii.read('/project/shared/data/Twinkles_subset/truth/sprinkled_lens_230_J2000.txt')\n", + "truth_table" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_schema = afwTable.SourceTable.makeMinimalSchema()\n", + "min_schema.addField(\"r_mag\", type=np.float32, doc=\"r band mag\", units=\"mag\")\n", + "truth_dm = afwTable.SourceCatalog(min_schema)\n", + "\n", + "# grab the keys to the schema\n", + "# grab a hold of the keys for the record. We will use these to add data \n", + "keys = min_schema.extract('*') #this returns a dictionary of all the fields\n", + "\n", + "# access the dictionary one field at a time, and grab each field's key\n", + "id_key = keys['id'].key\n", + "ra_key = keys['coord_ra'].key\n", + "dec_key = keys['coord_dec'].key\n", + "parent_key = keys['parent'].key\n", + "r_mag_key = keys['r_mag'].key\n", "\n", - "in order to match catalogs, we must provide a MatchControl instance. The MatchControl provides configurations for catalog matching. It has three 'switches' in the form of class attributes. they are defined below\n", + "# loop over the astropy table version of the truth catalog\n", + "# making new records in our DM catalog as we go along\n", + "for record in truth_table:\n", + " newRec = truth_dm.addNew()\n", + " newRec.set(id_key, record['galid'])\n", + " newRec.set(r_mag_key, record['mag'])\n", + " newRec.set(ra_key, afwGeom.Angle(record['ra']*(np.pi/180.)))\n", + " newRec.set(dec_key, afwGeom.Angle(record['dec']*(np.pi/180.)))\n", + "\n", + "# this makes the table contiguous \n", + "truth_dm = truth_dm.copy(deep=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we grab a src catalog that overlaps with the truth catalog. The README.txt file in the directory with the truth catalog tells us we need to use visit 230" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dataId = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 230}\n", + "src_twinkles = butler.get('src',dataId)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will want to compare the magnitude of matched sources in both catalogs. As we saw from examining the src catalog schemas above, flux measurements from different photometry alogrithms are avaliable for every source, but the magnitudes are not explicitly given. We can get calibrated magnitudes from flux measurements by using the calexp_calib data product" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "calexp_calib_twinkles = butler.get('calexp_calib', dataId)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We demonstrate below how to use the calexp_calib object to return magnitudes along with errors, given flux and flux errors" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "src_tw_mags, src_tw_magErr = calexp_calib_twinkles.getMagnitude(src_twinkles['base_GaussianFlux_flux'],\n", + " src_twinkles['base_GaussianFlux_fluxSigma'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# remove sources with bag magnitudes and prune catalog\n", + "truth_mag_max = truth_dm['r_mag'].max()\n", + "truth_mag_min = truth_dm['r_mag'].min()\n", + "mask = np.isfinite(src_tw_mags)\n", + "mask &= (src_tw_mags < truth_mag_max)\n", + "mask &= (src_tw_mags > truth_mag_min)\n", + "src_twinkles = src_twinkles.subset(mask)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Before we do the matching, let's get a sense of the overlap of these catalogs by plotting them both in RA-DEC space" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.scatter(src_twinkles['coord_ra'], src_twinkles['coord_dec'], s=5, label='DM')\n", + "plt.scatter(truth_dm['coord_ra'],truth_dm['coord_dec'], s=20, label='Truth')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We may expect to find about 30 matches or so. In order to match catalogs, we must provide a MatchControl instance. The MatchControl provides configurations for catalog matching. It has three 'switches' in the form of class attributes. they are defined below\n", "\n", "1. findOnlyClosest: True by default. If False, all other sources within a search radius are also matched \n", "2. includeMismatches: False by default. If False, sources with no match are not reported in the match catalog. If True, sources with no match are included in the match catalog with Null as their match\n", @@ -1581,45 +939,209 @@ "metadata": {}, "outputs": [], "source": [ - "#get a match control, we will keep the default configuration\n", + "# get a match control, we will keep the default configuration\n", "mc = afwTable.MatchControl()\n", "\n", + "# match our two catalogs\n", + "matches = afwTable.matchRaDec(truth_dm, src_twinkles, afwGeom.Angle(1,afwGeom.arcseconds), mc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "afwTable.matchRaDec returns a list, where each element is an instance of a Match class. The Match class has three attributes, which gives us information about the matched sources. Let us unpack this a bit before moving on to some analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# how many sources were actually matched?\n", + "len(matches)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# lets examine the first element in the matches list\n", + "# we can grab the record corresponding to this source in the truth_dm catalog\n", + "# using the first attribute\n", + "matches[0].first" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# likewise the second attribute gives us the record from the src_twinkles catalog\n", + "\n", + "matches[0].second" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#finally the angular seperation is given in radians in the distance attribute\n", + "matches[0].distance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now lets put this all together. We make a plot showing the angular seperation between matched sources as a function of the truth catalog's magnitude" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mag_truth = [m.first['r_mag'] for m in matches]\n", + "dist_resid = [m.distance for m in matches]\n", + "dist_resid = np.array(dist_resid)* 360*60*60/ (2*np.pi) #convert rad to arcseconds\n", + "\n", + "plt.scatter(mag_truth, dist_resid)\n", + "plt.ylabel('angular sep arcseconds');\n", + "plt.xlabel('r truth');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the previous example we only kept the nearest neighboor matches. Now we will show how you can collect *all* matches within the search radius by overwritting the findOnlyClosest attribute of the match control" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#get a match control, we will keep the default configuration\n", + "mc = afwTable.MatchControl()\n", + "mc.findOnlyClosest = False\n", "#match our two catalogs\n", - "afwTable.matchRaDec(source_cat, source_cat2, afwGeom.Angle(5,afwGeom.arcseconds), mc)" + "matches_all = afwTable.matchRaDec(truth_dm, src_twinkles, afwGeom.Angle(1,afwGeom.arcseconds), mc)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's see if we get a few more matches " ] }, { "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "2.42407e-05 rad" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "len(matches_all)" + ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Summary\n", + "To try to understand where these extra matches come from, we print out the id's from the truth catalog and their matched sources in the DM catalog, along with their angular separation and magnitude residual. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for m in matches_all:\n", + " obj_id_1 = m.first.getId()\n", + " obj_id_2 = m.second.getId()\n", + " dist = m.distance* 360*60*60/ (2*np.pi)\n", + " mag_resid = m.first['r_mag'] - calexp_calib_twinkles.getMagnitude(m.second.getModelFlux())\n", + " print('id 1: {} id 2: {} distance {} mag {}'.format(obj_id_1, obj_id_2, dist, mag_resid))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that some of the matches have very simmilar magnitude residuals. Look at the 6th and 7th to last row, for example. \n", + "\n", + "id 1: 279852058 id 2: 988882667634 distance 0.1571098610746062 mag -0.3084721056101962\n", "\n", - "Remind the user what they have done, and what they should now be able to do." + "id 1: 279852058 id 2: 988882665917 distance 0.15712272456292592 mag -0.30847215544412876" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As it happens, the extra matches are due to deblending." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "src_twinkles.getChildren(988882665917)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you are only interested in the ids and the angular seperation, you can pack the matches into a table." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "matches_table = afwTable.packMatches(matches)\n", + "matches_table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You could also point them to a related tutorial or reference source, to help them go further." + "You can unpack the matches too" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "unpack_matches = afwTable.unpackMatches(matches_table, truth_dm, src_twinkles)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this tutorial we introduced afw tables. We introduced schemas, how to navigate them, add to them, and how to create tables based off of them. We covered data access to catalogs produced by DM using the data butler. We went over a some typical use cases for source catalogs, like catalog matching, and understanding bread and butter measurement algorithms." ] } ], From b71e8aafe5623024c8ff935d6acf4103d932ac80 Mon Sep 17 00:00:00 2001 From: Phil Marshall Date: Fri, 19 Oct 2018 18:33:28 +0000 Subject: [PATCH 4/5] Fixed text bugs --- Basics/afw_table_guided_tour.ipynb | 185 ++++++++++++++++------------- 1 file changed, 102 insertions(+), 83 deletions(-) diff --git a/Basics/afw_table_guided_tour.ipynb b/Basics/afw_table_guided_tour.ipynb index 3978c75a..6ad52d73 100644 --- a/Basics/afw_table_guided_tour.ipynb +++ b/Basics/afw_table_guided_tour.ipynb @@ -8,11 +8,13 @@ } }, "source": [ - "# AFW Tables: A Guided Tour\n", + "# afwTables: A Guided Tour\n", "
Owner(s): **Imran Hasan** ([@ih64](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@ih64))\n", - "
Last Verified to Run: **20XX-XX-XX**\n", + "
Last Verified to Run: **2018-10-19**\n", "
Verified Stack Release: **16.0**\n", "\n", + "Catalogs of astronomical objects, and their many automated measurements, will be the primary data product that LSST provides, and queries of those catalogs will be the starting point for almost all LSST science analyses. On the way to filling the LSST database with these catalogs, the science pipelines will generate and manipulate a lot of internal tables; the python class that the Stack defines and uses for these tables is called an \"afwTable\". \n", + "\n", "### Learning Objectives:\n", "\n", "After working through this tutorial you should be able to: \n", @@ -20,7 +22,7 @@ "2. Set and get values in a schema and table;\n", "3. Read and write a source detection catalog table;\n", "4. Learn to use source detection catalog methods, and to avoid common pitfalls;\n", - "5. Learn to use source match vectors;\n", + "5. Learn to use source match vectors.\n", "\n", "### Logistics\n", "This notebook is intended to be runnable on `lsst-lspdev.ncsa.illinois.edu` from a local git clone of https://github.com/LSSTScienceCollaborations/StackClub.\n", @@ -158,7 +160,7 @@ "source": [ "## Your first table\n", "\n", - "To begin, we will make a bear bones afw table so we can clearly showcase important concepts. First we will make the simplest table possible by hand. While creating tables by hand will not likely be the standard use case, it is useful in a tutorail standpoint, as it will allow us to excercise concepts one at a time" + "To begin, we will make a bare-bones afw table so that we can clearly showcase some important concepts. First we will make the simplest possible table, by hand. While creating tables by hand will not likely be the standard use case, it is useful from a tutorial standpoint, as it will allow us to excercise some concepts one at a time" ] }, { @@ -171,8 +173,8 @@ }, "outputs": [], "source": [ - "# afw tables need a schemea to tell the table how its data are organized\n", - "# lets have a look at a simple schema\n", + "# afw tables need a schema to tell the table how its data are organized\n", + "# Lets have a look at a simple schema:\n", "min_schema = afwTable.SourceTable.makeMinimalSchema()" ] }, @@ -182,7 +184,7 @@ "metadata": {}, "outputs": [], "source": [ - "# but what is the schema exactly? priting it out can be informative\n", + "# But what is the schema exactly? Printing it out can be informative\n", "print(min_schema)" ] }, @@ -192,7 +194,7 @@ "source": [ "Our schema contains 4 Fields: one for each celestial coordinate, an id that uniquely defines it, and a 'parent', which lists the id of the source this source was deblended from. We will deal with the parent column in more detail in a few cells, but for now you can ignore it.\n", "\n", - "Each field has some accomanying information to go along with it. In addition to its name, we get a helpful docstring describing it. We also get the units that values for this field must have. For example, any value associated with the id key has to be a long, and all entries for celestial coordniates have to be instances of an Angle class. We will showcase the Angle class shortly.\n", + "Each field has some accompanying information to go along with it. In addition to its name, we get a helpful docstring describing it. We also get the units that values for this field must have. For example, any value associated with the id key has to be a long integer, and all entries for celestial coordniates have to be instances of an Angle class. We will showcase the Angle class shortly.\n", "\n", "If printing out the schema gives you more information that you want, you can get the names. If the names are informative enough, this might be all you need." ] @@ -212,9 +214,9 @@ "metadata": {}, "outputs": [], "source": [ - "# we can also add another field to the schema, using a call pattern like this\n", + "# We can also add another field to the schema, using a call pattern like this:\n", "min_schema.addField(\"r_mag\", type=np.float32, doc=\"r band flux\", units=\"mag\")\n", - "# lets make sure the field was added by printing out the schema once more\n", + "# Lets make sure the field was added by printing out the schema once more:\n", "print(min_schema)" ] }, @@ -222,10 +224,17 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We pause here to point ou some caviets. \n", - "1. schemas are append only. You can add new fields, but you cannot remove them. \n", - "2. the units you use have to be understood by astropy. You can find a list of acceptable units at the bottom of this page http://docs.astropy.org/en/stable/units/index.html#module-astropy.units\n", - "3. specific types are allowed. The short and long of it is you may use floats, ints, longs, strings, Angle objects, and arrays. For more details you can go to the bottom of this page http://doxygen.lsst.codes/stack/doxygen/x_masterDoxyDoc/afw_table.html" + "> We pause here to point out some caveats. \n", + "1. Schemas are append only. You can add new fields, but you cannot remove them. \n", + "2. The units you use have to be understood by astropy. You can find a list of acceptable units at the bottom of this page http://docs.astropy.org/en/stable/units/index.html#module-astropy.units\n", + "3. Specific types are allowed. The short and long of it is you may use floats, ints, longs, strings, Angle objects, and arrays. For more details you can go to the bottom of this page http://doxygen.lsst.codes/stack/doxygen/x_masterDoxyDoc/afw_table.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have a schema, we can use it to make a table.\n" ] }, { @@ -234,7 +243,6 @@ "metadata": {}, "outputs": [], "source": [ - "# now that we have a schema, we can use it to make a table\n", "min_table = afwTable.BaseCatalog(min_schema)\n", "# our table is empty, and we can check this by looking at its length\n", "print('our minimal table has {} rows'.format(len(min_table)))" @@ -266,7 +274,8 @@ "# grab a hold of the keys for the record. We will use these to add data \n", "keys = min_schema.extract('*') #this returns a dictionary of all the fields\n", "\n", - "# access the dictionary one field at a time, and grab each field's key\n", + "# access the dictionary one field at a time, and grab each field's key. \n", + "# note these are instances of a Key object, and not just simple strings.\n", "id_key = keys['id'].key\n", "ra_key = keys['coord_ra'].key\n", "dec_key = keys['coord_dec'].key\n", @@ -285,7 +294,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Notice to set the ra and dec, we needed to create afwGeom.Angle objects. These are in units of radians by default. Additionally, we set the parent to zero. This means this record refers to the object before any deblending occoured. Lets look at our table now to see how it stands" + "Notice to set the ra and dec, we needed to create `afwGeom.Angle` objects for them. _These are in units of radians by default._ Additionally, we set the parent to zero. This means this record refers to the object before any deblending occoured. Lets look at our table now to see how it stands." ] }, { @@ -373,10 +382,10 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### data access\n", - "If you know the path to your source catalog, there is a quick way to read it in. However, it is often more powerful to the 'data butler' to fetch data for you. The butler knows about camera geometry, sensor characteristics, where data are located, and so forth. Having this anciliary information on hand is often very useful. For completeness we will demostrate both ways of reading in a source catalog, with the note that it is largely considered better pratice to use the data butler. \n", + "### Data access\n", + "If you know the path to your source catalog, there is a quick way to read it in. However, it is often more powerful to the 'data butler' to fetch data for you. The butler knows about camera geometry, sensor characteristics, where data are located, and so forth. Having this anciliary information on hand is often very useful. For completeness we will demonstrate both ways of reading in a source catalog, with the note that it is largely considered better practice to use the data butler. \n", "\n", - "The data butler deserves a tutorial in its own right, and so we will defer further details on it until later. For now, you may think of it as an abstraction that allows you to quickly fetch data. The user just needs to point the butler to where to look and what to look for." + "The data butler deserves a tutorial in its own right, and so we will defer further details on it until later. For now, you may think of it as an abstraction that allows you to quickly fetch catalogs for you. The user just needs to point the butler to where to look and what to look for." ] }, { @@ -385,7 +394,7 @@ "metadata": {}, "outputs": [], "source": [ - "#here's the quick and dirty way\n", + "# here's the quick and dirty way:\n", "file_path = '/project/shared/data/Twinkles_subset/output_data_v2/src/v235-fr/R22/S11.fits'\n", "source_cat = afwTable.SourceCatalog.readFits(file_path)" ] @@ -396,22 +405,14 @@ "metadata": {}, "outputs": [], "source": [ - "#here is the way to get the catalog with a butler\n", - "#first set up our butler by telling it to look at this twinkles directory\n", + "# here's the way to get the same catalog with a butler:\n", + "\n", + "# first set up our butler by telling it to look at this twinkles directory\n", "butler = dafPersist.Butler('/project/shared/data/Twinkles_subset/output_data_v2')\n", - "#now we put together a dataId that uniquely specifies a datum\n", + "# now we put together a dataId that uniquely specifies a datum\n", "dataId = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 235}\n", "\n", - "## look at LSB tutorial to supress warnings" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#use the dataId and the 'src' to get the source catalog. \n", + "# use the dataId and the 'src' to get the source catalog. \n", "source_cat = butler.get('src', **dataId)" ] }, @@ -419,7 +420,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A few comments are in order on questions you may be having about the butler, and the previous cell. First, there is no good way to know what dataId's exist and correspond to data. That means you have to know ahead of time what dataId's make sense to use. DM is working hard on fixing this. Second, 'src' refers to a very specific data product in the DM philosophy. This is a measurment catalog contains the results of different measurement algorithms on detected sources on an individual CCD. We will meet some other catalogs later in the tutorial. For now, lets get to know this src" + "A few comments are in order on questions you may be having about the butler, and the previous cell. First, there is no good way to know which `dataId`s exist. That means you have to know ahead of time which `dataId`s it makes sense to use. DM is working hard on fixing this. Second, the string `'src'` refers to a very specific data product in the DM philosophy, which is a catalog that contains _the results of different measurement algorithms on detected sources on an individual CCD image_. We will meet some other catalogs later in the tutorial. For now, lets get to know this `src` catalog." ] }, { @@ -443,7 +444,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "These schemas tend to be pretty large, because every measurement algorithm will create several fields. There are handy ways of grabbing fields that are interesting to you. Suppose you are interested in HSM PSF shape measurements. We can use unix like pattern matching with the extract method to search the schema. This returns a dictionary where the keys are the schema fields whose names match the pattern you specified, and the values are the fields themselves. " + "These schemas tend to be pretty large, because every measurement algorithm will create several fields. There are handy ways of grabbing fields that are interesting to you. Suppose you are interested in HSM PSF shape measurements. We can use unix-like pattern matching with the extract method to search the schema. This returns a dictionary where the keys are the schema fields whose names match the pattern you specified, and the values are the fields themselves. " ] }, { @@ -459,7 +460,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If we are just intested in the field names, we can do this" + "If we are just intested in the field names, we can do this:" ] }, { @@ -475,7 +476,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "When we dumped the entire schema, the very bottom of the schema contained fields are named 'slot_'. These are called aliases in the schema, and can help you deal with any ambiguity in the table. For example, there are several algorithms used to measure the centroid, and many fileds with 'centroid' in their name as a result. If you want to have quick access to one algorithms measurement result, you can set up a slot alias for it. Lets do a working example on the first record in our table" + "When we dumped the entire schema, the very bottom of the schema contained fields are named 'slot_'. These are called aliases in the schema, and can help you deal with any ambiguity in the table. For example, there are several algorithms used to measure the centroid, and many fileds with 'centroid' in their name as a result. If you want to have quick access to one algorithms measurement result, you can set up a slot alias for it. Lets do a working example on the first record in our table." ] }, { @@ -508,11 +509,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As advertised, the slot centroid and SDSS centroid are the same. We also used some syntactic sugar to access the gaussian centroids and sdss centroids, which will be familiar to you if you are an astropy tables user. Now we will set aside the schema for this table, and look at the table itself so we can examine its methods.\n", - "\n", - "### afw source catalogs\n", + "As advertised, the slot centroid and SDSS centroid are the same. We also used some syntactic sugar to access the `gaussian` centroids and `sdss` centroids, which will be familiar to you if you are an astropy tables user. \n", "\n", - "speaking of astropy tables, you can make an astropy table version of a source catalog. However, source catalogs support a lot of fast operations for common use cases which we will disucss. " + "> Speaking of astropy tables, you can make an astropy table version of a source catalog:" ] }, { @@ -524,13 +523,24 @@ "source_cat.asAstropy()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will set aside the schema for this table, and look at the table itself so we can examine its methods.\n", + "\n", + "### afw source catalogs\n", + "\n", + "Source catalogs support a lot of fast operations for common use cases which we will now discuss. " + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "# sorting is supported. by default catalogs are sorted by id\n", + "# Sorting is supported. by default catalogs are sorted by id\n", "source_cat.isSorted(id_key)" ] }, @@ -540,16 +550,15 @@ "metadata": {}, "outputs": [], "source": [ - "# you can cut on the catalog\n", - "# make a bool array to only keep sources with positive psf flux\n", - "# we will showcase another way to use aliasing too\n", + "# You can cut on the catalog.\n", + "# e.g. Make a boolean array to only keep sources with positive psf flux:\n", "psf_mask = source_cat.getPsfFlux() > 0\n", "psf_mask &= np.isfinite(source_cat['slot_ApFlux_flux'])\n", "psf_mask &= np.isfinite(source_cat['slot_ApFlux_fluxSigma'])\n", "psf_mask &= np.isfinite(source_cat['base_ClassificationExtendedness_value'])\n", "pos_flux = source_cat.subset(psf_mask)\n", "\n", - "# you can sort on other keys too\n", + "# You can sort on other keys too:\n", "flux_key = pos_flux.getPsfFluxKey()\n", "pos_flux.sort(flux_key)\n", "pos_flux.isSorted(flux_key)" @@ -561,11 +570,11 @@ "metadata": {}, "outputs": [], "source": [ - "# get the children of particular objects\n", - "# this is useful if you want to understand how one object was deblended\n", + "# You can get the children of particular objects.\n", + "# This is useful if you want to understand how one object was deblended, for example:\n", "source_cat.getChildren(1010357503918) #the argument is the id of the parent object\n", "\n", - "# note that this will only work if the source catalog is sorted on id or parent" + "# Note that this will only work if the source catalog is sorted on id or parent" ] }, { @@ -597,7 +606,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Some operations are quicker if catalogs are contiguous in memory, like using numpy-like syntax to create masks. You can force the table to be contiguous if you make a deep copy of it. We will show how forcing the table to be contiguous makes the previous operation quicker. Although the speedup is marginal, and not statistically significant, it would be for a much larger catalog. Eli Rykoff performed some benchmark tests showing this is the case for a catalog with about half a million enteries. You can find the full details at https://lsstc.slack.com/archives/C2JPL2DGD/p1525799998000344" + "Some operations are quicker if catalogs are contiguous in memory, like using numpy-like syntax to create masks. You can force the table to be contiguous if you make a deep copy of it. We will show how forcing the table to be contiguous makes the previous operation quicker. Although the speedup is marginal, and not statistically significant, it would be for a much larger catalog. Eli Rykoff performed some benchmark tests showing this is the case for a catalog with about half a million enteries. You can find the full details in a Slack thread [here](https://lsstc.slack.com/archives/C2JPL2DGD/p1525799998000344)." ] }, { @@ -616,7 +625,7 @@ "metadata": {}, "outputs": [], "source": [ - "# use the between method to get the indicies of values within a range\n", + "# Use the between method to get the indices of values within a range:\n", "pos_flux.between(1e4,1e6,psf_flux_key)" ] }, @@ -626,8 +635,8 @@ "metadata": {}, "outputs": [], "source": [ - "# the slice object tells you the (start, stop, stride) for values that fit our querry\n", - "# you can check to see that the first record outside the slice is above the flux threshold\n", + "# The slice object tells you the (start, stop, stride) for values that fit our query.\n", + "# You can check to see that the first record outside the slice is above the flux threshold\n", "pos_flux[2390].getPsfFlux()" ] }, @@ -674,7 +683,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that we have introduced the functionality of the source catalog and its schema, we will do a toy example of star-galaxy separation. This small demo will also flags and fields that users are use, and ultimately make a plot" + "## Example: Star-Galaxy Separation\n", + "\n", + "Now that we have introduced the functionality of the source catalog and its schema, we will do a toy example of star-galaxy separation. This small demo will also flags and fields that users are use, and ultimately make a plot." ] }, { @@ -708,7 +719,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we make a crude size magnitude diagram, color coding the data by their 'extendedness value'. The extendedness will be 1 for extended sources-like galaxies-and 0 for point sources-like stars. One hopes the stars will all live on the stellar locus" + "Now we make a crude size magnitude diagram, color coding the data by their 'extendedness value'. The extendedness will be 1 for extended sources-like galaxies-and 0 for point sources-like stars. One hopes the stars will all live on the stellar locus..." ] }, { @@ -730,18 +741,18 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Our plot shows some star galaxy seperation, but also has other interesting features. Some detected sources appear smaller than the PSF, some of the point sources have a (crudely) calculated size that occupy the same parameter space as extended sources, and there are a few extremely faint detected point sources. We will leave it to you to delve into this mystery further as a home work assignment since we are primarily focused on understanding tables in this tutorial. By making this plot we exercised some of the methods of the catalog and its schema to do a minimal analysis example" + "Our plot shows some star galaxy separation, but also has other interesting features. Some detected sources appear to be smaller than the PSF, some of the point sources have a (crudely) calculated size that occupy the same parameter space as extended sources, and there are a few extremely faint detected point sources. We will leave it to you to delve into this mystery further as a homework assignment since we are primarily focused on understanding tables in this tutorial. By making this plot we exercised some of the methods of the catalog and its schema, to do a minimal analysis example." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### operations with multiple tables/catalogs\n", + "### Operations with multiple tables/catalogs\n", "\n", "In the next section we will show operations which involve two or more catalogs.\n", "\n", - "#### table concatination" + "#### Table concatenation" ] }, { @@ -750,14 +761,14 @@ "metadata": {}, "outputs": [], "source": [ - "# grab a second catalog using the butler\n", + "# Grab a second catalog using the butler:\n", "dataId2 = {'filter': 'r', 'raft': '2,2', 'sensor': '1,1', 'visit': 236}\n", "source_cat2 = butler.get('src', dataId2)\n", "\n", - "# put our catalogs in a list\n", + "# Put our catalogs in a list:\n", "catalogList = [source_cat, source_cat2]\n", "\n", - "# this function is courtesy of Jim Bosch\n", + "# The following concatenation function is courtesy of Jim Bosch:\n", "def concatenate(catalogList):\n", " from functools import reduce\n", " \"\"\"Concatenate multiple catalogs (FITS tables from lsst.afw.table)\"\"\"\n", @@ -788,11 +799,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### catalog matching\n", + "#### Catalog matching\n", "\n", - "quick positional matching is supported by the stack, and offers some useful functionality. In the next example, we will match one of the Twinkles truth catalogs against our detection catalog that has been produced by the stack. To be as DM like as possible, we will read in the truth catalog, make a afwTable.BaseTable version of the truth catalog to match against the src catalog produced by DM.\n", + "Quick positional matching is supported by the stack, and offers some useful functionality. In the next example, we will match one of the Twinkles truth catalogs against our stack-produced detection catalog. To be as DM like as possible, we will read in the truth catalog, make an `afwTable.BaseTable` version of the truth catalog to match against the src catalog produced by DM. As we do this, you'll see us re-use the code we showed above.\n", "\n", - "First order of business is to grab and reformat the truth table" + "First order of business is to grab and reformat the truth table." ] }, { @@ -843,7 +854,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we grab a src catalog that overlaps with the truth catalog. The README.txt file in the directory with the truth catalog tells us we need to use visit 230" + "Now we grab a src catalog that overlaps with the truth catalog. The README.txt file in the directory with the truth catalog tells us we need to use visit 230:" ] }, { @@ -860,7 +871,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will want to compare the magnitude of matched sources in both catalogs. As we saw from examining the src catalog schemas above, flux measurements from different photometry alogrithms are avaliable for every source, but the magnitudes are not explicitly given. We can get calibrated magnitudes from flux measurements by using the calexp_calib data product" + "We will want to compare the magnitude of matched sources in both catalogs. As we saw from examining the `src` catalog schemas above, flux measurements from different photometry alogrithms are avaliable for every source, but the magnitudes are not explicitly given. We can get calibrated magnitudes from flux measurements by using the `calexp_calib` data product." ] }, { @@ -876,7 +887,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We demonstrate below how to use the calexp_calib object to return magnitudes along with errors, given flux and flux errors" + "Here's how to use the `calexp_calib` object to return magnitudes along with errors, given flux and flux errors:" ] }, { @@ -908,7 +919,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Before we do the matching, let's get a sense of the overlap of these catalogs by plotting them both in RA-DEC space" + "Before we do the matching, let's get a sense of the overlap of these catalogs by plotting them both in RA-DEC space:" ] }, { @@ -919,18 +930,18 @@ "source": [ "plt.scatter(src_twinkles['coord_ra'], src_twinkles['coord_dec'], s=5, label='DM')\n", "plt.scatter(truth_dm['coord_ra'],truth_dm['coord_dec'], s=20, label='Truth')\n", - "plt.legend()" + "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We may expect to find about 30 matches or so. In order to match catalogs, we must provide a MatchControl instance. The MatchControl provides configurations for catalog matching. It has three 'switches' in the form of class attributes. they are defined below\n", + "We may expect to find about 30 matches or so. In order to match catalogs, we must provide a `MatchControl` instance. The `MatchControl` provides configurations for catalog matching. It has three 'switches' in the form of class attributes. they are defined as follows:\n", "\n", - "1. findOnlyClosest: True by default. If False, all other sources within a search radius are also matched \n", - "2. includeMismatches: False by default. If False, sources with no match are not reported in the match catalog. If True, sources with no match are included in the match catalog with Null as their match\n", - "3. symmetricMatch: False by default. If False, the match between source a from catalog a with source b from ctalog b is reported alone. If True, the symmetric match between source b and a is also reported" + "1. `findOnlyClosest`: True by default. If False, all other sources within a search radius are also matched \n", + "2. `includeMismatches`: False by default. If False, sources with no match are not reported in the match catalog. If True, sources with no match are included in the match catalog with Null as their match\n", + "3. `symmetricMatch`: False by default. If False, the match between source a from catalog a with source b from catalog b is reported alone. If True, the symmetric match between source b and a is also reported." ] }, { @@ -950,7 +961,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "afwTable.matchRaDec returns a list, where each element is an instance of a Match class. The Match class has three attributes, which gives us information about the matched sources. Let us unpack this a bit before moving on to some analysis" + "`afwTable.matchRaDec` returns a list, where each element is an instance of a `Match` class. The `Match` class has three attributes, which gives us information about the matched sources. Let us unpack this a bit before moving on to some analysis" ] }, { @@ -1000,7 +1011,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now lets put this all together. We make a plot showing the angular seperation between matched sources as a function of the truth catalog's magnitude" + "Now lets put this all together. We make a plot showing the angular separation between matched sources as a function of the truth catalog's magnitude:" ] }, { @@ -1022,7 +1033,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the previous example we only kept the nearest neighboor matches. Now we will show how you can collect *all* matches within the search radius by overwritting the findOnlyClosest attribute of the match control" + "In the previous example we only kept the nearest neighbor matches. Now we will show how you can collect *all* matches within the search radius, by overwriting the `findOnlyClosest` attribute of the match control." ] }, { @@ -1042,7 +1053,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's see if we get a few more matches " + "Let's see if we get a few more matches! " ] }, { @@ -1079,11 +1090,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can see that some of the matches have very simmilar magnitude residuals. Look at the 6th and 7th to last row, for example. \n", - "\n", + "We can see that some of the matches have very similar magnitude residuals. Look at the 6th and 7th to last row, for example:\n", + "```\n", "id 1: 279852058 id 2: 988882667634 distance 0.1571098610746062 mag -0.3084721056101962\n", "\n", - "id 1: 279852058 id 2: 988882665917 distance 0.15712272456292592 mag -0.30847215544412876" + "id 1: 279852058 id 2: 988882665917 distance 0.15712272456292592 mag -0.30847215544412876\n", + "```" ] }, { @@ -1106,7 +1118,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "If you are only interested in the ids and the angular seperation, you can pack the matches into a table." + "If you are only interested in the ids and the angular separation, you can pack the matches into a table." ] }, { @@ -1123,7 +1135,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You can unpack the matches too" + "You can unpack the matches too:" ] }, { @@ -1135,6 +1147,13 @@ "unpack_matches = afwTable.unpackMatches(matches_table, truth_dm, src_twinkles)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hopefully this gives you some idea of the power of `afwTable`s in matching catalogs together, and understanding the deblending that has been carried out." + ] + }, { "cell_type": "markdown", "metadata": {}, From 4bf17912f13d2268662a3b7ab2b10893af2758b9 Mon Sep 17 00:00:00 2001 From: ih64 Date: Fri, 2 Nov 2018 17:04:08 +0000 Subject: [PATCH 5/5] merged in PMs helpful txt edits. also explicitly set units in Angle objs --- Basics/afw_table_guided_tour.ipynb | 31 ++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/Basics/afw_table_guided_tour.ipynb b/Basics/afw_table_guided_tour.ipynb index 6ad52d73..e10da507 100644 --- a/Basics/afw_table_guided_tour.ipynb +++ b/Basics/afw_table_guided_tour.ipynb @@ -285,8 +285,8 @@ "#use the keys to add data in our record\n", "rec.set(id_key, 1)\n", "rec.set(r_mag_key, 19.0)\n", - "rec.set(ra_key, afwGeom.Angle(33.89))\n", - "rec.set(dec_key, afwGeom.Angle(42.1))\n", + "rec.set(ra_key, afwGeom.Angle(33.89, units=afwGeom.degrees))\n", + "rec.set(dec_key, afwGeom.Angle(-42.1, units=afwGeom.degrees))\n", "rec.set(parent_key, 0)" ] }, @@ -294,7 +294,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Notice to set the ra and dec, we needed to create `afwGeom.Angle` objects for them. _These are in units of radians by default._ Additionally, we set the parent to zero. This means this record refers to the object before any deblending occoured. Lets look at our table now to see how it stands." + "Notice to set the ra and dec, we needed to create `afwGeom.Angle` objects for them. _These are in units of radians by default._ To explicitly tell the object we want it to be in units of degrees, we passed the `afwGeom.dgrees` object in as a keyword argument. You can find more information on `afwGeom.Angle`s [here]( http://doxygen.lsst.codes/stack/doxygen/x_masterDoxyDoc/classlsst_1_1geom_1_1_angle.html)\n", + "\n", + "Additionally, we set the parent to zero. This means this record refers to the object before any deblending occoured. Lets look at our table now to see how it stands." ] }, { @@ -310,7 +312,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will flesh out the parent column a bit more by adding our next record. Notice we can keep using the keys we defined above. Notice our second record's parent is listed as 1. This means the object 2 was the result of being deblended from object 1, i.e. object 2 is a child object of object 1." + "We will flesh out the parent column a bit more by adding our next record. Notice we can keep using the keys we defined above. Also notice our second record's parent is listed as 1. This means the object 2 was the result of being deblended from object 1, i.e. object 2 is a child object of object 1." ] }, { @@ -322,12 +324,19 @@ "rec = min_table.addNew()\n", "rec.set(id_key, 2)\n", "rec.set(r_mag_key, 18.5)\n", - "rec.set(ra_key, afwGeom.Angle(32.01))\n", - "rec.set(dec_key, afwGeom.Angle(42.5))\n", + "rec.set(ra_key, afwGeom.Angle(32.01, units=afwGeom.degrees))\n", + "rec.set(dec_key, afwGeom.Angle(42.5, units=afwGeom.degrees))\n", "rec.set(parent_key, 1)\n", "min_table" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One more caveat to note: in the output in the cell above, the table prints coordinates in radians by default" + ] + }, { "cell_type": "code", "execution_count": null, @@ -843,8 +852,10 @@ " newRec = truth_dm.addNew()\n", " newRec.set(id_key, record['galid'])\n", " newRec.set(r_mag_key, record['mag'])\n", - " newRec.set(ra_key, afwGeom.Angle(record['ra']*(np.pi/180.)))\n", - " newRec.set(dec_key, afwGeom.Angle(record['dec']*(np.pi/180.)))\n", + " newRec.set(ra_key, afwGeom.Angle(record['ra'], afwGeom.degrees))\n", + " newRec.set(dec_key, afwGeom.Angle(record['dec'], afwGeom.degrees))\n", + "# newRec.set(ra_key, afwGeom.Angle(record['ra']*(np.pi/180.)))\n", + "# newRec.set(dec_key, afwGeom.Angle(record['dec']*(np.pi/180.)))\n", "\n", "# this makes the table contiguous \n", "truth_dm = truth_dm.copy(deep=True)" @@ -937,7 +948,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We may expect to find about 30 matches or so. In order to match catalogs, we must provide a `MatchControl` instance. The `MatchControl` provides configurations for catalog matching. It has three 'switches' in the form of class attributes. they are defined as follows:\n", + "We may expect to find about 30 matches or so. In order to match catalogs, we must provide a `MatchControl` instance. The `MatchControl` provides configurations for catalog matching. It has three 'switches' in the form of class attributes. They are defined as follows:\n", "\n", "1. `findOnlyClosest`: True by default. If False, all other sources within a search radius are also matched \n", "2. `includeMismatches`: False by default. If False, sources with no match are not reported in the match catalog. If True, sources with no match are included in the match catalog with Null as their match\n", @@ -953,7 +964,7 @@ "# get a match control, we will keep the default configuration\n", "mc = afwTable.MatchControl()\n", "\n", - "# match our two catalogs\n", + "# match our two catalogs, setting the match threshold to be one arcsecond\n", "matches = afwTable.matchRaDec(truth_dm, src_twinkles, afwGeom.Angle(1,afwGeom.arcseconds), mc)" ] },