{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# afwTables: A Guided Tour\n",
" Owner(s): **Imran Hasan** ([@ih64](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@ih64))\n",
" Updated for DC2 by: Douglas Tucker ([@douglasleetucker](https://github.com/LSSTScienceCollaborations/StackClub/issues/new?body=@douglasleetucker))\n",
" Last Verified to Run: **2021-03-09**\n",
" Verified Stack Release: **21.0.0**\n",
"\n",
"Catalogs of astronomical objects and their many measurements will be a primary data product that LSST provides. 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",
"1. Make a bare bones afw schema and table;\n",
"2. Set and get values in a schema and table;\n",
"3. Navigate large schemas;\n",
"4. Read and write a source detection catalog table;\n",
"5. Learn to use source detection catalog methods, and to avoid common pitfalls;\n",
"6. Learn to use source match vectors.\n",
"\n",
"### Logistics\n",
"This notebook is intended to be runnable on `lsst-lsp-stable.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": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:48.434765Z",
"iopub.status.busy": "2021-04-23T20:35:48.431034Z",
"iopub.status.idle": "2021-04-23T20:35:50.297507Z",
"shell.execute_reply": "2021-04-23T20:35:50.298720Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/kadrlica/notebooks/.beavis/StackClub/Basics\r\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": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:50.309305Z",
"iopub.status.busy": "2021-04-23T20:35:50.307995Z",
"iopub.status.idle": "2021-04-23T20:35:50.337931Z",
"shell.execute_reply": "2021-04-23T20:35:50.338893Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:50.347413Z",
"iopub.status.busy": "2021-04-23T20:35:50.346201Z",
"iopub.status.idle": "2021-04-23T20:35:52.412095Z",
"shell.execute_reply": "2021-04-23T20:35:52.413266Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"nb-kadrlica-r21-0-0\r\n",
"lsst_distrib 21.0.0+973e4c9e85 \tcurrent v21_0_0 setup\r\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": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:52.424726Z",
"iopub.status.busy": "2021-04-23T20:35:52.423393Z",
"iopub.status.idle": "2021-04-23T20:35:52.784914Z",
"shell.execute_reply": "2021-04-23T20:35:52.783699Z"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"#%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",
"plt.style.use('seaborn-poster')\n",
"from IPython.display import IFrame, display, Markdown\n",
"plt.style.use('seaborn-talk')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:52.791056Z",
"iopub.status.busy": "2021-04-23T20:35:52.789801Z",
"iopub.status.idle": "2021-04-23T20:35:53.428066Z",
"shell.execute_reply": "2021-04-23T20:35:53.426666Z"
}
},
"outputs": [],
"source": [
"plt.style.use('seaborn-talk')\n",
"import lsst.daf.persistence as dafPersist\n",
"import lsst.daf.base as dafBase\n",
"import lsst.geom\n",
"import lsst.afw.table as afwTable\n",
"from astropy.io import ascii"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Your first table\n",
"\n",
"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"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.434804Z",
"iopub.status.busy": "2021-04-23T20:35:53.433317Z",
"iopub.status.idle": "2021-04-23T20:35:53.452341Z",
"shell.execute_reply": "2021-04-23T20:35:53.451323Z"
},
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"# 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()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.457648Z",
"iopub.status.busy": "2021-04-23T20:35:53.456446Z",
"iopub.status.idle": "2021-04-23T20:35:53.473758Z",
"shell.execute_reply": "2021-04-23T20:35:53.474775Z"
}
},
"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? Printing 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 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."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.480179Z",
"iopub.status.busy": "2021-04-23T20:35:53.478979Z",
"iopub.status.idle": "2021-04-23T20:35:53.499448Z",
"shell.execute_reply": "2021-04-23T20:35:53.500466Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'coord_dec', 'coord_ra', 'id', 'parent'}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"min_schema.getNames()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.505866Z",
"iopub.status.busy": "2021-04-23T20:35:53.504624Z",
"iopub.status.idle": "2021-04-23T20:35:53.520283Z",
"shell.execute_reply": "2021-04-23T20:35:53.521378Z"
}
},
"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": [
"You can also ask for a ordered list of names. In this case where our schema contains only 4 names, there is not a clear advantage. However, we will soon encounter schemas that contain many dozens of names. Sifting through a ordered list of these may be preferable. The ordering here is not alphabetical, but instead mirrors the ordering of these fields in the schema. You can check that is the case by comparing the ordering of output in the next cell to the one above"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.526577Z",
"iopub.status.busy": "2021-04-23T20:35:53.525287Z",
"iopub.status.idle": "2021-04-23T20:35:53.540896Z",
"shell.execute_reply": "2021-04-23T20:35:53.539904Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['id', 'coord_ra', 'coord_dec', 'parent', 'r_mag']"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"min_schema.getOrderedNames()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> 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"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.545920Z",
"iopub.status.busy": "2021-04-23T20:35:53.544695Z",
"iopub.status.idle": "2021-04-23T20:35:53.559334Z",
"shell.execute_reply": "2021-04-23T20:35:53.558415Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"our minimal table has 0 rows\n"
]
}
],
"source": [
"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 themselves contain data. Therefore, we must first create records, and hand those records over in turn to our Table. 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": 12,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.563813Z",
"iopub.status.busy": "2021-04-23T20:35:53.562697Z",
"iopub.status.idle": "2021-04-23T20:35:53.575626Z",
"shell.execute_reply": "2021-04-23T20:35:53.576551Z"
}
},
"outputs": [],
"source": [
"# make a new record.\n",
"rec = min_table.addNew()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.581967Z",
"iopub.status.busy": "2021-04-23T20:35:53.580870Z",
"iopub.status.idle": "2021-04-23T20:35:53.613226Z",
"shell.execute_reply": "2021-04-23T20:35:53.614432Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['id', 'coord_ra', 'coord_dec', 'parent', 'r_mag'])"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# grab a hold of the keys for the record. We will use these to add data \n",
"field_dict = min_schema.extract('*') #this returns a dictionary of all the fields\n",
"field_dict.keys()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.622748Z",
"iopub.status.busy": "2021-04-23T20:35:53.621416Z",
"iopub.status.idle": "2021-04-23T20:35:53.643844Z",
"shell.execute_reply": "2021-04-23T20:35:53.642645Z"
}
},
"outputs": [],
"source": [
"# 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 to be confused with python dictionary keys.\n",
"id_key = field_dict['id'].key\n",
"ra_key = field_dict['coord_ra'].key\n",
"dec_key = field_dict['coord_dec'].key\n",
"parent_key = field_dict['parent'].key\n",
"r_mag_key = field_dict['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, lsst.geom.Angle(.2, units=lsst.geom.radians))\n",
"rec.set(dec_key, lsst.geom.Angle(-3.14, units=lsst.geom.radians))\n",
"rec.set(parent_key, 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice to set the ra and dec, we needed to create `geom.Angle` objects for them. The object contains both the value of the angle, and the units the angle is in. The units keyword is set to radians by default, and all the DM code works on radians internally. To keep consistency with this, it is largely considered good pratice to work in radians too, setting the keyword for clarity. \n",
"\n",
"If you insisted that the angle be in other units, you can set them using the the units keyword. Other typical choices are degrees, arcminutes, arcseconds. You can learn more about `lsst.geom.Angle` objects [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."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.649306Z",
"iopub.status.busy": "2021-04-23T20:35:53.648127Z",
"iopub.status.idle": "2021-04-23T20:35:53.670852Z",
"shell.execute_reply": "2021-04-23T20:35:53.669679Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" id coord_ra coord_dec parent r_mag\n",
" rad rad mag \n",
"--- -------- --------- ------ -----\n",
" 1 0.2 -3.14 0 19.0"
]
},
"execution_count": 1,
"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. 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."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.677109Z",
"iopub.status.busy": "2021-04-23T20:35:53.675920Z",
"iopub.status.idle": "2021-04-23T20:35:53.699266Z",
"shell.execute_reply": "2021-04-23T20:35:53.698017Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" id coord_ra coord_dec parent r_mag\n",
" rad rad mag \n",
"--- -------- --------- ------ -----\n",
" 1 0.2 -3.14 0 19.0\n",
" 2 3.14 2.0 1 18.5"
]
},
"execution_count": 1,
"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, lsst.geom.Angle(3.14, units=lsst.geom.radians))\n",
"rec.set(dec_key, lsst.geom.Angle(2.0, units=lsst.geom.radians))\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": 17,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.704698Z",
"iopub.status.busy": "2021-04-23T20:35:53.703288Z",
"iopub.status.idle": "2021-04-23T20:35:53.719736Z",
"shell.execute_reply": "2021-04-23T20:35:53.718692Z"
}
},
"outputs": [],
"source": [
"# your turn. add one more record to our table\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.724431Z",
"iopub.status.busy": "2021-04-23T20:35:53.723253Z",
"iopub.status.idle": "2021-04-23T20:35:53.740031Z",
"shell.execute_reply": "2021-04-23T20:35:53.738989Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"id: 2\n",
"coord_ra: 3.14 rad\n",
"coord_dec: 2 rad\n",
"parent: 1\n",
"r_mag: 18.5"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# now that we have multiple records in our table, we can select particular ones\n",
"# tables support indexing\n",
"min_table[1]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.744775Z",
"iopub.status.busy": "2021-04-23T20:35:53.743578Z",
"iopub.status.idle": "2021-04-23T20:35:53.759282Z",
"shell.execute_reply": "2021-04-23T20:35:53.758318Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"2\n"
]
}
],
"source": [
"# you may iterate over them too\n",
"for rec in min_table:\n",
" print(rec.get(id_key))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.763634Z",
"iopub.status.busy": "2021-04-23T20:35:53.762532Z",
"iopub.status.idle": "2021-04-23T20:35:53.777068Z",
"shell.execute_reply": "2021-04-23T20:35:53.778004Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# you can grab values from particular records by using our schema 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 produced from the Data Management Stack 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 use 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 has its own tutorial(s), 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.\n",
"\n",
"Currently, we have examples from the HSC Twinkles data set (HSC) and from the DESC DC2 data set (DC2). Uncomment the `dataset` you wish to use."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:53.784135Z",
"iopub.status.busy": "2021-04-23T20:35:53.782990Z",
"iopub.status.idle": "2021-04-23T20:35:55.397852Z",
"shell.execute_reply": "2021-04-23T20:35:55.396495Z"
}
},
"outputs": [],
"source": [
"#dataset='HSC'\n",
"dataset='DC2'\n",
"\n",
"# Temporary \"fix\" so one does not need to restart kernel \n",
"# when switching from DC2 to HSC...\n",
"# See also: https://lsstc.slack.com/archives/C3UCAEW3D/p1584386779038000\n",
"#import lsst.afw.image as afwImage\n",
"#print(afwImage.Filter.getNames())\n",
"#afwImage.Filter.reset()\n",
"import lsst.obs.base as obsBase\n",
"obsBase.FilterDefinitionCollection.reset()\n",
"#print(afwImage.Filter.getNames())\n",
"\n",
"\n",
"if dataset == 'HSC':\n",
" # The HSC RC gen2 repository\n",
" \n",
" # The direct path to the file we first want to investigate\n",
" file_path = '/datasets/hsc/repo/rerun/RC/v20_0_0_rc1/DM-25349-sfm/01327/HSC-Z/output/SRC-0038938-032.fits'\n",
"\n",
" # The data directory containing some HSC data organized as Butler expects\n",
" datadir = \"/datasets/hsc/repo/rerun/RC/v20_0_0_rc1/DM-25349/\" \n",
"\n",
" # Define a dictionary with the filter, ccd, and visit we wish to view\n",
" dataId = {'filter': 'HSC-Z', 'ccd': 32, 'visit': 38938} \n",
" \n",
" \n",
"elif dataset == 'DC2':\n",
" # The DC2 calexp gen2 repository\n",
"\n",
" # The data directory containing some DC2 data organized as Butler expects\n",
" datadir = '/datasets/DC2/DR6/Run2.2i/patched/2021-02-10/rerun/run2.2i-calexp-v1/'\n",
" \n",
" # The direct path to the file we first want to investigate\n",
" file_path = datadir + 'src/00512055-i/R20/src_00512055-i-R20-S11-det076.fits'\n",
"\n",
" # Define a dictionary with the filter, ccd, and visit we wish to view\n",
" dataId = {'filter':'i', 'visit': 512055, 'raftName': 'R20', 'detector': 76}\n",
" \n",
" \n",
"else:\n",
" msg = \"Unrecognized dataset: %s\"%dataset\n",
" raise Exception(msg)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:55.405661Z",
"iopub.status.busy": "2021-04-23T20:35:55.404356Z",
"iopub.status.idle": "2021-04-23T20:35:55.547318Z",
"shell.execute_reply": "2021-04-23T20:35:55.546042Z"
}
},
"outputs": [],
"source": [
"# Accessing the afwTable source catalog by directly pointing to the appropriate file...\n",
"source_cat = afwTable.SourceCatalog.readFits(file_path)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:35:55.553940Z",
"iopub.status.busy": "2021-04-23T20:35:55.552476Z",
"iopub.status.idle": "2021-04-23T20:36:00.392364Z",
"shell.execute_reply": "2021-04-23T20:36:00.391009Z"
}
},
"outputs": [],
"source": [
"# here's the way to get the same catalog with a butler: \n",
"butler = dafPersist.Butler(datadir)\n",
"\n",
"# use the dataId and the 'src' to get the source catalog. \n",
"source_cat = butler.get('src', **dataId)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can find the path to the file again with the `butler.getURI` function"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.399163Z",
"iopub.status.busy": "2021-04-23T20:36:00.397837Z",
"iopub.status.idle": "2021-04-23T20:36:00.435317Z",
"shell.execute_reply": "2021-04-23T20:36:00.436541Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'/datasets/DC2/DR6/Run2.2i/patched/2021-02-10/rerun/run2.2i-calexp-v1/src/00512055-i/R20/src_00512055-i-R20-S11-det076.fits'"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"butler.getUri('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 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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### afw source catalog schemas"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.442617Z",
"iopub.status.busy": "2021-04-23T20:36:00.441168Z",
"iopub.status.idle": "2021-04-23T20:36:00.473392Z",
"shell.execute_reply": "2021-04-23T20:36:00.474502Z"
}
},
"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_psf_candidate\", 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_psf_used\", 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_psf_instFlux\", doc=\"If deblended-as-psf, the instrumental PSF flux\", units=\"count\"), 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_NaiveCentroid_x\", doc=\"centroid from Naive Centroid algorithm\", units=\"pixel\"), Key(offset=72, nElements=1)),\n",
" (Field['D'](name=\"base_NaiveCentroid_y\", doc=\"centroid from Naive Centroid algorithm\", units=\"pixel\"), Key(offset=80, nElements=1)),\n",
" (Field['Flag'](name=\"base_NaiveCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=12)),\n",
" (Field['Flag'](name=\"base_NaiveCentroid_flag_noCounts\", doc=\"Object to be centroided has no counts\"), Key['Flag'](offset=32, bit=13)),\n",
" (Field['Flag'](name=\"base_NaiveCentroid_flag_edge\", doc=\"Object too close to edge\"), Key['Flag'](offset=32, bit=14)),\n",
" (Field['Flag'](name=\"base_NaiveCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=15)),\n",
" (Field['D'](name=\"base_SdssCentroid_x\", doc=\"centroid from Sdss Centroid algorithm\", units=\"pixel\"), Key(offset=88, nElements=1)),\n",
" (Field['D'](name=\"base_SdssCentroid_y\", doc=\"centroid from Sdss Centroid algorithm\", units=\"pixel\"), Key(offset=96, nElements=1)),\n",
" (Field['F'](name=\"base_SdssCentroid_xErr\", doc=\"1-sigma uncertainty on x position\", units=\"pixel\"), Key(offset=104, nElements=1)),\n",
" (Field['F'](name=\"base_SdssCentroid_yErr\", doc=\"1-sigma uncertainty on y position\", units=\"pixel\"), Key(offset=108, nElements=1)),\n",
" (Field['Flag'](name=\"base_SdssCentroid_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=16)),\n",
" (Field['Flag'](name=\"base_SdssCentroid_flag_edge\", doc=\"Object too close to edge\"), Key['Flag'](offset=32, bit=17)),\n",
" (Field['Flag'](name=\"base_SdssCentroid_flag_noSecondDerivative\", doc=\"Vanishing second derivative\"), Key['Flag'](offset=32, bit=18)),\n",
" (Field['Flag'](name=\"base_SdssCentroid_flag_almostNoSecondDerivative\", doc=\"Almost vanishing second derivative\"), Key['Flag'](offset=32, bit=19)),\n",
" (Field['Flag'](name=\"base_SdssCentroid_flag_notAtMaximum\", doc=\"Object is not at a maximum\"), Key['Flag'](offset=32, bit=20)),\n",
" (Field['Flag'](name=\"base_SdssCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\"), Key['Flag'](offset=32, bit=21)),\n",
" (Field['Flag'](name=\"base_SdssCentroid_flag_badError\", doc=\"Error on x and/or y position is NaN\"), Key['Flag'](offset=32, bit=22)),\n",
" (Field['D'](name=\"base_Blendedness_old\", doc=\"Blendedness from dot products: (child.dot(parent)/child.dot(child) - 1)\"), Key(offset=112, nElements=1)),\n",
" (Field['D'](name=\"base_Blendedness_raw\", doc=\"Measure of how much the flux is affected by neighbors: (1 - child_instFlux/parent_instFlux). Operates on the \"raw\" pixel values.\"), Key(offset=120, nElements=1)),\n",
" (Field['D'](name=\"base_Blendedness_raw_child_instFlux\", doc=\"Instrumental flux of the child, measured with a Gaussian weight matched to the child. Operates on the \"raw\" pixel values.\", units=\"count\"), Key(offset=128, nElements=1)),\n",
" (Field['D'](name=\"base_Blendedness_raw_parent_instFlux\", doc=\"Instrumental flux of the parent, measured with a Gaussian weight matched to the child. Operates on the \"raw\" pixel values.\", units=\"count\"), Key(offset=136, nElements=1)),\n",
" (Field['D'](name=\"base_Blendedness_abs\", doc=\"Measure of how much the flux is affected by neighbors: (1 - child_instFlux/parent_instFlux). Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\"), Key(offset=144, nElements=1)),\n",
" (Field['D'](name=\"base_Blendedness_abs_child_instFlux\", doc=\"Instrumental flux of the child, measured with a Gaussian weight matched to the child. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"count\"), Key(offset=152, nElements=1)),\n",
" (Field['D'](name=\"base_Blendedness_abs_parent_instFlux\", doc=\"Instrumental flux of the parent, measured with a Gaussian weight matched to the child. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"count\"), Key(offset=160, 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. Operates on the \"raw\" pixel values.\", units=\"pixel^2\"), Key(offset=168, 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. Operates on the \"raw\" pixel values.\", units=\"pixel^2\"), Key(offset=176, 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. Operates on the \"raw\" pixel values.\", units=\"pixel^2\"), Key(offset=184, 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. Operates on the \"raw\" pixel values.\", units=\"pixel^2\"), Key(offset=192, 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. Operates on the \"raw\" pixel values.\", units=\"pixel^2\"), Key(offset=200, 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. Operates on the \"raw\" pixel values.\", units=\"pixel^2\"), Key(offset=208, 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. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"pixel^2\"), Key(offset=216, 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. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"pixel^2\"), Key(offset=224, 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. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"pixel^2\"), Key(offset=232, 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. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"pixel^2\"), Key(offset=240, 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. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"pixel^2\"), Key(offset=248, 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. Operates on the absolute value of the pixels to try to obtain a \"de-noised\" value. See section 4.9.11 of Bosch et al. 2018, PASJ, 70, S5 for details.\", units=\"pixel^2\"), Key(offset=256, nElements=1)),\n",
" (Field['Flag'](name=\"base_Blendedness_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=23)),\n",
" (Field['Flag'](name=\"base_Blendedness_flag_noCentroid\", doc=\"Object has no centroid\"), Key['Flag'](offset=32, bit=24)),\n",
" (Field['Flag'](name=\"base_Blendedness_flag_noShape\", doc=\"Object has no shape\"), Key['Flag'](offset=32, bit=25)),\n",
" (Field['D'](name=\"base_FPPosition_x\", doc=\"Position on the focal plane\", units=\"mm\"), Key(offset=264, nElements=1)),\n",
" (Field['D'](name=\"base_FPPosition_y\", doc=\"Position on the focal plane\", units=\"mm\"), Key(offset=272, nElements=1)),\n",
" (Field['Flag'](name=\"base_FPPosition_flag\", doc=\"Set to True for any fatal failure\"), Key['Flag'](offset=32, bit=26)),\n",
" (Field['Flag'](name=\"base_FPPosition_missingDetector_flag\", doc=\"Set to True if detector object is missing\"), Key['Flag'](offset=32, bit=27)),\n",
" (Field['D'](name=\"base_Jacobian_value\", doc=\"Jacobian correction\"), Key(offset=280, nElements=1)),\n",
" (Field['Flag'](name=\"base_Jacobian_flag\", doc=\"Set to 1 for any fatal failure\"), Key['Flag'](offset=32, bit=28)),\n",
" (Field['D'](name=\"base_SdssShape_xx\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=288, nElements=1)),\n",
" (Field['D'](name=\"base_SdssShape_yy\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=296, nElements=1)),\n",
" (Field['D'](name=\"base_SdssShape_xy\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel^2\"), Key(offset=304, nElements=1)),\n",
" (Field['F'](name=\"base_SdssShape_xxErr\", doc=\"Standard deviation of xx moment\", units=\"pixel^2\"), Key(offset=312, nElements=1)),\n",
" (Field['F'](name=\"base_SdssShape_yyErr\", doc=\"Standard deviation of yy moment\", units=\"pixel^2\"), Key(offset=316, nElements=1)),\n",
" (Field['F'](name=\"base_SdssShape_xyErr\", doc=\"Standard deviation of xy moment\", units=\"pixel^2\"), Key(offset=320, nElements=1)),\n",
" (Field['D'](name=\"base_SdssShape_x\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel\"), Key(offset=328, nElements=1)),\n",
" (Field['D'](name=\"base_SdssShape_y\", doc=\"elliptical Gaussian adaptive moments\", units=\"pixel\"), Key(offset=336, nElements=1)),\n",
" (Field['D'](name=\"base_SdssShape_instFlux\", doc=\"elliptical Gaussian adaptive moments\", units=\"count\"), Key(offset=344, nElements=1)),\n",
" (Field['D'](name=\"base_SdssShape_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=352, 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=360, 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=368, 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=376, nElements=1)),\n",
" (Field['F'](name=\"base_SdssShape_instFlux_xx_Cov\", doc=\"uncertainty covariance between base_SdssShape_instFlux and base_SdssShape_xx\", units=\"count*pixel^2\"), Key(offset=384, nElements=1)),\n",
" (Field['F'](name=\"base_SdssShape_instFlux_yy_Cov\", doc=\"uncertainty covariance between base_SdssShape_instFlux and base_SdssShape_yy\", units=\"count*pixel^2\"), Key(offset=388, nElements=1)),\n",
" (Field['F'](name=\"base_SdssShape_instFlux_xy_Cov\", doc=\"uncertainty covariance between base_SdssShape_instFlux and base_SdssShape_xy\", units=\"count*pixel^2\"), Key(offset=392, nElements=1)),\n",
" (Field['Flag'](name=\"base_SdssShape_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=29)),\n",
" (Field['Flag'](name=\"base_SdssShape_flag_unweightedBad\", doc=\"Both weighted and unweighted moments were invalid\"), Key['Flag'](offset=32, bit=30)),\n",
" (Field['Flag'](name=\"base_SdssShape_flag_unweighted\", doc=\"Weighted moments converged to an invalid value; using unweighted moments\"), Key['Flag'](offset=32, bit=31)),\n",
" (Field['Flag'](name=\"base_SdssShape_flag_shift\", doc=\"centroid shifted by more than the maximum allowed amount\"), Key['Flag'](offset=32, bit=32)),\n",
" (Field['Flag'](name=\"base_SdssShape_flag_maxIter\", doc=\"Too many iterations in adaptive moments\"), Key['Flag'](offset=32, bit=33)),\n",
" (Field['Flag'](name=\"base_SdssShape_flag_psf\", doc=\"Failure in measuring PSF model shape\"), Key['Flag'](offset=32, bit=34)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=400, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=408, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=416, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=424, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=432, nElements=1)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=35)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=36)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=37)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=38)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_e1\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=440, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_e2\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=448, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_sigma\", doc=\"PSF-corrected shear using Hirata & Seljak (2003) ''regaussianization\"), Key(offset=456, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmShapeRegauss_resolution\", doc=\"resolution factor (0=unresolved, 1=resolved)\"), Key(offset=464, nElements=1)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=39)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=40)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=41)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=42)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmShapeRegauss_flag_galsim\", doc=\"GalSim failure\"), Key['Flag'](offset=32, bit=43)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=472, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=480, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=488, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=496, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMoments_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=504, nElements=1)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=44)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=45)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=46)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMoments_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=47)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_x\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=512, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_y\", doc=\"HSM Centroid\", units=\"pixel\"), Key(offset=520, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_xx\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=528, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_yy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=536, nElements=1)),\n",
" (Field['D'](name=\"ext_shapeHSM_HsmSourceMomentsRound_xy\", doc=\"HSM moments\", units=\"pixel^2\"), Key(offset=544, nElements=1)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=32, bit=48)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_no_pixels\", doc=\"no pixels to measure\"), Key['Flag'](offset=32, bit=49)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_not_contained\", doc=\"center not contained in footprint bounding box\"), Key['Flag'](offset=32, bit=50)),\n",
" (Field['Flag'](name=\"ext_shapeHSM_HsmSourceMomentsRound_flag_parent_source\", doc=\"parent source, ignored\"), Key['Flag'](offset=32, bit=51)),\n",
" (Field['F'](name=\"ext_shapeHSM_HsmSourceMomentsRound_Flux\", doc=\"HSM flux\"), Key(offset=552, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_3_0_instFlux\", doc=\"instFlux within 3.000000-pixel aperture\", units=\"count\"), Key(offset=560, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_3_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=568, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=52)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_3_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=53)),\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=54)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_4_5_instFlux\", doc=\"instFlux within 4.500000-pixel aperture\", units=\"count\"), Key(offset=576, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_4_5_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=584, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=55)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_4_5_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=56)),\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=57)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_6_0_instFlux\", doc=\"instFlux within 6.000000-pixel aperture\", units=\"count\"), Key(offset=592, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_6_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=600, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=58)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_6_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=59)),\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=60)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_9_0_instFlux\", doc=\"instFlux within 9.000000-pixel aperture\", units=\"count\"), Key(offset=608, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_9_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=616, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=32, bit=61)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_9_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=32, bit=62)),\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=63)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_12_0_instFlux\", doc=\"instFlux within 12.000000-pixel aperture\", units=\"count\"), Key(offset=624, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_12_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=632, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=0)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=640, bit=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated\", doc=\"full sinc coefficient image did not fit within measurement image\"), Key['Flag'](offset=640, bit=2)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_17_0_instFlux\", doc=\"instFlux within 17.000000-pixel aperture\", units=\"count\"), Key(offset=648, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_17_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=656, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_17_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=3)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_17_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=640, bit=4)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_25_0_instFlux\", doc=\"instFlux within 25.000000-pixel aperture\", units=\"count\"), Key(offset=664, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_25_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=672, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_25_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=5)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_25_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=640, bit=6)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_35_0_instFlux\", doc=\"instFlux within 35.000000-pixel aperture\", units=\"count\"), Key(offset=680, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_35_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=688, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_35_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=7)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_35_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=640, bit=8)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_50_0_instFlux\", doc=\"instFlux within 50.000000-pixel aperture\", units=\"count\"), Key(offset=696, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_50_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=704, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_50_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=9)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_50_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=640, bit=10)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_70_0_instFlux\", doc=\"instFlux within 70.000000-pixel aperture\", units=\"count\"), Key(offset=712, nElements=1)),\n",
" (Field['D'](name=\"base_CircularApertureFlux_70_0_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=720, nElements=1)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_70_0_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=11)),\n",
" (Field['Flag'](name=\"base_CircularApertureFlux_70_0_flag_apertureTruncated\", doc=\"aperture did not fit within measurement image\"), Key['Flag'](offset=640, bit=12)),\n",
" (Field['D'](name=\"base_GaussianFlux_instFlux\", doc=\"instFlux from Gaussian Flux algorithm\", units=\"count\"), Key(offset=728, nElements=1)),\n",
" (Field['D'](name=\"base_GaussianFlux_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=736, nElements=1)),\n",
" (Field['Flag'](name=\"base_GaussianFlux_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=13)),\n",
" (Field['D'](name=\"base_LocalBackground_instFlux\", doc=\"background in annulus around source\", units=\"count\"), Key(offset=744, nElements=1)),\n",
" (Field['D'](name=\"base_LocalBackground_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=752, nElements=1)),\n",
" (Field['Flag'](name=\"base_LocalBackground_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=14)),\n",
" (Field['Flag'](name=\"base_LocalBackground_flag_noGoodPixels\", doc=\"no good pixels in the annulus\"), Key['Flag'](offset=640, bit=15)),\n",
" (Field['Flag'](name=\"base_LocalBackground_flag_noPsf\", doc=\"no PSF provided\"), Key['Flag'](offset=640, bit=16)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag\", doc=\"General failure flag, set if anything went wrong\"), Key['Flag'](offset=640, bit=17)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_offimage\", doc=\"Source center is off image\"), Key['Flag'](offset=640, bit=18)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_edge\", doc=\"Source is outside usable exposure region (masked EDGE or NO_DATA)\"), Key['Flag'](offset=640, bit=19)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_interpolated\", doc=\"Interpolated pixel in the Source footprint\"), Key['Flag'](offset=640, bit=20)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_saturated\", doc=\"Saturated pixel in the Source footprint\"), Key['Flag'](offset=640, bit=21)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_cr\", doc=\"Cosmic ray in the Source footprint\"), Key['Flag'](offset=640, bit=22)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_bad\", doc=\"Bad pixel in the Source footprint\"), Key['Flag'](offset=640, bit=23)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_suspect\", doc=\"Source''s footprint includes suspect pixels\"), Key['Flag'](offset=640, bit=24)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_interpolatedCenter\", doc=\"Interpolated pixel in the Source center\"), Key['Flag'](offset=640, bit=25)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_saturatedCenter\", doc=\"Saturated pixel in the Source center\"), Key['Flag'](offset=640, bit=26)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_crCenter\", doc=\"Cosmic ray in the Source center\"), Key['Flag'](offset=640, bit=27)),\n",
" (Field['Flag'](name=\"base_PixelFlags_flag_suspectCenter\", doc=\"Source''s center is close to suspect pixels\"), Key['Flag'](offset=640, bit=28)),\n",
" (Field['D'](name=\"base_PsfFlux_instFlux\", doc=\"instFlux derived from linear least-squares fit of PSF model\", units=\"count\"), Key(offset=760, nElements=1)),\n",
" (Field['D'](name=\"base_PsfFlux_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=768, nElements=1)),\n",
" (Field['F'](name=\"base_PsfFlux_area\", doc=\"effective area of PSF\", units=\"pixel\"), Key(offset=776, nElements=1)),\n",
" (Field['Flag'](name=\"base_PsfFlux_flag\", doc=\"General Failure Flag\"), Key['Flag'](offset=640, bit=29)),\n",
" (Field['Flag'](name=\"base_PsfFlux_flag_noGoodPixels\", doc=\"not enough non-rejected pixels in data to attempt the fit\"), Key['Flag'](offset=640, bit=30)),\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=640, bit=31)),\n",
" (Field['Flag'](name=\"base_Variance_flag\", doc=\"Set for any fatal failure\"), Key['Flag'](offset=640, bit=32)),\n",
" (Field['D'](name=\"base_Variance_value\", doc=\"Variance at object position\"), Key(offset=784, nElements=1)),\n",
" (Field['Flag'](name=\"base_Variance_flag_emptyFootprint\", doc=\"Set to True when the footprint has no usable pixels\"), Key['Flag'](offset=640, bit=33)),\n",
" (Field['D'](name=\"ext_photometryKron_KronFlux_instFlux\", doc=\"flux from Kron Flux algorithm\", units=\"count\"), Key(offset=792, nElements=1)),\n",
" (Field['D'](name=\"ext_photometryKron_KronFlux_instFluxErr\", doc=\"1-sigma instFlux uncertainty\", units=\"count\"), Key(offset=800, nElements=1)),\n",
" (Field['F'](name=\"ext_photometryKron_KronFlux_radius\", doc=\"Kron radius (sqrt(a*b))\"), Key(offset=808, nElements=1)),\n",
" (Field['F'](name=\"ext_photometryKron_KronFlux_radius_for_radius\", doc=\"radius used to estimate (sqrt(a*b))\"), Key(offset=812, nElements=1)),\n",
" (Field['F'](name=\"ext_photometryKron_KronFlux_psf_radius\", doc=\"Radius of PSF\"), Key(offset=816, nElements=1)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag\", doc=\"general failure flag, set if anything went wrong\"), Key['Flag'](offset=640, bit=34)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_edge\", doc=\"bad measurement due to image edge\"), Key['Flag'](offset=640, bit=35)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_shape_no_psf\", doc=\"bad shape and no PSF\"), Key['Flag'](offset=640, bit=36)),\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=640, bit=37)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_no_fallback_radius\", doc=\"no minimum radius and no PSF provided\"), Key['Flag'](offset=640, bit=38)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_radius\", doc=\"bad Kron radius\"), Key['Flag'](offset=640, bit=39)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_used_minimum_radius\", doc=\"used the minimum radius for the Kron aperture\"), Key['Flag'](offset=640, bit=40)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_used_psf_radius\", doc=\"used the PSF Kron radius for the Kron aperture\"), Key['Flag'](offset=640, bit=41)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_small_radius\", doc=\"measured Kron radius was smaller than that of the PSF\"), Key['Flag'](offset=640, bit=42)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_bad_shape\", doc=\"shape for measuring Kron radius is bad; used PSF shape\"), Key['Flag'](offset=640, bit=43)),\n",
" (Field['D'](name=\"base_GaussianFlux_apCorr\", doc=\"aperture correction applied to base_GaussianFlux\"), Key(offset=824, nElements=1)),\n",
" (Field['D'](name=\"base_GaussianFlux_apCorrErr\", doc=\"standard deviation of aperture correction applied to base_GaussianFlux\"), Key(offset=832, nElements=1)),\n",
" (Field['Flag'](name=\"base_GaussianFlux_flag_apCorr\", doc=\"set if unable to aperture correct base_GaussianFlux\"), Key['Flag'](offset=640, bit=44)),\n",
" (Field['D'](name=\"base_PsfFlux_apCorr\", doc=\"aperture correction applied to base_PsfFlux\"), Key(offset=840, nElements=1)),\n",
" (Field['D'](name=\"base_PsfFlux_apCorrErr\", doc=\"standard deviation of aperture correction applied to base_PsfFlux\"), Key(offset=848, nElements=1)),\n",
" (Field['Flag'](name=\"base_PsfFlux_flag_apCorr\", doc=\"set if unable to aperture correct base_PsfFlux\"), Key['Flag'](offset=640, bit=45)),\n",
" (Field['D'](name=\"ext_photometryKron_KronFlux_apCorr\", doc=\"aperture correction applied to ext_photometryKron_KronFlux\"), Key(offset=856, nElements=1)),\n",
" (Field['D'](name=\"ext_photometryKron_KronFlux_apCorrErr\", doc=\"standard deviation of aperture correction applied to ext_photometryKron_KronFlux\"), Key(offset=864, nElements=1)),\n",
" (Field['Flag'](name=\"ext_photometryKron_KronFlux_flag_apCorr\", doc=\"set if unable to aperture correct ext_photometryKron_KronFlux\"), Key['Flag'](offset=640, bit=46)),\n",
" (Field['D'](name=\"base_ClassificationExtendedness_value\", doc=\"Set to 1 for extended sources, 0 for point sources.\"), Key(offset=872, nElements=1)),\n",
" (Field['Flag'](name=\"base_ClassificationExtendedness_flag\", doc=\"Set to 1 for any fatal failure.\"), Key['Flag'](offset=640, bit=47)),\n",
" (Field['I'](name=\"base_FootprintArea_value\", doc=\"Number of pixels in the source''s detection footprint.\", units=\"pixel\"), Key(offset=880, nElements=1)),\n",
" (Field['Flag'](name=\"calib_astrometry_used\", doc=\"set if source was used in astrometric calibration\"), Key['Flag'](offset=640, bit=48)),\n",
" (Field['Flag'](name=\"calib_photometry_used\", doc=\"set if source was used in photometric calibration\"), Key['Flag'](offset=640, bit=49)),\n",
" (Field['Flag'](name=\"calib_photometry_reserved\", doc=\"set if source was reserved from photometric calibration\"), Key['Flag'](offset=640, bit=50)),\n",
" (Field['D'](name=\"base_localPhotoCalib\", doc=\"Local approximation of the PhotoCalib calibration factor at the location of the src.\"), Key(offset=888, nElements=1)),\n",
" (Field['D'](name=\"base_localPhotoCalibErr\", doc=\"Error on the local approximation of the PhotoCalib calibration factor at the location of the src.\"), Key(offset=896, nElements=1)),\n",
" (Field['D'](name=\"base_CDMatrix_1_1\", doc=\"(1, 1) element of the CDMatrix for the linear approximation of the WCS at the src location.\"), Key(offset=904, nElements=1)),\n",
" (Field['D'](name=\"base_CDMatrix_1_2\", doc=\"(1, 2) element of the CDMatrix for the linear approximation of the WCS at the src location.\"), Key(offset=912, nElements=1)),\n",
" (Field['D'](name=\"base_CDMatrix_2_1\", doc=\"(2, 1) element of the CDMatrix for the linear approximation of the WCS at the src location.\"), Key(offset=920, nElements=1)),\n",
" (Field['D'](name=\"base_CDMatrix_2_2\", doc=\"(2, 2) element of the CDMatrix for the linear approximation of the WCS at the src location.\"), Key(offset=928, nElements=1)),\n",
" 'base_CircularApertureFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n",
" 'base_GaussianFlux_flag_badCentroid'->'base_SdssCentroid_flag'\n",
" 'base_GaussianFlux_flag_badShape'->'ext_shapeHSM_HsmSourceMoments_flag'\n",
" 'base_LocalBackground_flag_badCentroid'->'base_SdssCentroid_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_GaussianFlux'->'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": 1,
"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 large if many measurement algorithms used. Several algorithms are a part of the base measurement process, like aperture photometry, SDSS shape and centroid measurements. Other measurements are associated with previous calibration steps, like identifying sources to be candidates for PSF modeling. If deblending was run, several outputs from the process are stored in the table as well. Other measurement processess, like shape measurement processes, are considered extensions. All of these measurements often have many fields and analagous flag fields associated with them. To get a list of names of these high level processes only, we can provide the `topOnly=True` keyword arguement to the `getNames` method we met earlier in the tutorial."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.479745Z",
"iopub.status.busy": "2021-04-23T20:36:00.478430Z",
"iopub.status.idle": "2021-04-23T20:36:00.506183Z",
"shell.execute_reply": "2021-04-23T20:36:00.507403Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'base', 'calib', 'coord', 'deblend', 'ext', 'id', 'parent'}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source_cat.getSchema().getNames(topOnly=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, this may be too vague. For example, if you ran KSB and HSM shape measurement, both will be lumped into the 'ext' catagory in the output above, but you may wish to search the schema for one in particular. 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. "
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.513198Z",
"iopub.status.busy": "2021-04-23T20:36:00.511762Z",
"iopub.status.idle": "2021-04-23T20:36:00.549154Z",
"shell.execute_reply": "2021-04-23T20:36:00.550377Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'ext_shapeHSM_HsmPsfMoments_flag_badCentroid': SchemaItem(key=Key['Flag'](offset=32, bit=16), 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=17), 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=18), 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=19), 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=20), 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=21), field=Field['Flag'](name=\"base_SdssCentroid_flag_resetToPeak\", doc=\"set if CentroidChecker reset the centroid\")),\n",
" 'ext_shapeHSM_HsmPsfMoments_flag_badCentroid_badError': SchemaItem(key=Key['Flag'](offset=32, bit=22), field=Field['Flag'](name=\"base_SdssCentroid_flag_badError\", doc=\"Error on x and/or y position is NaN\")),\n",
" 'ext_shapeHSM_HsmPsfMoments_x': SchemaItem(key=Key(offset=400, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_x\", doc=\"HSM Centroid\", units=\"pixel\")),\n",
" 'ext_shapeHSM_HsmPsfMoments_y': SchemaItem(key=Key(offset=408, nElements=1), field=Field['D'](name=\"ext_shapeHSM_HsmPsfMoments_y\", doc=\"HSM Centroid\", units=\"pixel\")),\n",
" 'ext_shapeHSM_HsmPsfMoments_xx': SchemaItem(key=Key(offset=416, 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=424, 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=432, 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=35), 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=36), 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=37), 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=38), field=Field['Flag'](name=\"ext_shapeHSM_HsmPsfMoments_flag_parent_source\", doc=\"parent source, ignored\"))}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source_cat.getSchema().extract('*HSM*Psf*')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Schemas in source catalogs include fields for measurements, and the associated flag fields for those measurements. To tally how many fields, flag fields, and non-flag fields are contained, we can use several count methods."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.556957Z",
"iopub.status.busy": "2021-04-23T20:36:00.555478Z",
"iopub.status.idle": "2021-04-23T20:36:00.585889Z",
"shell.execute_reply": "2021-04-23T20:36:00.587007Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"the schema contains 234 fields, 115 flags fields and 119 non-flag fields\n"
]
}
],
"source": [
"nFields = source_cat.schema.getFieldCount()\n",
"nFlagFields = source_cat.schema.getFlagFieldCount()\n",
"nNonFlagFields = source_cat.schema.getNonFlagFieldCount()\n",
"print('the schema contains {} fields, \\\n",
"{} flags fields and {} non-flag fields'.format(nFields, nFlagFields, nNonFlagFields ))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we are just intested in the field names, we can use the `extract()` method, which supports regex pattern matching. `extract()` returns a python dictionary of key-value pairs, where the keys are the names of the schema fields, and the values are the schema items themselves. We are going to tack on the `keys` method to this dictionary so we just get the ids back."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.592844Z",
"iopub.status.busy": "2021-04-23T20:36:00.591507Z",
"iopub.status.idle": "2021-04-23T20:36:00.631811Z",
"shell.execute_reply": "2021-04-23T20:36:00.630612Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ext_shapeHSM_HsmPsfMoments_flag_badCentroid\n",
"ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge\n",
"ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative\n",
"ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative\n",
"ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum\n",
"ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak\n",
"ext_shapeHSM_HsmPsfMoments_flag_badCentroid_badError\n",
"ext_shapeHSM_HsmPsfMoments_x\n",
"ext_shapeHSM_HsmPsfMoments_y\n",
"ext_shapeHSM_HsmPsfMoments_xx\n",
"ext_shapeHSM_HsmPsfMoments_yy\n",
"ext_shapeHSM_HsmPsfMoments_xy\n",
"ext_shapeHSM_HsmPsfMoments_flag\n",
"ext_shapeHSM_HsmPsfMoments_flag_no_pixels\n",
"ext_shapeHSM_HsmPsfMoments_flag_not_contained\n",
"ext_shapeHSM_HsmPsfMoments_flag_parent_source\n"
]
}
],
"source": [
"for k in source_cat.getSchema().extract('*HSM*Psf*').keys():\n",
" print(k)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you already know the id of the field you are interested in, schema's have a `find` method that will return the field in question. For example, it is a safe bet that a schema will contain an id field"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.637914Z",
"iopub.status.busy": "2021-04-23T20:36:00.636456Z",
"iopub.status.idle": "2021-04-23T20:36:00.667371Z",
"shell.execute_reply": "2021-04-23T20:36:00.668476Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"SchemaItem(key=Key(offset=0, nElements=1), field=Field['L'](name=\"id\", doc=\"unique ID\"))"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source_cat.getSchema().find('id')"
]
},
{
"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": 31,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.674984Z",
"iopub.status.busy": "2021-04-23T20:36:00.673652Z",
"iopub.status.idle": "2021-04-23T20:36:00.704833Z",
"shell.execute_reply": "2021-04-23T20:36:00.705775Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"sloan centroid is 1219.0, 7.0\n",
"naive centroid is 1218.9358940603615, 6.956234552894472\n",
"slot centroid is (1219, 7)\n"
]
}
],
"source": [
"slot_centroid = source_cat[0].getCentroid()\n",
"naive_cent_x, naive_cent_y = (source_cat['base_NaiveCentroid_x'][0], source_cat['base_NaiveCentroid_y'][0])\n",
"sdss_cent_x, sdss_cent_y = (source_cat['base_SdssCentroid_x'][0], source_cat['base_SdssCentroid_y'][0])\n",
"\n",
"print('sloan centroid is {}, {}'.format(sdss_cent_x, sdss_cent_y))\n",
"print('naive centroid is {}, {}'.format(naive_cent_x, naive_cent_y))\n",
"print('slot centroid is {}'.format(slot_centroid))"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.710558Z",
"iopub.status.busy": "2021-04-23T20:36:00.709460Z",
"iopub.status.idle": "2021-04-23T20:36:00.740462Z",
"shell.execute_reply": "2021-04-23T20:36:00.739555Z"
}
},
"outputs": [],
"source": [
"# aliasing works with other methods\n",
"psf_flux_key = source_cat.getPsfFluxSlot().getMeasKey()\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 `naive` 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:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:00.745097Z",
"iopub.status.busy": "2021-04-23T20:36:00.744087Z",
"iopub.status.idle": "2021-04-23T20:36:01.222930Z",
"shell.execute_reply": "2021-04-23T20:36:01.224156Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"Table length=1875 \n",
"\n",
"id coord_ra coord_dec parent calib_detected calib_psf_candidate calib_psf_used calib_psf_reserved deblend_nChild deblend_deblendedAsPsf deblend_psfCenter_x deblend_psfCenter_y deblend_psf_instFlux deblend_tooManyPeaks deblend_parentTooBig deblend_masked deblend_skipped deblend_rampedTemplate deblend_patchedTemplate deblend_hasStrayFlux base_NaiveCentroid_x base_NaiveCentroid_y base_NaiveCentroid_flag base_NaiveCentroid_flag_noCounts base_NaiveCentroid_flag_edge base_NaiveCentroid_flag_resetToPeak base_SdssCentroid_x slot_Centroid_x base_SdssCentroid_y slot_Centroid_y base_SdssCentroid_xErr slot_Centroid_xErr base_SdssCentroid_yErr slot_Centroid_yErr base_SdssCentroid_flag base_CircularApertureFlux_flag_badCentroid base_GaussianFlux_flag_badCentroid base_LocalBackground_flag_badCentroid base_NaiveCentroid_flag_badInitialCentroid base_PsfFlux_flag_badCentroid base_SdssShape_flag_badCentroid base_Variance_flag_badCentroid ext_photometryKron_KronFlux_flag_badInitialCentroid ext_shapeHSM_HsmPsfMoments_flag_badCentroid ext_shapeHSM_HsmShapeRegauss_flag_badCentroid ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid ext_shapeHSM_HsmSourceMoments_flag_badCentroid slot_Centroid_flag base_SdssCentroid_flag_edge base_CircularApertureFlux_flag_badCentroid_edge base_GaussianFlux_flag_badCentroid_edge base_LocalBackground_flag_badCentroid_edge base_NaiveCentroid_flag_badInitialCentroid_edge base_PsfFlux_flag_badCentroid_edge base_SdssShape_flag_badCentroid_edge base_Variance_flag_badCentroid_edge ext_photometryKron_KronFlux_flag_badInitialCentroid_edge ext_shapeHSM_HsmPsfMoments_flag_badCentroid_edge ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_edge ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_edge ext_shapeHSM_HsmSourceMoments_flag_badCentroid_edge slot_Centroid_flag_edge base_SdssCentroid_flag_noSecondDerivative base_CircularApertureFlux_flag_badCentroid_noSecondDerivative base_GaussianFlux_flag_badCentroid_noSecondDerivative base_LocalBackground_flag_badCentroid_noSecondDerivative base_NaiveCentroid_flag_badInitialCentroid_noSecondDerivative base_PsfFlux_flag_badCentroid_noSecondDerivative base_SdssShape_flag_badCentroid_noSecondDerivative base_Variance_flag_badCentroid_noSecondDerivative ext_photometryKron_KronFlux_flag_badInitialCentroid_noSecondDerivative ext_shapeHSM_HsmPsfMoments_flag_badCentroid_noSecondDerivative ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_noSecondDerivative ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_noSecondDerivative ext_shapeHSM_HsmSourceMoments_flag_badCentroid_noSecondDerivative slot_Centroid_flag_noSecondDerivative base_SdssCentroid_flag_almostNoSecondDerivative base_CircularApertureFlux_flag_badCentroid_almostNoSecondDerivative base_GaussianFlux_flag_badCentroid_almostNoSecondDerivative base_LocalBackground_flag_badCentroid_almostNoSecondDerivative base_NaiveCentroid_flag_badInitialCentroid_almostNoSecondDerivative base_PsfFlux_flag_badCentroid_almostNoSecondDerivative base_SdssShape_flag_badCentroid_almostNoSecondDerivative base_Variance_flag_badCentroid_almostNoSecondDerivative ext_photometryKron_KronFlux_flag_badInitialCentroid_almostNoSecondDerivative ext_shapeHSM_HsmPsfMoments_flag_badCentroid_almostNoSecondDerivative ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_almostNoSecondDerivative ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_almostNoSecondDerivative ext_shapeHSM_HsmSourceMoments_flag_badCentroid_almostNoSecondDerivative slot_Centroid_flag_almostNoSecondDerivative base_SdssCentroid_flag_notAtMaximum base_CircularApertureFlux_flag_badCentroid_notAtMaximum base_GaussianFlux_flag_badCentroid_notAtMaximum base_LocalBackground_flag_badCentroid_notAtMaximum base_NaiveCentroid_flag_badInitialCentroid_notAtMaximum base_PsfFlux_flag_badCentroid_notAtMaximum base_SdssShape_flag_badCentroid_notAtMaximum base_Variance_flag_badCentroid_notAtMaximum ext_photometryKron_KronFlux_flag_badInitialCentroid_notAtMaximum ext_shapeHSM_HsmPsfMoments_flag_badCentroid_notAtMaximum ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_notAtMaximum ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_notAtMaximum ext_shapeHSM_HsmSourceMoments_flag_badCentroid_notAtMaximum slot_Centroid_flag_notAtMaximum base_SdssCentroid_flag_resetToPeak base_CircularApertureFlux_flag_badCentroid_resetToPeak base_GaussianFlux_flag_badCentroid_resetToPeak base_LocalBackground_flag_badCentroid_resetToPeak base_NaiveCentroid_flag_badInitialCentroid_resetToPeak base_PsfFlux_flag_badCentroid_resetToPeak base_SdssShape_flag_badCentroid_resetToPeak base_Variance_flag_badCentroid_resetToPeak ext_photometryKron_KronFlux_flag_badInitialCentroid_resetToPeak ext_shapeHSM_HsmPsfMoments_flag_badCentroid_resetToPeak ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_resetToPeak ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_resetToPeak ext_shapeHSM_HsmSourceMoments_flag_badCentroid_resetToPeak slot_Centroid_flag_resetToPeak base_SdssCentroid_flag_badError base_CircularApertureFlux_flag_badCentroid_badError base_GaussianFlux_flag_badCentroid_badError base_LocalBackground_flag_badCentroid_badError base_NaiveCentroid_flag_badInitialCentroid_badError base_PsfFlux_flag_badCentroid_badError base_SdssShape_flag_badCentroid_badError base_Variance_flag_badCentroid_badError ext_photometryKron_KronFlux_flag_badInitialCentroid_badError ext_shapeHSM_HsmPsfMoments_flag_badCentroid_badError ext_shapeHSM_HsmShapeRegauss_flag_badCentroid_badError ext_shapeHSM_HsmSourceMomentsRound_flag_badCentroid_badError ext_shapeHSM_HsmSourceMoments_flag_badCentroid_badError slot_Centroid_flag_badError base_Blendedness_old base_Blendedness_raw base_Blendedness_raw_child_instFlux base_Blendedness_raw_parent_instFlux base_Blendedness_abs base_Blendedness_abs_child_instFlux base_Blendedness_abs_parent_instFlux base_Blendedness_raw_child_xx base_Blendedness_raw_child_yy base_Blendedness_raw_child_xy base_Blendedness_raw_parent_xx base_Blendedness_raw_parent_yy base_Blendedness_raw_parent_xy base_Blendedness_abs_child_xx base_Blendedness_abs_child_yy base_Blendedness_abs_child_xy base_Blendedness_abs_parent_xx base_Blendedness_abs_parent_yy base_Blendedness_abs_parent_xy base_Blendedness_flag base_Blendedness_flag_noCentroid base_Blendedness_flag_noShape base_FPPosition_x base_FPPosition_y base_FPPosition_flag base_FPPosition_missingDetector_flag base_Jacobian_value base_Jacobian_flag base_SdssShape_xx base_SdssShape_yy base_SdssShape_xy base_SdssShape_xxErr base_SdssShape_yyErr base_SdssShape_xyErr base_SdssShape_x base_SdssShape_y base_SdssShape_instFlux base_SdssShape_instFluxErr base_SdssShape_psf_xx base_SdssShape_psf_yy base_SdssShape_psf_xy base_SdssShape_instFlux_xx_Cov base_SdssShape_instFlux_yy_Cov base_SdssShape_instFlux_xy_Cov base_SdssShape_flag base_SdssShape_flag_unweightedBad base_SdssShape_flag_unweighted base_SdssShape_flag_shift base_SdssShape_flag_maxIter base_SdssShape_flag_psf ext_shapeHSM_HsmPsfMoments_x slot_PsfShape_x ext_shapeHSM_HsmPsfMoments_y slot_PsfShape_y ext_shapeHSM_HsmPsfMoments_xx slot_PsfShape_xx ext_shapeHSM_HsmPsfMoments_yy slot_PsfShape_yy ext_shapeHSM_HsmPsfMoments_xy slot_PsfShape_xy ext_shapeHSM_HsmPsfMoments_flag slot_PsfShape_flag ext_shapeHSM_HsmPsfMoments_flag_no_pixels slot_PsfShape_flag_no_pixels ext_shapeHSM_HsmPsfMoments_flag_not_contained slot_PsfShape_flag_not_contained ext_shapeHSM_HsmPsfMoments_flag_parent_source slot_PsfShape_flag_parent_source ext_shapeHSM_HsmShapeRegauss_e1 ext_shapeHSM_HsmShapeRegauss_e2 ext_shapeHSM_HsmShapeRegauss_sigma ext_shapeHSM_HsmShapeRegauss_resolution ext_shapeHSM_HsmShapeRegauss_flag ext_shapeHSM_HsmShapeRegauss_flag_no_pixels ext_shapeHSM_HsmShapeRegauss_flag_not_contained ext_shapeHSM_HsmShapeRegauss_flag_parent_source ext_shapeHSM_HsmShapeRegauss_flag_galsim ext_shapeHSM_HsmSourceMoments_x slot_Shape_x ext_shapeHSM_HsmSourceMoments_y slot_Shape_y ext_shapeHSM_HsmSourceMoments_xx slot_Shape_xx ext_shapeHSM_HsmSourceMoments_yy slot_Shape_yy ext_shapeHSM_HsmSourceMoments_xy slot_Shape_xy ext_shapeHSM_HsmSourceMoments_flag base_GaussianFlux_flag_badShape slot_Shape_flag ext_shapeHSM_HsmSourceMoments_flag_no_pixels base_GaussianFlux_flag_badShape_no_pixels slot_Shape_flag_no_pixels ext_shapeHSM_HsmSourceMoments_flag_not_contained base_GaussianFlux_flag_badShape_not_contained slot_Shape_flag_not_contained ext_shapeHSM_HsmSourceMoments_flag_parent_source base_GaussianFlux_flag_badShape_parent_source slot_Shape_flag_parent_source ext_shapeHSM_HsmSourceMomentsRound_x slot_ShapeRound_x ext_shapeHSM_HsmSourceMomentsRound_y slot_ShapeRound_y ext_shapeHSM_HsmSourceMomentsRound_xx slot_ShapeRound_xx ext_shapeHSM_HsmSourceMomentsRound_yy slot_ShapeRound_yy ext_shapeHSM_HsmSourceMomentsRound_xy slot_ShapeRound_xy ext_shapeHSM_HsmSourceMomentsRound_flag slot_ShapeRound_flag ext_shapeHSM_HsmSourceMomentsRound_flag_no_pixels slot_ShapeRound_flag_no_pixels ext_shapeHSM_HsmSourceMomentsRound_flag_not_contained slot_ShapeRound_flag_not_contained ext_shapeHSM_HsmSourceMomentsRound_flag_parent_source slot_ShapeRound_flag_parent_source ext_shapeHSM_HsmSourceMomentsRound_Flux slot_ShapeRound_Flux base_CircularApertureFlux_3_0_instFlux base_CircularApertureFlux_3_0_instFluxErr base_CircularApertureFlux_3_0_flag base_CircularApertureFlux_3_0_flag_apertureTruncated base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated base_CircularApertureFlux_4_5_instFlux base_CircularApertureFlux_4_5_instFluxErr base_CircularApertureFlux_4_5_flag base_CircularApertureFlux_4_5_flag_apertureTruncated base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated base_CircularApertureFlux_6_0_instFlux base_CircularApertureFlux_6_0_instFluxErr base_CircularApertureFlux_6_0_flag base_CircularApertureFlux_6_0_flag_apertureTruncated base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated base_CircularApertureFlux_9_0_instFlux base_CircularApertureFlux_9_0_instFluxErr base_CircularApertureFlux_9_0_flag base_CircularApertureFlux_9_0_flag_apertureTruncated base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated base_CircularApertureFlux_12_0_instFlux slot_ApFlux_instFlux slot_CalibFlux_instFlux base_CircularApertureFlux_12_0_instFluxErr slot_ApFlux_instFluxErr slot_CalibFlux_instFluxErr base_CircularApertureFlux_12_0_flag slot_ApFlux_flag slot_CalibFlux_flag base_CircularApertureFlux_12_0_flag_apertureTruncated slot_ApFlux_flag_apertureTruncated slot_CalibFlux_flag_apertureTruncated base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated slot_ApFlux_flag_sincCoeffsTruncated slot_CalibFlux_flag_sincCoeffsTruncated base_CircularApertureFlux_17_0_instFlux base_CircularApertureFlux_17_0_instFluxErr base_CircularApertureFlux_17_0_flag base_CircularApertureFlux_17_0_flag_apertureTruncated base_CircularApertureFlux_25_0_instFlux base_CircularApertureFlux_25_0_instFluxErr base_CircularApertureFlux_25_0_flag base_CircularApertureFlux_25_0_flag_apertureTruncated base_CircularApertureFlux_35_0_instFlux base_CircularApertureFlux_35_0_instFluxErr base_CircularApertureFlux_35_0_flag base_CircularApertureFlux_35_0_flag_apertureTruncated base_CircularApertureFlux_50_0_instFlux base_CircularApertureFlux_50_0_instFluxErr base_CircularApertureFlux_50_0_flag base_CircularApertureFlux_50_0_flag_apertureTruncated base_CircularApertureFlux_70_0_instFlux base_CircularApertureFlux_70_0_instFluxErr base_CircularApertureFlux_70_0_flag base_CircularApertureFlux_70_0_flag_apertureTruncated base_GaussianFlux_instFlux slot_GaussianFlux_instFlux slot_ModelFlux_instFlux base_GaussianFlux_instFluxErr slot_GaussianFlux_instFluxErr slot_ModelFlux_instFluxErr base_GaussianFlux_flag slot_GaussianFlux_flag slot_ModelFlux_flag base_LocalBackground_instFlux base_LocalBackground_instFluxErr base_LocalBackground_flag base_LocalBackground_flag_noGoodPixels base_LocalBackground_flag_noPsf base_PixelFlags_flag base_PixelFlags_flag_offimage base_PixelFlags_flag_edge base_PixelFlags_flag_interpolated base_PixelFlags_flag_saturated base_PixelFlags_flag_cr base_PixelFlags_flag_bad base_PixelFlags_flag_suspect base_PixelFlags_flag_interpolatedCenter base_PixelFlags_flag_saturatedCenter base_PixelFlags_flag_crCenter base_PixelFlags_flag_suspectCenter base_PsfFlux_instFlux slot_PsfFlux_instFlux base_PsfFlux_instFluxErr slot_PsfFlux_instFluxErr base_PsfFlux_area slot_PsfFlux_area base_PsfFlux_flag slot_PsfFlux_flag base_PsfFlux_flag_noGoodPixels slot_PsfFlux_flag_noGoodPixels base_PsfFlux_flag_edge slot_PsfFlux_flag_edge base_Variance_flag base_Variance_value base_Variance_flag_emptyFootprint ext_photometryKron_KronFlux_instFlux ext_photometryKron_KronFlux_instFluxErr ext_photometryKron_KronFlux_radius ext_photometryKron_KronFlux_radius_for_radius ext_photometryKron_KronFlux_psf_radius ext_photometryKron_KronFlux_flag ext_photometryKron_KronFlux_flag_edge ext_photometryKron_KronFlux_flag_bad_shape_no_psf ext_photometryKron_KronFlux_flag_no_minimum_radius ext_photometryKron_KronFlux_flag_no_fallback_radius ext_photometryKron_KronFlux_flag_bad_radius ext_photometryKron_KronFlux_flag_used_minimum_radius ext_photometryKron_KronFlux_flag_used_psf_radius ext_photometryKron_KronFlux_flag_small_radius ext_photometryKron_KronFlux_flag_bad_shape base_GaussianFlux_apCorr slot_GaussianFlux_apCorr slot_ModelFlux_apCorr base_GaussianFlux_apCorrErr slot_GaussianFlux_apCorrErr slot_ModelFlux_apCorrErr base_GaussianFlux_flag_apCorr slot_GaussianFlux_flag_apCorr slot_ModelFlux_flag_apCorr base_PsfFlux_apCorr slot_PsfFlux_apCorr base_PsfFlux_apCorrErr slot_PsfFlux_apCorrErr base_PsfFlux_flag_apCorr slot_PsfFlux_flag_apCorr ext_photometryKron_KronFlux_apCorr ext_photometryKron_KronFlux_apCorrErr ext_photometryKron_KronFlux_flag_apCorr base_ClassificationExtendedness_value base_ClassificationExtendedness_flag base_FootprintArea_value calib_astrometry_used calib_photometry_used calib_photometry_reserved base_localPhotoCalib base_localPhotoCalibErr base_CDMatrix_1_1 base_CDMatrix_1_2 base_CDMatrix_2_1 base_CDMatrix_2_2 \n",
"rad rad pix pix ct pix pix pix pix pix pix pix pix pix pix ct ct ct ct pix2 pix2 pix2 pix2 pix2 pix2 pix2 pix2 pix2 pix2 pix2 pix2 mm mm pix2 pix2 pix2 pix2 pix2 pix2 pix pix ct ct pix2 pix2 pix2 ct pix2 ct pix2 ct pix2 pix pix pix pix pix2 pix2 pix2 pix2 pix2 pix2 pix pix pix pix pix2 pix2 pix2 pix2 pix2 pix2 pix pix pix pix pix2 pix2 pix2 pix2 pix2 pix2 ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct ct pix pix ct ct pix \n",
"int64 float64 float64 int64 bool bool bool bool int32 bool float64 float64 float64 bool bool bool bool bool bool bool float64 float64 bool bool bool bool float64 float64 float64 float64 float32 float32 float32 float32 bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 bool bool bool float64 float64 bool bool float64 bool float64 float64 float64 float32 float32 float32 float64 float64 float64 float64 float64 float64 float64 float32 float32 float32 bool bool bool bool bool bool float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 bool bool bool bool bool bool bool bool float64 float64 float64 float64 bool bool bool bool bool float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 bool bool bool bool bool bool bool bool bool bool bool bool float64 float64 float64 float64 float64 float64 float64 float64 float64 float64 bool bool bool bool bool bool bool bool float32 float32 float64 float64 bool bool bool float64 float64 bool bool bool float64 float64 bool bool bool float64 float64 bool bool bool float64 float64 float64 float64 float64 float64 bool bool bool bool bool bool bool bool bool float64 float64 bool bool float64 float64 bool bool float64 float64 bool bool float64 float64 bool bool float64 float64 bool bool float64 float64 float64 float64 float64 float64 bool bool bool float64 float64 bool bool bool bool bool bool bool bool bool bool bool bool bool bool bool float64 float64 float64 float64 float32 float32 bool bool bool bool bool bool bool float64 bool float64 float64 float32 float32 float32 bool bool bool bool bool bool bool bool bool bool float64 float64 float64 float64 float64 float64 bool bool bool float64 float64 float64 float64 bool bool float64 float64 bool float64 bool int32 bool bool bool float64 float64 float64 float64 float64 float64 \n",
"34363434455793665 1.2451332744442976 -0.5304556590306023 0 True False False False 0 False nan nan nan False False False False False False False 1218.9358940603615 6.956234552894472 False False False False 1219.0 1219.0 7.0 7.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 86105.0499584654 86105.0499584654 0.0 86103.10525146249 86103.10525146249 4.27144993194279 4.254207562566574 0.031590348745585944 4.27144993194279 4.254207562566574 0.031590348745585944 4.270825492800502 4.253913950800135 0.03391629156361592 4.270825492800502 4.253913950800135 0.03391629156361592 True True True -262.275 -19.334999999999997 False False 0.9990278119943633 False 4.34587923101021 4.331228079296036 0.07788233106707648 0.104733065 0.073944435 0.10437998 1218.8469033339827 6.872787680042149 88187.66401368938 1062.6346861080883 4.209780395963982 4.250445065742829 0.005477041708410557 -55.64649 -0.9972387 -55.4589 False False False False False False -0.0007678702068951279 -0.0007678702068951279 -0.002654656675990664 -0.002654656675990664 4.211531724009447 4.211531724009447 4.2522099348784765 4.2522099348784765 0.005347680010377551 0.005347680010377551 True True False False False False False False 3.1356282234191895 -1.8852421045303345 10.106735229492188 0.0011888424633070827 False False False False False 1218.6992736630893 1218.6992736630893 6.753340064062633 6.753340064062633 4.23859353486747 4.23859353486747 4.217233447294036 4.217233447294036 -0.010091036319342276 -0.010091036319342276 True True True False False False False False False False False False 1218.699289489626 1218.699289489626 6.753363317962942 6.753363317962942 4.232745926149244 4.232745926149244 4.2225630461929695 4.2225630461929695 -0.004770052122799666 -0.004770052122799666 True True False False False False False False 87817.19 87817.19 56743.421875 475.9626770019531 True False False 79009.4453125 670.5922241210938 True False True 87979.8125 855.5762939453125 True False True nan nan True True True nan nan nan nan nan nan True True True True True True True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 93977.30661654753 93977.30661654753 93977.30661654753 800.8305163527903 800.8305163527903 800.8305163527903 False False False 4.6452528878846 74.69037668348096 True False False False False True False False False False False False False False False 93955.70823618962 93955.70823618962 732.3818139737758 732.3818139737758 62.429714 62.429714 True True False False True True False 5582.49267578125 False nan nan nan nan nan True True False False False False False False False True 1.079560708841459 1.079560708841459 1.079560708841459 0.0 0.0 0.0 False False False 0.9890613611420338 0.9890613611420338 0.0 0.0 False False 1.0325532130082347 0.0 False nan True 407 False False False 0.6606849207752934 0.00017543450833363202 5.425073526000387e-05 1.142678709084647e-05 1.1416404680850723e-05 -5.433135137285505e-05 \n",
"34363434455793666 1.2452265917705203 -0.530438773321301 0 False False False False 2 False nan nan nan True False False False False False False 1304.294771187906 6.711072559162486 False False False False 1304.0 1304.0 7.0 7.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 14486.547048333186 14486.547048333186 0.0 21087.828628325497 21087.828628325497 103.89469856144055 21.41701777485027 25.642431573094907 103.89469856144055 21.41701777485027 25.642431573094907 144.63149318564066 26.469986820112055 37.32362577803516 144.63149318564066 26.469986820112055 37.32362577803516 True True True -261.42499999999995 -19.334999999999997 False False 0.9990340720357708 False 12.125936291671472 21.64539700024164 -3.283594285055479 3.3627472 3.241501 6.0026703 1304.0829710426494 6.084496389586773 10879.198740622403 1508.501851145864 4.208562634844349 4.249434497195502 0.006536349832445914 -2536.3552 686.82227 -4527.5195 False False False False False False -0.0007807061048532802 -0.0007807061048532802 -0.0026169248615103714 -0.0026169248615103714 4.210392266241995 4.210392266241995 4.251155605757703 4.251155605757703 0.006390936580490331 0.006390936580490331 True True False False False False False False nan nan nan nan True False False True False 1310.022859901189 1310.022859901189 8.16514410936984 8.16514410936984 89.03049202168364 89.03049202168364 17.806249961928835 17.806249961928835 24.607737593890164 24.607737593890164 True True True False False False False False False False False False 1304.085729841586 1304.085729841586 5.739070753477685 5.739070753477685 9.830536797324573 9.830536797324573 10.393659481484567 10.393659481484567 -0.6784910800190128 -0.6784910800190128 True True False False False False False False 8245.234 8245.234 2402.0224609375 387.380615234375 True False False 5208.06201171875 586.4589233398438 True False True 6920.2783203125 784.4983520507812 True False True nan nan True True True nan nan nan nan nan nan True True True True True True True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 16250.274917255198 16250.274917255198 16250.274917255198 1617.4058755478613 1617.4058755478613 1617.4058755478613 False False False 3.827154403061647 75.85764532111628 True False False False False True False False False False False False False False False 4817.49497177798 4817.49497177798 590.7903741778207 590.7903741778207 62.440235 62.440235 True True False False True True False 5521.81640625 False nan nan nan nan nan True True False False False False False False False True 1.0795042492319356 1.0795042492319356 1.0795042492319356 0.0 0.0 0.0 False False False 0.9888587745239013 0.9888587745239013 0.0 0.0 False False 1.0326283908216305 0.0 False nan True 388 False False False 0.6606849207752934 0.00017543450833363202 5.425161897287193e-05 1.1426873652866909e-05 1.141640438854007e-05 -5.433168196149553e-05 \n",
"34363434455793667 1.2455904388452663 -0.5303748789081031 0 False False False False 0 False nan nan nan False False False False False False False 1634.931448035996 9.032211249497715 False False False False 1635.0 1635.0 9.0 9.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 16083.698866903937 16083.698866903937 0.0 16645.147573667215 16645.147573667215 10.965509520022573 9.790548095583441 -2.419925351256709 10.965509520022573 9.790548095583441 -2.419925351256709 12.332369976265348 11.078546052536282 -2.422105325054855 12.332369976265348 11.078546052536282 -2.422105325054855 True True True -258.11499999999995 -19.314999999999998 False False 0.9990582661131738 False 11.555230035960568 11.071789535601953 -2.9175284777542 1.715883 1.2265333 1.644095 1634.7421556681943 8.990263099444501 17046.85878078686 1265.6785480112674 4.205647204669408 4.245349355255767 0.010481401892374979 -1085.8782 274.16852 -1040.4479 False False False False False False -0.0008536316566153355 -0.0008536316566153355 -0.002469306195039765 -0.002469306195039765 4.20739941419607 4.20739941419607 4.247109025023588 4.247109025023588 0.010399645223658627 0.010399645223658627 True True False False False False False False 0.1578720211982727 -0.4668707251548767 0.16019606590270996 0.5587869882583618 False False False False False 1634.472686063043 1634.472686063043 9.058898500536307 9.058898500536307 11.077726293947212 11.077726293947212 9.53483591992692 9.53483591992692 -2.334023793744793 -2.334023793744793 True True True False False False False False False False False False 1634.496233458917 1634.496233458917 9.014711770497318 9.014711770497318 10.015863571458622 10.015863571458622 9.674400021219975 9.674400021219975 -1.0185033866986255 -1.0185033866986255 True True False False False False False False 16056.076 16056.076 6124.9775390625 394.07769775390625 True False False 10093.265625 592.4029541015625 True False True 13221.6318359375 789.9754638671875 True False True 17352.193359375 1183.4234619140625 True False True nan nan nan nan nan nan True True True True True True True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 17593.434355793066 17593.434355793066 17593.434355793066 924.4192830634271 924.4192830634271 924.4192830634271 False False False 2.2638004081259693 72.98704007942449 True False False False False True False False False False False False False False False 10697.0322328059 10697.0322328059 600.3334780966854 600.3334780966854 62.8033 62.8033 True True False False True True False 5540.1015625 False nan nan nan nan nan True True False False False False False False False True 1.0793017026296374 1.0793017026296374 1.0793017026296374 0.0 0.0 0.0 False False False 0.9883634344400722 0.9883634344400722 0.0 0.0 False False 1.0329762672271374 0.0 False nan True 340 False False False 0.6606849207752934 0.00017543450833363202 5.4255062318849715e-05 1.1427210266113282e-05 1.1416395471676701e-05 -5.4332969390699597e-05 \n",
"34363434455793668 1.2458918800916443 -0.5303182780198765 0 False False False False 0 False nan nan nan False False False False False False False 1909.8542364306495 7.036537247519804 False False False False 1910.0 1910.0 7.0 7.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 4667.677055186728 4667.677055186728 0.0 6507.274150674464 6507.274150674464 8.768011443219995 9.290044301620155 1.9786654892638798 8.768011443219995 9.290044301620155 1.9786654892638798 14.925589500586563 14.340179722250554 3.814031096062386 14.925589500586563 14.340179722250554 3.814031096062386 True True True -255.36499999999998 -19.334999999999997 False False 0.9990781128457439 False 5.145062486004842 5.7579859083466625 2.8187260621212697 nan nan nan 1909.9025343307496 7.122012026647483 nan nan 4.204346829236889 4.242374690406225 0.013897464571754843 nan nan nan True False True False False False -0.0009475395655310479 -0.0009475395655310479 -0.002362332078411705 -0.002362332078411705 4.206098405544302 4.206098405544302 4.244142395469417 4.244142395469417 0.013846408336939144 0.013846408336939144 True True False False False False False False 0.06754078716039658 0.3789132535457611 0.6748042702674866 0.5368011593818665 False False False False False 1909.4205218486388 1909.4205218486388 6.458027839835342 6.458027839835342 9.817447339656159 9.817447339656159 8.972790970379844 8.972790970379844 2.2491085009637004 2.2491085009637004 True True True False False False False False False False False False 1909.4603317935694 1909.4603317935694 6.526396484174429 6.526396484174429 8.808308541428767 8.808308541428767 8.650116591470265 8.650116591470265 1.164968451791869 1.164968451791869 True True False False False False False False 4691.7017 4691.7017 1899.677978515625 386.30364990234375 True False False 3102.4384765625 583.724853515625 True False True 4035.127685546875 781.5891723632812 True False True nan nan True True True nan nan nan nan nan nan True True True True True True True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 5115.987426431859 5115.987426431859 5115.987426431859 855.0388462920753 855.0388462920753 855.0388462920753 False False False 4.683975128653346 75.37526783516714 True False False False False True False False False False False False False False False 3252.27050026401 3252.27050026401 588.118464070215 588.118464070215 62.47735 62.47735 True True False False True True False 5515.744140625 False nan nan nan nan nan True True False False False False False False False True 1.0791256902918527 1.0791256902918527 1.0791256902918527 0.0 0.0 0.0 False False False 0.9882805892959882 0.9882805892959882 0.0 0.0 False False 1.0333044204676392 0.0 False nan True 112 False False False 0.6606849207752934 0.00017543450833363202 5.425791937090968e-05 1.1427490786743164e-05 1.1416402304585242e-05 -5.433403886500767e-05 \n",
"34363434455793669 1.2474402257837838 -0.5300390671190951 0 False False False False 0 False nan nan nan False False False False False False False 3319.9517107092734 8.926864689455615 False False False False 3320.0 3320.0 9.0 9.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 10700.9879390957 10700.9879390957 0.0 11022.605191379298 11022.605191379298 7.4536152899997425 7.366136229691883 -0.586916079559778 7.4536152899997425 7.366136229691883 -0.586916079559778 8.114483539865178 8.913365054799748 -0.690810702636593 8.114483539865178 8.913365054799748 -0.690810702636593 True True True -241.265 -19.314999999999998 False False 0.9991766061199018 False 8.126343540751904 7.386380660277821 -0.4590889487682502 1.5629814 1.0555241 1.4206605 3319.755552191863 9.124399215381853 11191.234167648483 1076.2337010013214 4.22033511389815 4.229294132754925 0.03136264560364299 -841.06665 47.51514 -764.4813 False False False False False False -0.0017996797641518843 -0.0017996797641518843 -0.0018688916368219805 -0.0018688916368219805 4.222170550230313 4.222170550230313 4.231130684767807 4.231130684767807 0.031467231279462084 0.031467231279462084 True True False False False False False False -0.14952439069747925 -0.3724217712879181 0.2967754006385803 0.3761681914329529 False False False False False 3319.4991022867407 3319.4991022867407 9.267783996905747 9.267783996905747 7.133766481535938 7.133766481535938 7.408898295489619 7.408898295489619 -0.549175889246665 -0.549175889246665 True True True False False False False False False False False False 3319.50414781645 3319.50414781645 9.23861262348923 9.23861262348923 7.302487502219447 7.302487502219447 7.395632790327182 7.395632790327182 -0.2159996355910371 -0.2159996355910371 True True False False False False False False 10999.212 10999.212 5031.6591796875 391.9811096191406 True False False 7615.2939453125 589.0430297851562 True False True 10204.095703125 786.8228759765625 True False True 11554.3310546875 1179.3702392578125 True False True nan nan nan nan nan nan True True True True True True True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 11674.548750382266 11674.548750382266 11674.548750382266 794.5582766434172 794.5582766434172 794.5582766434172 False False False 2.5348609412994447 74.992414021587 True False False False False True False False False False False False False False False 8707.842790384559 8707.842790384559 598.6683910062317 598.6683910062317 62.6101 62.6101 True True False False True True False 5522.828125 False nan nan nan nan nan True True False False False False False False False True 1.078418085640801 1.078418085640801 1.078418085640801 0.0 0.0 0.0 False False False 0.9928200866291798 0.9928200866291798 0.0 0.0 False False 1.0358359150119627 0.0 False nan True 297 False False False 0.6606849207752934 0.00017543450833363202 5.4272580743385515e-05 1.1428926225450304e-05 1.1416389677028427e-05 -5.433952282663981e-05 \n",
"34363434455793670 1.2453627799299263 -0.5304190738741331 0 False False False False 0 False nan nan nan False False False False False False False 1427.0933369897584 11.941475694386597 False False False False 1427.0 1427.0 12.0 12.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 7791.420220659604 7791.420220659604 0.0 9402.09425480686 9402.09425480686 14.967687879974019 10.83931086173871 -0.2648619932339261 14.967687879974019 10.83931086173871 -0.2648619932339261 21.524855792704926 14.202008179428212 -0.23798132969126606 21.524855792704926 14.202008179428212 -0.23798132969126606 True True True -260.195 -19.284999999999997 False False 0.9990431217073515 False 15.712923095693828 10.718753414176007 -0.6501727000860597 5.356368 3.1321561 3.6539087 1426.7078126378287 11.9920173512865 8089.319942435485 1378.7814187113302 4.207697410070726 4.247626756946251 0.007863236150793887 -3692.6304 152.79446 -2518.9707 False False False False False False -0.0007990488160669236 -0.0007990488160669236 -0.0025496109016282676 -0.0025496109016282676 4.209442286291871 4.209442286291871 4.249389732900296 4.249389732900296 0.007760576123937494 0.007760576123937494 True True False False False False False False 0.2595382332801819 -0.01355814840644598 0.33807265758514404 0.6384589076042175 False False False False False 1426.475862352734 1426.475862352734 11.917808774726028 11.917808774726028 14.204191978242733 14.204191978242733 10.618167342835692 10.618167342835692 -0.01754433298028828 -0.01754433298028828 True True True False False False False False False False False False 1426.4310303718964 1426.4310303718964 11.902467988814784 11.902467988814784 13.630652099751366 13.630652099751366 11.267093172782824 11.267093172782824 0.11552816841433575 0.11552816841433575 True True False False False False False False 7868.95 7868.95 2694.201416015625 388.0850524902344 True False False 3800.82470703125 584.8306884765625 True False True 5881.00048828125 783.2809448242188 True False True 8135.265625 1177.7481689453125 True False True 7844.14599609375 7844.14599609375 7844.14599609375 1571.4573974609375 1571.4573974609375 1571.4573974609375 True True True False False False True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 8492.800916350778 8492.800916350778 8492.800916350778 1024.402639274845 1024.402639274845 1024.402639274845 False False False 0.6588798209335215 75.97048089257815 True False False False False True False False False False False False False False False 4616.795293695934 4616.795293695934 591.2191761324359 591.2191761324359 63.011322 63.011322 True True False False True True False 5523.9892578125 False 7521.722814957628 1465.4660767712726 4.308143 12.368471 2.5769567 True False False False False False False False False True 1.07944724701467 1.07944724701467 1.07944724701467 0.0 0.0 0.0 False False False 0.9886414808187242 0.9886414808187242 0.0 0.0 False False 1.0327687828668053 0.0 False nan True 216 False False False 0.6606849207752934 0.00017543450833363202 5.425290286050771e-05 1.1426997742970785e-05 1.1416384519123379e-05 -5.433216053759257e-05 \n",
"34363434455793671 1.2471131524236843 -0.5301035067062136 0 False False False False 0 False nan nan nan False False False False False False False 3020.9849727106252 14.022454341576745 False False False False 3021.0 3021.0 14.0 14.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 17768.933945306304 17768.933945306304 0.0 17862.905330213653 17862.905330213653 4.3425241058602575 4.436278842760658 0.17626323337755911 4.3425241058602575 4.436278842760658 0.17626323337755911 4.435554053131467 4.592722698018378 0.23341789432954144 4.435554053131467 4.592722698018378 0.23341789432954144 True True True -244.25499999999997 -19.264999999999997 False False 0.999156215474889 False 4.349006896634105 4.462941184936033 0.16707449915613773 0.40658948 0.29145315 0.41724122 3020.925002451335 14.002571569221345 17950.51099367719 839.0983637305103 4.214356601554268 4.231429484490761 0.02740421520203051 -170.58429 -6.5532856 -175.0532 False False False False False False -0.001562900059916875 -0.001562900059916875 -0.0019502121949725698 -0.0019502121949725698 4.216178567778572 4.216178567778572 4.233235136629946 4.233235136629946 0.027468961958085132 0.027468961958085132 True True False False False False False False 0.41839516162872314 -1.1335456371307373 1.6018599271774292 0.03573920577764511 False False False False False 3020.8497228986325 3020.8497228986325 14.005470688891338 14.005470688891338 4.3555052237083345 4.3555052237083345 4.465937364486131 4.465937364486131 0.15586320769080908 0.15586320769080908 True True True False False False False False False False False False 3020.8480411653295 3020.8480411653295 14.006141794789166 14.006141794789166 4.397402046819277 4.397402046819277 4.443594334179743 4.443594334179743 0.06885426173784558 0.06885426173784558 True True False False False False False False 18007.113 18007.113 11247.443359375 402.7943420410156 True False False 16086.80859375 599.0492553710938 True False True 17886.7421875 793.66455078125 True False True 19523.90234375 1183.928466796875 True False True 21232.318359375 21232.318359375 21232.318359375 1576.396484375 1576.396484375 1576.396484375 True True True False False False True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 19372.386323162646 19372.386323162646 19372.386323162646 640.3310562570989 640.3310562570989 640.3310562570989 False False False 1.2715604708153998 74.30862124793678 True False False False False True False False False False False False False False False 19010.625902669595 19010.625902669595 616.518646293868 616.518646293868 62.891575 62.891575 True True False False True True False 5593.37841796875 False 20223.48917077879 1246.6344988918715 3.662564 12.368471 2.5754905 True False False False False False False False False True 1.0785769521083919 1.0785769521083919 1.0785769521083919 0.0 0.0 0.0 False False False 0.9911866342741877 0.9911866342741877 0.0 0.0 False False 1.035209930351531 0.0 False nan True 362 False False False 0.6606849207752934 0.00017543450833363202 5.4269477221717044e-05 1.1428620562308176e-05 1.1416371258967178e-05 -5.4338360126495364e-05 \n",
"34363434455793672 1.2460871751393503 -0.5302917816570742 0 False False False False 0 False nan nan nan False False False False False False False 2085.901704578844 16.413830346552306 False False False False 2086.0 2086.0 16.0 16.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 3228.7372901497956 3228.7372901497956 0.0 3771.5087006760887 3771.5087006760887 4.568265227753787 4.448319436293253 -2.3967150487822333 4.568265227753787 4.448319436293253 -2.3967150487822333 6.081360514883549 6.797393709496359 -3.6063474213079285 6.081360514883549 6.797393709496359 -3.6063474213079285 True True True -253.60499999999996 -19.244999999999997 False False 0.9990907602237689 False 281.4937011643079 135.27295246230764 24.14323371056064 nan nan nan 2086.0054972903868 15.991011494430682 nan nan 4.205131356768342 4.240046390837356 0.01577510256475004 nan nan nan True False True False False False -0.001010243494183128 -0.001010243494183128 -0.0022709471250035983 -0.0022709471250035983 4.206902558871479 4.206902558871479 4.241809021786723 4.241809021786723 0.01573757030187591 0.01573757030187591 True True False False False False False False 0.10336752235889435 -3.809664011001587 4.943058013916016 0.0644185021519661 False False False False False 2086.366392428038 2086.366392428038 15.271631601320033 15.271631601320033 4.557260438878797 4.557260438878797 4.463909277154412 4.463909277154412 -2.538426720657995 -2.538426720657995 True True True False False False False False False False False False 2086.4230329092943 2086.4230329092943 15.502459437015643 15.502459437015643 4.580877943371857 4.580877943371857 4.184798629499239 4.184798629499239 -0.9199285921841611 -0.9199285921841611 True True False False False False False False 3484.4902 3484.4902 2248.839111328125 387.0270690917969 True False False 3148.235595703125 583.7758178710938 True False False 3040.421875 780.4203491210938 True False False 4239.994140625 1175.1754150390625 True False True 3690.373046875 3690.373046875 3690.373046875 1569.0499267578125 1569.0499267578125 1569.0499267578125 True True True False False False True True True nan nan True True nan nan True True nan nan True True nan nan True True nan nan True True 3527.236162159833 3527.236162159833 3527.236162159833 556.1248796708273 556.1248796708273 556.1248796708273 False False False 3.5901676722127713 75.99774312310922 True False False False False False False False False False False False False False False 3662.216648706281 3662.216648706281 589.2818708246247 589.2818708246247 63.101463 63.101463 True True False False True True False 5519.30029296875 False 3420.7137971939633 865.8947127129726 2.5754075 12.368471 2.5754075 True False False False False False False True True True 1.0790673241054298 1.0790673241054298 1.0790673241054298 0.0 0.0 0.0 False False False 0.9884323823910774 0.9884323823910774 0.0 0.0 False False 1.0335860351025468 0.0 False nan True 148 False False False 0.6606849207752934 0.00017543450833363202 5.4259758353972965e-05 1.1427667915344239e-05 1.1416366695754435e-05 -5.433472372808457e-05 \n",
"34363434455793673 1.2460685342396929 -0.5303038465951663 0 False False False False 2 False nan nan nan True False False False False False False 2067.1490474691846 24.22278756687488 False False False False 2067.174671529887 2067.174671529887 24.77006671435168 24.77006671435168 0.5974243 0.5974243 0.6227982 0.6227982 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 7122.2065089275275 7122.2065089275275 0.0 9548.412022249078 9548.412022249078 9.499712318453037 32.88203309910176 -6.566027425260931 9.499712318453037 32.88203309910176 -6.566027425260931 13.386354155413507 45.7070547731103 -6.436957423073996 13.386354155413507 45.7070547731103 -6.436957423073996 False False False -253.7932532847011 -19.157299332856482 False False 0.9990894642681023 False 11.810538192249139 10.600649847970882 -10.286772668567671 5.03335 4.5803065 4.517726 2067.371490049907 24.621760037783503 3754.0969287944013 799.9488612777103 4.205867725103736 4.23980108180221 0.01527669572915257 -2013.2152 1753.4761 -1806.9783 False False False False False False -0.000992671051061297 -0.000992671051061297 -0.0022563157767752956 -0.0022563157767752956 4.20765162572188 4.20765162572188 4.241557871115416 4.241557871115416 0.01523079871832514 0.01523079871832514 False False False False False False False False nan nan nan nan True False False True False 2067.8592711266015 2067.8592711266015 21.044129678290314 21.044129678290314 9.164625384882086 9.164625384882086 29.22212483787587 29.22212483787587 -4.5482173480890244 -4.5482173480890244 False False False False False False False False False False False False 2067.8926918538677 2067.8926918538677 21.093645387716318 21.093645387716318 12.427366785374756 12.427366785374756 26.34425158905515 26.34425158905515 -2.217668096557341 -2.217668096557341 False False False False False False False False 7910.1045 7910.1045 2069.695068359375 389.73248291015625 False False False 2693.798095703125 582.6715087890625 False False False 4378.96875 780.96240234375 False False False 5913.42138671875 1175.637939453125 False False True 6005.62060546875 6005.62060546875 6005.62060546875 1569.672607421875 1569.672607421875 1569.672607421875 False False False False False False True True True 6356.340903580189 2239.723942448914 False False 6827.515191629529 3294.16314252502 False False nan nan True True nan nan True True nan nan True True 7751.931685501234 7751.931685501234 7751.931685501234 1131.5281145439264 1131.5281145439264 1131.5281145439264 False False False 0.8752875353923425 74.36696189251406 False False False False False False False False False False False False False False False 3551.5580162420943 3551.5580162420943 589.0378013723463 589.0378013723463 63.08962 63.08962 False False False False False False False 5511.07568359375 False nan nan nan nan nan True True False False False False False False False False 1.0791204046002552 1.0791204046002552 1.0791204046002552 0.0 0.0 0.0 False False False 0.9884481491789878 0.9884481491789878 0.0 0.0 False False 1.0335973271974204 0.0 False 1.0 False 212 False False False 0.6606849207752934 0.00017543450833363202 5.4259571563760077e-05 1.1427646693167623e-05 1.1416332651287857e-05 -5.433465085209869e-05 \n",
"34363434455793674 1.2475199660735183 -0.5300375647019303 0 False False False False 0 False nan nan nan False False False False False False False 3389.2554661714944 22.218811835482253 False False False False 3389.866320102799 3389.866320102799 22.132839763673495 22.132839763673495 0.4505012 0.4505012 0.43731833 0.43731833 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 5303.878865840369 5303.878865840369 0.0 5756.334177482645 5756.334177482645 9.752408058194368 4.247129305780099 -2.26072092479702 9.752408058194368 4.247129305780099 -2.26072092479702 11.313727443592908 5.778565717078011 -2.1299215382723107 11.313727443592908 5.778565717078011 -2.1299215382723107 False False False -240.56633679897197 -19.183671602363262 False False 0.9991814118594688 False 8.370384704173352 4.7448596760351 -1.8209238901967282 2.9483364 1.6338519 1.6713021 3389.6867286487955 22.231101098255344 5333.575986046344 939.3340525866819 4.2231277379490075 4.228176531227848 0.03175381026742067 -1384.7363 301.2406 -784.9555 False False False False False False -0.0018406393644809043 -0.0018406393644809043 -0.0018200467242237295 -0.0018200467242237295 4.224969904236019 4.224969904236019 4.230018235971004 4.230018235971004 0.031863874321519985 0.031863874321519985 False False False False False False False False 2.039964199066162 -1.5461004972457886 0.5205541253089905 0.39404594898223877 False False False False False 3389.454784446339 3389.454784446339 22.434017523162115 22.434017523162115 10.365121972115737 10.365121972115737 4.14268108832799 4.14268108832799 -2.2848103418979004 -2.2848103418979004 False False False False False False False False False False False False 3389.6230187096667 3389.6230187096667 22.00987804179049 22.00987804179049 7.585916101493616 7.585916101493616 7.238476334532502 7.238476334532502 -0.5554619473105668 -0.5554619473105668 False False False False False False False False 5892.5337 5892.5337 2880.306884765625 390.8804626464844 False False False 4006.6787109375 584.2819213867188 False False False 5402.00732421875 781.9896240234375 False False False 5839.39453125 1175.63916015625 False False True 5931.6298828125 5931.6298828125 5931.6298828125 1569.3946533203125 1569.3946533203125 1569.3946533203125 False False False False False False True True True 6895.581603467464 2234.3410961151526 False False nan nan True True nan nan True True nan nan True True nan nan True True 5788.372439561335 5788.372439561335 5788.372439561335 717.5839753017318 717.5839753017318 717.5839753017318 False False False 1.9858905724782943 73.4174967997843 False False False False False False False False False False False False False False False 4793.517901748603 4793.517901748603 592.4361433261323 592.4361433261323 62.747864 62.747864 False False False False False False False 5511.08984375 False 6510.386299239469 1622.026687846317 4.7909346 14.869329 2.5763247 False False False False False False False False False False 1.078457660431197 1.078457660431197 1.078457660431197 0.0 0.0 0.0 False False False 0.9932915193197382 0.9932915193197382 0.0 0.0 False False 1.036046275184584 0.0 False 1.0 False 194 False False False 0.6606849207752934 0.00017543450833363202 5.4273320495486866e-05 1.1428994303754874e-05 1.1416338359542513e-05 -5.4339795066688467e-05 \n",
"34363434455793675 1.246226383263327 -0.5302736787687644 0 False False False False 0 False nan nan nan False False False False False False False 2210.859760944919 23.079625279569857 False False False False 2211.2853834034177 2211.2853834034177 23.21702049788772 23.21702049788772 0.7135662 0.7135662 0.6344944 0.6344944 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 5563.5336213032915 5563.5336213032915 0.0 6852.769508695677 6852.769508695677 10.787888415465929 8.999372470785568 -5.768961246196163 10.787888415465929 8.999372470785568 -5.768961246196163 17.73283226279384 14.128108313336309 -9.786907490033293 17.73283226279384 14.128108313336309 -9.786907490033293 False False False -252.3521461659658 -19.17282979502112 False False 0.9990997136672835 False 10.937962782389539 9.241103236051938 -5.947566107041044 4.1822934 3.1583016 3.533474 2211.127843418594 23.342777511038758 5628.43411626271 1076.0580628631742 4.206109182485997 4.238392505134242 0.017070434841639778 -2250.195 1223.5533 -1901.1113 False False False False False False -0.0010600529666371424 -0.0010600529666371424 -0.002205990945886763 -0.002205990945886763 4.2078761056077125 4.2078761056077125 4.240162976739339 4.240162976739339 0.0170525645930538 0.0170525645930538 False False False False False False False False 0.13418489694595337 -0.7681478261947632 0.625252902507782 0.5688962340354919 False False False False False 2211.030723917152 2211.030723917152 23.456506158352774 23.456506158352774 10.96279350582454 10.96279350582454 8.974537784152087 8.974537784152087 -5.707504838231874 -5.707504838231874 False False False False False False False False False False False False 2211.288995053047 2211.288995053047 23.617581476817072 23.617581476817072 9.190681420017176 9.190681420017176 8.128479384918514 8.128479384918514 -3.05094066218702 -3.05094066218702 False False False False False False False False 5266.7812 5266.7812 2574.275390625 390.82659912109375 False False False 3565.90673828125 583.7512817382812 False False False 4336.63330078125 780.912841796875 False False False 6325.6826171875 1175.5194091796875 False False True 8491.6572265625 8491.6572265625 8491.6572265625 1570.55029296875 1570.55029296875 1570.55029296875 False False False False False False True True True 8053.9583096802235 2240.2958672358227 False False nan nan True True nan nan True True nan nan True True nan nan True True 6074.246090148037 6074.246090148037 6074.246090148037 821.3509025737825 821.3509025737825 821.3509025737825 False False False 4.503335324097414 73.31120302912889 False False False False False False False False False False False False False False False 3998.6843604911064 3998.6843604911064 589.6393808442957 589.6393808442957 63.11483 63.11483 False False False False False False False 5524.09765625 False 9485.411440280706 2406.119133247762 7.058309 17.089323 2.5753036 False False False False False False False False False False 1.0790324183831204 1.0790324183831204 1.0790324183831204 0.0 0.0 0.0 False False False 0.9886194430308783 0.9886194430308783 0.0 0.0 False False 1.0338017853574237 0.0 False 1.0 False 180 False False False 0.6606849207752934 0.00017543450833363202 5.42610682571648e-05 1.1427793815123004e-05 1.1416338195930921e-05 -5.43352112786589e-05 \n",
"34363434455793676 1.2451962500250653 -0.5304612313978331 0 False False False False 0 False nan nan nan False False False False False False False 1272.35138301464 24.032025881780996 False False False False 1272.7642343384184 1272.7642343384184 24.136994003384046 24.136994003384046 0.5517619 0.5517619 0.566457 0.566457 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan True False True -261.7373576566158 -19.163630059966156 False False 0.9990318673001711 False 6.935513244653132 4.993117465698119 3.9582414214974797 2.9279132 2.1170826 2.1079066 1272.4708593167775 23.845234541496563 3765.4011156451884 794.805497861786 4.210630349646283 4.248852989004033 0.0056655723406338464 -1163.5607 -664.0683 -837.68787 False False False False False False -0.0007593634378133934 -0.0007593634378133934 -0.0025835359928913864 -0.0025835359928913864 4.212397910264617 4.212397910264617 4.250602937723727 4.250602937723727 0.005540091011602701 0.005540091011602701 False False False False False False False False nan nan nan nan True False False False True nan nan nan nan nan nan nan nan nan nan True True True False False False False False False False False False 1272.744028783592 1272.744028783592 24.11130041629806 24.11130041629806 4.62143949702484 4.62143949702484 4.522960588466117 4.522960588466117 1.8284938773333717 1.8284938773333717 False False False False False False False False 3415.625 3415.625 2400.2177734375 390.580810546875 False False False 3092.236083984375 583.704345703125 False False False 3025.383544921875 780.419189453125 False False False 2697.158447265625 1174.3883056640625 False False True 4025.257080078125 4025.257080078125 4025.257080078125 1569.56640625 1569.56640625 1569.56640625 False False False False False False True True True 6788.622755661607 2240.9616330976364 False False nan nan True True nan nan True True nan nan True True nan nan True True nan nan nan nan nan nan True True True 0.5614065311048535 72.6233176366386 False False False False False False False False False False False False False False False 3679.1267303129393 3679.1267303129393 590.4167342683406 590.4167342683406 63.13908 63.13908 False False False False False False True nan True 6512.369711519359 1891.3456051030878 5.5666237 12.368471 2.5775943 True False False False False False False False False True 1.0796034869031326 1.0796034869031326 1.0796034869031326 0.0 0.0 0.0 False False False 0.9890110046165879 0.9890110046165879 0.0 0.0 False False 1.0326799710931067 0.0 False nan True 148 False False False 0.6606849207752934 0.00017543450833363202 5.4251311679535574e-05 1.1426837834805705e-05 1.141633784541507e-05 -5.433156114299284e-05 \n",
"34363434455793677 1.2448480884818893 -0.530529304905935 0 False False False False 0 False nan nan nan False False False False False False False 954.0619895600378 29.06547625082474 False False False False 954.5584573071816 954.5584573071816 29.287497363858044 29.287497363858044 0.20352776 0.20352776 0.20592096 0.20592096 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.0 0.0 14623.11114685526 14623.11114685526 0.0 14772.601759798958 14772.601759798958 6.658570061132256 6.623056528218301 0.15048580114842844 6.658570061132256 6.623056528218301 0.15048580114842844 7.113792398614129 7.170316524372649 0.26865876314654485 7.113792398614129 7.170316524372649 0.26865876314654485 False False False -264.91941542692814 -19.11212502636142 False False 0.9990083287121689 False 6.670089952600298 6.6222046259396325 0.1425349114654385 0.9080137 0.6399009 0.90149504 954.5734132611975 29.2406471303339 14770.57757581072 1005.3752919086 4.216310645549561 4.252571271489085 0.0016875964101364393 -456.44727 -9.753943 -453.1704 False False False False False False -0.0007250129000110385 -0.0007250129000110385 -0.002710912737762662 -0.002710912737762662 4.2180545801435505 4.2180545801435505 4.2543520946270705 4.2543520946270705 0.0015323284020031076 0.0015323284020031076 False False False False False False False False 0.021663766354322433 0.13498303294181824 0.24427402019500732 0.3268186151981354 False False False False False 954.5892800171727 954.5892800171727 29.19357954304557 29.19357954304557 6.726711275285073 6.726711275285073 6.611046120148282 6.611046120148282 0.16133389724882033 0.16133389724882033 False False False False False False False False False False False False 954.5911073660584 954.5911073660584 29.196979369624987 29.196979369624987 6.685623807158866 6.685623807158866 6.637350587191067 6.637350587191067 0.06287692723096878 0.06287692723096878 False False False False False False False False 14794.824 14794.824 7587.01318359375 399.8371887207031 False False False 11015.556640625 592.1720581054688 False False False 13865.525390625 789.1812744140625 False False False 15876.236328125 1181.3076171875 False False True 17656.96484375 17656.96484375 17656.96484375 1574.4300537109375 1574.4300537109375 1574.4300537109375 False False False False False False True True True 19010.27354466915 2246.5604151080533 False False 15583.912057608366 3297.4171022766773 False False nan nan True True nan nan True True nan nan True True 15976.315483023538 15976.315483023538 15976.315483023538 768.9222267674924 768.9222267674924 768.9222267674924 False False False -0.20600615080264045 76.23128616726464 False False False False False False False False False False False False False False False 12558.64188887633 12558.64188887633 605.0200626167991 605.0200626167991 63.130314 63.130314 False False False False False False False 5538.7890625 False 17480.272121698927 1408.5458095898523 4.147842 15.491944 2.579028 False False False False False False False False False False 1.079841457282087 1.079841457282087 1.079841457282087 0.0 0.0 0.0 False False False 0.9899958072612421 0.9899958072612421 0.0 0.0 False False 1.032456501515534 0.0 False 1.0 False 373 False False False 0.6606849207752934 0.00017543450833363202 5.424800863738766e-05 1.142651257718413e-05 1.141631890791689e-05 -5.433032375204934e-05 \n",
"... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... \n",
"34363434455795526 1.244925596866761 -0.5341000032259817 34363434455795134 False False False False 0 True 265.0 3650.0 14302.230335872551 False False False False False False False 265.0554078300456 3650.0645410457773 False False False False 265.3843373327795 265.3843373327795 3650.1919948805603 3650.1919948805603 0.3550364 0.3550364 0.32645437 0.32645437 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.010880245458883457 0.0017771053031360173 32244.466293415444 32301.870118103536 0.002433071781844043 32313.50066264137 32392.3134865341 11.719573627959134 10.884548350098044 -0.8336828058599343 11.813577241139372 10.97811028447068 -0.8630179541256966 11.841217658122197 11.224752376504247 -0.891536458939546 11.97079824818931 11.372833306333876 -0.9179837587383392 False False False -271.8111566266722 17.096919948805603 False False 0.9989573372986704 False 11.867012439182268 10.947647323267608 -0.8505213329388747 0.9693922 0.66020674 0.8942911 265.3898913737771 3650.2288141447866 32685.338526436673 1334.9995775923085 4.323592992089153 4.259588910052062 0.001186514466247905 -647.0691 46.37613 -596.9391 False False False False False False -0.0005689975927163403 -0.0005689975927163403 0.0016448534129160795 0.0016448534129160795 4.325781072139326 4.325781072139326 4.261835397494572 4.261835397494572 0.0013012197515924785 0.0013012197515924785 False False False False False False False False 0.0629287138581276 -0.1577060967683792 0.07693212479352951 0.5851874351501465 False False False False False 265.3954672982481 265.3954672982481 3650.2655795219403 3650.2655795219403 11.839814069240719 11.839814069240719 10.900706990629565 10.900706990629565 -0.8232152061890416 -0.8232152061890416 False False False False False False False False False False False False 265.4015749777141 265.4015749777141 3650.2690427598745 3650.2690427598745 11.423509456786872 11.423509456786872 11.041087983812677 11.041087983812677 -0.3498216679422893 -0.3498216679422893 False False False False False False False False 32461.266 32461.266 11726.7548828125 406.55908203125 False False False 18582.734375 601.3409423828125 False False False 25006.458984375 799.4138793945312 False False False 33084.9921875 1191.9705810546875 False False False 37204.16796875 37204.16796875 37204.16796875 1584.6627197265625 1584.6627197265625 1584.6627197265625 False False False False False False False False False 38228.40754893259 2250.487402069827 False False 43174.82899718644 3302.777218786274 False False 44777.53806745174 4619.4269933694495 False False 40971.008123657724 6591.313718163474 False False 42798.94615437748 9224.212458602919 False False 35359.14083104655 35359.14083104655 35359.14083104655 1021.2109886487018 1021.2109886487018 1021.2109886487018 False False False 4.477293031422255 70.35063074750444 False False False False False False False False False False False False False False False 20388.272497688813 20388.272497688813 622.1294365399762 622.1294365399762 62.623425 62.623425 False False False False False False False 5516.1201171875 False 39245.922687808285 2199.907613106357 6.414252 20.19666 2.5963488 False False False False False False False False False False 1.0835036492298564 1.0835036492298564 1.0835036492298564 0.0 0.0 0.0 False False False 1.004636391549389 1.004636391549389 0.0 0.0 False False 1.0369336459444578 0.0 False 1.0 False 727 False False False 0.6606849207752934 0.00017543450833363202 5.424453093819629e-05 1.1424963875375136e-05 1.140223856831398e-05 -5.432778407166719e-05 \n",
"34363434455795527 1.2449142011974526 -0.5340813778130462 34363434455795134 False False False False 0 True 259.0 3629.0 6789.925268903678 False False False False False False False 258.85013488338035 3628.981691340199 False False False False 259.40859127925853 259.40859127925853 3629.3027139975875 3629.3027139975875 0.6575952 0.6575952 0.6493291 0.6493291 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.06820338152656538 0.008364502208722313 14039.772209932342 14158.198492494339 0.014666183662550458 14181.65432849578 14392.740910090673 8.92787123177716 9.916565412798029 -0.165032347857194 9.01987761117595 10.312236149233078 -0.17701635364109372 9.796494352597803 10.924337185083164 -0.2874110874929512 10.131783787431484 11.691328666130014 -0.21842560101202887 False False False -271.8709140872074 16.88802713997588 False False 0.9989569810133287 False 8.903846973492422 9.939664896806557 -0.17094748748924635 1.4778802 1.104315 1.6498077 259.3873629653177 3629.3228236346163 14201.081828897906 1178.563524854181 4.3249436252091344 4.2583750870195 0.000687868071908279 -870.8879 16.720427 -972.20154 False False False False False False -0.000551794109600448 -0.000551794109600448 0.0016552550612925763 0.0016552550612925763 4.327130451179058 4.327130451179058 4.260619867979749 4.260619867979749 0.0008009319724535552 0.0008009319724535552 False False False False False False False False -0.13153430819511414 -0.04516119882464409 0.21003364026546478 0.5153030157089233 False False False False False 259.36634051591665 259.36634051591665 3629.3432551827063 3629.3432551827063 8.883312299277197 8.883312299277197 9.940290345618532 9.940290345618532 -0.13721134645883798 -0.13721134645883798 False False False False False False False False False False False False 259.3690590944655 259.3690590944655 3629.3362031525426 3629.3362031525426 9.204175602250181 9.204175602250181 9.721932758323273 9.721932758323273 -0.02025702140040763 -0.02025702140040763 False False False False False False False False 14237.413 14237.413 5832.53857421875 396.99945068359375 False False False 8975.0595703125 590.1179809570312 False False False 12007.8681640625 787.8740844726562 False False False 14187.19921875 1181.004150390625 False False False 14389.71484375 14389.71484375 14389.71484375 1574.3143310546875 1574.3143310546875 1574.3143310546875 False False False False False False False False False 15492.642339535887 2248.0755424431914 False False 16925.15663815102 3309.264912592939 False False 14889.158167039961 4623.583947336352 False False 12059.114197527975 6590.873601248678 False False 13144.843180900425 9222.992112822367 False False 15379.404864917347 15379.404864917347 15379.404864917347 902.5203054348267 902.5203054348267 902.5203054348267 False False False 1.1918586143543837 67.00529746224609 False False False False False False False False False False False False False False False 9723.784756864981 9723.784756864981 605.5613994304086 605.5613994304086 62.60023 62.60023 False False False False False False False 5521.943359375 False 14478.807533536392 1594.0145325492297 4.636034 18.391687 2.5963664 False False False False False False False False False False 1.0835529444121683 1.0835529444121683 1.0835529444121683 0.0 0.0 0.0 False False False 1.004690147039121 1.004690147039121 0.0 0.0 False False 1.0369892925603224 0.0 False 1.0 False 836 False False False 0.6606849207752934 0.00017543450833363202 5.424444753841895e-05 1.1424962675568037e-05 1.1402319833101437e-05 -5.4327760018417975e-05 \n",
"34363434455795528 1.2449254728685806 -0.5340682440853366 34363434455795134 False False False False 0 True 272.0 3618.0 5157.345285942267 False False False False False False False 271.8998691378787 3617.9669637706247 False False False False 272.0077952577352 272.0077952577352 3618.0878859653135 3618.0878859653135 0.9782852 0.9782852 0.86078656 0.86078656 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.03814645053703384 0.006550796934535419 13452.903022369854 13541.611368612028 0.01849681859530594 14519.84306679138 14793.47529573065 14.558071366482329 11.891686524617208 1.740657153981781 14.813979397583386 11.976285265359015 1.7887321875643574 16.833349440784676 15.123015661211854 1.6151903678248305 17.99505198883385 15.67415687899279 1.7052546503109858 False False False -271.7449220474226 16.775878859653137 False False 0.9989579970335644 False 14.521548589592292 11.673238035199262 1.824023538118057 2.9315991 1.87672 2.3565843 271.98502168595746 3618.019394909317 13573.592839684628 1370.1132633248487 4.324829816306403 4.257742790660804 0.00029433802503238583 -2008.3115 -252.26007 -1614.3938 False False False False False False -0.0005369520929267961 -0.0005369520929267961 0.001651724976051501 0.001651724976051501 4.327009115641207 4.327009115641207 4.259986276554359 4.259986276554359 0.00040764303240054954 0.00040764303240054954 False False False False False False False False 0.16881772875785828 0.20800544321537018 0.19747062027454376 0.6490440368652344 False False False False False 271.96055321393527 271.96055321393527 3617.941740277373 3617.941740277373 14.452689241850178 14.452689241850178 11.706394618165838 11.706394618165838 1.6809513106566996 1.6809513106566996 False False False False False False False False False False False False 271.93258773526895 271.93258773526895 3617.93831924719 3617.93831924719 13.607037472178673 13.607037472178673 11.947178334593108 11.947178334593108 0.838270242753193 0.838270242753193 False False False False False False False False 13439.607 13439.607 4036.42822265625 391.1447448730469 False False False 7389.86083984375 589.20068359375 False False False 10070.9619140625 787.344482421875 False False False 13503.6318359375 1181.171142578125 False False False 13139.8212890625 13139.8212890625 13139.8212890625 1574.44873046875 1574.44873046875 1574.44873046875 False False False False False False False False False 10652.928497054614 2232.960802348357 False False 9040.831805303416 3292.927341895643 False False 9874.001428827367 4613.265727852803 False False 9919.649705663047 6583.008173532293 False False 10294.983219399772 9217.799626462558 False False 14711.849976979009 14711.849976979009 14711.849976979009 1050.0743083578927 1050.0743083578927 1050.0743083578927 False False False -1.270935761798188 70.61304277907533 False False False False False False False False False False False False False False False 7606.511677152117 7606.511677152117 601.9190801210484 601.9190801210484 62.602444 62.602444 False False False False False False False 5508.53759765625 False 12789.651535714931 7362.1534554715645 21.54843 21.54843 2.596253 False False False False False False False False False False 1.0835852256671121 1.0835852256671121 1.0835852256671121 0.0 0.0 0.0 False False False 1.0045557885282332 1.0045557885282332 0.0 0.0 False False 1.0370009605314807 0.0 False 1.0 False 606 False False False 0.6606849207752934 0.00017543450833363202 5.4244567110010486e-05 1.1424978128600213e-05 1.1402363407316377e-05 -5.432780858440276e-05 \n",
"34363434455795529 1.2449930234151778 -0.5342503780656344 34363434455795176 True False False False 0 False nan nan nan False False False False False False False 292.1680874933052 3814.022411544594 False False False False 292.22148283239613 292.22148283239613 3814.3692230412476 3814.3692230412476 0.00960733 0.00960733 0.01570002 0.01570002 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.2945367704547788 0.09667699686331144 564868.1575527575 625322.4545276891 0.09667699686331144 564868.1575527575 625322.4545276891 1.4663224588043882 16.571744767738572 -1.1342292588940934 1.504288609863648 17.272166136940207 -1.2609152002420179 1.4663224588043882 16.571744767738572 -1.1342292588940934 1.504288609863648 17.272166136940207 -1.2609152002420179 False False False -271.54278517167603 18.73869223041248 False False 0.9989585594102354 False 6.711981886099591 18.36419928743589 0.044012898835401694 0.03295609 0.038546477 0.09016892 292.1639323890961 3814.343438222418 1252715.4527655244 3075.440493025296 4.313442909158943 4.269628587617724 0.0054393801746157305 -50.677246 -0.3323091 -138.65459 False False False False False False -0.0007195819788363534 -0.0007195819788363534 0.001558764421141738 0.001558764421141738 4.315616914444926 4.315616914444926 4.271907211494068 4.271907211494068 0.005570305448965085 0.005570305448965085 False False False False False False False False -8.772138595581055 -1.3817936182022095 0.004789616446942091 0.5162673592567444 False False False False False 294.1996382128253 294.1996382128253 3814.528835188857 3814.528835188857 0.8917447827682001 0.8917447827682001 15.819101228397114 15.819101228397114 -1.1374217844519394 -1.1374217844519394 False False False False False False False False False False False False 294.7442204143711 294.7442204143711 3814.5446763625987 3814.5446763625987 4.465330267769845 4.465330267769845 15.117975889648154 15.117975889648154 -0.6534105071102224 -0.6534105071102224 False False False False False False False False 407607.9 407607.9 418216.78125 882.6574096679688 False False False 710495.1875 1220.579833984375 False False False 963104.8125 1535.0306396484375 False False False 1240726.25 2084.739501953125 False False False 1363309.625 1363309.625 1363309.625 2513.873046875 2513.873046875 2513.873046875 False False False False False False False False False 1421683.6317825317 3037.8556368934765 False False 1430395.3808751106 3887.553038286202 False False 1440209.182917565 5054.740085362096 False False 1435583.2751565576 6901.636873219653 False False 1437483.4834572077 9447.866097401762 False False 620225.0850904195 620225.0850904195 620225.0850904195 1337.3997114120398 1337.3997114120398 1337.3997114120398 False False False 11.819944931124878 73.57381909215054 False False False False False False True True False False False True True False False 743638.8105053939 743638.8105053939 1364.661978831196 1364.661978831196 62.42269 62.42269 False False False False False False True nan True 1257987.9799558506 2226.116456799947 4.6377563 11.351751 2.59635 False False False False False False False False False False 1.083081795471552 1.083081795471552 1.083081795471552 0.0 0.0 0.0 False False False 1.0043955975882084 1.0043955975882084 0.0 0.0 False False 1.0364866392100962 0.0 False 0.0 False 1048 False False False 0.6606849207752934 0.00017543450833363202 5.4244977152010895e-05 1.1424952806722041e-05 1.1401599944751488e-05 -5.4327894828837496e-05 \n",
"34363434455795530 1.2449849017092407 -0.5342525438291145 34363434455795176 False False False False 0 False nan nan nan False False False False False False False 283.8959504462284 3814.9471834191695 False False False False 284.69071630209805 284.69071630209805 3815.0782581454946 3815.0782581454946 0.015925588 0.015925588 0.021646783 0.021646783 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.2608238669953771 0.10377083092212513 925253.3519260433 1032384.7781901935 0.1037709442049487 925253.2329151747 1032384.7758923369 3.835824179512899 21.60633607552323 3.609310072393823 4.029595392174494 22.564695425296584 3.7659941597908566 3.8358220316353044 21.606291455409973 3.6092999348809194 4.029595363696759 22.564694640229632 3.7659940005944765 False False False -271.618092836979 18.74578258145495 False False 0.9989579807078045 False 5.942644984494997 9.009107693004863 0.8820389038196103 nan nan nan 284.52434033116856 3815.1342794033917 nan nan 4.313805813010208 4.269664676220416 0.005530599454272139 nan nan nan True False True False False False -0.0007231597529344941 -0.0007231597529344941 0.0015631063786983926 0.0015631063786983926 4.315980615289866 4.315980615289866 4.271940655856884 4.271940655856884 0.005659151789152175 0.005659151789152175 False False False False False False False False -1.4061250686645508 0.5706183910369873 0.004076340701431036 0.6713664531707764 False False False False False 282.26484332720224 282.26484332720224 3815.5778557570466 3815.5778557570466 2.8926516049255406 2.8926516049255406 23.3144937783239 23.3144937783239 4.362814949346092 4.362814949346092 False False False False False False False False False False False False 281.75348970544064 281.75348970544064 3815.5041811798496 3815.5041811798496 7.0567895749902485 7.0567895749902485 22.69717788960287 22.69717788960287 2.56195639709799 2.56195639709799 False False False False False False False False 497171.1 497171.1 402947.3125 861.0286865234375 False False False 750532.9375 1240.687744140625 False False False 1044860.0 1568.1708984375 False False False 1354671.0 2121.65771484375 False False False 1480787.375 1480787.375 1480787.375 2522.563720703125 2522.563720703125 2522.563720703125 False False False False False False False False False 1537743.7321352959 3038.5839910080085 False False 1548463.8106181473 3886.0065839380864 False False 1556413.4151816517 5051.807311913155 False False 1554121.627436176 6902.115930663038 False False 1556428.4096593708 9445.887952202609 False False 1014742.3862838673 1014742.3862838673 1014742.3862838673 1736.439360435901 1736.439360435901 1736.439360435901 False False False 11.656361057990866 72.53441189968692 False False False False False False True True False False False True True False False 726378.2072104862 726378.2072104862 1297.9852634168649 1297.9852634168649 62.535423 62.535423 False False False False False False False 5525.63134765625 False 1480495.767323529 2564.3138506198447 5.394864 15.826223 2.596409 False False False False False False False False False False 1.0830764055473523 1.0830764055473523 1.0830764055473523 0.0 0.0 0.0 False False False 1.0044740698973467 1.0044740698973467 0.0 0.0 False False 1.0364936361951398 0.0 False 1.0 False 1118 False False False 0.6606849207752934 0.00017543450833363202 5.424489958032433e-05 1.1424944972138423e-05 1.1401597213026765e-05 -5.4327865567088934e-05 \n",
"34363434455795531 1.2459597573433114 -0.5341380214907069 34363434455795200 True False False False 0 False nan nan nan False False False False False False False 1157.068406204419 3876.99298244023 False False False False 1157.727732863148 1157.727732863148 3877.0858903717562 3877.0858903717562 0.10818376 0.10818376 0.10990263 0.10990263 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.00014123446863047187 1.7344723203582824e-05 100394.00468758204 100395.74602400765 1.787011183107534e-05 100374.55704271968 100376.3507793333 9.889835229290563 9.898462420795319 -0.1112698401453874 9.889976651379197 9.899271159990347 -0.11093225817396886 9.885633092030401 9.887632087711703 -0.11927973820335812 9.885782745949129 9.888487948647086 -0.11892021009352799 False False False -262.8877226713685 19.365858903717562 False False 0.9990232669897533 False 9.94612982190104 9.980610563326843 -0.10997318034932822 0.28037772 0.19861245 0.28134972 1157.7272019772975 3877.0899307301 101492.24725760263 1430.5144245670126 4.270589615752192 4.276502732466754 -0.0005655128086979028 -200.54219 2.217371 -201.23743 False False False False False False -0.0005459005609173122 -0.0005459005609173122 0.0009809899357555107 0.0009809899357555107 4.2726011961163595 4.2726011961163595 4.2785828631032645 4.2785828631032645 -0.0005041222702805287 -0.0005041222702805287 False False False False False False False False -0.0008491663611494005 -0.026373758912086487 0.025939617305994034 0.5335677862167358 False False False False False 1157.7265753490292 1157.7265753490292 3877.0937417029445 3877.0937417029445 9.968754241164213 9.968754241164213 10.001500398213894 10.001500398213894 -0.11454138124371488 -0.11454138124371488 False False False False False False False False False False False False 1157.7261512503742 1157.7261512503742 3877.0935235249062 3877.0935235249062 9.977707074530205 9.977707074530205 9.989352516036973 9.989352516036973 -0.04860744545807447 -0.04860744545807447 False False False False False False False False 101601.5 101601.5 39112.3125 449.5788269042969 False False False 63254.125 651.9824829101562 False False False 81740.515625 848.9248657226562 False False False 105050.0234375 1234.9793701171875 False False False 118275.640625 118275.640625 118275.640625 1620.7718505859375 1620.7718505859375 1620.7718505859375 False False False False False False False False False 129807.76566165686 2281.084105483413 False False 137568.91682183743 3323.564156319519 False False 151593.69623482227 4634.793109774174 False False 148448.22277709842 6602.892701042807 False False 150508.9556285143 9229.945542223006 False False 110072.22509005692 110072.22509005692 110072.22509005692 1079.3741650970862 1079.3741650970862 1079.3741650970862 False False False 7.28083834333553 74.96399300141816 False False False False False False False False False False False False False False False 67936.31060696648 67936.31060696648 688.0377525938139 688.0377525938139 63.105873 63.105873 False False False False False False True nan True 129830.01453578816 2026.7312612891983 5.792339 18.958916 2.5909204 False False False False False False False False False False 1.0833561820078872 1.0833561820078872 1.0833561820078872 0.0 0.0 0.0 False False False 0.9968934325053185 0.9968934325053185 0.0 0.0 False False 1.035521085454374 0.0 False 1.0 False 627 False False False 0.6606849207752934 0.00017543450833363202 5.42540394216434e-05 1.1425819547440191e-05 1.1401353045710704e-05 -5.433126346157582e-05 \n",
"34363434455795532 1.2459743068782572 -0.5341561965148474 34363434455795200 False False False False 0 True 1167.0 3898.0 7115.757626105833 False False False False False False False 1166.2171118638978 3897.9984480386324 False False False False 1166.5322103134931 1166.5322103134931 3898.0971908559063 3898.0971908559063 0.6088634 0.6088634 0.70661914 0.70661914 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.002925184027677517 0.00015465042444540167 18109.95615394663 18112.75729955088 0.0011844447951732118 18632.30389075126 18654.398996549808 11.154915797656146 14.93343806537913 -1.4202208804166039 11.162063069888408 14.971756167447191 -1.4303848317655523 12.346490804645411 16.368781026212975 -1.533983508952037 12.405395777418116 16.561542589071205 -1.6209449667240896 False False False -262.79967789686503 19.575971908559065 False False 0.9990238023690673 False 11.261073548523468 15.170603859593006 -1.290623605488399 1.7143719 1.413867 2.309554 1166.5392168762146 3898.1686981699695 18435.03088510016 1403.263163727048 4.268913947230597 4.278012952665926 -0.00012723222225750306 -1202.8574 137.85864 -1620.456 False False False False False False -0.0005652567545101314 -0.0005652567545101314 0.000957494117762603 0.000957494117762603 4.270927202492846 4.270927202492846 4.280090027672658 4.280090027672658 -6.704677101608862e-05 -6.704677101608862e-05 False False False False False False False False -0.2812572717666626 -0.2619816064834595 0.1342352330684662 0.6411068439483643 False False False False False 1166.5517974850027 1166.5517974850027 3898.2412536348043 3898.2412536348043 11.198044106100575 11.198044106100575 14.924735156590739 14.924735156590739 -1.5237920117654569 -1.5237920117654569 False False False False False False False False False False False False 1166.5571816408062 1166.5571816408062 3898.2037516140185 3898.2037516140185 12.289446743587662 12.289446743587662 14.029435923263048 14.029435923263048 -0.5196668697889566 -0.5196668697889566 False False False False False False False False 18454.984 18454.984 5782.52783203125 395.9339904785156 False False False 9861.30859375 591.342041015625 False False False 12889.2021484375 788.9503173828125 False False False 17960.779296875 1183.2213134765625 False False False 19679.126953125 19679.126953125 19679.126953125 1576.510498046875 1576.510498046875 1576.510498046875 False False False False False False False False False 18880.08949456981 2249.0379281040996 False False 19768.260122052045 3311.9330688200434 False False 25014.35691883287 4630.939360048382 False False 39048.213491907925 6601.711980482198 False False 41580.72409456095 9233.325730362205 False False 19839.85727089649 19839.85727089649 19839.85727089649 1052.0074849942553 1052.0074849942553 1052.0074849942553 False False False 1.7812847540934225 70.14504646302876 False False False False False False False False False False False False False False False 10413.51778981555 10413.51778981555 604.5539709070258 604.5539709070258 63.147232 63.147232 False False False False False False False 5510.416015625 False 20662.84179324707 1792.053553145278 5.23091 21.49782 2.590895 False False False False False False False False False False 1.0833057366749845 1.0833057366749845 1.0833057366749845 0.0 0.0 0.0 False False False 0.9968133036978943 0.9968133036978943 0.0 0.0 False False 1.0354488007183218 0.0 False 1.0 False 710 False False False 0.6606849207752934 0.00017543450833363202 5.42541523568566e-05 1.1425823599370101e-05 1.1401271296640192e-05 -5.433129852122488e-05 \n",
"34363434455795533 1.2464016799647009 -0.5341485239405371 34363434455795242 False False False False 0 True 1540.0 3968.0 16324.295197429892 False False False False False False False 1540.0757216398615 3968.085464692677 False False False False 1540.1819886240744 1540.1819886240744 3968.366073630611 3968.366073630611 0.13343182 0.13343182 0.12655427 0.12655427 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.017423781163396712 0.0011808674699278487 15976.717226273908 15995.605916963035 0.0013150519032746333 16005.657952439013 16026.733939409309 4.762287887285871 4.339145850633503 0.1694019277795154 4.769347476279775 4.346370195193111 0.17385718101940653 4.896883399895079 4.427588980923489 0.11674090028358257 4.907383936891983 4.437784847027426 0.12215519959728491 False False False -259.06318011375924 20.27866073630611 False False 0.9990508293882313 False 4.785656422074261 4.340020165517865 0.18137471919634188 0.50417084 0.33976725 0.4572229 1540.1817456758413 3968.370998908836 16143.027985835683 850.3372628500553 4.2515965761334 4.284953990835918 -0.001765865133230056 -214.35764 -8.124079 -194.39684 False False False False False False -0.0005862018056268037 -0.0005862018056268037 0.000648569547613459 0.000648569547613459 4.2535419897807465 4.2535419897807465 4.286980008627424 4.286980008627424 -0.0017315342987500406 -0.0017315342987500406 False False False False False False False False -1.034136176109314 -0.793337881565094 1.1157169342041016 0.05680600181221962 False False False False False 1540.1814449221931 1540.1814449221931 3968.3758884918125 3968.3758884918125 4.792371734319418 4.792371734319418 4.349949235504274 4.349949235504274 0.18259002819404135 0.18259002819404135 False False False False False False False False False False False False 1540.180720383148 1540.180720383148 3968.373964055891 3968.373964055891 4.64174062074796 4.64174062074796 4.452661118565261 4.452661118565261 0.08743541715445705 0.08743541715445705 False False False False False False False False 16121.914 16121.914 10189.3828125 404.27020263671875 False False False 14091.8662109375 596.2533569335938 False False False 16416.22265625 792.023193359375 False False False 18276.12109375 1183.3023681640625 False False False 17431.7421875 17431.7421875 17431.7421875 1575.8870849609375 1575.8870849609375 1575.8870849609375 False False False False False False False False False 19570.98670714267 2245.894162436687 False False 22340.793417020817 3294.2504439998133 False False nan nan True True nan nan True True nan nan True True 17504.56582925902 17504.56582925902 17504.56582925902 651.9926799697529 651.9926799697529 651.9926799697529 False False False 1.772846703603398 71.42793895254714 False False False False False False False False False False False False False False False 16897.153179515193 16897.153179515193 616.4026790319986 616.4026790319986 63.184776 63.184776 False False False False False False False 5448.1787109375 False 17408.408317556212 947.7310405982806 2.7806036 12.815517 2.5893126 False False False False False False False False False False 1.0833475725881865 1.0833475725881865 1.0833475725881865 0.0 0.0 0.0 False False False 0.9944380898428374 0.9944380898428374 0.0 0.0 False False 1.035021358439799 0.0 False 0.0 False 491 False False False 0.6606849207752934 0.00017543450833363202 5.4258108637249615e-05 1.1426187679838835e-05 1.1400996716311422e-05 -5.433275448024048e-05 \n",
"34363434455795534 1.2463917545623717 -0.5341402669657064 34363434455795242 False False False False 0 True 1533.0 3958.0 5078.4093157787665 False False False False False False False 1532.897925116722 3958.0055588733926 False False False False 1533.298526146547 1533.298526146547 3958.214505641152 3958.214505641152 0.5060302 0.5060302 0.39903843 0.39903843 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.08950670602136085 0.010185710895594724 4285.177076792232 4329.273808190329 0.01487933158804089 4554.620284758801 4623.4135886124195 4.97642346910308 2.997219909527881 -1.0721561449817016 5.035453562529247 3.040376792546646 -1.0895542888437038 6.1091015393266 3.4713852234520304 -1.1355262087347144 6.2666383312981715 3.557914230927781 -1.1568721880462485 False False False -259.1320147385345 20.177145056411522 False False 0.9990503853783027 False 4.819010638563376 3.1109897867717518 -1.0169578239657544 1.6346393 0.96020275 1.0552677 1533.3128180330511 3958.163700689686 4368.067301702919 740.8382516322342 4.2525111151203125 4.284160859090671 -0.0019430925863509322 -605.5017 127.7793 -390.89133 False False False False False False -0.0005766787891730347 -0.0005766787891730347 0.0006639167708522434 0.0006639167708522434 4.2544549812586805 4.2544549812586805 4.2861907392079965 4.2861907392079965 -0.0019073619344794328 -0.0019073619344794328 False False False False False False False False nan nan nan nan True False False False True 1533.3242151691031 1533.3242151691031 3958.1085755555882 3958.1085755555882 4.847478940436827 4.847478940436827 3.01271651499847 3.01271651499847 -1.0322327230917647 -1.0322327230917647 False False False False False False False False False False False False 1533.3096503163063 1533.3096503163063 3958.1952524337667 3958.1952524337667 4.679506111022079 4.679506111022079 3.999748473484706 3.999748473484706 -0.7661046200789208 -0.7661046200789208 False False False False False False False False 4586.9683 4586.9683 3018.27001953125 391.95452880859375 False False False 4138.234375 584.7791748046875 False False False 4757.107421875 781.8837890625 False False False 4449.302734375 1176.0079345703125 False False False 5285.52783203125 5285.52783203125 5285.52783203125 1573.2008056640625 1573.2008056640625 1573.2008056640625 False False False False False False False False False 7118.923238390125 2246.3398640161217 False False 10012.508144386811 3296.2084315792385 False False 6947.662508436246 4610.067918203507 False False nan nan True True nan nan True True 4695.90152199604 4695.90152199604 4695.90152199604 563.216179414021 563.216179414021 563.216179414021 False False False 2.612258931004508 70.26298479226229 False False False False False False False False False False False False False False False 4941.480422711943 4941.480422711943 596.4206271584196 596.4206271584196 63.254086 63.254086 False False False False False False False 5542.6201171875 False 6398.7872075991 1811.751809920697 5.30676 11.509183 2.589332 False False False False False False False False False False 1.0833701658287824 1.0833701658287824 1.0833701658287824 0.0 0.0 0.0 False False False 0.9944899064974646 0.9944899064974646 0.0 0.0 False False 1.035059377126355 0.0 False 0.0 False 485 False False False 0.6606849207752934 0.00017543450833363202 5.425802673321968e-05 1.1426183044261079e-05 1.1401036222190254e-05 -5.433272731421545e-05 \n",
"34363434455795535 1.246209816635579 -0.5341790908272449 34363434455795246 False False False False 0 True 1367.0 3964.0 14162.995912889626 False False False False False False False 1366.1082751520016 3964.025837313888 False False False False 1366.6764539366045 1366.6764539366045 3964.203018667521 3964.203018667521 0.1572844 0.1572844 0.15054566 0.15054566 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.044642148116784866 0.0023578055874752257 23657.85585993379 23713.768315367855 0.003061109470670731 23756.287748983923 23829.231635622535 9.369022533610737 7.370060306423696 -0.39308883675007217 9.477651318931608 7.396981815981239 -0.3993491376265967 9.414589108980248 7.688789229267123 -0.4531480074070301 9.571847863376613 7.730585239232739 -0.4482303036416853 False False False -260.7982354606339 20.237030186675216 False False 0.9990381682747081 False 9.40024115628942 7.396204136978322 -0.3939721469178049 0.8968165 0.5631288 0.7056242 1366.6752050536054 3964.19746659892 23931.458245459595 1141.5731520342053 4.2574548485469474 4.283708771075981 -0.0003005810650176955 -511.8908 21.453781 -402.76083 False False False False False False -0.0006009154773438126 -0.0006009154773438126 0.0007669818795653427 0.0007669818795653427 4.259426169769316 4.259426169769316 4.285765182793744 4.285765182793744 -0.0002517759641074484 -0.0002517759641074484 False False False False False False False False 0.45044848322868347 -0.1621573567390442 0.11694812774658203 0.4460219740867615 False False False False False 1366.674162396399 1366.674162396399 3964.1924584539865 3964.1924584539865 9.404413550902873 9.404413550902873 7.402944856168268 7.402944856168268 -0.38794831109012534 -0.38794831109012534 False False False False False False False False False False False False 1366.6890520892127 1366.6890520892127 3964.1874910024467 3964.1874910024467 8.716164275194835 8.716164275194835 7.883893690464331 7.883893690464331 -0.11136608780855972 -0.11136608780855972 False False False False False False False False 23834.574 23834.574 10442.3671875 404.6681823730469 False False False 16091.796875 598.8709106445312 False False False 20455.359375 795.5891723632812 False False False 25980.126953125 1188.091064453125 False False False 27563.615234375 27563.615234375 27563.615234375 1580.628173828125 1580.628173828125 1580.628173828125 False False False False False False False False False 26929.91845836863 2250.593464159613 False False 25470.965618702437 3303.917026392333 False False 31015.634099992778 4619.756620950546 False False nan nan True True nan nan True True 25932.955060717835 25932.955060717835 25932.955060717835 879.9389652818297 879.9389652818297 879.9389652818297 False False False 0.28494270868689925 63.13756836059633 False False False False False False False False False False False False False False False 18029.011163867497 18029.011163867497 616.8479602970584 616.8479602970584 63.159065 63.159065 False False False False False False False 5510.5263671875 False 27625.559186675306 1415.5854984748019 4.149734 17.322092 2.5900161 False False False False False False False False False False 1.083248549551035 1.083248549551035 1.083248549551035 0.0 0.0 0.0 False False False 0.9954416404182012 0.9954416404182012 0.0 0.0 False False 1.0351156690227383 0.0 False 1.0 False 1017 False False False 0.6606849207752934 0.00017543450833363202 5.4256300513324244e-05 1.142601195994348e-05 1.140101350426891e-05 -5.433207950710554e-05 \n",
"34363434455795536 1.2462284914677926 -0.534176976844963 34363434455795246 False False False False 0 True 1383.0 3965.0 7756.607699519952 False False False False False False False 1382.9381196540828 3964.979563651045 False False False False 1383.3814999502308 1383.3814999502308 3965.477289592126 3965.477289592126 0.25374454 0.25374454 0.29334146 0.29334146 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.07283813678457465 0.005577085803879056 12234.828727444788 12303.446102039263 0.008574376447439525 12495.589257663829 12603.657763946601 6.801806253620004 8.16871496840838 0.484332373393022 6.874251209602401 8.250997063672731 0.4743779186085596 7.2017163532074795 8.757976979150424 0.8775759879197672 7.353208707879342 8.949944844144863 0.8781537892862898 False False False -260.6311850004977 20.249772895921264 False False 0.9990393862001781 False 6.860333638745685 8.207936730811683 0.4961583220309137 1.1699463 0.9068648 1.3997635 1383.3913625248867 3965.486797465817 12370.042192325462 1054.7799132059547 4.256806193897677 4.283890362370223 -0.00042041661181975486 -617.0179 -44.624443 -738.2212 False False False False False False -0.0006000253077965103 -0.0006000253077965103 0.0007548212190326701 0.0007548212190326701 4.258776120109779 4.258776120109779 4.28594277556749 4.28594277556749 -0.00037325644974721357 -0.00037325644974721357 False False False False False False False False -0.387801855802536 0.31188610196113586 0.24859263002872467 0.3899599611759186 False False False False False 1383.401650493066 1383.401650493066 3965.4956657577163 3965.4956657577163 6.864308131140148 6.864308131140148 8.226434280987247 8.226434280987247 0.4754552562014118 0.4754552562014118 False False False False False False False False False False False False 1383.4118381520182 1383.4118381520182 3965.5007946303786 3965.5007946303786 7.217662436992821 7.217662436992821 7.86675828464846 7.86675828464846 0.1397913379019316 0.1397913379019316 False False False False False False False False 12393.417 12393.417 5896.54150390625 397.12054443359375 False False False 8775.59765625 589.82568359375 False False False 10976.267578125 786.4100341796875 False False False 13743.70703125 1180.1549072265625 False False False 16206.107421875 16206.107421875 16206.107421875 1575.0777587890625 1575.0777587890625 1575.0777587890625 False False False False False False False False False 16865.24161114497 2254.3587131420613 False False 19667.597343634872 3310.402531034628 False False nan nan True True nan nan True True nan nan True True 13410.673711724738 13410.673711724738 13410.673711724738 808.5841857234597 808.5841857234597 808.5841857234597 False False False 1.9286275977049931 68.61652355200523 False False False False False False False False False False False False False False False 9861.484046060137 9861.484046060137 603.3405066107052 603.3405066107052 63.135666 63.135666 False False False False False False False 5533.28515625 False 16284.725942750363 1868.8254511048658 5.461344 16.431145 2.5899448 False False False False False False False False False False 1.0832555432647726 1.0832555432647726 1.0832555432647726 0.0 0.0 0.0 False False False 0.9953385487500283 0.9953385487500283 0.0 0.0 False False 1.0351027525421772 0.0 False 1.0 False 796 False False False 0.6606849207752934 0.00017543450833363202 5.425647548612485e-05 1.1426028674104553e-05 1.1401008490956522e-05 -5.433214452722326e-05 \n",
"34363434455795537 1.2462305663725444 -0.5341919716521775 34363434455795246 False False False False 0 True 1382.0 3981.0 6077.767682285204 False False False False False False False 1381.9207461453755 3980.940096458849 False False False False 1382.0 1382.0 3981.0 3981.0 nan nan nan nan True True True True True True True True True True True True True True True True True True True True True True True True True True True True False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.05869229257380175 0.003374739045793107 8646.373285305412 8675.651344645876 0.006118381422841712 8913.60281134959 8968.475364410413 6.3001571887265735 7.508591042138207 1.5452228552024092 6.32000807178238 7.682895397314404 1.5999536639930703 6.960096661165585 8.77561552402748 1.691874262102978 7.02167638508597 9.080999072097104 1.7758969048229418 True True True -260.645 20.405000000000005 False False 0.9990391955263568 False 6.3148265308352896 7.524323242980755 1.5851795938943296 1.429787 1.1323997 1.7036383 1382.0091650703139 3981.014301206462 8737.164180960042 989.123364764722 4.255787360187774 4.285027130224648 -2.9128004546002788e-05 -707.1179 -177.50429 -842.55426 False False False False False False -0.0006158978031172688 -0.0006158978031172688 0.0007398616627441782 0.0007398616627441782 4.257756910054554 4.257756910054554 4.287081444895833 4.287081444895833 1.8702044189392283e-05 1.8702044189392283e-05 True True False False False False False False -0.3964928388595581 1.0499719381332397 0.39242950081825256 0.34438425302505493 False False False False False 1382.0187367020246 1382.0187367020246 3981.0276452988924 3981.0276452988924 6.3130258350527715 6.3130258350527715 7.520982138066911 7.520982138066911 1.5872524267316408 1.5872524267316408 True True True False False False False False False False False False 1382.1242134729014 1382.1242134729014 3980.9744137305015 3980.9744137305015 6.371439381586704 6.371439381586704 6.99996610152286 6.99996610152286 0.6042808491132231 0.6042808491132231 True True False False False False False False 8644.65 8644.65 4399.7158203125 391.2361145019531 True False False 6545.16015625 588.3435668945312 True False False 7983.83544921875 785.2445678710938 True False False 9288.134765625 1178.813232421875 True False True 9585.4130859375 9585.4130859375 9585.4130859375 1573.103515625 1573.103515625 1573.103515625 True True True False False False True True True 9355.567291961983 2235.992598683454 True False nan nan True True nan nan True True nan nan True True nan nan True True 9462.035362983186 9462.035362983186 9462.035362983186 757.4423027504329 757.4423027504329 757.4423027504329 False False False 2.4988911690486226 66.45097640705406 True False False False False False False False False False False False False False False 7347.945312397874 7347.945312397874 599.6611305266663 599.6611305266663 63.14336 63.14336 True True False False True True False 5523.42578125 False 10068.213834554477 1280.5682941540167 3.777416 12.368471 2.5899615 True False False False False False False False False True 1.0832122900481371 1.0832122900481371 1.0832122900481371 0.0 0.0 0.0 False False False 0.9953268344105847 0.9953268344105847 0.0 0.0 False False 1.0350501526278089 0.0 False nan True 657 False False False 0.6606849207752934 0.00017543450833363202 5.425647693673119e-05 1.1426023636492088e-05 1.1400948123403016e-05 -5.433213975750047e-05 \n",
"34363434455795538 1.2461882672325584 -0.5341870902074856 34363434455795246 False False False False 0 True 1346.0 3968.0 5041.801322312057 False False False False False False False 1346.1130202072643 3967.994720241015 False False False False 1346.218149588204 1346.218149588204 3968.3481088286317 3968.3481088286317 0.8498998 0.8498998 0.5224766 0.5224766 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.07634355080670198 0.0027159193247533464 7426.052122061877 7446.275605877318 0.005650609052197386 7803.055709243797 7847.398289052113 11.672730865830127 4.600244411123582 2.0769386580765374 11.785510174692176 4.604085701655242 2.044520255777195 13.78134800659259 5.812224459232487 2.930809274088183 14.148156599585533 5.8195630344817415 2.9363363589697977 False False False -261.00281850411795 20.278481088286323 False False 0.9990366438417521 False 11.96752470896827 4.617257310726609 2.0681876123032596 3.229473 1.4723018 1.245981 1346.2723796253542 3968.394562236823 7558.3113716591615 1019.8167447126219 4.257860552268688 4.283911651019837 -1.2777434470617057e-05 -1646.7355 -284.58334 -635.3361 False False False False False False -0.0006079189538759578 -0.0006079189538759578 0.0007762915827888372 0.0007762915827888372 4.25984007722286 4.25984007722286 4.285967625758126 4.285967625758126 3.7135704167930355e-05 3.7135704167930355e-05 False False False False False False False False 1.3406163454055786 0.8243489861488342 0.35676026344299316 0.4488206207752228 False False False False False 1346.339764341026 1346.339764341026 3968.438840013446 3968.438840013446 11.707832765840507 11.707832765840507 4.633079686282617 4.633079686282617 2.126933715503672 2.126933715503672 False False False False False False False False False False False False 1346.3459934306536 1346.3459934306536 3968.3752134448237 3968.3752134448237 8.38091108499581 8.38091108499581 6.052100233879425 6.052100233879425 0.518930113808684 0.518930113808684 False False False False False False False False 7360.735 7360.735 3563.19091796875 392.9546813964844 False False False 5367.29736328125 585.8638916015625 False False False 6638.17724609375 783.1600952148438 False False False 8230.5732421875 1177.132080078125 False False False 9236.0302734375 9236.0302734375 9236.0302734375 1571.576171875 1571.576171875 1571.576171875 False False False False False False False False False 10622.431805137545 2244.4136250940496 False False 10935.033840896467 3299.007605796851 False False nan nan True True nan nan True True nan nan True True 8135.889650170911 8135.889650170911 8135.889650170911 776.2610989111075 776.2610989111075 776.2610989111075 False False False -0.11804393614939575 68.6740834808746 False False False False False False False False False False False False False False False 6058.714821766679 6058.714821766679 597.3943444461914 597.3943444461914 63.083702 63.083702 False False False False False False False 5519.94140625 False 8765.331879272248 1467.2778619902167 4.334602 15.932462 2.5901086 False False False False False False False False False False 1.0832244786796401 1.0832244786796401 1.0832244786796401 0.0 0.0 0.0 False False False 0.9955623090249957 0.9955623090249957 0.0 0.0 False False 1.035112289610345 0.0 False 1.0 False 677 False False False 0.6606849207752934 0.00017543450833363202 5.425609203827836e-05 1.142599015713901e-05 1.1400997453231113e-05 -5.4332000100433e-05 \n",
"34363434455795539 1.246187638470928 -0.5341704624577773 34363434455795246 False False False False 0 True 1349.0 3951.0 3878.504248617397 False False False False False False False 1348.9827634904566 3951.0083385813814 False False False False 1349.205240195525 1349.205240195525 3951.4401320521706 3951.4401320521706 1.0925539 1.0925539 1.1311321 1.1311321 False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False False 0.08021050288442418 0.010571725132200172 9854.353763433042 9959.64438629946 0.024345789922459282 11012.010614221697 11286.796592971716 10.951138288612533 12.69923714452103 -1.65831733162404 11.088217441549524 13.399729495488183 -1.8801395464841684 14.814151517802514 16.634899665131474 -2.401224528856813 15.355387647057169 18.10858274763087 -2.64096708127304 False False False -260.9729475980447 20.10940132052171 False False 0.9990369594507188 False 11.122037653819836 12.747188440630683 -1.6432280852414738 2.8787825 2.199914 3.2994297 1349.1570128244641 3951.449819184133 9977.06567588287 1291.2112096017615 4.258912278707101 4.2826885677276305 -0.000452452689920711 -1858.558 274.59305 -2130.1304 False False False False False False -0.0005903278915468046 -0.0005903278915468046 0.0007911078174977685 0.0007911078174977685 4.260886738710159 4.260886738710159 4.28474483146769 4.28474483146769 -0.00040343995079185574 -0.00040343995079185574 False False False False False False False False -0.12187790870666504 -0.2559248208999634 0.26976606249809265 0.6184492707252502 False False False False False 1349.1071742863498 1349.1071742863498 3951.465262744434 3951.465262744434 11.206441429510596 11.206441429510596 12.675097769330588 12.675097769330588 -1.7621111024931604 -1.7621111024931604 False False False False False False False False False False False False 1349.1416806523778 1349.1416806523778 3951.4883763613884 3951.4883763613884 11.579508140981265 11.579508140981265 11.972479317681529 11.972479317681529 -0.6262090686305767 -0.6262090686305767 False False False False False False False False 9939.657 9939.657 3163.798583984375 391.9346008300781 False False False 5850.236328125 586.36181640625 False False False 7543.61572265625 783.6709594726562 False False False 9449.0869140625 1177.7484130859375 False False False 10961.8798828125 10961.8798828125 10961.8798828125 1572.258544921875 1572.258544921875 1572.258544921875 False False False False False False False False False 12832.044974146876 2246.825130705269 False False 13541.034399259015 3300.1335255745475 False False 11296.609721112176 4618.471900615759 False False nan nan True True nan nan True True 10805.158100048397 10805.158100048397 10805.158100048397 988.8105123426627 988.8105123426627 988.8105123426627 False False False 1.789388423830849 69.14901615128935 False False False False False False False False False False False False False False False 5827.15871796394 5827.15871796394 595.995573615741 595.995573615741 63.080185 63.080185 False False False False False False False 5536.0625 False 14975.255116178234 2801.5429098194454 8.196706 20.599482 2.5900831 False False False False False False False False False False 1.0832722719174894 1.0832722719174894 1.0832722719174894 0.0 0.0 0.0 False False False 0.9955647493264437 0.9955647493264437 0.0 0.0 False False 1.035168092471331 0.0 False 1.0 False 676 False False False 0.6606849207752934 0.00017543450833363202 5.425610587080241e-05 1.1425997152908872e-05 1.1401063202783515e-05 -5.433201106065285e-05 \n",
"
"
],
"text/plain": [
"\n",
" id coord_ra coord_dec ... base_CDMatrix_1_2 base_CDMatrix_2_1 base_CDMatrix_2_2 \n",
" rad rad ... \n",
" int64 float64 float64 ... float64 float64 float64 \n",
"----------------- ------------------ ------------------- ... ---------------------- ---------------------- -----------------------\n",
"34363434455793665 1.2451332744442976 -0.5304556590306023 ... 1.142678709084647e-05 1.1416404680850723e-05 -5.433135137285505e-05\n",
"34363434455793666 1.2452265917705203 -0.530438773321301 ... 1.1426873652866909e-05 1.141640438854007e-05 -5.433168196149553e-05\n",
"34363434455793667 1.2455904388452663 -0.5303748789081031 ... 1.1427210266113282e-05 1.1416395471676701e-05 -5.4332969390699597e-05\n",
"34363434455793668 1.2458918800916443 -0.5303182780198765 ... 1.1427490786743164e-05 1.1416402304585242e-05 -5.433403886500767e-05\n",
"34363434455793669 1.2474402257837838 -0.5300390671190951 ... 1.1428926225450304e-05 1.1416389677028427e-05 -5.433952282663981e-05\n",
"34363434455793670 1.2453627799299263 -0.5304190738741331 ... 1.1426997742970785e-05 1.1416384519123379e-05 -5.433216053759257e-05\n",
"34363434455793671 1.2471131524236843 -0.5301035067062136 ... 1.1428620562308176e-05 1.1416371258967178e-05 -5.4338360126495364e-05\n",
"34363434455793672 1.2460871751393503 -0.5302917816570742 ... 1.1427667915344239e-05 1.1416366695754435e-05 -5.433472372808457e-05\n",
"34363434455793673 1.2460685342396929 -0.5303038465951663 ... 1.1427646693167623e-05 1.1416332651287857e-05 -5.433465085209869e-05\n",
"34363434455793674 1.2475199660735183 -0.5300375647019303 ... 1.1428994303754874e-05 1.1416338359542513e-05 -5.4339795066688467e-05\n",
"34363434455793675 1.246226383263327 -0.5302736787687644 ... 1.1427793815123004e-05 1.1416338195930921e-05 -5.43352112786589e-05\n",
"34363434455793676 1.2451962500250653 -0.5304612313978331 ... 1.1426837834805705e-05 1.141633784541507e-05 -5.433156114299284e-05\n",
"34363434455793677 1.2448480884818893 -0.530529304905935 ... 1.142651257718413e-05 1.141631890791689e-05 -5.433032375204934e-05\n",
" ... ... ... ... ... ... ...\n",
"34363434455795526 1.244925596866761 -0.5341000032259817 ... 1.1424963875375136e-05 1.140223856831398e-05 -5.432778407166719e-05\n",
"34363434455795527 1.2449142011974526 -0.5340813778130462 ... 1.1424962675568037e-05 1.1402319833101437e-05 -5.4327760018417975e-05\n",
"34363434455795528 1.2449254728685806 -0.5340682440853366 ... 1.1424978128600213e-05 1.1402363407316377e-05 -5.432780858440276e-05\n",
"34363434455795529 1.2449930234151778 -0.5342503780656344 ... 1.1424952806722041e-05 1.1401599944751488e-05 -5.4327894828837496e-05\n",
"34363434455795530 1.2449849017092407 -0.5342525438291145 ... 1.1424944972138423e-05 1.1401597213026765e-05 -5.4327865567088934e-05\n",
"34363434455795531 1.2459597573433114 -0.5341380214907069 ... 1.1425819547440191e-05 1.1401353045710704e-05 -5.433126346157582e-05\n",
"34363434455795532 1.2459743068782572 -0.5341561965148474 ... 1.1425823599370101e-05 1.1401271296640192e-05 -5.433129852122488e-05\n",
"34363434455795533 1.2464016799647009 -0.5341485239405371 ... 1.1426187679838835e-05 1.1400996716311422e-05 -5.433275448024048e-05\n",
"34363434455795534 1.2463917545623717 -0.5341402669657064 ... 1.1426183044261079e-05 1.1401036222190254e-05 -5.433272731421545e-05\n",
"34363434455795535 1.246209816635579 -0.5341790908272449 ... 1.142601195994348e-05 1.140101350426891e-05 -5.433207950710554e-05\n",
"34363434455795536 1.2462284914677926 -0.534176976844963 ... 1.1426028674104553e-05 1.1401008490956522e-05 -5.433214452722326e-05\n",
"34363434455795537 1.2462305663725444 -0.5341919716521775 ... 1.1426023636492088e-05 1.1400948123403016e-05 -5.433213975750047e-05\n",
"34363434455795538 1.2461882672325584 -0.5341870902074856 ... 1.142599015713901e-05 1.1400997453231113e-05 -5.4332000100433e-05\n",
"34363434455795539 1.246187638470928 -0.5341704624577773 ... 1.1425997152908872e-05 1.1401063202783515e-05 -5.433201106065285e-05"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source_cat.asAstropy()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this vein, you may find it more convenient to grab columns from the table and work with them as numpy arrays. As we mentioned above, the defacto unit choice of DM is radians. If you would prefer degrees, you can do something like this"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.230615Z",
"iopub.status.busy": "2021-04-23T20:36:01.229320Z",
"iopub.status.idle": "2021-04-23T20:36:01.274892Z",
"shell.execute_reply": "2021-04-23T20:36:01.273929Z"
}
},
"outputs": [],
"source": [
"ra_deg = np.rad2deg(source_cat['coord_ra'])"
]
},
{
"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": 35,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.279465Z",
"iopub.status.busy": "2021-04-23T20:36:01.278445Z",
"iopub.status.idle": "2021-04-23T20:36:01.309363Z",
"shell.execute_reply": "2021-04-23T20:36:01.310182Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 1,
"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": 36,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.314491Z",
"iopub.status.busy": "2021-04-23T20:36:01.313590Z",
"iopub.status.idle": "2021-04-23T20:36:01.354444Z",
"shell.execute_reply": "2021-04-23T20:36:01.355669Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"['slot_ApFlux_instFlux',\n",
" 'slot_ApFlux_instFluxErr',\n",
" 'slot_ApFlux_flag',\n",
" 'slot_ApFlux_flag_apertureTruncated',\n",
" 'slot_ApFlux_flag_sincCoeffsTruncated']"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find aperture flux columns\n",
"[k for k in source_cat.getSchema().extract('*ApFlux*').keys()]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.361982Z",
"iopub.status.busy": "2021-04-23T20:36:01.360537Z",
"iopub.status.idle": "2021-04-23T20:36:01.423405Z",
"shell.execute_reply": "2021-04-23T20:36:01.424296Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 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['slot_PsfFlux_instFlux'] > 0\n",
"psf_mask &= np.isfinite(source_cat['slot_ApFlux_instFlux'])\n",
"psf_mask &= np.isfinite(source_cat['slot_ApFlux_instFluxErr'])\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",
"flux_key = pos_flux.getPsfFluxSlot().getMeasKey()\n",
"pos_flux.sort(flux_key)\n",
"pos_flux.isSorted(flux_key)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.432618Z",
"iopub.status.busy": "2021-04-23T20:36:01.431646Z",
"iopub.status.idle": "2021-04-23T20:36:01.591623Z",
"shell.execute_reply": "2021-04-23T20:36:01.591015Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" id coord_ra coord_dec ... base_CDMatrix_1_2 base_CDMatrix_2_1 base_CDMatrix_2_2 \n",
" rad rad ... \n",
"----------------- ------------------ ------------------- ... ---------------------- ---------------------- ----------------------\n",
"34363434455795535 1.246209816635579 -0.5341790908272449 ... 1.142601195994348e-05 1.140101350426891e-05 -5.433207950710554e-05\n",
"34363434455795536 1.2462284914677926 -0.534176976844963 ... 1.1426028674104553e-05 1.1401008490956522e-05 -5.433214452722326e-05\n",
"34363434455795537 1.2462305663725444 -0.5341919716521775 ... 1.1426023636492088e-05 1.1400948123403016e-05 -5.433213975750047e-05\n",
"34363434455795538 1.2461882672325584 -0.5341870902074856 ... 1.142599015713901e-05 1.1400997453231113e-05 -5.4332000100433e-05\n",
"34363434455795539 1.246187638470928 -0.5341704624577773 ... 1.1425997152908872e-05 1.1401063202783515e-05 -5.433201106065285e-05\n"
]
}
],
"source": [
"# 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",
"if dataset == 'HSC':\n",
" print(source_cat.getChildren(33447624753285130)) #the argument is the id of the parent object\n",
"elif dataset == 'DC2':\n",
" print(source_cat.getChildren(34363434455795246)) #the argument is the id of the parent object\n",
"else:\n",
" msg = \"Unrecognized dataset: %s\"%dataset\n",
" raise Exception(msg)\n",
" \n",
"# Note that this will only work if the source catalog is sorted on id or parent"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can check if catalogs are contiguous in memory."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.597614Z",
"iopub.status.busy": "2021-04-23T20:36:01.596959Z",
"iopub.status.idle": "2021-04-23T20:36:01.665747Z",
"shell.execute_reply": "2021-04-23T20:36:01.666973Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"source_cat.isContiguous()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.673464Z",
"iopub.status.busy": "2021-04-23T20:36:01.672040Z",
"iopub.status.idle": "2021-04-23T20:36:01.719469Z",
"shell.execute_reply": "2021-04-23T20:36:01.718068Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pos_flux.isContiguous()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some operations are quicker if catalogs are contiguous in memory, like using numpy-like syntax to create masks. 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). Additionally, certain operations will not work on non-contiguous tables."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.725224Z",
"iopub.status.busy": "2021-04-23T20:36:01.723803Z",
"iopub.status.idle": "2021-04-23T20:36:01.766269Z",
"shell.execute_reply": "2021-04-23T20:36:01.759803Z"
}
},
"outputs": [],
"source": [
"# uncomment the last line if you are curious and want to prove it wont work\n",
"# this will not work and give you an error message complaining pos_flux is not contiguous\n",
"# pos_flux.asAstropy()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can always force a table to be contiguous by making a deep copy of it. "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.778776Z",
"iopub.status.busy": "2021-04-23T20:36:01.777373Z",
"iopub.status.idle": "2021-04-23T20:36:01.857567Z",
"shell.execute_reply": "2021-04-23T20:36:01.858925Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pos_flux = pos_flux.copy(deep=True)\n",
"pos_flux.isContiguous()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the next few cells, we show a few methods that can be used to search through tables"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.865731Z",
"iopub.status.busy": "2021-04-23T20:36:01.864324Z",
"iopub.status.idle": "2021-04-23T20:36:01.910513Z",
"shell.execute_reply": "2021-04-23T20:36:01.908981Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"slice(1077, 1585, 1)"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Use the between method to get the indices of values within a range:\n",
"pos_flux.between(1e4,1e5,psf_flux_key)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.917410Z",
"iopub.status.busy": "2021-04-23T20:36:01.915964Z",
"iopub.status.idle": "2021-04-23T20:36:01.952837Z",
"shell.execute_reply": "2021-04-23T20:36:01.951489Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"9964.234820884494\n"
]
}
],
"source": [
"# 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",
"# (since the slice range is different for the HSC dataset and the DC2 dataset we use as \n",
"# examples, we utilize an \"if... elif... else...\" block here)\n",
"\n",
"if dataset == 'HSC':\n",
" print(pos_flux[2033].get(psf_flux_key))\n",
"elif dataset == 'DC2':\n",
" print(pos_flux[1076].get(psf_flux_key))\n",
"else:\n",
" msg = \"Unrecognized dataset: %s\"%dataset\n",
" raise Exception(msg)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.960208Z",
"iopub.status.busy": "2021-04-23T20:36:01.957773Z",
"iopub.status.idle": "2021-04-23T20:36:01.989391Z",
"shell.execute_reply": "2021-04-23T20:36:01.988092Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"95068.42181208971\n"
]
}
],
"source": [
"# and that the last element in the slice is inside the threshold\n",
"# (again, since the slice range is different for the HSC dataset \n",
"# and the DC2 dataset we use as examples, we utilize an \n",
"# \"if... elif... else...\" block here)\n",
"\n",
"if dataset == 'HSC':\n",
" print(pos_flux[2311].get(psf_flux_key))\n",
"elif dataset == 'DC2':\n",
" print(pos_flux[1584].get(psf_flux_key))\n",
"else:\n",
" msg = \"Unrecognized dataset: %s\"%dataset\n",
" raise Exception(msg)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:01.994987Z",
"iopub.status.busy": "2021-04-23T20:36:01.993532Z",
"iopub.status.idle": "2021-04-23T20:36:02.021381Z",
"shell.execute_reply": "2021-04-23T20:36:02.020279Z"
}
},
"outputs": [],
"source": [
"# your turn. confirm the lower limits of the between query\n",
"# pos_flux[...].getPsfFlux\n"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:02.026592Z",
"iopub.status.busy": "2021-04-23T20:36:02.025286Z",
"iopub.status.idle": "2021-04-23T20:36:02.051079Z",
"shell.execute_reply": "2021-04-23T20:36:02.052182Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1077"
]
},
"execution_count": 1,
"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": 48,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:02.057461Z",
"iopub.status.busy": "2021-04-23T20:36:02.056156Z",
"iopub.status.idle": "2021-04-23T20:36:02.081698Z",
"shell.execute_reply": "2021-04-23T20:36:02.080651Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1585"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pos_flux.lower_bound(1e5, psf_flux_key)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 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."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:02.087430Z",
"iopub.status.busy": "2021-04-23T20:36:02.086177Z",
"iopub.status.idle": "2021-04-23T20:36:02.117135Z",
"shell.execute_reply": "2021-04-23T20:36:02.116128Z"
}
},
"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",
"# only consider sources with positive flux\n",
"select_mask &= source_cat['base_CircularApertureFlux_12_0_instFlux'] > 0\n",
"\n",
"size_bright_cat = source_cat.subset(select_mask)"
]
},
{
"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..."
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:02.123031Z",
"iopub.status.busy": "2021-04-23T20:36:02.122127Z",
"iopub.status.idle": "2021-04-23T20:36:02.320059Z",
"shell.execute_reply": "2021-04-23T20:36:02.321287Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(5.0, 15.0)"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(np.log(size_bright_cat['base_CircularApertureFlux_12_0_instFlux']), \n",
" size_bright_cat['base_SdssShape_xx'] + size_bright_cat['base_SdssShape_yy'],\n",
" c=size_bright_cat['base_ClassificationExtendedness_value'],\n",
" cmap='bwr',\n",
" s=4)\n",
"plt.xlabel('log flux')\n",
"plt.ylabel('size px^2')\n",
"plt.ylim([0,20]) #zoom in to make the stellar locus clearer\n",
"plt.xlim([5,15])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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",
"\n",
"In the next section we will show operations which involve two or more catalogs.\n",
"\n",
"#### Table concatenation"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:02.328224Z",
"iopub.status.busy": "2021-04-23T20:36:02.326899Z",
"iopub.status.idle": "2021-04-23T20:36:02.416915Z",
"shell.execute_reply": "2021-04-23T20:36:02.415566Z"
}
},
"outputs": [],
"source": [
"# Grab a second catalog using the butler:\n",
"# (since the dataid keys differ for the HSC and DC2 dataset examples \n",
"# we use as examples, we utilize an \"if... elif... else...\" block here)\n",
"\n",
"if dataset == 'HSC':\n",
" dataId2 = {'filter': 'HSC-Z', 'ccd': 31, 'visit': 38938}\n",
"elif dataset == 'DC2':\n",
" dataId2 = {'filter':'i', 'visit': 512055, 'raftName': 'R20', 'detector': 75}\n",
"else:\n",
" msg = \"Unrecognized dataset: %s\"%dataset\n",
" raise Exception(msg)\n",
"\n",
"source_cat2 = butler.get('src', dataId2)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:02.424809Z",
"iopub.status.busy": "2021-04-23T20:36:02.423289Z",
"iopub.status.idle": "2021-04-23T20:36:02.501149Z",
"shell.execute_reply": "2021-04-23T20:36:02.499908Z"
}
},
"outputs": [],
"source": [
"# Put our catalogs in a list:\n",
"catalogList = [source_cat, source_cat2]\n",
"\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",
" 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. In the next example, we will match two overlapping observations from different filters together. Getting this data will require us to use a new data repository, so we will have to set up a new butler, then ask for our two tables"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:02.508570Z",
"iopub.status.busy": "2021-04-23T20:36:02.507056Z",
"iopub.status.idle": "2021-04-23T20:36:05.738790Z",
"shell.execute_reply": "2021-04-23T20:36:05.737424Z"
}
},
"outputs": [],
"source": [
"# For the rest of this tutorial, we are invoking a new butler -- one for coadd data.\n",
"# If you want, you can switch `datasets` as well, too; so we give you that option here:\n",
"\n",
"#dataset='HSC'\n",
"dataset='DC2'\n",
"\n",
"\n",
"# Temporary \"fix\" so one does not need to restart kernel \n",
"# when switching from DC2 to HSC...\n",
"# See also: https://lsstc.slack.com/archives/C3UCAEW3D/p1584386779038000\n",
"#import lsst.afw.image as afwImage\n",
"#print(afwImage.Filter.getNames())\n",
"#afwImage.Filter.reset()\n",
"import lsst.obs.base as obsBase\n",
"obsBase.FilterDefinitionCollection.reset()\n",
"#print(afwImage.Filter.getNames())\n",
"\n",
"\n",
"if dataset == 'HSC':\n",
"\n",
" # Good example from the HSC coadds:\n",
" \n",
" depth = 'WIDE' # WIDE, DEEP, UDEEP\n",
" #field = 'SSP_WIDE' # SSP_WIDE, SSP_DEEP, SSP_UDEEP\n",
" butler = dafPersist.Butler('/datasets/hsc/repo/rerun/DM-13666/%s/'%(depth))\n",
" tract = 15830\n",
" patch = '0,3'\n",
" filterList = [\"HSC-I\", \"HSC-R\"]\n",
" \n",
"\n",
"elif dataset == 'DC2':\n",
"\n",
" # Good example from the DC2 coadds:\n",
"\n",
" butler = dafPersist.Butler('/datasets/DC2/DR6/Run2.2i/patched/2021-02-10/rerun/run2.2i-coadd-wfd-dr6-v1')\n",
" tract = 4851\n",
" patch = '1,4'\n",
" filterList = [\"i\", \"r\"]\n",
" \n",
"\n",
"else:\n",
"\n",
" msg = \"Unrecognized dataset: %s\"%dataset\n",
" raise Exception(msg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's grab some forced photometry for the (HSC-I/i) band and the (HSC-R/r) band. They will have the same tract and patch, which ensures they will overlap"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:05.745488Z",
"iopub.status.busy": "2021-04-23T20:36:05.743960Z",
"iopub.status.idle": "2021-04-23T20:36:06.928563Z",
"shell.execute_reply": "2021-04-23T20:36:06.929776Z"
}
},
"outputs": [],
"source": [
"objects = []\n",
"for filter in filterList:\n",
" #'field' not needed in dataid\n",
" #objects.append(butler.get(\"deepCoadd_forced_src\", dataId={'filter':filter, 'field':field, 'tract':tract, 'patch':patch}))\n",
" objects.append(butler.get(\"deepCoadd_forced_src\", dataId={'filter':filter, 'tract':tract, 'patch':patch}))\n",
"iSources, rSources = objects"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will need these calib objects for our two bands so that we can calculate magnitudes a little later"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:06.939906Z",
"iopub.status.busy": "2021-04-23T20:36:06.938556Z",
"iopub.status.idle": "2021-04-23T20:36:07.701325Z",
"shell.execute_reply": "2021-04-23T20:36:07.702522Z"
}
},
"outputs": [],
"source": [
"calibs = []\n",
"for filter in filterList:\n",
" #'field' not needed in dataid?\n",
" #calibs.append(butler.get(\"deepCoadd_calexp_photoCalib\", dataId={'filter':filter, 'field':field, 'tract':tract, 'patch':patch}))\n",
" calibs.append(butler.get(\"deepCoadd_calexp_photoCalib\", dataId={'filter':filter, 'tract':tract, 'patch':patch}))\n",
"iCalib, rCalib = calibs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some quality control flags to prune down the data to give us stars with a signal to noise ratio of 10 or higher. We will use this to index into our catalogs when we do the matching. Note that because these are forced photometry catalogs, the records in each catalog line up so that they should be refering to the same astrophysical sources. That is why we will be able to use our mask on both iSources and rSources. This is not true in general of afwTables."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:07.710213Z",
"iopub.status.busy": "2021-04-23T20:36:07.708676Z",
"iopub.status.idle": "2021-04-23T20:36:07.763411Z",
"shell.execute_reply": "2021-04-23T20:36:07.762142Z"
}
},
"outputs": [],
"source": [
"noChildren = iSources['deblend_nChild'] == 0\n",
"isGoodFlux = ~iSources['modelfit_CModel_flag']\n",
"isStellar = iSources['base_ClassificationExtendedness_value'] < 1.\n",
"snr = iSources['modelfit_CModel_instFlux']/iSources['modelfit_CModel_instFluxErr'] > 10\n",
"\n",
"star_flag = noChildren & isGoodFlux & isStellar & snr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"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 catalog b is reported alone. If True, the symmetric match between source b and a is also reported."
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:07.769857Z",
"iopub.status.busy": "2021-04-23T20:36:07.768521Z",
"iopub.status.idle": "2021-04-23T20:36:07.809807Z",
"shell.execute_reply": "2021-04-23T20:36:07.808821Z"
}
},
"outputs": [],
"source": [
"# get a match control, we will keep the default configuration\n",
"mc = afwTable.MatchControl()\n",
"\n",
"# match our two catalogs, setting the match threshold to be one arcsecond\n",
"matches = afwTable.matchRaDec(iSources[star_flag], rSources[star_flag],\n",
" lsst.geom.Angle(1,lsst.geom.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": 58,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:07.815121Z",
"iopub.status.busy": "2021-04-23T20:36:07.814001Z",
"iopub.status.idle": "2021-04-23T20:36:07.847463Z",
"shell.execute_reply": "2021-04-23T20:36:07.848681Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"997"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# how many sources were actually matched?\n",
"len(matches)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:07.854399Z",
"iopub.status.busy": "2021-04-23T20:36:07.853105Z",
"iopub.status.idle": "2021-04-23T20:36:07.925379Z",
"shell.execute_reply": "2021-04-23T20:36:07.926607Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"id: 21335078244214836\n",
"coord_ra: 1.00536 rad\n",
"coord_dec: -0.5044 rad\n",
"parent: 21335078244188220\n",
"deblend_nChild: 0\n",
"base_SdssCentroid_x: 7595.01\n",
"base_SdssCentroid_y: 15936.9\n",
"base_SdssCentroid_xErr: 0.114705\n",
"base_SdssCentroid_yErr: 0.121465\n",
"base_SdssCentroid_flag: 0\n",
"base_SdssCentroid_flag_edge: 0\n",
"base_SdssCentroid_flag_noSecondDerivative: 0\n",
"base_SdssCentroid_flag_almostNoSecondDerivative: 0\n",
"base_SdssCentroid_flag_notAtMaximum: 0\n",
"base_SdssCentroid_flag_resetToPeak: 0\n",
"base_SdssCentroid_flag_badError: 0\n",
"base_TransformedCentroid_x: 7595.01\n",
"base_TransformedCentroid_y: 15936.9\n",
"base_TransformedCentroid_flag: 0\n",
"base_InputCount_flag: 0\n",
"base_InputCount_value: 101\n",
"base_InputCount_flag_noInputs: 0\n",
"base_SdssShape_xx: 2.60641\n",
"base_SdssShape_yy: 2.97911\n",
"base_SdssShape_xy: 0.12778\n",
"base_SdssShape_xxErr: 0.300169\n",
"base_SdssShape_yyErr: 0.227159\n",
"base_SdssShape_xyErr: 0.343091\n",
"base_SdssShape_x: 7595.01\n",
"base_SdssShape_y: 15936.9\n",
"base_SdssShape_instFlux: 8.84563\n",
"base_SdssShape_instFluxErr: 0.509357\n",
"base_SdssShape_psf_xx: 3.10643\n",
"base_SdssShape_psf_yy: 3.08538\n",
"base_SdssShape_psf_xy: 0.00789816\n",
"base_SdssShape_instFlux_xx_Cov: -0.0764466\n",
"base_SdssShape_instFlux_yy_Cov: -0.00374781\n",
"base_SdssShape_instFlux_xy_Cov: -0.087378\n",
"base_SdssShape_flag: 0\n",
"base_SdssShape_flag_unweightedBad: 0\n",
"base_SdssShape_flag_unweighted: 0\n",
"base_SdssShape_flag_shift: 0\n",
"base_SdssShape_flag_maxIter: 0\n",
"base_SdssShape_flag_psf: 0\n",
"base_TransformedShape_xx: 2.60407\n",
"base_TransformedShape_yy: 3.00102\n",
"base_TransformedShape_xy: 0.120437\n",
"base_TransformedShape_flag: 0\n",
"modelfit_DoubleShapeletPsfApprox_0_xx: 2.37367\n",
"modelfit_DoubleShapeletPsfApprox_0_yy: 2.37937\n",
"modelfit_DoubleShapeletPsfApprox_0_xy: 0.00721379\n",
"modelfit_DoubleShapeletPsfApprox_0_x: -0.00232958\n",
"modelfit_DoubleShapeletPsfApprox_0_y: -0.000364612\n",
"modelfit_DoubleShapeletPsfApprox_0_0: 0.172794\n",
"modelfit_DoubleShapeletPsfApprox_0_1: -6.01944e-05\n",
"modelfit_DoubleShapeletPsfApprox_0_2: 0.000262287\n",
"modelfit_DoubleShapeletPsfApprox_0_3: -0.000350329\n",
"modelfit_DoubleShapeletPsfApprox_0_4: -2.53996e-05\n",
"modelfit_DoubleShapeletPsfApprox_0_5: 0.000353144\n",
"modelfit_DoubleShapeletPsfApprox_1_xx: 8.18561\n",
"modelfit_DoubleShapeletPsfApprox_1_yy: 8.20526\n",
"modelfit_DoubleShapeletPsfApprox_1_xy: 0.0248767\n",
"modelfit_DoubleShapeletPsfApprox_1_x: -0.00232958\n",
"modelfit_DoubleShapeletPsfApprox_1_y: -0.000364612\n",
"modelfit_DoubleShapeletPsfApprox_1_0: 0.103664\n",
"modelfit_DoubleShapeletPsfApprox_1_1: 0.000153311\n",
"modelfit_DoubleShapeletPsfApprox_1_2: -4.24636e-05\n",
"modelfit_DoubleShapeletPsfApprox_flag: 0\n",
"modelfit_DoubleShapeletPsfApprox_flag_invalidPointForPsf: 0\n",
"modelfit_DoubleShapeletPsfApprox_flag_invalidMoments: 0\n",
"modelfit_DoubleShapeletPsfApprox_flag_maxIterations: 0\n",
"base_CircularApertureFlux_3_0_instFlux: 7.06936\n",
"base_CircularApertureFlux_3_0_instFluxErr: 0.316457\n",
"base_CircularApertureFlux_3_0_flag: 0\n",
"base_CircularApertureFlux_3_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_4_5_instFlux: 8.70256\n",
"base_CircularApertureFlux_4_5_instFluxErr: 0.476818\n",
"base_CircularApertureFlux_4_5_flag: 0\n",
"base_CircularApertureFlux_4_5_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_6_0_instFlux: 9.07784\n",
"base_CircularApertureFlux_6_0_instFluxErr: 0.63913\n",
"base_CircularApertureFlux_6_0_flag: 0\n",
"base_CircularApertureFlux_6_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_9_0_instFlux: 9.97245\n",
"base_CircularApertureFlux_9_0_instFluxErr: 0.964298\n",
"base_CircularApertureFlux_9_0_flag: 0\n",
"base_CircularApertureFlux_9_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_12_0_instFlux: 10.9126\n",
"base_CircularApertureFlux_12_0_instFluxErr: 1.28996\n",
"base_CircularApertureFlux_12_0_flag: 0\n",
"base_CircularApertureFlux_12_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_17_0_instFlux: 16.4985\n",
"base_CircularApertureFlux_17_0_instFluxErr: 1.83484\n",
"base_CircularApertureFlux_17_0_flag: 0\n",
"base_CircularApertureFlux_17_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_25_0_instFlux: 18.8538\n",
"base_CircularApertureFlux_25_0_instFluxErr: 2.71032\n",
"base_CircularApertureFlux_25_0_flag: 0\n",
"base_CircularApertureFlux_25_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_35_0_instFlux: 30.793\n",
"base_CircularApertureFlux_35_0_instFluxErr: 3.79485\n",
"base_CircularApertureFlux_35_0_flag: 0\n",
"base_CircularApertureFlux_35_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_50_0_instFlux: nan\n",
"base_CircularApertureFlux_50_0_instFluxErr: nan\n",
"base_CircularApertureFlux_50_0_flag: 1\n",
"base_CircularApertureFlux_50_0_flag_apertureTruncated: 1\n",
"base_CircularApertureFlux_70_0_instFlux: nan\n",
"base_CircularApertureFlux_70_0_instFluxErr: nan\n",
"base_CircularApertureFlux_70_0_flag: 1\n",
"base_CircularApertureFlux_70_0_flag_apertureTruncated: 1\n",
"base_GaussianFlux_instFlux: 9.55711\n",
"base_GaussianFlux_instFluxErr: 0.393142\n",
"base_GaussianFlux_flag: 0\n",
"base_LocalBackground_instFlux: 0.005688\n",
"base_LocalBackground_instFluxErr: 0.0578756\n",
"base_LocalBackground_flag: 0\n",
"base_LocalBackground_flag_noGoodPixels: 0\n",
"base_LocalBackground_flag_noPsf: 0\n",
"base_PixelFlags_flag: 0\n",
"base_PixelFlags_flag_offimage: 0\n",
"base_PixelFlags_flag_edge: 0\n",
"base_PixelFlags_flag_interpolated: 0\n",
"base_PixelFlags_flag_saturated: 0\n",
"base_PixelFlags_flag_cr: 0\n",
"base_PixelFlags_flag_bad: 0\n",
"base_PixelFlags_flag_suspect: 0\n",
"base_PixelFlags_flag_interpolatedCenter: 0\n",
"base_PixelFlags_flag_saturatedCenter: 0\n",
"base_PixelFlags_flag_crCenter: 0\n",
"base_PixelFlags_flag_suspectCenter: 0\n",
"base_PixelFlags_flag_clippedCenter: 0\n",
"base_PixelFlags_flag_sensor_edgeCenter: 0\n",
"base_PixelFlags_flag_rejectedCenter: 0\n",
"base_PixelFlags_flag_inexact_psfCenter: 0\n",
"base_PixelFlags_flag_bright_objectCenter: 0\n",
"base_PixelFlags_flag_clipped: 0\n",
"base_PixelFlags_flag_sensor_edge: 0\n",
"base_PixelFlags_flag_rejected: 0\n",
"base_PixelFlags_flag_inexact_psf: 0\n",
"base_PixelFlags_flag_bright_object: 0\n",
"base_PsfFlux_instFlux: 10.343\n",
"base_PsfFlux_instFluxErr: 0.423546\n",
"base_PsfFlux_area: 48.4084\n",
"base_PsfFlux_flag: 0\n",
"base_PsfFlux_flag_noGoodPixels: 0\n",
"base_PsfFlux_flag_edge: 0\n",
"base_Variance_flag: 0\n",
"base_Variance_value: 0.00371032\n",
"base_Variance_flag_emptyFootprint: 0\n",
"ext_photometryKron_KronFlux_instFlux: 9.69437\n",
"ext_photometryKron_KronFlux_instFluxErr: 0.769312\n",
"ext_photometryKron_KronFlux_radius: 2.77981\n",
"ext_photometryKron_KronFlux_radius_for_radius: nan\n",
"ext_photometryKron_KronFlux_psf_radius: 2.20522\n",
"ext_photometryKron_KronFlux_flag: 0\n",
"ext_photometryKron_KronFlux_flag_edge: 0\n",
"ext_photometryKron_KronFlux_flag_bad_shape_no_psf: 0\n",
"ext_photometryKron_KronFlux_flag_no_minimum_radius: 0\n",
"ext_photometryKron_KronFlux_flag_no_fallback_radius: 0\n",
"ext_photometryKron_KronFlux_flag_bad_radius: 0\n",
"ext_photometryKron_KronFlux_flag_used_minimum_radius: 0\n",
"ext_photometryKron_KronFlux_flag_used_psf_radius: 0\n",
"ext_photometryKron_KronFlux_flag_small_radius: 0\n",
"ext_photometryKron_KronFlux_flag_bad_shape: 0\n",
"ext_convolved_ConvolvedFlux_seeing: 1.75951\n",
"ext_convolved_ConvolvedFlux_0_deconv: 1\n",
"ext_convolved_ConvolvedFlux_0_3_3_instFlux: 10.3568\n",
"ext_convolved_ConvolvedFlux_0_3_3_instFluxErr: 0.48187\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_instFlux: 10.0567\n",
"ext_convolved_ConvolvedFlux_0_4_5_instFluxErr: 0.551014\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_instFlux: 9.63897\n",
"ext_convolved_ConvolvedFlux_0_6_0_instFluxErr: 0.678637\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_kron_instFlux: 9.69739\n",
"ext_convolved_ConvolvedFlux_0_kron_instFluxErr: 0.769551\n",
"ext_convolved_ConvolvedFlux_0_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_deconv: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_instFlux: 10.0159\n",
"ext_convolved_ConvolvedFlux_1_3_3_instFluxErr: 0.128645\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_instFlux: 9.87651\n",
"ext_convolved_ConvolvedFlux_1_4_5_instFluxErr: 0.137835\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_instFlux: 9.75412\n",
"ext_convolved_ConvolvedFlux_1_6_0_instFluxErr: 0.16343\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_kron_instFlux: 9.97061\n",
"ext_convolved_ConvolvedFlux_1_kron_instFluxErr: 0.186434\n",
"ext_convolved_ConvolvedFlux_1_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_deconv: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_instFlux: 9.70625\n",
"ext_convolved_ConvolvedFlux_2_3_3_instFluxErr: 0.0950786\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_instFlux: 9.82445\n",
"ext_convolved_ConvolvedFlux_2_4_5_instFluxErr: 0.0917635\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_instFlux: 9.84614\n",
"ext_convolved_ConvolvedFlux_2_6_0_instFluxErr: 0.0984979\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_kron_instFlux: 10.3495\n",
"ext_convolved_ConvolvedFlux_2_kron_instFluxErr: 0.111722\n",
"ext_convolved_ConvolvedFlux_2_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_deconv: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_instFlux: 9.66183\n",
"ext_convolved_ConvolvedFlux_3_3_3_instFluxErr: 0.0931103\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_instFlux: 9.86911\n",
"ext_convolved_ConvolvedFlux_3_4_5_instFluxErr: 0.0838094\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_instFlux: 9.94691\n",
"ext_convolved_ConvolvedFlux_3_6_0_instFluxErr: 0.0823295\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_kron_instFlux: 10.7702\n",
"ext_convolved_ConvolvedFlux_3_kron_instFluxErr: 0.0918793\n",
"ext_convolved_ConvolvedFlux_3_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_flag: 0\n",
"modelfit_CModel_initial_instFlux: 10.322\n",
"modelfit_CModel_initial_instFluxErr: 0.424537\n",
"modelfit_CModel_initial_flag: 0\n",
"modelfit_CModel_initial_instFlux_inner: 8.85263\n",
"modelfit_CModel_initial_flag_badReference: 0\n",
"modelfit_CModel_initial_flag_numericError: 0\n",
"modelfit_CModel_exp_instFlux: 10.3243\n",
"modelfit_CModel_exp_instFluxErr: 0.424634\n",
"modelfit_CModel_exp_flag: 0\n",
"modelfit_CModel_exp_instFlux_inner: 8.85265\n",
"modelfit_CModel_exp_flag_badReference: 0\n",
"modelfit_CModel_exp_flag_numericError: 0\n",
"modelfit_CModel_dev_instFlux: 10.3193\n",
"modelfit_CModel_dev_instFluxErr: 0.424428\n",
"modelfit_CModel_dev_flag: 0\n",
"modelfit_CModel_dev_instFlux_inner: 8.85297\n",
"modelfit_CModel_dev_flag_badReference: 0\n",
"modelfit_CModel_dev_flag_numericError: 0\n",
"modelfit_CModel_instFlux: 10.3227\n",
"modelfit_CModel_instFluxErr: 0.424568\n",
"modelfit_CModel_flag: 0\n",
"modelfit_CModel_instFlux_inner: 8.85265\n",
"modelfit_CModel_fracDev: 0\n",
"modelfit_CModel_objective: 0.0635862\n",
"modelfit_CModel_flag_region_maxArea: 0\n",
"modelfit_CModel_flag_region_maxBadPixelFraction: 0\n",
"modelfit_CModel_flag_badReference: 0\n",
"modelfit_CModel_flag_noShapeletPsf: 0\n",
"modelfit_CModel_flag_badCentroid: 0\n",
"undeblended_base_CircularApertureFlux_3_0_instFlux: 7.95589\n",
"undeblended_base_CircularApertureFlux_3_0_instFluxErr: 0.316457\n",
"undeblended_base_CircularApertureFlux_3_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_3_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_4_5_instFlux: 10.4031\n",
"undeblended_base_CircularApertureFlux_4_5_instFluxErr: 0.476818\n",
"undeblended_base_CircularApertureFlux_4_5_flag: 0\n",
"undeblended_base_CircularApertureFlux_4_5_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_6_0_instFlux: 12.0704\n",
"undeblended_base_CircularApertureFlux_6_0_instFluxErr: 0.63913\n",
"undeblended_base_CircularApertureFlux_6_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_6_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_9_0_instFlux: 16.9095\n",
"undeblended_base_CircularApertureFlux_9_0_instFluxErr: 0.964298\n",
"undeblended_base_CircularApertureFlux_9_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_9_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_12_0_instFlux: 21.2266\n",
"undeblended_base_CircularApertureFlux_12_0_instFluxErr: 1.28996\n",
"undeblended_base_CircularApertureFlux_12_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_12_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_17_0_instFlux: 37.3047\n",
"undeblended_base_CircularApertureFlux_17_0_instFluxErr: 1.83484\n",
"undeblended_base_CircularApertureFlux_17_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_17_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_25_0_instFlux: 139.549\n",
"undeblended_base_CircularApertureFlux_25_0_instFluxErr: 2.71032\n",
"undeblended_base_CircularApertureFlux_25_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_25_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_35_0_instFlux: 202.816\n",
"undeblended_base_CircularApertureFlux_35_0_instFluxErr: 3.79485\n",
"undeblended_base_CircularApertureFlux_35_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_35_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_50_0_instFlux: nan\n",
"undeblended_base_CircularApertureFlux_50_0_instFluxErr: nan\n",
"undeblended_base_CircularApertureFlux_50_0_flag: 1\n",
"undeblended_base_CircularApertureFlux_50_0_flag_apertureTruncated: 1\n",
"undeblended_base_CircularApertureFlux_70_0_instFlux: nan\n",
"undeblended_base_CircularApertureFlux_70_0_instFluxErr: nan\n",
"undeblended_base_CircularApertureFlux_70_0_flag: 1\n",
"undeblended_base_CircularApertureFlux_70_0_flag_apertureTruncated: 1\n",
"undeblended_base_PsfFlux_instFlux: 11.6928\n",
"undeblended_base_PsfFlux_instFluxErr: 0.425969\n",
"undeblended_base_PsfFlux_area: 48.4084\n",
"undeblended_base_PsfFlux_flag: 0\n",
"undeblended_base_PsfFlux_flag_noGoodPixels: 0\n",
"undeblended_base_PsfFlux_flag_edge: 0\n",
"undeblended_ext_photometryKron_KronFlux_instFlux: 13.1186\n",
"undeblended_ext_photometryKron_KronFlux_instFluxErr: 0.742051\n",
"undeblended_ext_photometryKron_KronFlux_radius: 2.77981\n",
"undeblended_ext_photometryKron_KronFlux_radius_for_radius: nan\n",
"undeblended_ext_photometryKron_KronFlux_psf_radius: 2.20522\n",
"undeblended_ext_photometryKron_KronFlux_flag: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_edge: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_bad_shape_no_psf: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_no_minimum_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_no_fallback_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_bad_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_used_minimum_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_used_psf_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_small_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_bad_shape: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_seeing: 1.75951\n",
"undeblended_ext_convolved_ConvolvedFlux_0_deconv: 1\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_instFlux: 11.8071\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_instFluxErr: 0.48187\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_instFlux: 12.0219\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_instFluxErr: 0.551014\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_instFlux: 12.8165\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_instFluxErr: 0.678637\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_instFlux: 13.6048\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_instFluxErr: 0.769551\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_deconv: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_instFlux: 11.5333\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_instFluxErr: 0.128645\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_instFlux: 12.0165\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_instFluxErr: 0.137835\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_instFlux: 13.0289\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_instFluxErr: 0.16343\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_instFlux: 14.047\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_instFluxErr: 0.186434\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_deconv: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_instFlux: 11.6644\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_instFluxErr: 0.0950786\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_instFlux: 12.3327\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_instFluxErr: 0.0917635\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_instFlux: 13.3688\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_instFluxErr: 0.0984979\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_instFlux: 14.7584\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_instFluxErr: 0.111722\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_deconv: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_instFlux: 12.2449\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_instFluxErr: 0.0931103\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_instFlux: 12.9552\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_instFluxErr: 0.0838094\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_instFlux: 13.9043\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_instFluxErr: 0.0823295\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_instFlux: 15.6734\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_instFluxErr: 0.0918793\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_flag: 0\n",
"base_GaussianFlux_apCorr: 1.07864\n",
"base_GaussianFlux_apCorrErr: 0\n",
"base_GaussianFlux_flag_apCorr: 0\n",
"base_PsfFlux_apCorr: 0.994313\n",
"base_PsfFlux_apCorrErr: 0\n",
"base_PsfFlux_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_apCorr: 1.37926\n",
"ext_convolved_ConvolvedFlux_0_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_apCorr: 1.1556\n",
"ext_convolved_ConvolvedFlux_0_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_apCorr: 1.06181\n",
"ext_convolved_ConvolvedFlux_0_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_kron_apCorr: 1.03706\n",
"ext_convolved_ConvolvedFlux_0_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_kron_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_apCorr: 1.55132\n",
"ext_convolved_ConvolvedFlux_1_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_apCorr: 1.21791\n",
"ext_convolved_ConvolvedFlux_1_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_apCorr: 1.07711\n",
"ext_convolved_ConvolvedFlux_1_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_kron_apCorr: 1.0584\n",
"ext_convolved_ConvolvedFlux_1_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_kron_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_apCorr: 2.05233\n",
"ext_convolved_ConvolvedFlux_2_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_apCorr: 1.45072\n",
"ext_convolved_ConvolvedFlux_2_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_apCorr: 1.16148\n",
"ext_convolved_ConvolvedFlux_2_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_kron_apCorr: 1.13441\n",
"ext_convolved_ConvolvedFlux_2_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_kron_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_apCorr: 2.74687\n",
"ext_convolved_ConvolvedFlux_3_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_apCorr: 1.81032\n",
"ext_convolved_ConvolvedFlux_3_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_apCorr: 1.32626\n",
"ext_convolved_ConvolvedFlux_3_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_kron_apCorr: 1.27396\n",
"ext_convolved_ConvolvedFlux_3_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_kron_flag_apCorr: 0\n",
"ext_photometryKron_KronFlux_apCorr: 1.03674\n",
"ext_photometryKron_KronFlux_apCorrErr: 0\n",
"ext_photometryKron_KronFlux_flag_apCorr: 0\n",
"modelfit_CModel_apCorr: 0.992067\n",
"modelfit_CModel_apCorrErr: 0\n",
"modelfit_CModel_flag_apCorr: 0\n",
"modelfit_CModel_dev_apCorr: 0.991726\n",
"modelfit_CModel_dev_apCorrErr: 0\n",
"modelfit_CModel_dev_flag_apCorr: 0\n",
"modelfit_CModel_exp_apCorr: 0.99222\n",
"modelfit_CModel_exp_apCorrErr: 0\n",
"modelfit_CModel_exp_flag_apCorr: 0\n",
"modelfit_CModel_initial_apCorr: 0.992062\n",
"modelfit_CModel_initial_apCorrErr: 0\n",
"modelfit_CModel_initial_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_flag_apCorr: 0\n",
"base_ClassificationExtendedness_value: 0\n",
"base_ClassificationExtendedness_flag: 0"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# lets examine the first element in the matches list\n",
"# we can grab the record corresponding to this source in the i band catalog\n",
"# using the first attribute\n",
"matches[0].first"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:07.935369Z",
"iopub.status.busy": "2021-04-23T20:36:07.934051Z",
"iopub.status.idle": "2021-04-23T20:36:08.007541Z",
"shell.execute_reply": "2021-04-23T20:36:08.008662Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"id: 21335078244214836\n",
"coord_ra: 1.00536 rad\n",
"coord_dec: -0.5044 rad\n",
"parent: 21335078244188220\n",
"deblend_nChild: 0\n",
"base_SdssCentroid_x: 7595.08\n",
"base_SdssCentroid_y: 15936.9\n",
"base_SdssCentroid_xErr: 0.102302\n",
"base_SdssCentroid_yErr: 0.107626\n",
"base_SdssCentroid_flag: 0\n",
"base_SdssCentroid_flag_edge: 0\n",
"base_SdssCentroid_flag_noSecondDerivative: 0\n",
"base_SdssCentroid_flag_almostNoSecondDerivative: 0\n",
"base_SdssCentroid_flag_notAtMaximum: 0\n",
"base_SdssCentroid_flag_resetToPeak: 0\n",
"base_SdssCentroid_flag_badError: 0\n",
"base_TransformedCentroid_x: 7595.01\n",
"base_TransformedCentroid_y: 15936.9\n",
"base_TransformedCentroid_flag: 0\n",
"base_InputCount_flag: 0\n",
"base_InputCount_value: 105\n",
"base_InputCount_flag_noInputs: 0\n",
"base_SdssShape_xx: 3.44978\n",
"base_SdssShape_yy: 3.71045\n",
"base_SdssShape_xy: -0.559484\n",
"base_SdssShape_xxErr: 0.322392\n",
"base_SdssShape_yyErr: 0.239295\n",
"base_SdssShape_xyErr: 0.346752\n",
"base_SdssShape_x: 7595.05\n",
"base_SdssShape_y: 15936.9\n",
"base_SdssShape_instFlux: 6.36984\n",
"base_SdssShape_instFluxErr: 0.29764\n",
"base_SdssShape_psf_xx: 3.38324\n",
"base_SdssShape_psf_yy: 3.34278\n",
"base_SdssShape_psf_xy: -0.00941772\n",
"base_SdssShape_instFlux_xx_Cov: -0.0479784\n",
"base_SdssShape_instFlux_yy_Cov: 0.00778111\n",
"base_SdssShape_instFlux_xy_Cov: -0.0516037\n",
"base_SdssShape_flag: 0\n",
"base_SdssShape_flag_unweightedBad: 0\n",
"base_SdssShape_flag_unweighted: 0\n",
"base_SdssShape_flag_shift: 0\n",
"base_SdssShape_flag_maxIter: 0\n",
"base_SdssShape_flag_psf: 0\n",
"base_TransformedShape_xx: 2.60407\n",
"base_TransformedShape_yy: 3.00102\n",
"base_TransformedShape_xy: 0.120437\n",
"base_TransformedShape_flag: 0\n",
"modelfit_DoubleShapeletPsfApprox_0_xx: 2.55898\n",
"modelfit_DoubleShapeletPsfApprox_0_yy: 2.5414\n",
"modelfit_DoubleShapeletPsfApprox_0_xy: -5.94712e-05\n",
"modelfit_DoubleShapeletPsfApprox_0_x: -0.00026666\n",
"modelfit_DoubleShapeletPsfApprox_0_y: -0.00279895\n",
"modelfit_DoubleShapeletPsfApprox_0_0: 0.16935\n",
"modelfit_DoubleShapeletPsfApprox_0_1: 0.000231175\n",
"modelfit_DoubleShapeletPsfApprox_0_2: -1.72639e-06\n",
"modelfit_DoubleShapeletPsfApprox_0_3: -0.000189367\n",
"modelfit_DoubleShapeletPsfApprox_0_4: -0.000286832\n",
"modelfit_DoubleShapeletPsfApprox_0_5: 0.000193699\n",
"modelfit_DoubleShapeletPsfApprox_1_xx: 8.86817\n",
"modelfit_DoubleShapeletPsfApprox_1_yy: 8.80725\n",
"modelfit_DoubleShapeletPsfApprox_1_xy: -0.000206098\n",
"modelfit_DoubleShapeletPsfApprox_1_x: -0.00026666\n",
"modelfit_DoubleShapeletPsfApprox_1_y: -0.00279895\n",
"modelfit_DoubleShapeletPsfApprox_1_0: 0.10696\n",
"modelfit_DoubleShapeletPsfApprox_1_1: 2.66552e-05\n",
"modelfit_DoubleShapeletPsfApprox_1_2: 4.63898e-05\n",
"modelfit_DoubleShapeletPsfApprox_flag: 0\n",
"modelfit_DoubleShapeletPsfApprox_flag_invalidPointForPsf: 0\n",
"modelfit_DoubleShapeletPsfApprox_flag_invalidMoments: 0\n",
"modelfit_DoubleShapeletPsfApprox_flag_maxIterations: 0\n",
"base_CircularApertureFlux_3_0_instFlux: 4.52102\n",
"base_CircularApertureFlux_3_0_instFluxErr: 0.16233\n",
"base_CircularApertureFlux_3_0_flag: 0\n",
"base_CircularApertureFlux_3_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_4_5_instFlux: 5.87353\n",
"base_CircularApertureFlux_4_5_instFluxErr: 0.244019\n",
"base_CircularApertureFlux_4_5_flag: 0\n",
"base_CircularApertureFlux_4_5_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_6_0_instFlux: 6.69019\n",
"base_CircularApertureFlux_6_0_instFluxErr: 0.326743\n",
"base_CircularApertureFlux_6_0_flag: 0\n",
"base_CircularApertureFlux_6_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_9_0_instFlux: 7.98355\n",
"base_CircularApertureFlux_9_0_instFluxErr: 0.492106\n",
"base_CircularApertureFlux_9_0_flag: 0\n",
"base_CircularApertureFlux_9_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_12_0_instFlux: 8.87243\n",
"base_CircularApertureFlux_12_0_instFluxErr: 0.657244\n",
"base_CircularApertureFlux_12_0_flag: 0\n",
"base_CircularApertureFlux_12_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated: 0\n",
"base_CircularApertureFlux_17_0_instFlux: 9.72514\n",
"base_CircularApertureFlux_17_0_instFluxErr: 0.933897\n",
"base_CircularApertureFlux_17_0_flag: 0\n",
"base_CircularApertureFlux_17_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_25_0_instFlux: 11.9842\n",
"base_CircularApertureFlux_25_0_instFluxErr: 1.37912\n",
"base_CircularApertureFlux_25_0_flag: 0\n",
"base_CircularApertureFlux_25_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_35_0_instFlux: 16.4408\n",
"base_CircularApertureFlux_35_0_instFluxErr: 1.9316\n",
"base_CircularApertureFlux_35_0_flag: 0\n",
"base_CircularApertureFlux_35_0_flag_apertureTruncated: 0\n",
"base_CircularApertureFlux_50_0_instFlux: nan\n",
"base_CircularApertureFlux_50_0_instFluxErr: nan\n",
"base_CircularApertureFlux_50_0_flag: 1\n",
"base_CircularApertureFlux_50_0_flag_apertureTruncated: 1\n",
"base_CircularApertureFlux_70_0_instFlux: nan\n",
"base_CircularApertureFlux_70_0_instFluxErr: nan\n",
"base_CircularApertureFlux_70_0_flag: 1\n",
"base_CircularApertureFlux_70_0_flag_apertureTruncated: 1\n",
"base_GaussianFlux_instFlux: 6.05006\n",
"base_GaussianFlux_instFluxErr: 0.201319\n",
"base_GaussianFlux_flag: 0\n",
"base_LocalBackground_instFlux: 0.00240181\n",
"base_LocalBackground_instFluxErr: 0.0304566\n",
"base_LocalBackground_flag: 0\n",
"base_LocalBackground_flag_noGoodPixels: 0\n",
"base_LocalBackground_flag_noPsf: 0\n",
"base_PixelFlags_flag: 0\n",
"base_PixelFlags_flag_offimage: 0\n",
"base_PixelFlags_flag_edge: 0\n",
"base_PixelFlags_flag_interpolated: 0\n",
"base_PixelFlags_flag_saturated: 0\n",
"base_PixelFlags_flag_cr: 0\n",
"base_PixelFlags_flag_bad: 0\n",
"base_PixelFlags_flag_suspect: 0\n",
"base_PixelFlags_flag_interpolatedCenter: 0\n",
"base_PixelFlags_flag_saturatedCenter: 0\n",
"base_PixelFlags_flag_crCenter: 0\n",
"base_PixelFlags_flag_suspectCenter: 0\n",
"base_PixelFlags_flag_clippedCenter: 0\n",
"base_PixelFlags_flag_sensor_edgeCenter: 1\n",
"base_PixelFlags_flag_rejectedCenter: 0\n",
"base_PixelFlags_flag_inexact_psfCenter: 1\n",
"base_PixelFlags_flag_bright_objectCenter: 0\n",
"base_PixelFlags_flag_clipped: 0\n",
"base_PixelFlags_flag_sensor_edge: 1\n",
"base_PixelFlags_flag_rejected: 0\n",
"base_PixelFlags_flag_inexact_psf: 1\n",
"base_PixelFlags_flag_bright_object: 0\n",
"base_PsfFlux_instFlux: 6.92376\n",
"base_PsfFlux_instFluxErr: 0.226925\n",
"base_PsfFlux_area: 52.8907\n",
"base_PsfFlux_flag: 0\n",
"base_PsfFlux_flag_noGoodPixels: 0\n",
"base_PsfFlux_flag_edge: 0\n",
"base_Variance_flag: 1\n",
"base_Variance_value: nan\n",
"base_Variance_flag_emptyFootprint: 1\n",
"ext_photometryKron_KronFlux_instFlux: 7.26397\n",
"ext_photometryKron_KronFlux_instFluxErr: 0.392672\n",
"ext_photometryKron_KronFlux_radius: 2.77981\n",
"ext_photometryKron_KronFlux_radius_for_radius: nan\n",
"ext_photometryKron_KronFlux_psf_radius: 2.29837\n",
"ext_photometryKron_KronFlux_flag: 0\n",
"ext_photometryKron_KronFlux_flag_edge: 0\n",
"ext_photometryKron_KronFlux_flag_bad_shape_no_psf: 0\n",
"ext_photometryKron_KronFlux_flag_no_minimum_radius: 0\n",
"ext_photometryKron_KronFlux_flag_no_fallback_radius: 0\n",
"ext_photometryKron_KronFlux_flag_bad_radius: 0\n",
"ext_photometryKron_KronFlux_flag_used_minimum_radius: 0\n",
"ext_photometryKron_KronFlux_flag_used_psf_radius: 0\n",
"ext_photometryKron_KronFlux_flag_small_radius: 0\n",
"ext_photometryKron_KronFlux_flag_bad_shape: 0\n",
"ext_convolved_ConvolvedFlux_seeing: 1.83383\n",
"ext_convolved_ConvolvedFlux_0_deconv: 1\n",
"ext_convolved_ConvolvedFlux_0_3_3_instFlux: 7.00486\n",
"ext_convolved_ConvolvedFlux_0_3_3_instFluxErr: 0.256229\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_instFlux: 6.92152\n",
"ext_convolved_ConvolvedFlux_0_4_5_instFluxErr: 0.287558\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_instFlux: 7.16395\n",
"ext_convolved_ConvolvedFlux_0_6_0_instFluxErr: 0.349881\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_0_kron_instFlux: 7.26438\n",
"ext_convolved_ConvolvedFlux_0_kron_instFluxErr: 0.392694\n",
"ext_convolved_ConvolvedFlux_0_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_deconv: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_instFlux: 6.87315\n",
"ext_convolved_ConvolvedFlux_1_3_3_instFluxErr: 0.0745953\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_instFlux: 6.94272\n",
"ext_convolved_ConvolvedFlux_1_4_5_instFluxErr: 0.0793422\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_instFlux: 7.12439\n",
"ext_convolved_ConvolvedFlux_1_6_0_instFluxErr: 0.0934062\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_1_kron_instFlux: 7.33198\n",
"ext_convolved_ConvolvedFlux_1_kron_instFluxErr: 0.105126\n",
"ext_convolved_ConvolvedFlux_1_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_deconv: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_instFlux: 6.67326\n",
"ext_convolved_ConvolvedFlux_2_3_3_instFluxErr: 0.0501644\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_instFlux: 6.90014\n",
"ext_convolved_ConvolvedFlux_2_4_5_instFluxErr: 0.0484493\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_instFlux: 7.1445\n",
"ext_convolved_ConvolvedFlux_2_6_0_instFluxErr: 0.052004\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_2_kron_instFlux: 7.52964\n",
"ext_convolved_ConvolvedFlux_2_kron_instFluxErr: 0.057812\n",
"ext_convolved_ConvolvedFlux_2_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_deconv: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_instFlux: 6.80213\n",
"ext_convolved_ConvolvedFlux_3_3_3_instFluxErr: 0.0485234\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_instFlux: 7.04858\n",
"ext_convolved_ConvolvedFlux_3_4_5_instFluxErr: 0.0436523\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_instFlux: 7.26638\n",
"ext_convolved_ConvolvedFlux_3_6_0_instFluxErr: 0.0428443\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag_apertureTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag_sincCoeffsTruncated: 0\n",
"ext_convolved_ConvolvedFlux_3_kron_instFlux: 7.73398\n",
"ext_convolved_ConvolvedFlux_3_kron_instFluxErr: 0.0462367\n",
"ext_convolved_ConvolvedFlux_3_kron_flag: 0\n",
"ext_convolved_ConvolvedFlux_flag: 0\n",
"modelfit_CModel_initial_instFlux: 6.87112\n",
"modelfit_CModel_initial_instFluxErr: 0.227795\n",
"modelfit_CModel_initial_flag: 0\n",
"modelfit_CModel_initial_instFlux_inner: 5.7752\n",
"modelfit_CModel_initial_flag_badReference: 0\n",
"modelfit_CModel_initial_flag_numericError: 0\n",
"modelfit_CModel_exp_instFlux: 6.87228\n",
"modelfit_CModel_exp_instFluxErr: 0.227836\n",
"modelfit_CModel_exp_flag: 0\n",
"modelfit_CModel_exp_instFlux_inner: 5.77509\n",
"modelfit_CModel_exp_flag_badReference: 0\n",
"modelfit_CModel_exp_flag_numericError: 0\n",
"modelfit_CModel_dev_instFlux: 6.86897\n",
"modelfit_CModel_dev_instFluxErr: 0.227727\n",
"modelfit_CModel_dev_flag: 0\n",
"modelfit_CModel_dev_instFlux_inner: 5.77521\n",
"modelfit_CModel_dev_flag_badReference: 0\n",
"modelfit_CModel_dev_flag_numericError: 0\n",
"modelfit_CModel_instFlux: 6.87132\n",
"modelfit_CModel_instFluxErr: 0.227804\n",
"modelfit_CModel_flag: 0\n",
"modelfit_CModel_instFlux_inner: 5.77509\n",
"modelfit_CModel_fracDev: 0\n",
"modelfit_CModel_objective: 0.0181053\n",
"modelfit_CModel_flag_region_maxArea: 0\n",
"modelfit_CModel_flag_region_maxBadPixelFraction: 0\n",
"modelfit_CModel_flag_badReference: 0\n",
"modelfit_CModel_flag_noShapeletPsf: 0\n",
"modelfit_CModel_flag_badCentroid: 0\n",
"undeblended_base_CircularApertureFlux_3_0_instFlux: 5.46422\n",
"undeblended_base_CircularApertureFlux_3_0_instFluxErr: 0.16233\n",
"undeblended_base_CircularApertureFlux_3_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_3_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_3_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_4_5_instFlux: 7.63695\n",
"undeblended_base_CircularApertureFlux_4_5_instFluxErr: 0.244019\n",
"undeblended_base_CircularApertureFlux_4_5_flag: 0\n",
"undeblended_base_CircularApertureFlux_4_5_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_6_0_instFlux: 9.65153\n",
"undeblended_base_CircularApertureFlux_6_0_instFluxErr: 0.326743\n",
"undeblended_base_CircularApertureFlux_6_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_6_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_9_0_instFlux: 14.1842\n",
"undeblended_base_CircularApertureFlux_9_0_instFluxErr: 0.492106\n",
"undeblended_base_CircularApertureFlux_9_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_9_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_9_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_12_0_instFlux: 17.5964\n",
"undeblended_base_CircularApertureFlux_12_0_instFluxErr: 0.657244\n",
"undeblended_base_CircularApertureFlux_12_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_12_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_12_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_base_CircularApertureFlux_17_0_instFlux: 28.1545\n",
"undeblended_base_CircularApertureFlux_17_0_instFluxErr: 0.933897\n",
"undeblended_base_CircularApertureFlux_17_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_17_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_25_0_instFlux: 118.693\n",
"undeblended_base_CircularApertureFlux_25_0_instFluxErr: 1.37912\n",
"undeblended_base_CircularApertureFlux_25_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_25_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_35_0_instFlux: 166.622\n",
"undeblended_base_CircularApertureFlux_35_0_instFluxErr: 1.9316\n",
"undeblended_base_CircularApertureFlux_35_0_flag: 0\n",
"undeblended_base_CircularApertureFlux_35_0_flag_apertureTruncated: 0\n",
"undeblended_base_CircularApertureFlux_50_0_instFlux: nan\n",
"undeblended_base_CircularApertureFlux_50_0_instFluxErr: nan\n",
"undeblended_base_CircularApertureFlux_50_0_flag: 1\n",
"undeblended_base_CircularApertureFlux_50_0_flag_apertureTruncated: 1\n",
"undeblended_base_CircularApertureFlux_70_0_instFlux: nan\n",
"undeblended_base_CircularApertureFlux_70_0_instFluxErr: nan\n",
"undeblended_base_CircularApertureFlux_70_0_flag: 1\n",
"undeblended_base_CircularApertureFlux_70_0_flag_apertureTruncated: 1\n",
"undeblended_base_PsfFlux_instFlux: 8.58191\n",
"undeblended_base_PsfFlux_instFluxErr: 0.228508\n",
"undeblended_base_PsfFlux_area: 52.8907\n",
"undeblended_base_PsfFlux_flag: 0\n",
"undeblended_base_PsfFlux_flag_noGoodPixels: 0\n",
"undeblended_base_PsfFlux_flag_edge: 0\n",
"undeblended_ext_photometryKron_KronFlux_instFlux: 10.7967\n",
"undeblended_ext_photometryKron_KronFlux_instFluxErr: 0.379066\n",
"undeblended_ext_photometryKron_KronFlux_radius: 2.77981\n",
"undeblended_ext_photometryKron_KronFlux_radius_for_radius: nan\n",
"undeblended_ext_photometryKron_KronFlux_psf_radius: 2.29837\n",
"undeblended_ext_photometryKron_KronFlux_flag: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_edge: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_bad_shape_no_psf: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_no_minimum_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_no_fallback_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_bad_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_used_minimum_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_used_psf_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_small_radius: 0\n",
"undeblended_ext_photometryKron_KronFlux_flag_bad_shape: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_seeing: 1.83383\n",
"undeblended_ext_convolved_ConvolvedFlux_0_deconv: 1\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_instFlux: 8.59701\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_instFluxErr: 0.256229\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_instFlux: 8.99958\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_instFluxErr: 0.287558\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_instFlux: 10.335\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_instFluxErr: 0.349881\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_instFlux: 11.1849\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_instFluxErr: 0.392694\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_deconv: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_instFlux: 8.52853\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_instFluxErr: 0.0745953\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_instFlux: 9.13359\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_instFluxErr: 0.0793422\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_instFlux: 10.3584\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_instFluxErr: 0.0934062\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_instFlux: 11.2562\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_instFluxErr: 0.105126\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_deconv: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_instFlux: 8.68863\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_instFluxErr: 0.0501644\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_instFlux: 9.41499\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_instFluxErr: 0.0484493\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_instFlux: 10.5509\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_instFluxErr: 0.052004\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_instFlux: 11.6155\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_instFluxErr: 0.057812\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_deconv: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_instFlux: 9.36708\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_instFluxErr: 0.0485234\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_instFlux: 10.0594\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_instFluxErr: 0.0436523\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_instFlux: 11.0111\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_instFluxErr: 0.0428443\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag_apertureTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag_sincCoeffsTruncated: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_instFlux: 12.137\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_instFluxErr: 0.0462367\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_flag: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_flag: 0\n",
"base_GaussianFlux_apCorr: 1.07847\n",
"base_GaussianFlux_apCorrErr: 0\n",
"base_GaussianFlux_flag_apCorr: 0\n",
"base_PsfFlux_apCorr: 0.993075\n",
"base_PsfFlux_apCorrErr: 0\n",
"base_PsfFlux_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_apCorr: 1.42978\n",
"ext_convolved_ConvolvedFlux_0_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_apCorr: 1.17843\n",
"ext_convolved_ConvolvedFlux_0_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_apCorr: 1.07081\n",
"ext_convolved_ConvolvedFlux_0_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_0_kron_apCorr: 1.03595\n",
"ext_convolved_ConvolvedFlux_0_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_0_kron_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_apCorr: 1.58029\n",
"ext_convolved_ConvolvedFlux_1_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_apCorr: 1.23343\n",
"ext_convolved_ConvolvedFlux_1_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_apCorr: 1.08447\n",
"ext_convolved_ConvolvedFlux_1_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_1_kron_apCorr: 1.05209\n",
"ext_convolved_ConvolvedFlux_1_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_1_kron_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_apCorr: 2.05076\n",
"ext_convolved_ConvolvedFlux_2_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_apCorr: 1.4521\n",
"ext_convolved_ConvolvedFlux_2_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_apCorr: 1.16384\n",
"ext_convolved_ConvolvedFlux_2_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_2_kron_apCorr: 1.11532\n",
"ext_convolved_ConvolvedFlux_2_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_2_kron_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_apCorr: 2.75214\n",
"ext_convolved_ConvolvedFlux_3_3_3_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_3_3_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_apCorr: 1.81416\n",
"ext_convolved_ConvolvedFlux_3_4_5_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_4_5_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_apCorr: 1.32924\n",
"ext_convolved_ConvolvedFlux_3_6_0_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_6_0_flag_apCorr: 0\n",
"ext_convolved_ConvolvedFlux_3_kron_apCorr: 1.23656\n",
"ext_convolved_ConvolvedFlux_3_kron_apCorrErr: 0\n",
"ext_convolved_ConvolvedFlux_3_kron_flag_apCorr: 0\n",
"ext_photometryKron_KronFlux_apCorr: 1.03589\n",
"ext_photometryKron_KronFlux_apCorrErr: 0\n",
"ext_photometryKron_KronFlux_flag_apCorr: 0\n",
"modelfit_CModel_apCorr: 0.990821\n",
"modelfit_CModel_apCorrErr: 0\n",
"modelfit_CModel_flag_apCorr: 0\n",
"modelfit_CModel_dev_apCorr: 0.990426\n",
"modelfit_CModel_dev_apCorrErr: 0\n",
"modelfit_CModel_dev_flag_apCorr: 0\n",
"modelfit_CModel_exp_apCorr: 0.990958\n",
"modelfit_CModel_exp_apCorrErr: 0\n",
"modelfit_CModel_exp_flag_apCorr: 0\n",
"modelfit_CModel_initial_apCorr: 0.990752\n",
"modelfit_CModel_initial_apCorrErr: 0\n",
"modelfit_CModel_initial_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_3_3_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_4_5_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_6_0_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_0_kron_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_1_kron_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_2_kron_flag_apCorr: 0\n",
"undeblended_ext_convolved_ConvolvedFlux_3_kron_flag_apCorr: 0\n",
"base_ClassificationExtendedness_value: 0\n",
"base_ClassificationExtendedness_flag: 0"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# likewise the second attribute gives us the record from the r band catalog\n",
"matches[0].second"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:08.015010Z",
"iopub.status.busy": "2021-04-23T20:36:08.013665Z",
"iopub.status.idle": "2021-04-23T20:36:08.060675Z",
"shell.execute_reply": "2021-04-23T20:36:08.061912Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#finally the angular seperation is given in radians in the distance attribute\n",
"matches[0].distance"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now that we have matched stars in two bands, lets make a color magnitude diagram, displaying how to use matches in a little more depth\n",
"first we start out simple and demonstrate how to get the magnitude and magnitude error for one record in our matches object"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:08.068556Z",
"iopub.status.busy": "2021-04-23T20:36:08.067157Z",
"iopub.status.idle": "2021-04-23T20:36:08.105306Z",
"shell.execute_reply": "2021-04-23T20:36:08.106519Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Measurement(value=24.46551613554949256, error=0.04465584335848839931)"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# use the calib object to get magnitudes\n",
"# pass in a record and the name of the flux field you are interested in\n",
"iCalib.instFluxToMagnitude(matches[0].first, 'modelfit_CModel')"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:08.114409Z",
"iopub.status.busy": "2021-04-23T20:36:08.112964Z",
"iopub.status.idle": "2021-04-23T20:36:08.414609Z",
"shell.execute_reply": "2021-04-23T20:36:08.415855Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, '$i$')"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAo0AAAHECAYAAABcEhB0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABzsUlEQVR4nO3dfZxU5X03/s81sw/sLsvC7oKCLCgsYEQFdFMCRAO/1MTYJrHNTdKY3G1M1dukYlqT1jTJ3bSvPDQman/40DZiokmjeSAm9m5VYprgLWUFA6IIKriAsAoKuwu7y84+zcx1/zF71tlh5pzrPF/nzOf9em0MO2dmzpw9M+c71/X9fi8hpQQRERERkZlE2DtARERERPpj0EhERERElhg0EhEREZElBo1EREREZIlBIxERERFZYtBIRERERJYYNBIRERGRpcCDRiHEnwghtggh+oQQ6SK3f0EIcUAI0S+EeFUI8dmg95GIiIiIJhJBN/cWQrwfQCOAGgD3SSkr8m77EIAfA3ivlHKbEGIFgP8CcLWU8teB7igRERERjQt8pFFK+Ssp5Y8BHCxycyuAF6SU28a2fQbAbgBLAtxFIiIiIiqgW07jTwBMEUKsEkIkhBCXAVgIYJPqAwghmoQQC8d+mnzbUyIiIqIyUmG9SaCOA/g5gM14O6D9SynlHhuPsQ7AVwGgpqYGbW1t3u4hneFQ1wBOD5+RnmqqtiqJs6dMQl118VNwJJ3FSCaLqmQCVRXq321OD6dxon8YqZEMslIiIQRqq5KYUV9d8rm84nSf6W08hkRE/ti5c2eXlHK6m8fQLWj83wA+DmApgJcBXADg/wghBqWU31N8jLsBPAwACxcu3Ldjxw4/9pPyPNPRjVs27sKx3mGl7dvmTsPPP7Oy6G3tHV24Z3MHXny9F0PDaVRWV2BRSwNuWr0AK1rVB447e1Lo7EmhpbEWLY21yvcjcqOzJ4UjPSnM4XlHRJoRQhx2/RhBF8KMP7EQqwH8V0EhzH8C2CulvDXvd3cAmC+lvNruc7S1tUkGjcFo7+jCvU8dwO7OU+gfTkMAKHZmzWyoxp1rlxUNANs7uvD5jc8XDT5nNlTjjrVLsbK12fud94DTYIFBRjzkf9npH06jvroCFzv4skNE5BchxE4ppavp18BHGoUQSQCVAKrG/j1p7KZhAFsBfEoIcb+U8lUhxDsAXA3gwaD3k+xZ2dqMla3N4yN8x/uHsHHnG+NBZO4iOhU3rW4dv4huP9iN5ztPYWnLVCyf14R7NneUHK081juMe586oF3Q6DRYYJARH8W+7PQPp7G1oxsHT5zW+ssOEZEdYUxP/08AD+T9e3Dsv+cB+A6ABgC/FkI0A+gBsBHAtwLdQ3Isfzr46mWzi04T3/f0AdyzuQN9g2/nQdZXJzGSMR/13t15avyxdOA0WGCQES9R/LJDROREGC13HpRSiiI/r0kp01LKL0opz5VSTpZSzpFSfl5KORr0fpI3WhprsbK1eULA+K0nXpkQMAJA/3AGw+ms6WP1D6fR2ZPybV/tUgkWvLwfudPZk8LWji5Pz6Ej3Snsfr3XdBvjyw4RUdTpVghDMWXk7t31m1eRdZhGW19doc0oo51gIX+fnd6PnPMzFaDzZMqyc4DxZYd/TyKKOgaN5KvCC7YbF7dM1ebC6zRYYJARLL9TAVqm1WJydYXp31SnLztERG6wERr5xrhgtx/odh0wzmyoxk2rWz3aM/eMYMFMsWDB6f1U+DH9GgYvX4ffqQBzmmpx8ewG0210+rJDROQGRxrJN2YXbDMXzZqC17pTJauudWAEC+0HuktuUyxYcHo/M3GpxPb6dQSVCrBuzQIc6jpdslWUTl92iIjcYNBIvlC5YBfTUFOJ/7j5skg053YaLHgZZMSlEtuP1xFUKsCK1ibcsXbphD6lun7ZISJyg0Ej+ULlgl0oIYB1a3IBk87BosFpsOBlkBGXdi9+vI4g8w0L+5RG4fwlIrKLQSP5oiIhUFOZwOCoeRsdQ0NNJdatacV1l8/zec+85TRY8CLIiEsltl+vw49UACsMFokozhg0kqfy89KsAsaLZk3Bh5bMwsVjK8KY0X25PafBgpsgIy6V2H6+DuYbEhF5h0EjecZs7ehCMxuq8aWrLrCcio1LkYcf4tLuxc/XwXxDIiLvMGgkz6hUS9u5YMelyMMvYUy/+sHv18F8QyIibzBoJE+o5KXVVCRw/5+1WU5FG+JS5OGnuEy/rlk0Hb97rQejRdYf9+p1MFgkInKHzb3JEyp5aYPpLDKKawhyTV81xvTrqtZm1I81Da+vrsCq1mbcuXZZJKZf2zu68P2th4oGjFUVAp9edV4kXgcRUdxxpJE8YTcvzaqwJS5FHkEwpl+3H+zGC52nsEShsEgnZiPKI2mJp/Z34frL5we8V0REVIhBI3lCNS+tsyeFWx/ZbVnYEpcijyBEuVgoLm2DiIjKAaenyTPr1izAzIbqorfNbKjG6oXNZ6xFbRS23LJxF9o7usa355q+aoqt713qmOrIzogyERGFi0EjecYqv27zvhOWhS1Abup6a0cXPvbOFtMgNCpFHn5SKRbSmTGibMarEWXjvGIASkTkDKenyVOl2puoTEM+d7gHf/zPW/HqW6fHp1nnNNWgqa4ah7tT7LFXIA5Tu0G0DYry9D0RkU4YNJIvCtubKFVXj2bx3JFT4//uH05j79F+zGyoxteuXowZ9ZPYNiVPXIqF/GwbxF6fRETe4fQ0BUJlGrKUY73D2LjzDaxsbdY6+AlakFO7fvKzbVDUp++JiHTCkUYKhMo0pBndp1nDEJcVYQB/Vm2Jw/Q9EZFOONJIgTGrrrbSP5zGEy8eYxFDAauK9aCLhdwWm7Q01no2oszKbCIibwkp1VboiKK2tja5Y8eOsHeD8rR3dOHepw5gd+ep8aKEhWfVY+/RXgyls5b3ZxHDmYod06CLhXQsNjnSncJVd22x7PX5+Ocu40gjEcWeEGKnlLLN1WMwaKQwFE5DXrNhm62p65kN1SxiKODl1K4dxYpNDGH/nazOq1WtzXjouuUB7hERUTi8CBo5PU2hKJyGtDt1zSKGM3k5tWuHzsUmuk3fExFFGYNG0kKxClorRhEDhcdOsUkY/KzMJiIqN6yeJm3kV9A+8eIxfPOJV0y37x9OY9OeY7j+8vkB7SEVikKvSD8qs4mIyhFHGkk7LY21uPLCmUp9He/bckj79ZWjxk4FdJR6RYY1fU9EFBccaSQtqfZ1PNGfy5ljQYx7Tiqg49QrkoiIzHGkkbS1bs0CTK+vstyOuY3uGRXQ7Qe60T823Wwst3fLxl2mo7ksNiEiKg8MGklbK1qbcP2751luxwbN7rmpgGaxCRFReeD0NGntygtn4q7fdlg2aOb0p3NeLLfHYhMiovjjSCNpzciZM8OcOXe8XG6PxSZERPHFoJG0x5w5f0WpApqsuV3/m4ioFE5Pk/aMnLmw11eOK1ZAx4OO63/7rbMnhSM9KcxhOgRRIBg0UiQwZ85f69YswKGu0yXXj+Zort6Krf9tVL8fPHE68uu0FwaH5RggE+mAQSNFCoNFf3A0152wR7xUqt+jGDQWCw7nNNXgWO8QegZGx7eLU4BMpDMGjUQxsv1gN57vPIWlLVOxfJ69QI+jufbpMOLlRfW7jkqNnu492l/yPlEOkImigEEjeSbs0ZZydt/TB3DP5g70Db5dBd1QU4F1axbgusute13mY7CoRpcp4Sis/+2E2eipmSgGyERRwaCRXNNhtKWc3ff0AXzriVeQlRN/3zuYxjefeBlZSNxw+fxwdi7GdJkSNqrf49TLVGX0tJQoBshEURF4yx0hxJ8IIbYIIfqEEGd8ygkhbhRC7BdCnBZC7BJCrA56H0mdm+XnyBv3bO44I2A0ZCVw7+bSq7mQMypBzbYDXfj359/wfV/i2MtUZfS0lKgFyERREkafxpMA/hnAXxbeIIRYC+BrAD4KoAHAdwE8JoSYE+QOkjo3y8+Re9sOdE+Yki6md3AU2w+WbqdD9qkENRkJ/MN/7A3ki1Pcepmq9A4tJWoBMlGUBB40Sil/JaX8MYCDRW5eC+BHUsrnpZQZKeW/AjgO4FOqjy+EaBJCLBRCLEynnX1TJTV2EvDJHy+8fkppu92datuRGtWgpmdgNJAvTnFb/1tl9LSYKAbIRFGiW06jGPsp/N1SG4+xDsBXAeD48ePe7BUVFdcE/ChZMnuq0nYXt6htR2pUGqIbgirMiFv1u1nv0Ma6CsxqqMXh7hTbQxEFSLeg8T8B3CGE+BGAFwD8LwBzAHTYeIy7ATwMADNmzNjn+R7SOJUE/JqKBJKJwu8B5JV3zW/ClJoK0ynqhppK2+13yNq6NQvwyrFe9KT0+uIU9WDRoNI7NC4BMlFU6BY0/hDA2QAeAtAM4FEA/wWgR/UBpJTdALoBoK2tzfs9pHEqoy2D6Syu+8EOVlP76OY1C3JV0kWKYRICWLeG03V+WNHahP/9h4vx+Y0vlCxEAliY4YbV6CmDRaJghVEIU5LMuU1KuUhK2QTgMwAWA3gq3D2jUtatWYDGOvPvHqym9td1l8/DFz9wPhpqKif8vqGmEl/6wDts92kkdX90yWy8y2IUl4UZ7rU01mJlazOPI1HIAh9pFEIkAVQCqBr796Sxm4YBTAEwC8AryI00fgtAL4AfBL2fpGZFaxNmNtSiZ6DPcluu1uCfGy6fjxsun4/tB7uxu/MULnawIgw5w3W7g8HFA4jCF8b09P8E8EDevwfH/nsegAyAjQDOBTAC4DEAa6SUgyAtHelO4XC3enU0V2vw1/J5TQwWA8Z1u/3FxQOI9BF40CilfBDAgyabXBjMnpAX7DbhZTU1xVHcKpd1octSjUSUo1VOI0WP3Sa8CQFeTCm2mHvnLS4eQKQXBo3kitMmvERx09mTwtaOLjaz9wgXDyDSj24tdyiC1q1ZgFePn8aJ/uIjAvmyErGcnmaSfvlizp0/uHgAkX4YNJJrK1qbsP5jS/G/frQT/UPmH/Jx61nHgKG8MefOPyqLB8Tt84RId5yeJk+sbG3GfZ9sQ6XFGRWnnnVGwNB+oBv9Yxc29qQsL8y5849K6kucPk+IooBBI3lmRWsT/ubK81GVLL5sYNx61jFgKG8qOXfPvdbDnDsX1q1ZgJkN1UVvi9vnCVEUMGgkT11/+Xw8eO3voW3uNNSMDTvWV1dgVWsz7ly7LDZTtkzSJ5Wcu8F0Fk/sORbQHsWP0QNzVWsz6se6NMTx84QoKpjTSJ7zomed7oUlTNInlZw7AHhy71u44fL5Ae1V/LAHJpE+GDSSb5x8uNspLAkzsGSSfvR4fb7MaarFwrMm47kjp0y32/dmP788eIDBIlH4GDSSNlQrUXWoWDaS9NsPdJfchkn6evDzfPnA4pmWQWP/cBqb9hzD9RxtJKKIY04jaUOlsESnimUm6evP7/Pl/ReePZ67a+a+LYdYTU9EkcegkbSgWlhy+5P7tKlYZpK+/vyucJ/TVItlc6ZZbnein9X0RBR9nJ4mLagWlrx0tM90G6NiOahpYSbp68tOhbubv1luRaR+nOgf8f25iIjCxJFG0oJRWGKmpjKBoXTWdBujYjloLY21WNnazIBAI3Yq3N1Y0dqE6989z3K7sM5NIiKvMGgk33T2pLC1o0vpQqmy+sMFMxssA0tWLJNB5YuIV+fLlRfO5LlJRLHH6WnynNNq1XVrFuBQ1+miOWgzG6rxhfctwt2bX2XFMimZ01SLuU212GuS0jC3ybv2O6ymJ6K440gjecpNtapKYQkrlskWKQN7Kp6bRBR3HGkkT6lUq65sbS55f6vCEiOwvPepA9jdeSpvJHMqblrdyoplGnekO4XDPYOm2xzuTnlWnMJzk4jijkEjecbLalWzKmRWLJOKMJZ65LlJRHHGoJE8E/RFmhdkMhPmUo88N4kojpjTSJ4JslqVyIpKRT6LU4iI1DFoJM/MaarFnMYa0214kaYgrVk0AwlR/LaEAFYvnB7sDhERRRiDRvJMe0cX3uwbKnl7UgBreJGmAG3edxzZEgXUWQk8tf9EsDtERBRhDBrJM/ds7kDPwGjJ2zMS+N7WgyXb7thpBk5kxU5hFhERWWMhDHlC5QINFG+747QZOJGZMKqnw9bZk8KRnhTmsBCHiHzAoJE8oXKBNuS33TGagef3djSagR88cRp3rF1q2teRqJSWabVICJScngaAZAKxCK74xYuIgsDpafKESuW0wRjdAdSagRP5JrgFY3zjZhUmIiI7GDSSJ1TamxiMtjvMOSM/dZ5MmY4yArk826ifX/ziRURBYdBInjFbezef0XbHTs4ZlQcvi6HKoW8ov3gRUZCY00ieMdbe/ebjL2Pv0b6iM38zG6px0+pWAOGu2EF68SMnzxj9bj/QXXKbqPcNLcdiHyIKD0cayVMrW5vxnzdfhn/62BIsnjUFdVVJALngb1VrM+5cu2w8CFCZ0p7bxCrQuPMzJ2/NoukWzb2jXWSlMpoqABzvL90/lYhIFUcayRdXL5uNq5fNRmdPanyUo1jwt27NArzyZl/J/o5He1No7+hiBXWMqeTkOf37b953wqK5dxeuv3y+o8fWgcpoqgSwcecbuHrZ7OB2jIhiiSON5KuWxlqsbG0uOVq4orUJZ0+ZVPL+PQNpbRL52Xzce37m5JVLvt9HL21BicHUcXF4nUQUPo40UqiOdKdwpGfQdJv8vo5hKLceeEE2iPYzJ69c8v2mT6m27BwUh9dJROFj0Eih0v3CXk7Nx9s7unDHk/vx0rFeDI5mAwmO/SyGKpdCq3J5nUQUPk5PU6iSQmBShflpGOYFr1x64N339AH82QPPYueRkxgczQIIpkG0SjGU0wpnPx9bJ+XyOokofAwaKRTtHV24ZsM2XP/DHRhKZ023DeuCVy45ce0dXbj9V/swmik+yel3cGzW3zO/RZNuj62TcnmdRBQuBo0UuGItVkoRAHpTI3imo3R1qF/Kpfn47U/uw0iJgNHgZ3Bs9Pdc1dqM+rH2McVaNOn22Dopl9dJROEKNKdRCHEbgD8E0ALgNIDHANwqpezJ2+ZPAXwVwEwALwL4rJRyZ5D7Sf4ym/ItJAHsOdqHWzbuCjx/sBxyxY50p/DS0T7L7fzOK13Z2oyVrc2WLZp0e2ydlMvrJKLwBD3SmAHwSQBNAJYAmA3gQeNGIcS7AfwLgM8AmAbgEQCPCyGmBLyf5BOVKd9iwsgfLIdcsc6TKcv0AACoqUwE8jqtWjTp+tg6KZfXSUTBCzRolFJ+SUq5S0o5KqU8AWA9gNV5m1wP4BdSyiellMMAvgNgGMAfBbmf5B+VKd9SVKZIve6lGPdcMZUVRQBg8awGBiFERGUu7JY77wXwQt6/lyBv5FFKKYUQu8Z+r0QI0YTcSCaWLFG+GwVEZcq3FLMpUr96KRq5Yvc+dQC7O0/lPfZU3LS6NfK5YiorilQlBT5/xaIA9yqaguxvSUQUhtCCRiHERwDcCOA9eb+uB1A4d3kKgJ3p6XXI5UTi+PHjLvaQ/KASpJRSKn/Q716Kcc8VW7dmAQ51nS6aZ1pVIfA37zs/8sGxn8qt+TsRla9QqqeFEGsBbADwISnlc3k39QMoTCKbCsA6U/9tdwNYBGDRjBkz3Owm+cRsytdMqfzBoHopxjVXrFjlbU1FApfOnYYffGo5rrt8Xsh7qK9inQCC6G9JRBSGwEcahRDXArgDwAellFsLbn4BwCV52woASwH8QvXxpZTdALoBoK2tze3ukg9KTfnObarF0d5B9AyMnnGfUvmDdnopxi3Y81LcR1P9ovKFJS4rBhERBd1y52bkpo7fL6X8XZFNNgDYJIT4AYAtAG4GMAnAL4PbSwpCqSClvaPLVv6g7ssQRg2DRXX8whIs5owShS/okcb1ANIANucGEXOklJPH/vvfQojPIhc8Gn0ar5JS2pmeJk2ofMgXBil2R7xUCmuSAjhxWq0vJJEqfmEJBnNGifQRaNAopRQK2/wQwA8D2B3yiRcf8qojXiqFNRkJfOuJlzF9cjWnCskz5dD8PWx+F7kRkT1cRpA8FUZhgEphTRjNwSneyqH5e9iCKnIjIjUMGslTYXzIr2htwt+8/3wkLMax/Vw/mcpT3Ju/h8lOzigRBYNBI3kmzA/5GVMmISvNtzHyy7zk9Qo0FC3F2hXVV1dgVWsz7ly7jDl3LtjJGSWiYIS9IgzFiB+FAaoVk0HnlzE5nwxsV+QP5owS6YdBI3nGyw95u0GZSkGMV/llTM73XxTbq+gSLEbx2BUT5HuaiNQwaCTPzGmqxZzGGrx0rL/kNiof8k6DMrPl8LzML2NDZ/88uut1bNhyCK91D2BgOMMRXBviOPod1HuaiNQwp5E8097RhTf7hkre3lhXofQh77SYJoj8Mibn+6O9owtXrX8af/XTF7D3aB8GhjMAuCSfqrguZ7iitQnXrjoPDTUTxzcaairw56vmRTYYJooqjjSSZ+7Z3FF0CUDDrIZayw95t6ts+J1fxobO3is2slyII7jm4jr63d7RhQe2HkLv4MT3XO9gGt/behAXzJoSyddFFFUcaSRPqAR7h7tTliNwXlVMtjTWYmVrs+eBm5G3aYbJ+faYBTz5OIJbXJxHv9mnkUgvDBrJE54FewpBWV1VMrSgjA2dvaUS8BjYXqW4uLamiXMwTBRVDBrJE16NwKkEZUPpDL74i914pqN0VaWf2NDZOyoBj4EjuMXFdfQ7rsEwUZQxaCRPeDkCZ7UsYCaLUBP82dDZOyoBj4EjuMXFdfS7ZVqt5SpPSYHIvS6iKGMhDHnGq/YYRlB271MHsO1AFzIlVnoJM8GfDZ0nctobUKUXH8ARXCtl25rGIqgkIm8xaCTP5Ad7uztP5fWKm4qbVrdiRWuTcnCxsrUZs6fV4sr1TyM1kim5nVkldRDKPVgs7A1YV53EuU11uOHyefjw0nOUHsMs4BEAFs+agi9fdQFHcE2ovPeipvNkynJp0EwW7FRAFCAGjeSpUiNw7R1duGbDNluNhztPpkwDRoDtbcJUrFXOwHAGe4/24S9/8jzue/oAvnLVYsuApVjAU1eVxLnNdbjhsnn48DK14LPcxW30m8sIEumHQSP5Iv+C5XSFF1409GbWDkUC2Hu0H7ds3KW0rGLcAp4wxeXYcRlBIv2wEIZ809mTwtaOLtz+5D5HvdbimuAfB6qtcuz20vOrvyZFEzsVEOmFI43kuUd3vY77nj6Iw90pDFhMLwPmeYllm+CvOTutcsLOO6XoimOuJlGUMWgkz7R3dOEbj7+Ml472wSJ/fYL+4TSeePEYPnDRzDMCC1409KSSOmAoh7xTp9XjZI2pC0T6YNBInlBZP9jMN594BXf/tqNocQwvGvpRbZUDxDvvtLB6XKXAi5zh+54ofAwayROq6websSqO4UVDL2apA/nimnfqtMCLiCiqWAhDrtlZP1iF3eIJCoeROnDhrCkleyyr5p0aRVNRWhLO7IsSz2EiiiOONJJrdooiVLF4IhpWtjbjP2++DI/ueh0bthzCa10DGBjJKOedRnV6V+WLEs9hIoobBo3kmp2iCFXlUDwRJ1cvm42rl822lXca5eldlS9KPIeJKG44PU2uqfRTtCvOxRM6cztNbKfPYpSnd40vSmZqKhI8h4koVjjSSJ6wWj+4dcZkdPakMJTOKj2eUTzBVibBCHqaOOrTuyrV4xkptd3/IPC9SxQ/DBrJE0XXD65O4rymOlx/+Tx8eOk5+IO7tmDv0T7Lx5rZUI3VC5ttr1Vd7pxepMOYJo7D9O66NQuw47UejGSKdyUdyUjc+9QBW8fOq0ArzIAtqnmqRGSNQSN5xrKfojRv+S3GHmP1wmZ8f+uhSOa6hcHtRVplmtjr4x2HdcXPmVaDZEIAJYJGQH201KtAK+yALcp5qkRkjTmN5LlieW1HulM43DNoer/aqiS+9ccXYfO+E5HNdQuacZFuP9CN/rEAzLhI37JxF9o7ukzvb2ea2IqdfMg4rCveeTKFwVHzdAtjtNSM27+h14/jRpTzVInIGoNG8lSpwEFlOnJgJIMdr/V4FsSUA7cXaTvTxKW0d3Thmg3bcNX6LfjE/dvH/rsNz3SYrxazbs0CzGyoLnpbFNYVVymGURkt9SrQCjtg8/ILCBHpidPT5AmraTHV6UgAkc91C4oXxSRup4ndTEdGfV1xlWIYq9FSrwqCdCgsikOeKhGZY9BIrqkGDioX2EvnNkY+1y0oXlyk3QY+bvMho76uuFnXAJXRUq8CLR0CtjjkqRKROU5Pk2uq02Iq05FxyHXzgkp+oFfTo06nib2cjrTT31Enxmjpqtbm8ZHy+uoKrGptxp1rl1mOlnr1N/Tqcdzge5co/jjSSK7YCRxWtDbh2lXn4d7NB9A7ODp+e0NNJf581bzxC6zb0Zsos1P96sX0KOB8mliH0S0dGKOl2w9244XOU1jSMhXL56lNrXv1N3z9ZAoJiyGAIAK2cn7vEpUDBo3kip3AobMnhQe2HpoQMAJA7+Aovrf1IC6YNQUrW5u1yHULo8+dk/xAry7STqaJOR2ZUxjo11UncW5THW4Y609qxe3f0Dhv+gZL/x2CCth0eO8SkX+EtOidF2VtbW1yx44dYe9GrB3pTuGqu7ZYBg6Pf+4y3PrIbtMRlVWtzXjouuUTfhd0rluYfe6u2bDN9vEBcvsc1kXa6T7HRbFA3yAAXDCrHl+5arHl38HN39Dqb1A/qQL3fbIt8IAtqnmqRHElhNgppWxz8xgcaSRXVKbX5jbVQko4qu4M8oITZmNiN9WvYRaTlPt0pFk+rwSw92g/btm4y/Lccfo3VDlv+ofSuP3JffgCFgUaODJYJIofFsKQa+vWLEBjXenvH0d7B7Fp7zFb09iqTaK9FGafOy/6JYZRTOK2ECTKVAI2wN65Y/dvqHLeAMDOIycDa/BNRPHFkUZybUVrE2Y21KJnoPi60j0Do/jVnrcs899qKhO4/cl9ePWt04FPDYfd5y7K+YFRb5vjlGrABvh37qicNwa/loQkovIR6EijEOI2IcReIUSfEOKoEGKDEKIx7/YlQognhBBvCiGkEOLdQe4fOXOkO4XD3eajgvvf6sfCsyabbpOREs8dORXKEmhejPS5EYd2JVFtm+OUSpsbg1/njsp5k48rshCRG0FPT2cAfBJAE4AlAGYDeDDv9hEAvwDwhwHvF7mgGnBdcHZ9yX6AlUmBkXTxoqwglkDToc9d1JfVKzd2AjY/z52PtrVAKG7r5xcfIoq/QINGKeWXpJS7pJSjUsoTANYDWJ13+8tSyg1SSsclz0KIJiHEQiHEwnRabeqI3FEdcfmPF4/h2lXnnZH/dumcaUgK88ue3yMkOoz0lXN+YFSZBfr5/Dx3ptdXQ7UHhq4pDkQUDWHnNL4XwAseP+Y6AF8FgOPHj3v80FSMSgU1APQOpvHvzx/FYzdfhs6eFHYe7oGUAATwVz81Pw2CaBKtQyWwDvmBYfSojCoj0P/m4y9j79G+osGb3+eOnbxG3VMciEhvoQWNQoiPALgRwHs8fui7ATwMADNmzNjn8WNTCevWLMDeo31nNO4u9PLRPnxvywH85pUTE5ohJwSQNRkuCWKERKfGxGEEi2H2qIyyla3N+M+bL8Oju17Hhi2H8FrXAAZGMoGdO6pf2hrrKpniQESuhBI0CiHWAvgugA9JKZ/z8rGllN0AugGgrc1VD0uyQUJiNJOx3C4L4GuPvTLhdwPD1vcLaoREh5G+MITZozIurl42G1cvmx1av8wdr/VgJFP6m9eshhoG/0TkSuBBoxDiWgB3APiglHJr0M9P/rhncwdSI1lfHjuMIpByCRYNKj0qGTSqCePcOWdaDZIJAZgEjYe7U76neBBRvAXdcudmALcDeH+xgFHkTBJCTBr7VdXYv5NB7ifZo9rkWEUyAdRV5f7cLAIJhp0elaSnzpMpDI6af2lj5TQRuRX0SON6AGkAm0VetayU0mjgNxfAobztfzP232sxsTUPacROk2MrmSzwjT+6EDPqJ5XdaF9Y7PSo5N9DT1FuDq8ivzgLAAu1iEISaNAopTTtqyKlfA1QbjlGmmiZVotJFQkMpd1PT9dXV+DSuY28GAQo7gFHkMKqPFcphtGpclr1OBUWZyUFAJH7cslCLaLghd1yh2JgTlMtLpg1Bc8dOeX6sXS6sJULrwOOcmzZo0PluQ4to6zYOU7FirMyEjD6GrFQiyh4DBrJE3/9vvPxZw9sN63etGLnwlaOgYmfvAg4dAicwqBL5Xl+y6jnj5zEwEgGdVVJLJ0zLfCWUcXYPU5mxVn5WKhFFBwGjeSJFa1N+Ov3L8J3frXPduBop59duQYmfnPbo1KXwCkMulWeSynfTvIRAJTXi/GXneNkt7jOKNTiF0gifzFoJM9cf/l8LJ7VgDt/vR97j/ZaVnMuPGsy/v6Di5ULXso5MPFL/oitmx6VugVOQbFTee53QFPs/TEwnNHi/WH3ONktrmOhFlEwGDSSp4zA4/4tB/D1gibehY6dGmJgEhKrEVs7F1+dAqeg6VR5rvP7w+5xsrM0IsBCLaKgBNqnkcrHL557w3IbO33jyrWXYGdPCls7ujx9XcaIVPuBbvSPXZSNEdtbNu5Ce0eXvX20ERDEjRHcmAkioNH9/WH3OM1pqsXcJvVjxgI6omBwpJE8d6Q7hde6rS9OkyoS6hW5Go3oBMHP3E2vR6TKuWWPLq1udH9/2D1O7R1dONarFuDqUhlOVA440kie6zyZQmrEej3pZEIoX8B0GdEJgtcjgfn8GJEyAgIzcR4JWrdmAWY2VBe9LaiAJgrvDzvH6Z7NHegZMA+CuWIUUfAYNJLnWqbVorbKeuXHTDarHJyUU2CiMhLolF9TyToETmExKs9XtTajfixwCzqgicL7Q/U4qXyxqalI4P4/a8ND1y1nwEgUIE5Pk+fmNNXivOY67D3aZ7rdUFrami6LQvNit/wuKvFrKtlty56oc1N57pUovD9UjpPKF5vBdBaZrB6thIjKCYNG8sX1l83DX/30edMOcXaDkxWtTbh21Xm4d3MHegffvqg01FTgz1fNi0Vg4ndump85eDoETmEL8zVPaO7deRIDwxnUVSextEWP5t75zI5TOefIEumO09Pki6uXnYN3zKw33cZucNLe0YUHth6aEDACQO9gGt/betBVrp8ugshN83squWWs5yMv6uGQUr7dz1uO/09kRGGqnahcMWgk3/zvP1jsaXDiZ66fLoK4YOqQg0feyy+gGhgrRBsYyXhSQBW0cs6RJdIZp6fJN17muZVTA+kgctM4lRw/Ojf3tqvcc2SJdMWgkXxVGJwkEwLprMTsxhpbj6N7H7r85fjcPn+QF0wGi/EQxy9V/GJDpB8GjeQJq6Cpsyflqlm1rsnxfjXh5gWT7ND9S5UbPPeJ9MGgkVxRCZqMXKv8qTOjWfXBE6dxx9qlltNmuqy8kc+L12UlChdML0dZyRldv1QRUbwwaCTHzIKm/W+dxvqP5YKmbzz+sie5Vrr1oYtTDpkTfi51GEVhBs86fqkiovhh0EiOmQVNJ/qH8ZmHduITy+fgJYsm36q5Vjolx8cxh8yOIEZZo0KX4Fm3L1VEFD8MGskRlaCpdzCNf33qoGWXuPxcK6vRGl1y/eKcQ6ai3EdZDToFzzp9qSKieGLQSI6oBE0AkFV4rLrqJI73D+GaDduURmt0yKEr5xyych9lzWcVPN/56/2BBs+6fKnygw7ve6Jyx6CRHFEJmlRNn1yN2za9Yjlao8s0IFDeOWRRGWX1O8hQCZ53HD6Jj/zLVnzhivMDPUfjFCzq9L4nKncMGskRlaBJ1Vu9QxhMFx+TzF/pRZdpQEO55pDpPspqFmTMbqzxLJBUHW3fefgUbtm4q6zyPL3S3tGFz/10F070j4z/Luz3PVE5Y9BIjq1ZNB2/e60Hoxl3a9uWChgNuztP4Y4n92uXQ1euOWQ6j7Ka5Rj+7lAPkgmBwdGsJ6NVdkbbgzhH4zZ9297RhRsf2om+weLHt5xyZ4l0waCRHGnv6ML3tx5SChirKgRG0s4Dy/7hNF46pmcOXZxzyMzoOspqlmM4kpHA2PnqxWiV3dF2v87ROE7f5kYYny8ZMBrKJXeWSBeJsHeAosns4pxvZkM1/vp9i3Dp3GmOn6umIoHBUfPRSCOHLiwtjbVY2dpcNhcvY5R1VWsz6qtz3z3rqyuwqrUZX7zyHchCBv73UMkxLJSf/uDEujULMLOhWmlbP85RY2S1/UA3+sdGPI2A+JaNu9De0eXp8wXlns0dONFv/fkS9vueqNxwpJFsU704Xzp3Gr5wxSKsaG3CBbMa8In7tzt6vgvOacC+N/u1zaErV4WjrMf7h/CzHa/jK4/uCWXESzXHsJCb0SojeL7jyf3YeeSk6bZ+nKNxbH1kJ/jn+54oWBxpJNtUL86fv2LheLDQMq0WtVVJ2881s6EaX7hiES6e3WC6XVwrlaPAOO63bXol1BEvI8fQLrejVStbm/HIZ1fikjlTTbfz+hy10/ooSuwE/3zfEwWLQSPZpnJxzh8BaO/owo0/2oHUSMb0Pg01lWdMdd65dhlWtDaZTgPGuVI5KlRGvPxm5Bja5dVo1V+/7/xAz1E7rY+iRDX4n15fxfc9UcA4PU222amebe/owg3/9jucHjbPSZxeX4W7PnYJZjfWFC0oKddKZVVhVs7q1OzbrECnFK9Gq4I+R3VvfeSUyudLQ00l7vrYJWX/vicKGoNGckS1evbrj71kGTACwMBQGvc89SpuWr2gZA5WuVYqm9GhclanZt/FAreaigQyUuaqpwt4PQIY5Dk6p6kWcxpr8NKxftNtovgeMft8mV5fjbs+towBI1EIGDSSI1ajKrMba/DLna+bXtDypUazyi1QGCzm6LLusW4jXsUCt86eVKCj1EGdo0II89t93wN/cGaBSE8MGsmxUhfnuze/Oj7yZVdUKz7DoEvlrK7NvgsDt8+uno+KhEAmK2PxxeNIdwqHu83zFQ93pyLbx5AzC0T6YdBIrhkf5sVGvpxgw15rOuURAvo2+zabvo/6+aVTWoAf8vN0+SWSSA8MGskzqg2/rUT5QhcU3QIGHacTdZm+94tuaQFeCWrtcCKyj0EjecLJahylRPFCFzQdAwbdphN1mb73i65pAW6YBfrPHupBhRAYTHuzdjgR2cc+jeQJp6txFHNxy1QAwNaOrsj1mAuKSk/CsAIGHZZUjGvj60Jx619qFuiPZiQG07lODHFYKpEoijjSSJ4wVnyxauCt4njfEK5avyW0FjJRoWseoQ50m773i45pAU65WTs8yiPGRFHCoJFcM3KQhkbNA8YFMybj1eOnLR8vf5s45aB5LU4Bg9d0nL73i25pAU6FsXY4EdkTaNAohLgNwB8CaAFwGsBjAG6VUvaM3f6nAG4E8A4AGQC/A/A3UsoXg9xPUqdaMT2zoRp/saYVX3l0j6MLg98jCmGuqOJGXAIGr8Ux38+K8VqOjE25R+21qQT6xcRhxJgoKoIeacwA+CSAPQCmAvghgAcBfGjs9noAXwXQDiAN4O8APCmEmC+ljHbyUUxZVUwnBfCu+c346KWz0VxfjYVnTcZzR045ei4/RhR0WFHFCwwWz1RO0/dxOI9VAv1i4jJiTBQFQsozl9Yav1GI3wD4sJTytBDinQB2Synd91R5+/GvBPAzKeWUErdPAjAI4FIp5XOKj9kEoAkAlixZsu/555/3aG+p0JHuFK66a4vpyMCkigQumDUFr751Gv3DadRWJpDOFl/STcXD1y33bLTRbJR0ZkM1p8NjoL2jK/bT93E6j5/p6MafPrAdozY+H1a1NuOh65b7uFdE8SCE2CmlbHPzGFYjjb/D2xXW2wGkhRD7AOzK+3leSnnK4fO/F8ALFrenALxq4zHXITdaiePHjzvcLVKhkoM0lM5OGFlMjeaqH6uSAsm89hkLz67HS0d7MThaep1qr0cU4t6SxQkdpum93IdymL6P03l8zrQaJIXAKNSCxriNGBPpzjRolFJ+Me+fjQCWAlg29vNpAOcDSAghDksp59l5YiHER5DLX3xPidsXAngAwOellGoLGOfcDeBhAJgxY8Y+O/tE9jjNQQKAkYxE29ypuOWKheMX8ms2bLOdg+Y0wNBtRZWw6TC96ec+xDFYBNTO4+cO90TmPO48mcJQuvQXR0NNRQKXnNsYqxFjoihQzmkcG018auwHwPj08cXIBZPKhBBrAXwXwIeKTTsLIS4A8GsAt0sp/9XOY0spuwF0A0Bbm6tRWLLgNAfJsO/N/gkX83VrFuDV4/040T9yxraFIwpuA4xyacmiQoeVU3TYhyhSOY8HR7PY9OIxXP+e+QHtlXMqX0RrKhN48Nrfw/J5DBaJguaqubeUckhK+ayU8j7V+wghrkUuYPyglHJzkdsvQS4w/ZaU8ttu9o/8Z9Zc2IoRlAG5oOHuza/i9NDEi0VNRQKrWpvxxSvfgSwkOntS4wFG+4Fu9I9dXOw2+zUuTmbKJcFeZXqzHPYhilTOYwDY9NJbAeyNeypN6y+Z28iAkSgkga4II4S4GcDtAN4vpdxa5PZVAH4D4MtSyruD3DdyxugVuKq1GfVjF6/66gpcOmcaJlWYn15GUJYfBBbmNFZVJnFyYBhfeXQPPnH/dly1fgtufGin6wBD5xVVgqTDyik67ENUzWmqxcKz6i232/9mf2SOX9xWuSGKk6Bb7qxHrpXOZiHE+C+llJPH/u/XATQA+CchxD/l3e8DUsotge0l2VKq2MAqR3Hh2fU40pPCHU/uKxkE9g6OondwdPzf/Qr5k6q5iOXUkqUUHabpddiHKPvAhWfhuSMnTbeJ0vFj03oifQUaNEophcXta4LaF/JeYbGBWVBWlRR46WgvPnH/ds/3Q/UCyYuTHiunBLEPOlSF++X9i2fijif3mxaQRC3Vohyq3omiiMsIkm+KBWU1FQlk5FifRoe9Gq3YuUDqdnEKOrjRYeUUP/dBh6pwv81pqsUlc6fFcvWbsN+PRDQRg0byVWFQdseT+7HTYirNLScXyLAvTmEGNzpM0/uxD+VUka3D35CI4i/QQhgqXy2NtZg9rRb73rLTctO+KF4gvagGd6NUMdOq1mbcuXaZ7aC1syeFrR1dtgovvN4HoLwqsv04frpwcj4RkT840kiBUSl4cCMpgC9+4B2Ru0DqsKKHF9P0bkdLvUwVKMfm7bqlWrhVDqkFRFHDoJECY2cFmbrqJKZPrkbXwDBOD2WUHj8jgemTnfWMDItuwY3TQMPLqWAvgh0dKrLDKr6JerAIlFdqAVGUMGikwKgUPCycMRmVSYHXulN4rTuF6qT640etQhTQI7jxgg6jpfnCrArnCJl7up1PRJTDnEYKlFnj3sa6SnQNDGHvsX4MjORGF4fVBhkBRLNCNA4r0+jYnDus5u1h56fGwZHuFJ47bF4s99xrPcxxJAoBg0YKlFnC/swpk9Az4CznMYoFMEA8VqaxM1oapDBWFimn4hu/dJ5MmfacBIDBdJZBI1EIOD1NgSuWsC8lcNVd9hf9EQAWz5qCL191QWSn/qLeLsXrqWCvcgGDbt6uW35qVCWF6RoQb2+XUNuOiLzDoJFCk5+wv7WjS6lApqYigcF0FnVVSZzbXIcbLpuHDy87x+9d9VXUV6bxqjm3H7mAQVYUxyU/NWwZqdb0P5P1Z3EAIiqNQSNpQWW0qq4qie9/6p3IZGUsKkTzRb1ditvRUr+rZfOPp19VzTosyagbJ8e6ZVotaioTGBwtPUVdU5koq+NIpAsGjaQFldGqoXQGd/32Vdy0eoF2FwyvApGoBYsGt6OlQVTL+l3VrMOSjLpwc6znNNVi2RzzZREvmdtYFseRSDcMGkkbZqNVAJDJQrs+bWyv8jano6VB5AIG1fcv6vmpXvDiWPM4EumJ1dOkjfzK6qRJjrsuVahsr1JcS2MtVrY2qxe+BFB9HVRVc5yX81PlxbHmcSTSE0caSSsrW5sxe1otrlz/NFIjpZs06lCFygbE3vA7FzDoquaw8lPDWoEmn5fHOup5vkRxxKCRtNN5MmUaMALhV6GyvYp3/M4FDKuqOaggR6cUCT+ONYNFIn1wepq0E4VVUnRtaB1Vfjbi9vN86uxJYWtHV2h/Z91SJKLw3iUi5xg0knaisEoKL47e8jOHzY/zqb2jC9ds2Iar1m/BJ+7fPvbfbXimo/RoqR90W4EmCu9dInKO09MUKNW8K92rJ9lexXt+5rB5eT4FVYltRdcUCd3fu0TkHINGCoTdvKsorJLCi6M//Mhh8/J80qUAStcVaKLw3iUiZxg0ku+cjszoXj3Ji2O0eHE+6TS6p/MKNLq/d4nIGQaN5Du3IzPGxebIWLGBThcfXhyjx83fSKfRvSikSPj1ftChvRBROWLQSL5yOzKjUzsRoPTFisFiedBtdK/cUiR0+zwgKjcMGslXqiMzm158E9e/Z96E3+tScGDsCy9WpNvoXjmlSOj0eUBUrhg0kq9URmYA4L7/PoDF50yZ8KGvS8EBL1aUT7fRvZbGWnx29XxUJAQyWRnbUW9dPg+IyhmDRvKVysgMAJzoH5nwof/L517HtoPm9/G74KCzJ4Udh3vwz789wIsVjdNldM9s9DsuQaORDlKRENoUIBGVMwaN5Lt1axbg1eOncaK/eOBlMD70O3tS+Np/7kVWmj+uXwUH7R1d+PpjL2Hfm/3IWOwDwItVOQq7ACruo9+FAXFNRQKD6azpfcJeWpSoHHBFGPLditYm/I9Lz7HczvjQv2dzB3pS5tPZAFBTkfAlYLzpxzvx0jG1gBHI7fcTLx7jkoFlqKWxFitbmwMPVHRbCcZLxZZGtAoYAa7ARBQEjjSSr4wRgxdeP2W5bX11BRLCehrKUFWZ9Pwicc/mDvQMWAeshb75xCu4+7cdLI4h3+nUK9IPZgGxmbDbCxGVA440km/yRwwGhjOW21/cMhUZKS2LZgwj6Yyno3tHulN4vvOU4/sb04O3bNyF9o4uz/aLKJ+dXpFRoxIQFxPH9kJEOmLQSL6xM2LQWFeJj7bNHq+2VjE4mvX0wth5MoXUiHVwayXq04OkN5X3SFSnalUCYgCoqUyM/7dt7jTcuXYZR/eJAsCgkXyhOmIgACQF0DMwiq/8cg/+9pe7MbexRuk5vL4wtkyrRW1V0pPHMqYHibxmdCQwE9WpWpWAuKYygXnT63LFMaNZ7HuzH/c89Sqe6TDvtkBE7jFoJM919qTwxJ5jSiMGEhgvODGmd4/1DaGxznq00esL45ymWixtmWq53blN1s8Z1elBioZ1axZgZkN10duiPFWrEhBnpMTeo/3jxTFMCyEKDoNG8kx7Rxeu2bANV63fgn984hXHj9MzMIpZDbW4cNYUiBLb+HVhXLdmgWnA2lhXib/8/YWxnR6kaDB6Ra5qbUb92LlYX12BVa3NjqdqO3tS2NrRFfqXHbOAuDIpMJIu3taAaSFE/mP1NHmiWN84Nw53p/D45y7DzsM9uH/LIRzqHsDAcMb3JsorWptwz8cvxTcefxmvHOsbHwVNJoB3nD0FX77qAqxobcLPdnRqs5QclSevekXqtkRmqebpC8+qx96jvRhF6V5YxarGS60XT0T2MWgkTzhtk1GKMb179bLZuHrZ7ECbKK9sbcZjN1+Gzp4Udh7uAQBcOrdxwvPqtpQclS837wldm4QXC4iP9KTwifu3m94vv8G3bsEwURwwaCTX7LTJyB8xGDJp2Fs4vRvGerqFz5k/YqHLUnJEbui+nnP+e1BKWK5jb3xu6BoME0Udg0ZyTbVNxpc/cD6uvGgmWhprcc2GbZ5O7/o5BWU2YvHQdctDW0qOyI2oNQlXWcfe+Ny49ZHdWgfDRFEVaNAohLgNwB8CaAFwGsBjAG6VUvaM3b4WwFcBGGvO7QXwZSnl/w1yP8keo02G1QiAETAC3k3v+j0FpTpiocNFlcgOO03CdTm/VT43ohYME0VJ0NXTGQCfBNAEYAmA2QAezLt9G4ArpJTTxra5C8DjQoipwe4m2aHaNw7AeHWmF9Wfxdao9br9RpzX+C0XulQF6+ZE31DJ7gQG3boAqHxuxHnFHKKwBTrSKKX8Ut4/Twgh1gP4Wd7tnXm3C+SCzFrkRiZPqTyHEKIJuYATS5YscbnHpMpsBKCxrhKnBoZx1fotnk7v+p2PxRGLaGMhhLmf7XzdpA45R8cuAFZV46ozH7q9LqIoCLtP43sBvJD/CyHEHCHEKQAjAH4O4CdSyhdtPOY6APsA7Dt+/LhX+0kWSo0AXDhrCgCJvcf6S44GtjTW2p7itRPQOcURi+gKYhQ6ylTePwLARy+dHcwOOVDqcyPOK+YQhS20QhghxEcA3AjgPfm/l1IeATBVCFEHYC2A4l1eS7sbwMMAMGPGjH0e7CopKjYCcOsju7HnaPHAyxgNNNpp2CliCSIfiyMW0aV7VXDYVN4/EsD0ersfv3pgS6zyxb6c/golaBwrePkugA9JKZ8rto2UcgDAg0KIl4QQr0kpf6Xy2FLKbgDdANDW1ubVLpMNxnSRymjGMwe6cOX//zQGRjK2pg9VArqaigSSCausrdKEAOY21WLv0b6S23DEQj9MK7AW9y9EbIlVfpiOEozAg0YhxLUA7gDwQSnlVoW7VABYAEApaCR9qIxmZCUwMJIBYK+Pmkr7jcF0Ftf9YIftD47CDx8BFM394oiFnqJYFRw0O+1rosqrFXNIf+zLGZxAcxqFEDcDuB3A+4sFjEKIPxVCtAohEkKIeiHE3wGYA+C3Qe4necMYzbBLtSrZbI1ag908tmK5cEbAaIxZul3jl/ylct5FeRTNK2bvnzh9IXKSM03Rwi4XwQm6EGY9gCkANgshThs/ebcvBPAbAP0ADiKX7/gHUsqXAt5P8oBKQnopKkUsxYpvSlH94DD78JEAFs+agsc/dxkeum45A0ZNsRBCjRdtr4jCFkRRJL0t6JY7pglmUsqvAPhKQLtDATBLSDejOn1oTEFtP9iNTz3wLAZHSy9NaJXHpvLhc6Q7nA8eJnfbw0IINTpM4RrndkVCIJ2VPMfJFqajBIvLCJKviiWk11UnMTiSQdakSZzd6cN0VpoGjID1B4eOHz5M7nZGh0KIKAX6YQSLxrm96/BJDOatQ19bmcCyudN4jpOSuBd16YZBI/muVCseL5PwW6bVIiFgGogmEzB9TN0+fJjc7U5Yo2gM9K0VO7cNqdEsz3FSVg5FXToJu7k3lZH8hPRQkvAtlr/QLReOyd3eCLIQgk3F1Zid2wae46SqXIq6dMCgkULhdRJ+58mU6SgjAGQkLJOhdfnwUcmvfO5wD7YfLP3tmoLHQN+ayrltYAEDqWBRV3A4PU2h8XL60KupZR1y4QC1/MrB0Sw+9f1nccm5zP/SAZuKq1E5tw0sYCBVOhR1lQMGjRQ6L97cXua1tDTW4rOr56MiIZDJylA+fFSCYCDXwJz5X3rQsZBKR6rnNsACBrKPwaK/GDRSbLhts2JWwBD0h5BKEJwvbuspR6ny2KBbIZWu7JzbLGAg0guDRooNN1PLOlYq2+1xGYepzyhXHrOKU92aRTOw7WC3aR4yCxiI9MOgkWLFaV6LSgFD0EFjfhD83OEe130odadj4G4Xm4qr2bzvuGnA2FBTaauAIYoj00RRxKCRYslOXovOBQxGELztQG7Fm6F06cDRztSnjhdZHQN3u3QppNKZyvstm5WY3Vhj+VhRHpkmiiIGjRQpfgQ7UShgeNf8Jlwyd5rrqU9dL7I6B+52sYrTnFfvtziMTBNFDYNGigQ/g52oFDB4Ueij60U2CoG7mWJfZhgsFufV+y0OI9NEUcOgkbTnd7ATlQIGt1OfOl9koxK4F9J15FZnXrzf4jQyTRQlDBpJe0EEO1EpYHA69an7RTYqgXs+nUdudef2/Rb1kWmiqOIygqQ1O8GOG8YoXtvcaaipzL0tdF6Gyu56ynYusn7q7Elha0dX0efRZQlHVVwy0Dm3y74ZI9NmdByZJoo6jjSS1oIaUTCmGfe92Y/B0SxqKhJYePbk2FS8hj39qzKNG6XKY91HbqPATcFQFEemvaJj5wMqHwwaSWtBBDvFphkH01nsPHwKt2zcFYtpxjAvsnamcaNSeczpUe84/RtHJaXEK8yfJR1wepq0ZgQ7ZhaeXe/qwhzGNKPZNK1fwpr+dXJ87U6/e8HO30Tn6dEwzq0wuJ3ijhLji1f7gW70j31ZMb543bJxF9o7ukLeQyoXHGkk7Vktp/fy0V584v5tuGn1AsxurLE1dRP0NKPqaIEfU1BhTP9GYRrXyQiOjtOj5TgSFZWRabd07nxA5YVBI2lvwnJ6r/VgsGBVlNRoFls7uvHsoR5UCIHBdFb5ghnkNKPKNC0AXy/8QVxk8wPesKZxVYNuNxXQOk2Plnsld1yDRSAaX7yofDBopEgwgp2P/HM7dh45WXSb0YzEKHIL2qpeMIMsELEaLfjm4y+je2A4kAu/HxfZYiNdC8+ejJrKhOm62V5O49odbXMzgqNT4Q5HouKL+bOkEwaNFBlHulPY91a/rftYXTCDmmZUGS146VgfsrL4bcbraGms1bJystRI187Dp1CVFKb39Woa1+5omxcjODpMj3IkKt7C7nxAlI9BI0WGyjfuYqwumEFMM6rse6mA0bDtQBeuXP80BoYz2uWrmY10jWQkqpICI5kzX6CX07h2R9u8HMEJc3qUI1HxpmP+LJUvVk9TZKhUrBZj1bQ6iCpMp/ueLyOBgeEMAL0qJ1VGupJCoG3uNN+Or5Mm8GFUQPtR2axzJbcd5VL17UTUGt9TfHGkkSJD5Rt3MSoXTL+nGVX2PSGsRxsL6ZCvpjLSNZjO4pYrFqKlsdaX4+tktC3IERw/K5ujPhJVjlXfdumUP0vljUEjRYpV+51i7PRx9HOa0WoavLG2CnuP2cvZBMLPV7OTc+XX8XWa9xVEakIQlc06VXKbKaxqL/eqbzt0yJ8lYtBIkWLVfqeYKy84O4A9s2Y1WgAAt2zcZSsgBsLPV9NhpMvpPgQxghNEZbOb1xHEsnSlRhNPDYyw6tsmBosUJgaNFDnGN+7tB7vxqQeeNW3nUlOZwJUXhRc0Fl6QrUYLCi/8dVVJDI5mTKetdchX02Gky+k++DmCE2Rls93XEdS0sNloonldffFjo8PayzrsA1EYGDRSZC2f14Rlc6aZji5dMrcxlA91qwtyqQt6sQv/rY/s1j5fzc8RO9ULtNt98KXReQiVzSqvI8hpYbORVqsU3vxjo0Puow77QBQmBo0UaTqMcBXy4oKcf+HX8TUW4/WInZMLtG55X7r22AuqGbjKSKsZ49jokPuowz4QhY0tdyjSgmiXY5fKBdkOHV+jGWMa3m3A+PmNz6P9QDf6xwIuO22GvNgHLxi5lmaCHil20p7IKae9VQ3GsfH6PeWEDvtAFDaONFLk6TS65FcOm06vMQhxWhbPr5Fip3l1QU6Zq4y0ChSfpjaOjQ4r3uiwD0Q6YNBIsaFDIOX3BVmH1+i3uF2gvc73dJtXF+SUuUpV++JZU9BQW1Xy2Gzt6Ap9xRuuukOUw6CRyEO65rBFiV8X6DArXr0aKfYiry7oFklWI61fvuoCrGhtKnlsdHhP6bAPRDpgTiORB4wl0ISAZQ5bIgG83jMY0J5Fj9fL4rV3dOGaDdtw1fot+MT928f+uw3PdNhbWcgLbnMtvcqrC3JZOmOk9cJZU5DI67GTFEBTXdX4v0sdGx3yQnXYByIdMGgkKkJ1HdxiAUnf4Aga6ypL3qd3MK3FmtG68vIC7bagRideFrCEUVzVPTA8od9oRgJ7jvYr/R10WHtZh30gChunp4ny2MkXKzVVuOdoPxrrKlBblURqJFP0eaJWzBE0r4pH4lRQ4/W0fZDFVU7/DvkpBWGvvcz1n4kYNBKNs5svZnYh7BlIT5iKKyZKxRxBU71Am+Upxq2gxq+8Or+Lq5z8Hcy+vM1urAmtg0C5dTEgKsSgkWiMndEQlQuh2dJ/AKstrZhdoFVGhONW8arDGt9O2P07RKGJNoNFKleB5jQKIW4TQuwVQvQJIY4KITYIIRpNtpVCiE8GuY/kDdWcQF3YzRdz27QYYLWlqsICCdU8Ra8LanQQxbw6u38HNtEm0lfQhTAZAJ8E0ARgCYDZAB4s3EgI8XsAPgDgWJA7R+7pVKlqh53REEDtQmg1PR32qFDUAnuDalARx4rXqK0OBNj7OwS5Wg0R2Rfo9LSU8kt5/zwhhFgP4Gf52wghqgF8D8ANAH5s9zmEEE3IBaVYsmSJ850l26IwrVSK3XwxlanCC2ZOQffAsHZrRrttDh0mu/lxUVm3244o5tWp/h3illJAFDdht9x5L4AXCn739wB+K6V8xuFjrgOwD8C+48ePu9g1sivK00pORqWspgq/fNUF2o0KRbkFTWdPCk/sOWZrRDiKI3OqdFlfW4Xq3yGOKQVEcRJaIYwQ4iMAbgTwnrzftQFYC2Cpi4e+G8DDADBjxox9Lh6HbIhDpeqaRdPxu9d6MJo5s4Kl2KiUaoWvTqNCdop9wlxBJV/hyKiVwqAiiiNzcaTyd4hqsQ9RuQglaBRCrAXwXQAfklI+N/a7KgAPAPgLKeVpp48tpewG0A0AbW1tHuwtqYj6tFJ7Rxe+v/VQ0YCxqkLg06vOKzoqVXghTCYE0lmJ2Y01E7bTIVBRDey/t+UAHnnuDRzuTmFgJOPJ9LXTALRYyoOVUkGFDn8Dsv47xDGlgCguAg8ahRDXArgDwAellFvzbpoFYDGAh4QYryCYBuBfhBAfkFJ+Itg9JTuivjar2QjcSFriqf1duP7y+SXv39mT8iRP0M/RPdXA/muPvXLG71TyUovte6n8yY9e2oLm+mrL12n2dymGQUX0sYk2kb4CDRqFEDcD+CqA90spf1dwcyeAOQW/ewbAtzE23Uz68ntayc9gyu3Uut0CIDvBlZfFKSqBvZlSK3eU2vfVC6fj+1sPFT0u7R3dkIDp61T5uxgYVMQLUwqI9BT0SON6AGkAm/NGEyGlnCylzAB4PX9jIUQGwMmxKWfSnB/TSkEEU26n1lXzBJ0EV15WnasE9laKrdxRKmB+9lDx/FAAkAXbFg2uFXth1lcn8bWrF+PqZbMdvy7SE4NFIr0EWj0tpRRSysqxIHH8x2T7c6WUPwpyH8k5rytV7VT6qvQcLLWNm4pN1VHKR3e9XvK1fPtX+wKrOjer+FaRX5kMmAfMpQLGYoq9zuN9Q5a9LnP7lMHGnW8oPxcRETnDZQTJU15OK6m28LEaibQarXQzta46SrlhyyHHwZWXVefF8sVqKhIYTGeV7p8fPNuZPlaR/zrbO7rw7V+9YrkUY7H7mtGlIpyIKIoYNJIv3E4rqQQkz73Wg8/9tB8n+ktP6wJQyjd0OrWukidYV5XEoa4B09dipn84jU0vvokrLzrbNOBRDYiKVXz/+Q92KE0F5wfPXiylmC8/BcBuAYxVZX6UG5oTEemCQSNpSSUgGUxnMdhvPhIppVTKN3RasakySjm3uQ4vHe0zfS1Wvv2rl3Hnf+3D4Gj2jIDHaUCUH9ir5DoWBs9uC2sKGaOYTkYwzSrzo7xSERGRThg0kpa8CEie7zwJaTG9mT+t6XRq3WqU8oZ3z8NX/n2Pq9cymgVGs7kp5PyA59pV5+EBl0U0nT0prFk0Ha8ePz1h1NYgACyeNQVfvuqCCUGoSsBcVSEwklabYzZGMbd2dNk+VmaV+XYamhMRUWkMGskXbnPHvKj0HRjOWG5TbFrTKlgsfG0qo5Q/29lp+loqk8JW4QgwFvBsPoDewdHSt5sERIUjlDUVCTTUVGAkncXgaBZ11Umc11SH6y+fhw8vPafoY1gFzJ9edR6e2t81flwE3q6czicA9KZG8ExHt+0vDGbpA3baKQEIJN+ReZVEFFUMGslTXuaOmQUk0+urcHoojcHR0gUcddVJSAmkRkoHj3VVSbzVN6RURGH22qxGKa2CqzXnz8DD2ztNn7+YUgGjoVSBSLEp28F0FoPpLKbXV+GW35+HKy+aaXlMVALm6y+fP35cjvcPYcOWQ3jpaN+E4FEC2HO0D7ds3IU71i5V+sKgkj6gWqj0ye9tQ9fpEQwMe7MCTjHMqySiqBPSav4uwtra2uSOHTvC3o2yYbbk28yGake5Y+0dXSUDkrs3v2oaWFw6dxoGR9J46Vh/yW2SCSCTLd5kOn9EqLMn5fq1mb2Wc6bV4Kq7tnhaWGJ4+LrlZ+zbNRu2mR67Va3NeOi65baeR3VaX+W5b1rdils27irxhaEaN1x2Hq680DqoPdKdcnxcnZ6zxfjx3iAiskMIsVNK6Wp9ZY40Rphu01x+5I4VG8EDctOIH3tnS8nRu6qkwEtHezE4mi05JQrkAkbgzDzBp/admDAiJBJA32DxwEP1tVmNRrqdji8mmcAZeYpuV8ApRSUHVPW5ZzfWeLKUnJs0By/zHZlXSURxwKAxgnSc5vIrEDG0jI323frI7gmve05TDZrqqnG4OzWel5eREiMZCYzlCBoBoxE8JsX4TWc41juM2554ZcLt/QqjVHZeW6ngymwK26lMFvjWppcxvb56PChxuwKOG3ae26uen26O6/OdJ10fB7/fG0REQQl0RRhyz84qKUGyEww4Uep17z3aj+6BYXzt6sV4+LrluGBWQy5gLEICWDBjMqork6bPZbMeZXxfNu05NuF3KqvU5Cu2ok5NRQJVSYVlUUwUrraistKKWQsbJ4xjkRTC9uo7RmW70/0pdlxVDQxncOOPduCZDucjwH6/N4iIgsKRxojRdZpLpeLVTSBi9bo37nwD//hHF2HfW6XzFwHg9ZMp0+IZN+7bcgiLZzUAsF6lppRio2udPakJ07ROGCNZnT0ppZVWzFrY2FE4Kl5bmcBwxvz4Fz63F2kY+cf1x9sP45//70Hl++492j9eoOPkveX3e4OIKCgMGiPEzTRXqQuvV3mRSk2um5w9vurr3nm4x7oh+GgWkyoSGFJcNs+OE/3D+NIvX8TASMZ0lRqVwCN/Ktb47+1P7sOe109hxMGuGyNZKiut5LewcXJ+GPd55Vgf7n2qAz0Db1d4pywC9vzn9iMNo6WxFgtm1Nu+n5svZG6WqSQi0gmDxghxkotW6sK7euF0bC4o9nB7QTbLHRPItVS5av0W28+j+roBKI3oLDhrMp47ckrpue16rbv0FKOTwKOzJ4Un9hzDhi2HijbeVpUQwGMvHsXznadMt0sK4IsfeAckJK7ZsM3W+WGca7sOn1ReyzpfXVUSd65dNr7KjZtVXMyC3UvPbURCQHlda4ObvEOny1QSEemEQWOE2J3mMrvwPnOge8JF04tl1Yr17DMYT+Xkwl+REEqvu+3cRqURHbN2Ln5TDTwKg323shJ4SKEPZEYCx3uH8K0nXrYVsJm1lFE1NJrB7MYaAMAdT+53lIahMjo5p6kW75g5BXttLu3opjjI6TKVREQ6YdAYIXanucymIkuNsrjNizRyxx7d9Tq++MhuDJVYQs7uhT9pUbJlvG6VEZ38C/jznSeVVo7xikrg4UUA5lR9dQWe2Pum7YBNZdrbSkYCP9l+GM8c6rEcCS4WfNsZnfzKVRfgL368c8LUuRW3eYdeVYMTEYWF1dMRs27NAsxsqC56W/40l0oeYCn5y6o5cd/TB/DXPy8dMJo9T6kq6d7BdMmK3/zXXbQCuTKBtrnTxqc+gdwF/KHrlmPT5y7H4pn2c9ycqqtKWgYKXgRgTi08qx773zptuk3h383NuVboR88eVkodKFZtrFIkZljR2oR7Pn4JVrU2o646V01vVVHe4jAn94zHcVkNTkQUFgaNEVMsKKqvrsCq1uYJQZFKHmApblvjfOdX+5TWUbZ74c9KoKGm0vR1A7mA8C9Wz8eCsyajpiKBwdEs9r3Zj3ueevWM1iktjbX4yh8sRmNdMIPuQ+kMvviL3SVbuDgJwNw15HlbY10lls+bZrs9jJtzrVDvoNqob+Gon901poGJXxwevm45/uljS0t+IRMAXhrLyf3E/dtcteAhIooqTk9HkMo0l0r+Yyk1FQnHoyC3P7lfKWAEnF34s1mJ+/+sDZmsLDm9Z7eIIjfqdCm+9MsXTQtZvJDJ4oz9mLBcoYMATAjAzWqgCZELinoGRvGD9sOWRSI1FQl0nx7G1o6uXKGJi3Mtn9nKPYXOaMvjomF5/nk0fXL1hLxDY5+c5ORSedBtZS4iPzFojDCznCg3y6dVVVpPoRZzpDuFl4+pj5I5vfBnstL0Yu2kl+XK1mb88NPLceX6p5EaURvtWjRjMroGhtA9YD9YOtY7jG88/jIaaion5G4uPKveVvDUWFuBnpTzYK2uUmBg9O1nG1B47YPpLNb95HkAQG1lAsvmTsPcxhrsNVnj20p9dRL9irmljXWVZ1Qbe9ULMf8L2Y0/2lmyWIZL/5GOK3MR+Y3T0zFmlv9oZiSdcTQ93Wmjcfb0+jPbjLRMq8WkCvNT0urCrzpNuf1g94TVWjp7Uti055hlXlu+oUzGUcBoeOlo3xm5mzuPnFQKGBMCWNXajD9551xX09P5AaMTqdEstnZ040hPCg015t9BG2oq8Ber50/II6yrTmJVazO+dvVFNl6HhCw4SsaXJDN2eiFKCRy2GHV2m/tL0aXrylxEfuNIY4wZ+Y93/Ho/dh4+qXy/wdGso9YiLdNqlfrf1VdX4K6PLcPsxpq3pzgba/H6yRTSFnee01R8dNWYIjreN6Q0WvmpB57F4GgWtZUJVFQkMDSShuIA47jD3YP27lDATbhWmRD41h9fhFsf2e3qccwkRW7qW6XlYv9wBgnkAsPBEsdyZDSL518/hZtWL8DsxpoJK97c/uR+5dfRM5AuOsrnZS9EP9bn5jRmfOi6MheR3xg0xpwx3faRf27HziNqgaPfS5r96Yq5uHvzq2dM65waGLEMGg+eOI1nOrrHp38Kp4jqqpJKgasxIpoazQI+LSvop+GMxI7XejyrWi4mI4HqpLD8mxiyAHoH05heX4Ur3nEWNu19Cz0DI+O3D6azZ+QDOm0vVKzljpe9EL1c+o/TmPHiZmUuoqhj0FgG2ju6MJTOKOfKOV3SrPNkSmmVjR//7siE/njGtI6KwdEs/uf3t+GjbS34vfMacdumVyYEHCo5eXFgVJB7VbVcTE1lwtE63Sf6R/DYi2+id7B4D8T8kRin7YVKjfJ51QvRq6X/3K5sQ/rxYxSaKCqY0xhzxkVr79E+pYDRzZJmxuiMmaSArYbKxaSzwMPPduKWn70QWj9Dt9y2yZnTVItL5zZaHm83VEcYiykVMBqMvFKnI6WlRvk6e1LYOpZP5rYXompPVDN2ekdSNKh8zvk9W0MUFo40xpzVSE5S5KYhvVjSTGV0xsv8OxcxTaAEgEljo3bGcT6VGjFdxq46KTBs0rpIwF2FvGFydQKnh4uPJqq2TnKifziNFzpPOR4pvbhlKgCM58R29qQmTAHXViYwb/pkfHjpLFx54UzHS//deuX5uH/LIRzqHsDAcAb11RVYdHY93r/4rPElD0vhNGY8eTUKTRRFDBpjTOWiNakqiW9cfSEundvoyYecWTGCnbYqcSIBJITA4ln1uOGy+fjwsnPwzFiVZbHjNL2+Gr0p8xHU/W/1obMnhY+1teCVY72O2u7UVCTw9asvwsadb5zRlzAIDz97xNH9GusqcWpgGFet34L+4TSqErl9zp9JT41msedoH/Yc7cN3Nr2Cd85rspVDWCxX9tymGlQmEtj3Zj92HD6Ju37TYZqbyGnM+PKy6IooSjg9HWMqF62B4Qxm1E/y7KJltmLN2VMmefIcUTQwksHeo/341qaX0d7RNeE41VWNtZ+pyrWfWXvpOZaV3CMZ4JPf246vPLoHPak0kgnrZfAKtc6YjKuXzcZD1y3H45+7DItnTQksYARgu5F6fXUFLpw1BYDE3mP9461ORixqmUbGGqrfsnEXHt31+oRWS8UUa6cyMJLBa92DePXEgHKLlZZptaipdNdCivSkujIXUdxwpDHGVFrgJBPw/KJVrBhBSuCqu7Z4+jxRVNiOY2gkg8zYHygjJV584xR+d0itx1t+H8HMWNDUWFeJD1x4Nh7a3ml5//3HT+MT92/DTasX4JxpNZZ9CcNUkRD4y99fgB9uO4weh70xj/UO4/MbX0AmC9MKZrvFOaVarLx+MjX+ty2F05jR5VXRFVGUMGgsd4pDS1Y95rYf7MbznaewtGUqls/LXYTzP0S3dnT5WukbJbs7T+Hbm17Ghi2HJuQNDo1mMeSy/U/PwChe6OxVWtZveKwFzv63TuP6y87T+u+Tzkp87bGXXT+OEVyXqmB2svY3UDw38Z7NHRgxyQutSgpOY8YAg0UqJwwaY0ylBU5GwjSnyqrH3H1PH8A9mzvQN/h2wNFQU4F1axbgusvnjf+uZVotaquSykv0xVn/cBr3PX1QqWm2E3uO9mHy2IorKk70D+Pu33agKilMg5w4KhwldLL2N3BmbqJK8JkUwrKYhohIJwwaI8DpShJuGxRb9ZhbvWgGfvq7zjMC097BNL75xMvIQuKGy+ejvaMLdzy5H0Oj8Q4Y66qT+Kv3LsCd//WqaXAsoLbKihunhzNKTc4N/UNp222AGusqkMkKy/Y6ussfJXT65abwfaQSfA6mna28REQUFgaNGnO7koTb1hBWPeZ+tuPMgNGQlcC9m3M96L7zq32+tm9RYSeAcmppyzRcd/l8/HbficDaDpnJSqChphIjoxkMKkSpdvbr0rnT8IUrFkFC4n/9aCf6h/Sd2rbSP5zGEy8ew4wp1fjZjtcdfbkpfB95uaIMEZEuWD2tqWIVnFbVmsU4bVCsMr2WsYhDegdH8e0nXgk9YAT8Dxin11dj9cJcUrzZMQ9aNivx7f9xsWUVrx1tc6fhkc+sxIrWJqxsbcafvmuOZ48dlm8+8Qr+6qcvoP1At+1zZXp91RnvI+MLmxkWwRBR1DBo1JRXK0k4bQ3hNLerUDr8eNFXNZUJNNRU4PTgKL7x+Cu4av0W3PPUq/j0qnkTjrnbFWCc6h9Oo2lyNZbNmebJ4zXWVeDzVywCkPtic82GbXjwmcOuHnNShR4fQ05P1RvePb/o+8iLFWWIiHTC6WkNeb2ShFlriMJ8SePfFQmhVIFbrhIAZk6dhFOpYfTmFQEVVuW2NNbixn/bgb3H+kPZT2MKdM2iGXjmYDekw8jIWIHmlt9fiBWtTUXzXZ361kcuwoz6SWg/cAI/fvYIuh221AlDXXUSV150dtHbjBVl7ttyCIe7BjAwkvFk5SUiorAwaNSQXytJ5AeLhfmSNRUJVIxVzw6nc8vdSacRRhnIAnjj1FDJ243R4H/8o4twuGcwuB0rcG5TLY70pLBpz5uOA0YAECLXF/Irj+7Bz3Z24lRq1JOA0RiJ/cbjL+MlxfXRdXJOQ03R9+AZK8pUJ3HhrCm4/vJ5+PDSc0LYUyIi9xg0asjvJPpio0SD6SyQ93T9HGF0bXfnKfz4d4dDHa198WgfPnH/dtePY+T5GSOpXmmaXIXbNr3iSQAahiM9A+MN0o2Rw2Lvr4HhDPYc7cO3nngZ0ydXn9EInIgoCvRIJqIJVJPoAVguidbZkzpjG7srXpAz/cNp/LDdXb5f3L1+cjDS5+JQWp5RnOZVPjIRkW4CHWkUQtwG4A8BtAA4DeAxALdKKXvGbv8UgO8DyI+C/kNK+fEg91MH69YswKGu00UvPo11FTiVGsFV67eMt+JZeFY9rrzwLFw8eyrSWYkT/UP42Y7Xz2jXs/bSFkcrXthx6Zxp2PdWP/MhkVuzmEpL+13WHpBjvcP44i9346+vWKSUj7z9YDfSWWm792pUOO0tS0R6E0HmrQkhvglgI4A9AKYC+CGAUSnlh8Zu/xSAr0gpPSkrbGtrkzt27PDioULR3tGFe586gN2dp8YDvzlNtTjWO4ieAWcNlRvrKh3fV8XMhmrcuXYZ7t78qmmvQqJyVlORwOBY7rCd3qsqwgzY3PaWJSL/CCF2Sinb3DxGoCONUsov5f3zhBBiPYCfBbkPulD5YC9W9XzrI7ux92if4+ftGRj1rdH1whmT8Q8funD84lBqpJSo3BnN1kutge1E2AGb1QpSbl8fEYUv7EKY9wJ4oeB3LUKINwGMAtgK4G+llIdUH1AI0QSgCQCWLFni1X56xskHu1H1rNKKJ0z1NZWY3ViDrR1dqEgIXLvqPDy59y3sfaNXaUUSIr9VJgUqhMBgOotJFQmMZLK+N35XUbgGtl06BGwquZwMGomiLbSgUQjxEQA3AnhP3q+fBnARgA4AMwB8C8CvhRBLpJQDig+9DsBXAeD48ePe7bAH3H6we9VwOyuBxtoK9KS8zTncefgkLv/25gltU2orE5g/ow6vvjWAYaslZIh8NpqRmDQpiRrkRvuSYXVdL8JO79VCYQdsXveWJSI9hVI9LYRYC2ADgA9JKZ8zfi+lPCil3C+lzEop3wRwPYBZAN5l4+HvBrAIwKIZM2Z4uduuua2qNFrxuFVfXYG/++BirGptRo3Hq3EUDtqkRrPYc7QfMnId+MJVkdAomomZ/qH0+Mh3UCtcqizjaPRetctOwOYXO71liSi6Ag8ahRDXAvgugA9KKTdbbC7HfpSvoFLK7rHAc39FRdiz72/z4oNdpRWPiotbpuLqZbPx0HXL8eQt78GXrjofbXOnjTdarvLhrBjRYP3pKIlLVTHlAsbb/vhiyy98Tnuv6hCwqXyhddNbloj0EGjQKIS4GcDtAN4vpdxa5PY/EELMFjmNAO4F0AVgW5D76QfVD/adh3vevk+RHotm69mqKFzztqWxFjdcPh8//8xKPP65y/Dwdcvx6XfPc/z4FE0XzpqCak3WgI6bwdEs3uobVuq96iSoUgnYaioTSPo4eq3aWzb/9RX7fCMivQU9FLceuXVHNgvx9geYlHLy2P9djdy0dQOAPuQKYa6QUp4Odje9p7LKCwB8+Zd7sGHLQQACR7pTRYtl7li7FPc+dQDPHe7B4Kh6nmDb3Gn4/BWLLAtuEkLgX58+aOflUYQ11lbg+svm4Z7Nr+LV46qpw2THff99ADdcNq9kR4HCL3N2GAGbWYurwdEsrvvBDlzc0oCPXtqC5vpqz1vymPWWzX99YVd5E5FzgfZpDJpufRqv2bDNVe/C6fXVuP6y8/CBC2eipbEWnT0pbHrxGDa99BZ2Hj5pet9L507DI59ZqfxcF//Dr9A3yObc5aKuOomEEOgf4t/cL6tam/EXq+ef0Xv14papuGl1q6uA6ZmxVWlUWlwJ5HJ+/AjWivWWzX99xYoBDTMbqm1XebOJOJE6L/o0MmgMkJ0PdjPFPuz/fdcb+If/2FO0ItpouG3nwvDlX76Ih7YfcbWfRPkqEqKsczXrqytw/5+1IZ2VqEgIZLJyfHTfC+0dXfjG4y/jlWN9tgp8nARrVvJ7y+a/Pqsvzqtam/HQdcstH5+jlUT2Ra65d7nLn1p+vvMkBoadLTFXrE3Ph5edg+n11SW/5Rv9E1W/kR/q4jRlFEQlEKtMAOc215b19Hf/cBqfeuBZDI5OXAnGyxGynoFh2xXhfrTkKRYMe9WWR4eelETlikFjwIxVXn6563X81U8L+5rbU/hhbzz29oPdeKHzFJa0TEUmK3H35ldtfSPXvYk4vU1EZKZgNIuyDhgNRg6yH0GOWUsvK0H0ULRT5W22H2H3pCQqZwwaQ3LpnEalwhgrzx85Of4hWzhlM6kygdF0dsLIg8rFyqsm4uS/0WjEjFTCsd5h3Pnr/ePvQ6c5em6/6KkEa26pFANateVhE3GicDFoDEjhxUCl4lHFwEgGn/nRTnx46Sx8f+uhCd/Ah0wqqwsvVvlaptWitiqJ1Iiz6XMiUrfj8ElccedTqKpIluyYYMXtF738YM2v4hKVzzyrtkNejVYSkTMMGn1mlrBt1qLCjj1H+7DvrX6M2kxm2nH4JD7yL1vxhSvOH78wtXd04e/+zx4GjBRrC2ZMRmdPCkOarIleOHWfPyNw65XnY3r9JNMgTrWlVykXt0xFZ08Ktz6y29fiEtW2PKV4MVpJRM6xetpHKu0l3uobwuc3voAwaxmMfdlztBe3PfFKYEurkfdqKhO2eneWo+oKgds+cjH+7v/sjVRbKasg7g/u2oK9R/tsP+7Mhmp8etV5Z8xU5N/uZXGJVVseK15VYBOVG1ZPa04lYfuzq+eHGjAa+/KNx1/G/rf6GTBGXENNJQZH3Y1cx91IWuJvfr7bdGnLykSueEcnhfnILY21E6eRFQYABICqigSG09kJwdrdm18NrLjEKNgr1ZbHitvRSiJyjkGjT1QTtpNCeFIQ49bLx/pCD17JvTf7GDBakbBeCz2RSABZtagxASAhgHRA759jvcP4zEPPIZuV4yN1C8+qx4ET1tXpEkA2m8WXP3A+rrwot0hAWMUlTntU5rcu87pJOhGZY9DoE9WE7ayUnhTEuMWAkehtwzZyHbMI/v3TOzg6/v/7h9PYecR8Rah8o1ngVy+9hevfMx9ANItL3I5WEpEzibB3IK6MhG0zRsL2ujULMLOhOqA9I6Jyt/doLzp7UgDsfVbppqWxFitbm7XcN6I4YtDoE6O9hBmjvYQx3bKqtRn1Yx/e9dUVWNXajMUz64PYXSREIE9DRBoYHM2OB412PquIqLxxetpHdhK2S023PNPRjb/48Q70DPiX8zi9vgoz6ic5qrwkiqu6qiQGYtp6qnDkkMUlRKSCI40+MhtBvHPtsqIJ24XTLStam3DPxy/FuU3+fcu/4d3z8ZWrLrCcIi81GFmZFKhOcqiS4iMhgGtXnhv2bvimcOTQyWcVEZUf9mkMiNuE7SPdKVy5/mnPm27XV1fg8c9dNr4M4b1PHcBzr/VgMK8QoLpCoO3cJqxeOB1P7T9RtGJxdmMNNu05hvu2HMKJflbwUvQ9fN1y3PjQTte9HAvb3Cw8qx57j/Y6aiwukKuAdmNmQ7VpIMjiEqJ4Yp/GCHH7ATynqRZLW6Z6XmWdP+JQOEWeTAhksnLCvl9/+bySF5XrL5+PxbMaigaeXqtICFQkgSEuvjxBZRIYjeeMqpKE8KaS2Zi+vXnNAnzziZcdPWZVErh49jR8/opFmN1YM+E9Y9Wg+tymWjRPrsa+N/vRP5xGTWUCi2c14MrFZ+N7Ww8qryKVELmZgOG0VG5Lw2CRiEph0BghqssOql44S+UqWV00zG7PDzyf2HMMT+59C3vf6J0QQNZUJnDJ3EZ8tG02pk+uRktjLX787GE82H7YciS1uiKBi85pwOevWAQJiW8+/jL2Hu1THn1pqEliWm013uofwuCIZt2bXWqbOw23XLEQX3/8ZbykkJ96blMN+obS6BkYtdzWzMIZk9E/POp6OUy3ZjZUo7G2CnuP9ZfcprYqiWtXnosNWw6a9mo0vkxdd/k8ZCFx7+YDE9rcGOqqkpheX43u0yPjo++Lzq7H+xefhSsvnDnhfWInh/Af/+hirGhtKvoF7YJZUyb0KDSzYn4zvvXHF3HkkIg8wenpiClcgiuZACCBjMT4SELhNHJNZQJVFUmMjGYwWLASRBC5SmYjl4W2H+zG7s5TOLthEpomV4/fx+y+j+56HRu2HMJrXQMYGMmgvroCZzdMwmgmgxP9I+O/y3/NnT0p3PijnZ4V/ySQu5hLwNeCoqqkKBrs5E85qqQy1FUnselzl6OzJ1W0SfLqhdOxae+beGks4C81LWo8r4TEvU8dwPNHTjoqHmmsqwAglALYBIDqygSyEmesbAIAt2zcVTQYm15fjbs+ljtGG54+gO/8ap/lscxnnJsVSYF0RuLilqlYPi+3jZMpXbfL6XX2pLDpxTdx338fwIn+EeXXQUTlyYvpaQaNEZV/kTL+XXjBKryQxT1XqdjrM3vNz3R0lwwwGusq8fF3tmD7oZPYe7QXg6NZ1FQkUFWZxEg6g8HRLOqqkjhnWg2ueMcM/MnvzR2vdi/9mBWYMqkKr3WnTF+HWYD26VXzSuaV5gcHdtfnLXWcjN8f7x/Cxp1vWD6vSjBeV5UEgDOCeauR44aaCnxy+ZzxY11qn1WDsfaOLtz56/3jf9+wVhVx+750G3wSUXlg0GghzkEjeUPlgms3+LZ6zEd3vY77txzCgROnc8FndRJLW6aNT9erBGhW+2AWvLoZgVIJcFSeuzDHL59xfA51D2Bg+MxRYi/31c52uovL6yAifzBotMCgkVT5ccG1eky3t1sJcwTKi+dmEERE5B0GjRYYNBKFG3wx8CMi0gNb7hCRpTADNgaLRETxwRVhiIiIiMgSg0YiIiIissSgkYiIiIgsMWgkIiIiIksMGomIiIjIEoNGIiIiIrLEoJGIiIiILDFoJCIiIiJLDBqJiIiIyBKDRiIiIiKyxKCRiIiIiCwxaCQiIiIiSwwaiYiIiMgSg0YiIiIissSgkYiIiIgsMWgkIiIiIkuBBo1CiNuEEHuFEH1CiKNCiA1CiMaCbeYLIX4phOgd+9kmhKgMcj+JiIiIaKKgRxozAD4JoAnAEgCzATxo3CiEmA5gC4AXAMwB0AjgprH7EREREVFIKoJ8Minll/L+eUIIsR7Az/J+dwuAI1LKv8/73Q47zyGEaEIuKMWSJUsc7ikRERER5RNSyvCeXIjvAHiXlPKysX9vA9AJoBbACgCvA7hNSvmQjcf8ewBfHfvnKIC94EilW0kAZwF4CzyWbvFYeofH0js8lt7hsfQOj6V3kgAWApgjpex2+iChBY1CiI8gNzX9Hinlc2O/6wBwHoCPAXgUwBoA/wHg96WU/634uMZI47kAfgVgkZRyv8e7X1aEEAsB7AOPpWs8lt7hsfQOj6V3eCy9w2PpHa+OZSjV00KItQA2APiQETCO6QfwjJTy51LKtJTy1wA2AfiQ6mNLKbvHDshrXu4zERERUTkLPGgUQlwL4LsAPiil3Fxw8/MAig19hjeHTkRERESBt9y5GcDtAN4vpdxaZJPvAniXEOJqIURCCLEGwPuQm6q2qxvAP4z9l9zhsfQOj6V3eCy9w2PpHR5L7/BYeseTYxloTqMQQgJIAxjO/72UcnLeNmsBfB25djyHAPyDlHJjYDtJRERERGcItXqaiIiIiKKBywgSERERkSUGjURERERkiUEjEREREVli0EhERERElhg0EhEREZElBo1EREREZIlBIxERERFZilXQKISoFUJ8Xwhxauzne0KIGpPtPyWEyAohTuf9/DjIfdaFECIphPiOEOKEEKJfCPGIEKLZZPsrhRB7hRCDQog9Qoj3Bbm/OrNzLIUQq4UQsuAcbA96n3UkhPgTIcQWIUSfECKtsH2bEOJZIURKCHFACPHJIPYzCuwcSyHEuWPn5EDeOfl6UPuqOyHEbWOffX1CiKNCiA1CiEaL+/Dzsgi7x5Kfl6UJIb4hhDg0diyPCyF+LoSYY7K9o3MyVkEjgPUAzgewCMBCAO8AcKfFfQ5KKSfn/Xzc753U1BcBfBjAcuRW4wGAfyu2oRBiHoBfAPhHAA1j//2lEOJc/3czEpSP5ZhMwTm40vc9jIaTAP4ZwF9abSiEaADwBIBHAEwDcCOAfxVCrPBzByNE+VjmWZR3Ts623rxsZAB8EkATgCXIvccfLLUxPy9N2TqWxn34eVnUvwFYKqWcAuBcAEcA/KTYhq7OSSllLH4A1AAYBPDevN+9F0AKwKQS9/kUgI6w912HHwCHAfx53r/nA5AA5hbZ9h8AbCn43RYAXw37dejwY/NYrgaQDnufdf5ROUYArh077iLvd/8G4IGw91+nH8Vjee7Y+To77P2Nwg+AKwH0mdzOz0vvjiU/L9WOYx2A2wF0l7jd8TkZp5HGRQAmAdiZ97vnkAsmF5rcr0UI8aYQolMI8RMhxHl+7qSOhBBTAcxB3rGTUh4A0Ifct79CSzDxOAO5Y11s27Li4FgCQHLs/HtTCPGYEKLsj6MDSwDskmOffmN4TrqzfSzF4ikhxOqwd0Zj7wXwgsnt/LxUZ3UsAX5eliSEuEYI0QvgNIDPAfj7Eps6PicjETQKIR4cy2Mo9fN1APVjm/fm3dX4/1NKPPTTAC4CMAvAOwEMAfi1EKLOj9ehsWLHDgBOofixq7exbbmxeyxfAbAUwHnIpVbsBvBbIcQsn/YvrnhOeqcLwArkzslzkZvyf0IIcXGYO6UjIcRHkEuF+JzJZjw3FSgeS35empBSPiylbAAwE7mA8cUSmzo+JyMRNAK4CcB0k59vAugf27Yh737G/+8r9qBSyoNSyv1SyqyU8k0A1yMXQL7L81egt2LHDgCmovix67exbbmxdSyllG9KKV+QUqallKeklH8LoAfAB/zdzdjhOekRKeVpKeU2KeWIlHJASnk3gP8GsDbsfdOJEGItgA0APiSlfM5kU56bFlSPJT8v1YzFMxsA/GeJwiLH52QkgsaxD7Euk58UgH3IjRReknfXZcjlOe5XfaqxH+HpC9CclPIUckmz48duLFF2CnLf5Aq9gInHGcgda6tphdhzcCyLyaLMzkEPvIDcCEQ+npPe4TmZRwhxLYDvAviglHKzxeb8vDRh81gWw3OzuArkchuLjcI6PyfDTtj0OPlzA3LfiGeM/fw3gH812f4PkKvWEgAakTtxDwOYHPZrCeHYfRm5wPs85AKcjQA2ldh2PnIFRh8HUDn23wEA54b9OnT4sXks/z8Arch9gZuM3JTCKQAtYb+OsH8AJJHLU34fgPTY/5+EvGKXvG2nAjgB4K8BVCGXG3UawIqwX4cOPzaP5bsAXIjcRWcSgBuQ+0J+adivQ4cfADcD6AbwTsXt+Xnp3bHk52Xx45JAbkZ2xti/ZwP4JYBDACqKbO/4nAz9xXp84OoAfH/sJDoF4HsAavJu/xKAvXn//g6Ao2MH6xiAnwNYGPbrCOnYJZGrtupCbuj6FwCax277BIDTBdtfCWAvciO5ewG8L+zXoMuPnWMJ4K+Q+6IyAOA4gE2qH6Bx/0Guu4Es8nMugMvGgsI5edu/E8CzY+fkQQCfDPs16PJj51iOXUA6xs7JbuSqKq8I+zXo8jN23EbHjtn4T97t/Lz06Vjy87LkcUwAeHzsmAwAeAPAQwDmFzuOY79zdE6KsTsTEREREZUUiZxGIiIiIgoXg0YiIiIissSgkYiIiIgsMWgkIiIiIksMGomIiIjIEoNGIiIiIrLEoJGIiIiILDFoJCLSiBDiNiGEk+XUiIh8xebeREQaEUJMBZCVUvaFvS9ERPkYNBIRuSSEqJRSjoa9H0REfuL0NBGRDUKIaUIIKYT4MyHEY0KIFIC/9fixl3vxeEREXqoIeweIiCJm6dh/bwXwZQA3ARjy8LEzAHZ79HhERJ5h0EhEZM8yAKMA/kRK6XVwtwzAPinloMePS0TkGqeniYjsWQbgN6UCRiHE349NMZv93GTy2Lt823MiIhc40khEZM8yAD80uf0eAD+xeIw3TR77ASc7RUTkNwaNRESKhBA1AM4H8FypbaSUXQC6XDw2RxqJSEucniYiUncRgCRMgkYPHvt5Hx6biMg1Bo1EROqWATgspeyJ2GMTEbnG5t5EREREZIkjjURERERkiUEjEREREVli0EhERERElhg0EhEREZElBo1EREREZIlBIxERERFZYtBIRERERJYYNBIRERGRJQaNRERERGTp/wE2nqLMB59FowAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# now we make some loops to grab all the magnitudes in the iband and rband\n",
"# remember that the i band catalog is accessed with the first attribute\n",
"# and the r band catalog is accessed with the second attribute\n",
"iMag = [iCalib.instFluxToMagnitude(m.first, 'modelfit_CModel').value for m in matches]\n",
"rMag = [rCalib.instFluxToMagnitude(m.second, 'modelfit_CModel').value for m in matches]\n",
"\n",
"plt.scatter(np.array(rMag) - (iMag), iMag)\n",
"plt.ylim([26,18])\n",
"plt.xlim([-0.5,3])\n",
"plt.xlabel('$r-i$')\n",
"plt.ylabel('$i$')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you are only interested in the ids and the angular separation, you can pack the matches into a table."
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:08.421842Z",
"iopub.status.busy": "2021-04-23T20:36:08.420380Z",
"iopub.status.idle": "2021-04-23T20:36:08.459393Z",
"shell.execute_reply": "2021-04-23T20:36:08.460629Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
" first second distance\n",
"----------------- ----------------- --------\n",
"21335078244214836 21335078244214836 0.0\n",
"21335078244214737 21335078244214737 0.0\n",
"21335078244214940 21335078244214940 0.0\n",
"21335078244215075 21335078244215075 0.0\n",
"21335078244188282 21335078244188282 0.0\n",
"21335078244188289 21335078244188289 0.0\n",
"21335078244215071 21335078244215071 0.0\n",
"21335078244214861 21335078244214861 0.0\n",
"21335078244215040 21335078244215040 0.0\n",
"21335078244214885 21335078244214885 0.0\n",
"21335078244188382 21335078244188382 0.0\n",
"21335078244214912 21335078244214912 0.0\n",
"21335078244215167 21335078244215167 0.0\n",
"21335078244215280 21335078244215280 0.0\n",
" ... ... ...\n",
"21335078244234932 21335078244234932 0.0\n",
"21335078244199114 21335078244199114 0.0\n",
"21335078244199070 21335078244199070 0.0\n",
"21335078244199112 21335078244199112 0.0\n",
"21335078244199126 21335078244199126 0.0\n",
"21335078244234646 21335078244234646 0.0\n",
"21335078244234942 21335078244234942 0.0\n",
"21335078244234974 21335078244234974 0.0\n",
"21335078244235012 21335078244235012 0.0\n",
"21335078244199128 21335078244199128 0.0\n",
"21335078244234946 21335078244234946 0.0\n",
"21335078244234753 21335078244234753 0.0\n",
"21335078244234947 21335078244234947 0.0\n",
"21335078244235127 21335078244235127 0.0\n",
"21335078244235142 21335078244235142 0.0\n",
"Length = 997 rows"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"matches_table = afwTable.packMatches(matches)\n",
"matches_table"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can unpack the matches too:"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"execution": {
"iopub.execute_input": "2021-04-23T20:36:08.466782Z",
"iopub.status.busy": "2021-04-23T20:36:08.465418Z",
"iopub.status.idle": "2021-04-23T20:36:08.502614Z",
"shell.execute_reply": "2021-04-23T20:36:08.501329Z"
}
},
"outputs": [],
"source": [
"unpack_matches = afwTable.unpackMatches(matches_table, iSources, rSources)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Hopefully this gives you some idea of the power of `afwTable`s in matching catalogs together"
]
},
{
"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."
]
}
],
"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.7.8"
},
"livereveal": {
"scroll": true,
"start_slideshow_at": "selected"
}
},
"nbformat": 4,
"nbformat_minor": 4
}